Hardwarefragen: Pull-up und sonstige Elektronikrätsel

Antworten
Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Hardwarefragen: Pull-up und sonstige Elektronikrätsel

Beitrag von theo »

Ich wieder... :oops:

Dies ist eine Frage, von der ich hier nicht unbedingt eine Antwort erwarte. Aber es kann ja sein, dass es jemandem Spass macht zu antworten.
Ich bin ja immer noch "Zauberlehrling" in Elektronikfragen. :D

Habe einen AHT25 Temperatur- und Feuchtigkeitssensor bekommen. Ich dachte, das wäre ein Modul, ist aber nur der blanke Sensor mit diesen winzigen Anschlüssen.
Ich musste zuerst Pfosten an ein geeignetes Verbindungskabel anlöten, damit ich den überhaupt ins Breadboard gesteckt bekomme.

Nun gut, laut Doku braucht der Pull-up Widerstande, oder?
To avoid signal conflicts, the microprocessor (MCU) must only drive SDA and SCL at low level.
An external pull-up resistor (for example: 4.7kΩ) is required to pull the signal to a high level.
Module des Vorgängermodells haben auch solche eingebaut:
The logic level is the same as VIN and it has a 10K pullup already on it.
Ist das richtig?
Spielt es eine Rolle, ob 4.7k oder 10k?
Ist Pull-up einfach vom Ausgang (SDA->D21, SCL-D22 beim ESP32) ein Widerstand gegen Plus?

Also so? (Rot VDD, Weiss SDA, Blau GND, Orange SCL).

aht25.jpg
aht25.jpg (120.22 KiB) 1904 mal betrachtet

Danke! :D

P.S. Klar könnte ich jetzt einfach Strom drauf geben und schauen ob es tut, aber wenn mir jemand bestätigen kann, dass das richtig ist, wäre es mir lieber.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Hardwarefragen: Pull-up

Beitrag von af0815 »

Vorweg - mit 10k gegen Plus bringst du meiner Erfahrung nach nichts um. Mit dem Oszi kannst du ja mal sehen ob sich was bewegt.

Pull-Up braucht man dann, wen der Ausgang ein Transistor (normalerweise eine NPN Typ) ist, der gegen Masse zieht. Damit wird der Pull-Up quasi zum Arbeitswiderstand. Dann hast du bei gesperrten Transistor VCC anliegen und wen der durchsteuert halt GND. Die Schaltung in invertierend.

Bei Pulldown ist es genauso, nur das der Ausgangstransistor eine PNP Typ ist und der Widerstand gegen GND geschalten ist. Das ist halt bei gesperrten Transistor Masse anliegen und wenn der angesteuert ist, dann VCC. Die Schaltung in nichtinvertierend.

Bei einem sogenannten Totempole Ausgang braucht man das nicht, da gibt einen Transistor von VCC und einen von GND weg. Da ist immer nur einer geschaltet, dadurch liegt aber immer ein definiertes Signal an. Ist aleso so eine Kombination von den obigen Sachen. Das sieht man öfters als Treiberschaltung. Die 74xx hate normalerweise so Ausgänge https://de.wikipedia.org/wiki/74xx und https://www.electronics-tutorial.net/di ... ttl-logic/

Mit was programmierst du aktuell deinen MCU - Arduino nehme ich an.

Den Pullup verwendet man auch deswegen weil bei I2C mehrer Teilnehmer am Bus sein können, Damit gibt es keine elektrische Konflikte. Ziehen zwei Devices den Bus nach Masse, so wird das Signal zwar verstümmelt. Das wird aber erkannt und die Devices können sich das ausmachen, wer sendet. Dazu gibt es je nach Bus Vorschriften. Aber elektrisch passiert nichts.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Hardwarefragen: Pull-up

Beitrag von fliegermichl »

Beim AVR Prozessor, der ja im Arduino drin ist, kann man die PullUp bzw. PullDown Widerstände softwareseitig aktivieren. Wie das bei anderen Controllern ist weiss ich nicht.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Hardwarefragen: Pull-up

Beitrag von theo »

Dank an euch beide für die Unterstützung und Andreas für die ausführliche Erklärung.
Habe den Sensor wie oben gezeigt in Betrieb genommen und er läuft prima.

Ich hatte ja schon DHT11 und HDC1080 getestet.
Dieser hier (AHT25) reagiert unglaublich schnell. Wenn man in seiner Nähe ausatmet, geht gleich die Luftfeuchtigkeit hoch und dann in wenigen Sekunden wieder runter.
Das habe ich so noch nie gesehen. :D
Auf dem Bild sieht man das Sekundenlogging.
Von 87% auf 60% rel.H in 4 Sekunden nach dem Anhauchen.
Insgesamt liefert er plausible Werte im Ggs. zu meinem HDC1080,
Bin zufrieden.

aht25_log.png
aht25_log.png (43.06 KiB) 1872 mal betrachtet

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Hardwarefragen: Pull-up

Beitrag von six1 »

die Pullup im AVR sind 10K und das ist für I2C eigentlich zu wenig. Es sollten schon 4K7 sein für stabilen Betrieb...
Gruß, Michael

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Hardwarefragen: Pull-up

Beitrag von theo »

Anscheinend hat der ESP32 interne Pullups / -downs
https://esp32.com/viewtopic.php?t=11349

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Hardwarefragen: Pull-up

Beitrag von af0815 »

Ich habe hier ein paar DS18B20 als reine Temperatursensoren. Der Vorteil ist, das man da mehrere Sensoren (verdammt viele) an einem Pin Bündeln kann und das mit angeblich schönen Leitungslängen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Hardwarefragen: Pull-up

Beitrag von theo »

af0815 hat geschrieben:
Do 20. Okt 2022, 17:22
Den Pullup verwendet man auch deswegen weil bei I2C mehrer Teilnehmer am Bus sein können, Damit gibt es keine elektrische Konflikte. Ziehen zwei Devices den Bus nach Masse, so wird das Signal zwar verstümmelt. Das wird aber erkannt und die Devices können sich das ausmachen, wer sendet. Dazu gibt es je nach Bus Vorschriften. Aber elektrisch passiert nichts.
Also ich habe jetzt mal die Varianten im Betrieb mit nur diesem I2C Gerät durch experimentiert.
Da geht alles:
- Mit Widerständen
- Ohne Widerstände
- Ohne Widerstände mit pinMode(21, INPUT_PULLUP) im Setup.

Ist es demnach so wie du schreibst, dass erst mit mehreren I2C Teilnehmern ohne Pull-up Probleme zu erwarten sind?
Ist pinMode(21, INPUT_PULLUP) in der Wirkung identisch mit den diskreten Widerständen?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Hardwarefragen: Pull-up

Beitrag von af0815 »

Busse arbeiten manchmal erstaunlich weit außerhalb der Spezifikationen. Man sieht das im professionellen Umfeld bei Profibus :mrgreen:

Ja es geht oft mit/ohne/falschen Widerständen oder wie man besser sagt - Terminierungen an Bussen.

Ob der intere Widerstand passt oder nicht, sagt definitiv die Spezifikation des Bus aus. Oft scheint der interne Widerstand der richtige zu sein, aber er kann auch an der falschen Stelle sein.

Ein wirklicher Bus wird meistens am Anfang und an Ende terminiert - Ich rede an von Bussysteme die km weit arbeiten sollen. Der I2C wird mit fast jeder Terminierung arbeiten, solange die Geräte darauf irgendwie die Signale in die richtige Richtung ziehen können.

Wenn du ein Oszi anhängst und die Signale halbwegs vertrauensvoll aussehen, dann reicht es für den Heimgebrauch.

Falls du was einfaches zum Lesen suchst https://de.i2c-bus.org/intro/terminieru ... erstaende/
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Hardwarefragen: Pull-up

Beitrag von theo »

af0815 hat geschrieben:
Do 20. Okt 2022, 22:04
Wenn du ein Oszi anhängst und die Signale halbwegs vertrauensvoll aussehen, dann reicht es für den Heimgebrauch.
Ich hab mir das mal angeschaut.
Mit dem Fnirsi ist es schwierig etwas zu erkennen, wenn nur einmal pro 2 Sekunden kurz etwas passiert (Auslesen von Temperatursensoren etc.).
Hab dann mal auf "Stop" gedrückt, als etwas zu sehen war:

i2cfnirsi.jpg
i2cfnirsi.jpg (72.16 KiB) 1760 mal betrachtet

Ist das gut oder schlecht? :D
Funktionieren tut die Schaltung jedenfalls.

Mit dem Logic Analyzer für Arme sieht man auch etwas:
Das ist so eine Sequenz:

i2c_la_1.png
i2c_la_1.png (41.91 KiB) 1760 mal betrachtet

Hier dasselbe, beliebig hineingezoomt.

i2c_la_2.png
i2c_la_2.png (94.8 KiB) 1760 mal betrachtet

Das ist alles ganz schön, aber bezüglich der Frage nach den Pull-ups bin ich deswegen immer noch nicht schlauer.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Hardwarefragen: Pull-up

Beitrag von fliegermichl »

six1 hat geschrieben:
Do 20. Okt 2022, 18:33
die Pullup im AVR sind 10K und das ist für I2C eigentlich zu wenig. Es sollten schon 4K7 sein für stabilen Betrieb...
Ich hab Temperatursensoren und auch eine RTC per i2c mit den internen PullUps ausgelesen ohne jegliche Probleme.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Hardwarefragen: Pull-up

Beitrag von af0815 »

Zum Osci Bild: Wenn die 'Nichtsignale' (nicht an der Kommunikation beteiligte Ausschläge) nicht mehr als 1/3 des Signals ausmachen. Genaugenommen sollten so klein wie möglich sein. Aber für ein Hobbyprojekt, besonders am Rasterbrett aufgebaut sollte man sagen, wenn gehts, passt es :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Hardwarefragen: Pull-up

Beitrag von siro »

"Mit dem Fnirsi ist es schwierig etwas zu erkennen, wenn nur einmal pro 2 Sekunden kurz etwas passiert "

Dafür gibt es doch den Single Trigger
Trigger Function (Single,Normal,Automatic)

Der Single Trigger friert das Bild ein, sobald eine entsprechende Flanke erkannt wird steigend oder fallend, manchal auch beides.
das kann man meist einstellen.

Bei Normal wird jedesmal neu getriggert wenn eine entsprechende Flanke erkannt wird.
Bei Auto läuft das Bild immer durch, da sieht man in solch einem Falle nicht so viel.

Laut Datenblatt sollte der Fnirsi das können.

Mit den Pullups hatte ich glaube ich schonmal gepostet, wie sich die Signale verhalten:
Pullup_10k.jpg
Pullup_10k.jpg (101.42 KiB) 1732 mal betrachtet
Pullup_1k.jpg
Pullup_1k.jpg (98.98 KiB) 1732 mal betrachtet
Wenn ich mir nicht sicher bin, gehe ich runter bis 1K für die Pullups, oft reichen jedoch auch 10K oder 4K7
Die internen Pullups liegen aber oft wesentlich höher, das hängt vom verwendeten Controller ab.

Es gibt auch Controller, die haben keine "echten" Pullups sondern Stromquellen, da passieren dann merkwürige Dinge.
Das High Signal bei 3,3 Volt Versorgung ging nur noch auf 2,4 Volt...
Beim LPC1768 hatte ich das Problem. Dadurch rauchten mir meine angeschlossenen Mosfets ab, da sie nicht "richtig" durchgeschaltet wurden,
wenn der Pin auf Input stand....
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Hardwarefragen: Pull-up

Beitrag von theo »

siro hat geschrieben:
Fr 21. Okt 2022, 11:38
"Mit dem Fnirsi ist es schwierig etwas zu erkennen, wenn nur einmal pro 2 Sekunden kurz etwas passiert "

Dafür gibt es doch den Single Trigger
Trigger Function (Single,Normal,Automatic)

Der Single Trigger friert das Bild ein, sobald eine entsprechende Flanke erkannt wird steigend oder fallend, manchal auch beides.
das kann man meist einstellen.
Danke, das stand bei mir immer auf "Auto".
Ein bisschen (manchmal) geht das, aber so ganz werde ich nicht schlau daraus.
Vielleicht weiss Andreas mehr, der hat beides: Ahnung und ein Fnirsi! :lol:

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Hardwarefragen: Pull-up

Beitrag von af0815 »

theo hat geschrieben:
Fr 21. Okt 2022, 12:17
Ein bisschen (manchmal) geht das, aber so ganz werde ich nicht schlau daraus.
Vielleicht weiss Andreas mehr, der hat beides: Ahnung und ein Fnirsi! :lol:
Aber noch zu wenig Zeit :oops:

Nein, das mit den Trigger und den Modes ist kein Problem, man muss halt immer im Kreis drücken.

Rechts der kleine Zeiger ist, dort wo der Trigger (Pegel) anhand des 2 ten Symbols rechts oben auslösen (Steigende oder Fallende Flanke) sollte. Trigger Modus Auto, da probiert das Fnirsi aus was ihn gerade passt. Normal bedeuted das der Trigger laut den Einstellungen ausgelöst wird. Single heißt das er einmal ausgelöst wird und dann das Ergebnis anzeigt. Quasi eine Digitalspeicherfunktion für Arme :lol:

Alles genauso wie es dir großen Brüder machen, nur haben die für jede Funktion eine Taste. So muss man sich im Kreis klicken. Aber ist auch nur eine Gewöhnungssache. Und: Wer misst misst Mist :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten