Forum: Mikrocontroller und Digitale Elektronik Verständnis von Pull-Up- und Pull-Down-Widerständen bei Taster-Eingängen mit STM32


von Aria J. (ariajames)


Lesenswert?

Hallo zusammen,
ich arbeite an einem einfachen Projekt mit dem STM32F103C8T6 ("Blue 
Pill") Board und bin etwas unsicher, wann man Pull-Up- bzw. 
Pull-Down-Widerstände für digitale Eingänge verwenden sollte – 
insbesondere bei Tastern. Ich habe gelesen, dass es davon abhängt, ob 
der Logikpegel beim Loslassen des Tasters HIGH oder LOW sein soll. 
Allerdings habe ich sowohl Beispiele mit internen Pull-Ups als auch mit 
externen Pull-Downs gesehen. Könnte mir bitte jemand erklären wann 
sollte man einen Pull-Up anstelle eines Pull-Down-Widerstands verwenden? 
Gibt es praktische Unterschiede im Verhalten oder bei der 
Störsicherheit? Wenn ich den internen Pull-Up-Widerstand im STM32 nutze, 
ist dann ein externer trotzdem notwendig? Eine einfache Erklärung oder 
ein Beispiel wäre sehr hilfreich – mir geht es darum, das Konzept 
wirklich zu verstehen, nicht nur, dass es irgendwie funktioniert.
Referenzartikel:
Ich habe diesen hilfreichen Artikel gefunden, der die Verwendung von 
Pull-Up-Widerständen im Zusammenhang mit STM32 und I2C erklärt (das 
Prinzip lässt sich aber allgemein 
anwenden)::https://www.theengineeringprojects.com/2021/06/write-and-read-an-i2c-eeprom-with-stm32.html

von Michael B. (laberkopp)


Lesenswert?

Du brauchst einen pull down (Widerstand vom Eingang nach Masse) wenn der 
Taster den Eingang nach plus schaltet und damit ein gedrückter Taster 
eine 1, ein high, liefern soll.

Und du  brauchst einen pull up (Widerstand vom Eingang nach plzs) wenn 
der Taster den Eingang nach Masse schaltet und damit ein gedrückter 
Taster eine 0, ein low, liefern soll.

Die internen pull Widerstände sind sehr hochohmig, das reicht nicht für 
den die Kontakte putzenden Mindeststrom der meisten Taster. Du brauchst 
also externe, niederohmige Widerstände.

Die internen hochohmigen lassen sich auch leicht stören, wären also 
sowieso nur bei kurzen Leitungen ausreichend.

von Peter D. (peda)


Lesenswert?

Kontakte gegen GND zu schalten, hat den Vorteil, daß bei einem 
Kurzschluß der Leitungen gegen Gehäuse nicht gleich die VCC einbricht.
Daher ist das in der Industrie auch die bevorzugte Variante.
Der Software ist es ja völlig schnurz, ob 0 oder 1 Kontakt betätigt 
bedeutet. Man kann es beliebig definieren.

Ein Pull-Down wird eigentlich nur von Anfängern verwendet, weil die noch 
Probleme haben, mit Definitionen zu arbeiten.

von Obelix X. (obelix)


Lesenswert?


von Alexander (alecxs)


Lesenswert?

Wozu Pull-up/Pull-down Widerstände?

Stell Dir einen unbeschalteten Eingang vor, der auf ein Signal (eine 
Spannung) wartet. Dieser ist erstmal schwebend und kann beliebige 
Zustände von einigen Millivolt haben. Er ist undefiniert. Das ist 
schlecht und nicht gewollt.

Mit einen Widerstand wird der Eingang zu einem Potential (einer 
Spannung) hingezogen. Damit ist der Ruhezustand definiert.

Ein Pull-up wird dann verwendet, wenn man den Ruhezustand auf 3,3V legen 
möchte (HIGH).

Ein Pull-down wird verwendet, wenn man den Ruhezustand auf 0V legen 
möchte (LOW).

In beiden Fällen fließt im Idealfall erstmal kein Strom.

Das anzulegende Signal zieht den Eingang aus dem Ruhezustand heraus, 
entweder nach HIGH oder nach LOW. In diesem geschalteten Zustand ist der 
Widerstand sowohl mit HIGH als auch mit LOW verbunden, es fließt also 
ein Strom.

Der Widerstand ist möglichst groß (hochohmig) zu wählen, so dass das 
Eingangssignal ihn "übersteuern" kann. Je kleiner (niederohmiger) der 
Widerstand ist, umso stabiler der Ruhezustand.

Üblich sind etwa 0,1-1mA bis hin zu 10mA, je nachdem wie störanfällig 
deine Schaltung vorraussichtlich ist.

Über das Ohmsche Gesetz kannst Du den Widerstand anhand der Spannung und 
der gewünschten Stromstärke ausrechnen.

von Georg M. (g_m)


Lesenswert?


von Alexander (alecxs)


Lesenswert?

Ergänzung: Dann kannst Du entscheiden ob Dir ein interner Widerstand 
reicht, den Du per Software zuschalten müsstest (40k), oder ob Du einen 
externen Widerstand verwenden möchtest (z.B. 10k).

Ob Pull-up oder Pull-down richtet sich ausschließlich nach deinem 
Eingangssignal; das Entgegengesetzte ist zu wählen. Wenn Dein Taster 
nach GND schaltet, brauchst Du einen Pull-up für den Ruhezustand, und 
vice versa.

Pull-up und Pull-down werden normalerweise nicht kombiniert. Wenn Du Dir 
das mal aufzeichnest, siehst Du das ergäbe einen klassischen 
Spannungsteiler.

: Bearbeitet durch User
von Frank O. (frank_o)


Lesenswert?

Sie haben nicht nur den Zweck einen sicheren Schaltzustand zu gewähren, 
sondern auch ein Gate schnell zu entladen, solange das noch reicht, 
statt einem richtigen Gatetreiber zu verwenden.

von Peter D. (peda)


Lesenswert?

Historisch gesehen hatten auch alle TTL-ICs interne Pullups, d.h. offene 
Eingänge wurden als 1 gewertet.
Und auch manche µC Familien (MCS-48, MCS-51) hatten interne Pullups. 
Diese waren permanent aktiv, d.h. offene Eingänge waren immer 1 
(Ausnahme P0).
Nur als Ausgang wurde beim Pegelwechsel 0->1 kurz ein FET nach VCC 
zugeschaltet.
Das war eigentlich ganz praktisch, alle Pins waren bidirektional, ein 
extra Register für die Richtungsumschaltung unnötig.

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

* Bei einem Taster/Schalter mit externem Pull-Up kannst Du machen was Du 
möchtest.
* wenn ein interner Pullup da ist, kannst Du den externen
  * gleich beschalten (falls der interne anfangs nicht aktiv ist oder 
nicht klein genug, der Strom nicht groß genug)
  * entgegengesetzt beschalten, z.B. um testen zu können, ob der Taster 
angeschlossen ist
  * weglassen

Eigentlich sollte jeder unbenutzte Eingang mit oder ohne Widerstand auf 
ein festes (nicht floatendes) Potential gelegt werden. Meist GND, VCC 
oder das Signal eines parallelen Eingangs.

Aria J. schrieb:
> Ich habe diesen hilfreichen Artikel gefunden, der die Verwendung von
> Pull-Up-Widerständen im Zusammenhang mit STM32 und I2C erklärt (das
> Prinzip lässt sich aber allgemein
> anwenden)

I2C ist ein Bus mit "wired OR". Jedes IC hat an beiden Leitungen einen 
"Open Collector" bzw. "Open Drain", einen Schalter, der nach Masse 
ziehen kann.

Hier musst Du den externen Widerstand nach Vorschrift verschalten und 
dimensionieren.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.