Pull up- Pull-Down -Widerstände

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Sry, aber ich habe eine allgemeine Frage zu den Pullup und Pulldown-WIderständen.
    Ja, ich habe mir schon Erkärungen dazu ergooglet und auch schon Youtube-Videos geschaut, aber irgendwie find ich ist nirgends das grundlegende Konzept hinter den Widerständen erklärt.

    Nehmen wir folgendes BIld: https://cdn.sparkfun.com/assets/6/f/b/c…f1b40000000.jpg

    Wofür ist der Pull-Up Widerstand denn nun vorhanden? Es wird immer wieder gesagt, dass ohne den Widerstand der "floating"-State eingenommen werden würde und nicht entscheidbar sein kann ob eine 1 oder eine 0 anliegt.
    Wieso ändert der WIderstand dass denn hier? Der Widerstand begrenzt doch einfach nur den Strom. Warum liegt ohne den Widerstand nicht sicher eine 1 an? Ich erkenne da nur einen Kurzschluss, der von 3,3V zum PIN geht. Aber wie kann hier denn eine 0 am Pin anliegen, wenn 3,3V doch eindeutig komplett zum Pin laufen?

    Oder sind die Widerstände nur dafür da um den Kurzschluss zu verhindern?

    Einmal editiert, zuletzt von madman (18. Oktober 2015 um 00:39)

  • Ein solcher Pullup- oder auch Pulldown-Widerstand ist nur dazu da einen definierten Spannungspegel zu geben, wenn der Eingang offen ist, oder der Ausgang keine definierte Ausgangsspannung liefert.

  • Hey, flyppo, danke für die schnelle Antwort.
    Aber kannst du mir das konkret an dem Beispiel https://cdn.sparkfun.com/assets/6/f/b/c…f1b40000000.jpg erklären?
    Wie fließt der Strom mit dem Widerstand und wie fließt der Strom ohne den Widerstand?
    Sieht für mich identisch aus. So wie ich das erkenne kommen ohne Widerstand bei geöffnetem Taster exakt 3,3V am Input-Pin an, und 3,3V bei GND bei geschlossenem Taster.
    Außer einen Kurzschluss zu verhindern sehe ich hier nicht wie der Widerstand in irgendeiner Weise was mit high/Low-Pegel o.ä. zu tun hat.

    Einmal editiert, zuletzt von madman (18. Oktober 2015 um 00:57)

  • Servus madman ...


    ...
    Wofür ist der Pull-Up Widerstand denn nun vorhanden?
    ...

    nun, denk' Dir den Widerstand mal weg ... dann hängt die eine Seite des geöffneten Schalters, und zwar die, die am Eingang der MCU angeschlossen ist, in der Luft.
    Das hat zur Folge, dass alles, was so in der Gegend rumschwirrt wie von einer Antenne "empfangen" und als HIGH oder LOW von der MCU interpretiert wird. Das ist dieser "Lämmerschwanz-Effekt".
    Schliesst Du den Schalter, ist wieder alles ok ... dann hast Du ein sauberes, stabiles LOW Signal anliegen.
    Und jetzt kommt R1 ins Spiel ...
    Da der Widerstand auf Vcc (also +) geht, ist das ein sog. "pullup" Widerstand.
    Wir wählen einen entsprechend grossen Wert, damit nur ein minimaler Strom fliesst - schliesslich wollen wir keine Heizung bauen sondern nur den Pegel des Eingangs auf einen definierten Wert setzen.
    Meist werden Werte so zwischen 4k7 Ohm und 10 kOhm verwendet.
    Du kannst Du Dir den Strom, der durch den Widerstand fliesst, mit dem Ohmschen Gesetz ausrechnen .... das sind so ca. 0,33 mA wenn Du von 3V3 ausgehst.
    Der Clou dabei ist eben: die Spannung von Vcc mit ihren 3V3 liegt bei geöffnetem Schalter jetzt am Eingang der MCU an und erzeugt so einen stabilen HIGH-Pegel.
    Wird der Schalter geschlossen, dann zieht er durch seine Verbindung zu GND diese Spannung auf 0V ... und weil eben so gut wie kein Strom durch den Widerstand fliesst, erzeugst Du da auch keinen Kurzschluss (so gesehen ist Deine Beobachtung bezüglich Kurzschluss schon korrekt).
    //EDIT: Wenn die "Störsignale" bei 10 kOhm nicht vollständig verschwunden sind, verringert man den Widerstand. Bis 4k7 Ohm stellt das afaik beim RPi noch kein Problem dar, weil dann immer noch weniger als 1 mA Strom fliesst.
    Achten solltest Du unbedingt darauf, dass der RPi an seinen Eingängen nur max. 3V3 verträgt ... also nicht auf die Idee kommen, einen Pullup z.B. auf 5V anzuschliessen (das kann bei einigen I2C-Baugruppen, die urpsrünglich für den Arduino ausgelegt sind, bereits werkseitig so verschaltet sein. Da müssen die Pullups dann entfernt werden oder das Bauteil mit 3V3 betrieben werden, falls das möglich ist.

    Jetzt kann man das Ganze Konstrukt auch umdrehen, und den Schalter an Vcc legen. Dann müsste man einen Widerstand gegen Masse schalten (also -) um den Pegel "herunterzuziehen" ... das wäre dann ein "pulldown" Widerstand.
    War das verständlich genug?

    cu,
    -ds-

  • Hi Dreamshader,

    na, immer noch wach?

    Super erklärt!

    Aber was meinst Du mit


    ... er durch Seine Verbindung zu ...

    Hast Du einen heißen Draht nach :angel:

    ;)

    Beste Grüße und :sleepy:

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Schalter offen:
    Die Verbindung input Pin nach Masse (liegt innerhalb der MCU) ist hochohmig. Das heißt von VCC (3,3 V) nach Masse fließt nur ein sehr kleiner Strom.
    Am Widerstand fällt nur eine minimale Spannug ab, der input Pin liegt praktisch auf VCC. Die Elektronik erkennt einwandfrei eine 1.

    Schalter zu:
    Es fließt ein Strom von VCC über den Widerstand, den Schalter nach Masse. Über den Schalter fällt so gut wie keine Spannung ab. Die (fast) gesamte Spannung fällt über den Widerstand ab. Der input Pin liegt auf Masse. Die Elektronik erkennt einwandfrei eine 0.

    Wenn wir jetzt den Widerstand rauskneifen:
    Schalter offen:
    Der input Pin hat keine Verbindung zu irgendwas. Die Leitung vom Pin zum Schalter wirkt als Antenne. Die Antenne empfängt irgendwas. Die Elektronik kann mit dem irgendwas nix rechtes anfangen und wackelt daher munter zwischen 0 und 1 hin und her. <== Das will man vermeiden.

    Schalter zu:
    Der input Pin wird auf Masse gezogen. Die Elektronik erkennt einwandfrei eine 0.

    bis denne
    Jan

  • Danke für eure ganzen Antworten. Sie haben mir auch ein paar andere Sachen gut erklärt, dennoch bin ich irgendwie im eigentlichen Problem immernoch nicht schlauer geworden.
    Hab euch mal ein kleines Bild ohne den Widerstand gezeichnet.
    http://www.xup.in/dl,53639557/bild.jpg/

    Am Button herrscht durch den offenen Schalter ein unendlicher Widerstand.
    Der komplette Strom von VCC fällt am Input-Pin ab.
    Wie kann hier ein Low-Signal zustande kommen?

    Einmal editiert, zuletzt von madman (18. Oktober 2015 um 10:55)

  • Theoretisch wenn Du den Button schließt. Praktisch erzeugst Du dann aber einen Kurzschluss. Welcher dem MCU zwar nicht schadet, aber deiner VCC.

  • Hallo Madman,

    ich will mich hier nach den vielen guten und anschaulichen Erklärungen nicht auch noch einmischen.

    Aber einen Tip will ich Dir geben:
    Probiere es doch einfach einmal aus!

    Statt eines Widerstandes nimmst Du ein Potentiometer (ca. 10k, 50k oder 100 k - oder was immer Du gerade da hast geht auch.). Der eine äußere Anschluss geht an den Pluspol der Spannungsversorgung (3V3 beim Raspberry Pi), der mittlere Anschluss (Greifer) geht weiter zum Input-Pin und zum Taster.

    Am Anfang ist der Widerstand auf maximal gestellt (in Richtung (der Widerstand verringert sich), drückst Du auf den Taster.

    Was bringt das?
    Bei hohem Widerstand kannst Du am Status des Eingangs-Pins feststellen, ob der Taster gedrückt oder nicht gedrückt ist. Immer wenn der Taster gedrückt ist, bekommst Du ein vollkommen anderes Signal am Eingangspin, als wenn er nicht gedrückt ist.

    Je geringer der Widerstand wird, um so mehr häufen sich Fälle, dass bei offenem Taster ein "Gedrückt" erkannt wird - und umgekehrt. Hier tritt das ein, was hier bereits korrekt als Flattern bezeichnet wurde. Dies liegt daran, dass Deine Schaltung die (auch bei hohem Widerstand) aufgefangenen Signale aufnimmt (wie bereits beschrieben als Antenne fungiert) und dies vom Eingangspin detektiert wird. Bei ausreichend hohem Widerstand würden diese "Spitzen" verschluckt werden.
    Irgendwann (bei Stellung 0 Ohm - und schon davor) hast Du dann einen Zustand, an dem es vollkommen egal ist, ob der Taster gedrückt oder nicht gedrückt ist - auf dem Eingangspin spielt sich das totale Chaos ab.

    Wenn Du dieses kleine Experiment gemacht hast, dann weißt Du, warum es wichtig ist, einen Pull-Up-Widerstand einzusetzen.

    Dann setzt Du das Potentiometer analog als Pull-Down-Widerstand in Deine Schaltung ein und wiederholst das Experiment. Dann kennst Du auch die Funktion und Bedeutung eines Pull-Down-Widerstandes.

    Um einen Kurzschluss zu vermeiden, setzt Du am besten einen 330 Ohm-Widerstand ein. Damit reduzierst Du den Strom auf 10 mA, was für dieses Experiment in Ordnung ist - ich arbeite bei GPIO-Ausgängen immer mit 2 mA. Bei Dir geht es aber um 3V3-GPIO-Eingang.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    2 Mal editiert, zuletzt von Andreas (14. Oktober 2017 um 17:36)

  • Ja, die Raspberry würd das wahrscheinlich nicht gut vertragen. Aber mir gings allgemein um den Widerstand, weil das ganze Pull-up-Widerstand heißt und überall erklärt wird, dass aufgrund des Widerstands der High-Pegel anliegt. Aber der Widerstand ist meines erachtens nur dafür da um den Kurzschluss zu verhindern.

    edit: Andreas, ja, ich werd das mal testen. Kanns aber leider immernoch nicht nachvollziehen, da kontinuirlich 3,3V an Input-Pin angeschlossen sind, was ja eindeutig als High definiert ist. Und die Signale die an der Antenne aufgefangen werden, werden doch auch aufgefangen wenn der Widerstand am VCC angeschlossen ist. Ich google aber jetzt auch mal nach dem einen Effekt der hier angesprochen wurde, vielleicht hilft das.

    Einmal editiert, zuletzt von madman (18. Oktober 2015 um 11:33)

  • Dreamshader ich danke dir für die ausführliche Beschreibung, die hat mir auf jeden Fall einiges mehr erklärt.
    Die Frage die mir offen bleibt ist, wieso in diesem Bild http://www.xup.in/dl,53639557/bild.jpg/ der offene Schalter als Antenne fungiert. Für mich sieht das so aus, dass dort 3,3V kontinuierlich von VCC zum Input-Pin fließen und somit ein durchgängiges High-Signal empfangen wird.

    Ich werd das aber wie gesagt mal mit dem Pontimeter testen

  • Aahhh ... ich denke, ich hab' Dich ...
    Da hast Du vermutlich einen Denkfehler drin. Wenn ich sagte "Widerstand wegdenken" dann wirklich weg und keinen blanken Draht statt dessen ...
    Damit fabrizierst Du sonst einen Kurzschluss, sobald der Schalter geschlossen wird.

    //EDIT: ich hatte ja geschrieben, dass Du mit Deiner Beobachtung richtig liegst ... nur ist Sinn und Zweck des Aufbaus nicht, einen Kurzschluss zu verhindern sondern einen definierten Pegel zu erhalten. Deshalb eben "pullup" bzw. "pulldown" ;)

    cu,
    -ds-

  • Hallo Madman,


    edit: Andreas, ja, ich werd das mal testen. Kanns aber leider immernoch nicht nachvollziehen, da kontinuirlich 3,3V an Input-Pin angeschlossen sind, was ja eindeutig als High definiert ist. Und die Signale die an der Antenne aufgefangen werden, werden doch auch aufgefangen wenn der Widerstand am VCC angeschlossen ist. Ich google aber jetzt auch mal nach dem einen Effekt der hier angesprochen wurde, vielleicht hilft das.

    wir hatten mal einen Physiklehrer in der Oberstufe. Der war in allen Beziehungen anders als alle anderen Lehrer. Er stand nicht an der Tafel und hat Formeln hergeleitet, er hat auch nicht stur aus dem Physik-Buch vorgetragen. Er hat fast immer ein Experiment aufgebaut und uns Effekte vorgeführt, über die wir dann gesprochen haben und er zum Schluss die Deutung verraten hat.

    [Wir hatten Physik meistens in der ersten Stunde in einem Klassenraum, von dem aus man auf den Sportplatz schauen konnte. Ich kam meistens später. Und wenn der Lehrer während des Experiment-Aufbaus mal aus dem Fenster schaute - und er schaute immer heraus, weil er auch mich noch zum Unterricht erwartete, dann rief er fast immer aus dem Fenster: "Andreas, ich brauche noch ein wenig mit dem Aufbau. Laufe noch mal ein, zwei Runden um den Platz!". Lehrer befiehlt, Schüler gehorcht. Manchmal hatte ich die Runden abgeschlossen. Und schaute erwartungsvoll und hoffnungsvoll nach oben. Lehrer hantierte noch herum, sah mich und rief, dass ich noch die eine oder auch andere Runde laufen solle und er sich dann melden würde, wenn er fertig ist. Lehrer befiehlt, Schüler gehorcht. Mann, was hatte ich damals eine Kondition!]

    Die Klassenarbeiten waren dann eher wieder klassischer Art. Aber einmal hat er uns das Schrecken gelehrt. Es war ein offizieller schriftlicher Prüfungstermin abgesprochen. Wir kamen in den reservierten Prüfungsraum. Und sahen eine Monster-Apparatur, die nur sein Hirn ersonnen haben mag.

    Er hat diese Monster-Maschine gestartet (an Details kann ich mich leider nicht mehr erinnern) - und wir sollten das Vorgeführte
    a) beschreiben
    b) Zusammenhänge erklären
    c) unser geballtes Formelwissen zum Besten geben

    An diesem Test konnte er schließlich erkennen, wer dem Unterricht zuvor hatte folgen können und sich damit auseinandergesetzt hatte - und wer nur stupide Fakten auswendig gelernt hatte. Die Auswendig-Lerner hatten bei diesem Test jedenfalls nichts auf die Reihe gebracht.

    Wenn Du etwas nicht verstehst, was Du aber durch ein simples Experiment überprüfen kannst, dann experimentiere es aus, bis Dir ein Licht aufgeht. Das hat den Vorteil, genaus DAS nicht mehr zu vergessen.

    Beste Grüße

    Andreas

    EDIT: Vielleicht noch'ne Anekdote:
    Wir hatten noch einen anderen - in jeder erdenklichen Weise andersartigen - Chemie-Leistungskurslehrer. Eines Tages haben wir uns mit Kunststoffen beschäftigt. Jeder durfte einen anderen Kunststoff herstellen. Einer wollte etwas mit einem Monomer machen, das in der Flasche bereits zu einem Block polymerisiert war und Nichts herauszuholen war. Eine Axt musste her - ich hatte eine. Zuhause. Lehrer fragte, wie lange ich wohl brauchen würde. Ein anderer meinte, "Ach, der ist schnell. Der ist in ein paar Minuten wieder hier!" Lehrer befiehlt. Schüler gehorcht. Ich renne nach Hause, hole die Axt. Ich renne zur Schule und schwinge die Axt. Auf dem Weg zur Schule kamen mir Gedanken, wie das wohl auf vollkommen unbedarfte Leute (Passanten, Lehrer, Hausmeister, oh ... Direktor) wirken könnte, wenn ein wild ausschauender Schüler mit einer Axt in der Hand in die Schule rennt - durch die Gänge rennt - in einen Klassenraum rennt. Den Rest kann man sich denken. Ich mir damals auch.

    Der Hausmeister sieht mich.
    Dann rennen zwei.
    Schüler weiß wohin.
    Hausmeister nicht.
    Hausmeister rennt hinterher.
    Hausmeister ruft.
    Hausmeister brüllt.
    Schüler brüllt zurück "Dem zeige ich's!"
    Hausmeister brüllt und rennt schneller.
    Schüler rennt auch schneller.
    Links in den Gang.
    Rechts in den Gang.
    Treppe rauf.
    Links rum in den Gang.
    Links um die Ecke.
    Schüler öffnet Tür.
    Schüler schließt Tür.
    Schüler gibt dem Lehrer die Axt.
    Lehrer hebt die Axt.
    Tür geht auf.
    Hausmeister will retten.
    Lehrer schlägt mit der Axt zu.
    Flasche kaputt.
    Lehrer hackt weiter ...
    ... wie bessessen auf dem Polymer herum.
    Holzgriff der Axt bricht.
    ... Stunden vergehen. Es wird dunkel ...
    Lehrer schleicht am Abend zu Vater und beichtet die Aktion.
    Vater bekommt neue Axt.

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (18. Oktober 2015 um 12:44)

  • Ihr habt mehr oder weniger ja schon ausführlich erklärte, was es mit den Pullupps und Pulldowns auf sich hat. Ich habe vor einiger Zeit eine ganz allgemeine "Abhandlung" über GPIOs geschrieben. Da ist auch eine Abteilung über die Pulls drin, sehr populärwissenschaftlich, aber vielleicht hilfts an dieser Stelle: https://raspiprojekt.de/machen/basics/…howall=&start=3

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!