mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pullups - Bedeutung


Autor: Tobias R. (wildcard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, kann mir jemand erklären was es genau mit Pullup und PullDown
Widerständen aufsich hat?

Bisher denke ich, daß es sich so verhält:

Ein Pullup Widerstand wird dann benötigt, wenn ein I/O Port als Eingang
geschaltet ist. Wenn nun das Signal High, dh. eine Spannung, angelegt
wird muss diese irgendwo abfallen, am Pullup, da es sonst zu einem
Kurzschluss kommt. Ein Pullup ist immer sehr groß.


Sind die I/O Ports also standardmässig mit Masse verbunden, und wenn
ich einen PullDown brauche andersherum?

Dankend klärende Worte :-)

Autor: Markus K. (markus-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei den Eingängen geht es darum, daß ein definierter Pegel anliegt. Ohne
 Pullup/down wirkt die Leitung am Eingang als Antenne und Du fängst Dir
z.B. das Netzbrummen ein. Damit bekommst Du dann 50 oder 100 Impulse
pro Sekunde am Eingang.

Markus

Autor: Tobias R. (wildcard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah! Danke.

Autor: see4far (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PullUps brauchst du, wenn dein Signalgeber den Pegel nur auf Low, nicht
aber selbstständig auf High ziehen kann (bei Optokopplern brauchst du
das beispielsweise). PullDowns musst du dementsprechend einsetzen, wenn
der Signalgeber nur auf High ziehen kann, sonst aber der Ausgang
undefiniert ist (z.B. auch bei Optokopplern möglich).

Aber auch, wenn du einen Pin als Ausgang verwendest, solltest du je
nach Ruhepegel PullUps oder PullDowns einsetzen. Sonst kann auch der
undefinierte Zustand eintreten, wenn der Pin noch nicht als Ausgang
definiert wurde.

Wenn das nicht so stimmt, korrigiert mich bitte.

gruß
see4far

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ganz so ist es nicht.

Es gibt mehrere Anwendungen für Pullup oder Pulldown. Allen gemeinsam
ist, das irgendwoher ein Signal kommt das zwei Zustände annehmen kann.

Zustand A: Das Signal ist z.B. über einen Bipolaren Transistor oder FET
mit der positiven Spannungsversorgung oder Masse verbunden.
Beispielsweise eine aktiver Open-Collector-Ausgang

Zustand B: Das Signal ist mit "nichts" verbunden, also weder mit der
positiven Spannungsversorgung noch mit der Masse. Das Signal
"floatet", z.B. ein inaktiver Open-Collector-Ausgang.

Und um genau den Zustand B zu vermeiden, verwendet man ein Pullup oder
ein Pulldown.

Ähnlich wie der Zustand B ist die Anwendung, bei der man einen
hochohmigen Signaleingang niederohmiger machen möchte. Das macht man,
um den Eingang unempfindlicher gegenüber Störungen zu machen,
insbesonders wenn der Eingang mit einer längeren Leitung verbunden ist.
Also wenn der Eingang nicht mit einem Ausgang eines anderen ICs auf der
gleichen Platine verbunden ist, sondern z.B. mit 20cm Kabel mit einem
Taster in der Frontplatte oder so.

Autor: Max Kuhn (madget)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm,
bedeutet das dann, dass ich theoretisch drei ausgangszustände habe also
an einem out port mit der entsprechenden beschaltung z.b. drei
leuchtdioden leuchten lassen kann. also z.b. wenn ausgang
mit masse verbunden > led1
mit +5V > led2
und mit keinem von beidem > led3

oder ist das schaltungstechnisch nicht zu realisieren weil der zustand
eben "undefiniert" ist ?

Autor: see4far (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz unabhängig von irgendwelchen PullUps/Downs würde ich sagen, dass du
an einem PIN nur 2 Zustände hast (0 oder 1 bzw. GND oder VCC). Damit
kannst du halt ohne weitere Beschaltung auch erstmal nur 2 LEDs mit
unterschiedlichem Zustand haben. Der Zustand der einen ist damit
natürlich auch gleich der invertierte der anderen. Du musst natürlich
hier auch PIN von PORT unterscheiden. Ein Port ist eigentlich 8 Bit
breit (bei einem 8bit-Controller). Jedes Bit ist für einen Pin
zuständig (sofern alle herausgeführt sind).

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Ausgang kann in der Tat noch einen dritten Zustand einnehmen, er
kann hochohmig werden, was auch mit dem Begriff "Tristate" bezeichnet
wird.

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... was allerdings nicht als Ausgangssignal genutzt werden kann, sondern
als Schutz dient, denn wenn du bei einem als Ausgang beschalteten Port
eine Spannung anlegst und die nicht mit dem Portzustand übereinstimmt -
gibts nen Kurzen!

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tristate kann man sehr wohl als dritten Zustand nutzen. Warum soll das
nicht gehen? Nur weil Du Dir dafür keine Beschaltung vorstellen kannst?

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hab ich nicht gesagt ;)

Aber für mich ist es ein Zustand, und kein Signal, welches aus
definierten Zuständen besteht... nutzen kann man es sehr wohl...

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nein man hat nur 2 Zustände, entweder High oder Low. Allerdings gibt es
einen Bereich in dem man nicht weiß als was es der AVR erkennt, bzw
wechselt erkennt er es in dem Bereich mal als High mal als Low.
Hauptsächlich ist das von der Versorgungsspannung und leicht von der
Temp. abhängig.

Man kann eigentlich ganz grob sagen bei 5V ist Low bis 1,5V und High ab
2,0V dazwischen weiß man halt nicht was der AVR drauß macht, desween
benutzt man einen Wiederstand(Pulldown) der entweder das Signal schwach
belastet (also auf Masse zieht) oder einen Pullup der    das Signal auf
der Leitung etwas anhebt.

Ich bevorzuge pullwowns denn wenn eine Leitung als Antenne wirkt geht
sie eher Richtung 1 also belaste ich die Leitung etwas mit dem Pulldown
und man hat auch sicher 0 statt 1.

Der Tristate Zustand stellt den Port auf hochohmig so das dieser die
restliche Schaltung nicht belastet so kann sich der Port praktisch
unsichtbar schalten.

Autor: Markus K. (markus-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas O.:
Tristate heißt doch soviel wie 3. Zustand. Wenn man will, dann kann man
eine Schaltung aufbauen, die z.B. je eine LED bei Low, High und Tristate
ansteuert.

Normalerweise macht man das natürlich nicht so, aber prinzipiell geht
es und in manchen (wenigen) Fällen ist das sogar sinnvoll.

Markus

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

klar hei0t das 3ter Zustand, aber den kann man ja praktisch nicht für
Schaltaufgaben gebrauchen. Er ist dazu gedacht das sich der AVR
praktisch ausklinkt und die restliche Schaltung nicht stört.

Autor: Tobias R. (wildcard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas O.:
Pulldown kann ich mir vorstellen, ein signal wird durch den widerstand
nach ihm eindeutig als low interpretiert. Wie aber wirkt der Pullup?

Eine kleine (Zwischen-)Spannung durch einen Widerstand erhöhen, so daß
sie eindeutig als High erkannt wird?

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja genau. Angenommen es werden 2V an den AVR gegeben was ja High sein
soll, durch Leitungswiederstände usw. fällt das z.b. etwas ab und durch
den Pullup wird sowas wieder ausgeglichen. Der Wiederstand des Pullup
darf nur nicht zu klein sein sonst, tut er sogar 0V auf 2V anheben und
der AVR intepretiert das als High.

Aber von 0-2V hat man halt weniger Spielraum als von 2-5V, also kann
man mit einem Pulldown weniger "kaputtmachen". Also selbst wenn 2
Volt abfallen dann bleiben noch 3 Volt ürig was eindeutig High ist.

Autor: Florian Scharf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias:

Lass dich nicht vom Tristate-Gerede verwirren ;)

Ein Pullup Widerstand ist einfach ein R irgendwo im Kiloohm-Bereich,
welcher zwischen den Pin und VCC geklemmt wird, ein Pulldown im
Gegensatz dazu wird zwischen den Pin und GND geklemmt. Also beim
Pulldown etwa so:


 VCC
  o    Taster            +-------------+
  |     _|_              |             |
  \----o   o---+---------o  Controller |
               |         |             |
              [ ]        +-------------+
              [R]
              [ ]
               |
               o
              GND

Wenn der Schalter offen ist, liegt am Controller GND an, wenn er
geschlossen wird, liegt VCC an. Wenn Du keinen Pullup/-down einsetzt,
liegt dann beim drücken zwar auch VCC an, aber wenn er offen ist,
wabbelt der Pegel irgendwo rum, und es wird nur irgendwelcher Müll
erkannt. Der Widerstand liegt also nicht IM Signalweg, sondern zweigt
davon ab.

der Flo

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja genau so meinte ich es.

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil wir grad beim Thema sind:

Theoretisch wäre es ja praktisch, auch vor dem Schalter noch einen
Widerstand reinzuhängen. Denn wenn aus Versehen ein Port als Ausgang
beschaltet ist und ich da dann Vcc draufgebe und den Port auf Low
schalte, brutzelt der mir fröhlich dahin...

Wenn ich aber einen Widerstand reinbaue, habe ich wieder nen
Spannungsteiler, also nicht den vollen Pegel. Ich könnte natürlich die
Widerstandsverhältnisse sehr groß einstellen, aber hat das einen Sinn?
Oder ist es besser zu vertrauen, dass man keinen Fehler macht? Was
meint Ihr dazu?

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach doch den Widerstand nach dem Taster, zwischen Taster und
Controller. Dann ist Dein Problem gelöst. Also



 VCC---Taster---*---Widerstand---Controller
                |
                |
            Widerstand
                |
                |
               GND

Autor: Florian Scharf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ithamar:

Wenn Du auf Nummer Sicher gehen willst, häng doch einen kleinen
Widerstand direkt vor den Pin vom µC. Als Eingang ist der hochohmig,
d.h. so erhältst Du keinen Spannungsteiler. Oder Du entkoppelst den Pin
mit einem Kondensator von jeglichen Gleichspannungsanteilen, wenn Du nur
bei Tastern nur die Flanken messen willst. ;)

der Flo

Autor: Florian Scharf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwei Kranke - ein Gedanke. ;)

Grüße, der Flo

Autor: Ithamar Garbe (antimon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm perfekt einfach - hätte ich eigentlich auch drauf kommen sollen...
naja manchmal sieht man den Wald vor lauter Bäumen ned ;)

Danke für die Tips!

Autor: Tobias R. (wildcard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, danke Flo!
Das mit dem Pulldown kann ich mir sehr gut vorstellen, allerdings wo es
hackt bei mir ist der Pullup. Wenn ich 5V VCC habe und dann einen
Spannungteiler vor den Eingang mache mit dem K, was "pull" ich denn
dann "up" wenn ich die VCC am Eingang doch verringere.

GND
  o    Taster            +-------------+
  |     _|_              |             |
  \----o   o---+---------o  Controller |
               |         |             |
              [ ]        +-------------+
              [R] Pullup?
              [ ]
               |
               o
              VCC

Taster gedrückt, Eingang auf GND.
Taster nicht gedrückt, Eingang auf VCC-X.

Autor: Tobias R. (wildcard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das VCC-X so dimensioniert, dass das Signal
 immernoch als High erkannt wird (Taster offen), allerdings einen
Kurzschluss verhindert, wenn der Taster den Eingang auf GND zieht?

Autor: Florian Scharf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau. Das "X" in deiner Schaltung dürften nen paar Mikrovolt sein,
stell dir lieber den Controller als ideales Bauelement mit unendlich
grossem Innenwiderstand, was nur die Spannung misst, und den Schalter,
und die Leitungen als ideale 0-Ohm Leitungen vor, damit bist Du in dem
Fall nahe genug an der Realität dran. D.h. wenn Du nen Pullup/-down
Widerstand von 1..10k einsetzt hast Du faktisch die beiden Zustände GND
bzw. VCC am Eingang anliegen. Ein Kurzschluss tritt auch nicht auf, denn
wenn Du - sagen wir mal - einen 5k Widerstand nimmst, fliessen da grad
mal I = U/R = 1mA, da kann man wirklich nicht von Kurzschluss reden.

In der Praxis könntest Du Probleme bekommen, wenn z.B. der
Pull-Widerstand zu gross ist. Die Eingänge sind im Allgemeinen mit
einer kleinen Kapazität versehen, und die muss beim Schaltvorgang mit
umgeladen werden. Wenn der Widerstand zu gross ist, wird die
elektrische Ladung nur langsam aus dem Kondensator abgesaugt (oder
reingeschoben, je nachdem ob Pullup oder -down). Von daher fährt man
mit nem Pullwiderstand von 1-5k meiner Erfahrung nach ganz gut.

Soviel dazu.

der Flo

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.