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
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.
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.
https://www.elektronik-kompendium.de/public/schaerer/pullr.htm https://www.elektronik-kompendium.de/sites/raspberry-pi/2006051.htm
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.
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
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.
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
* 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.