GPIO2 Pull Up Widerstand

  • Hey Leute,


    habe ein Problem. Hab nen Duchflusssensor für eine Wasserpumpe. Dieser hat vier Anschlüsse einmal + und - für die Stromversorgung und zwei Impulsausgänge OUT1 und OUT2. Der Impulsausgang hat 5V. Hab nun extra den GPIO2 genommen um die Impulse mit hilfe einer Interruptroutine ISR.c aus der WirinPi Bibliothek zu zählen. Meines Wissen hat der GPIO2 einen internen Pull UP resistor von 1,8k ist das richtig? Ich habe nun folgendes Problem, mit der Interruptroutine erfasst er immer den ersten Impuls und dann geht er in eine Endlosschleife. Ich bin mir aber ziemlich sicher, dass es nicht am Programm liegt. Könnte sich jemand mal meine Verdrahtung anschauen und mir sagen, ob da vielleicht was nicht passt?



    Ist jetzt nichts kompliziertes, aber komme nicht weiter oder muss man den Pull UP softwareseitig irgendwie aktivieren?


    Hoffe jemand kann mir helfen


    :s

  • Doch habe ihn direkt dran gehängt, aber wie gesagt, der GPIO2 hat einen integrierten Pull Down Widerstand von 1,8k , deshalb ist ein externer weiterer Widerstand nicht notwendig.


    LG Pi94

  • Hallo Pi94,
    ich fürchte, da hast Du etwas nicht verstanden.


    Quote


    IO Pins


    All IO pins are 3.3V, not 1.8V. Pins are not 5V tolerant.


    -> Quelle <-


    Bevor Du weiterbastelst und Deinen RPi ins Nirvana schickst, wäre es imho nicht verkehrt, wenn Du Dir ein paar Grundlagen aneignen würdest ;)


    cu,
    -ds-

  • Wenn das Ganze es so wie im Bild beschaltet wurde, hat der RPi GPIO vermutlich noch keinen Schaden davon getragen, da kein gemeinsames GND Potential vorhanden ist. Für den sicheren Betrieb sollte man auch wissen was für ein Signal ( Open Collektor ? / max. Strom ) am Ausgang zur Verfügung steht und dann besser einen Spannungsteiler verwenden.

  • Ich hätte dies bezüglich dann noch eine Frage nur zum Verständnis bezüglich des Pullup Widerstandes ich habe das so verstanden, dass ein Pull Up Widerstand den GPIO auf eine gewisse Spannung hoch zieht und ein Pull Down auf eine gewisse Spannung herunter. Also wäre es nicht einfach möglich, den GPIO mit einem Pull Up Widerstand zu versehen auf 3,3V dann müsste das Problem doch erledigt sein oder habe ich da etwas falsch verstanden? :s

    Edited once, last by PI94 ().

  • Hallo PI94,


    Ja, als Antwort auf Deine letzte Frage. Du hast da etwas nicht verstanden.


    Der Raspberry Pi hat in der GPIO-Schnittstelle mehrere als solche gekennzeichnete 5V-Ausgänge. Wenn Du diesen 5V-Pin und einen GND-Pin an ein Voltmeter anschließt, dann zeigt es Dir bestimmt etwas um die 5V an.


    Genauso hat der Raspberry Pi auch mehrere Ausgänge 3V3 = 3,3 V. Diesen und GND an ein Voltmeter angeschlossen wird Dir etwas um die 3,3 V anzeigen.


    Alle anderen Pins sind 3,3V-tolerant. Das heißt sie reagieren auf Spannungspegel bis maximal 3,3 V. Mehr mögen sie nicht.


    Spannungspegel von 0 - 0,8 V werden als LOW erkannt - der Widerstand heißt dann PULL-DOWN-Widerstand.


    Spannungspegel > 1,3 V werden als HIGH erkannt - der Widerstand heißt dann PULL-UP-Widerstand.


    Die Spannung zwischen 0,8 und 1,3 V ist unbestimmt, was Aussagen zu HIGH und LOW betrifft. Deswegen nimmst Du einen PULL-X-Widerstand, um Spannungspegel eindeuig in die eine oder andere Richtung zu bringen. Dau kannst da ja mal mit einem Potentiometer und einem Taster ausprobieren. Oberhalb eines Widerstandes hast Di eine saubere Trennung von "Taster gedrückt" und "Taster nicht gedrückt". Unterhalb eines definierten Widerstandes häufen sich Fehlerkennungen. Bei einem Wideratand von 0 wird Dir genauso oft "Taster gedrückt" signalisiert wie "Taster nicht gedrückt" - owohl Du den Taster nicht betätigst.
    Wenn Du diese ansonsten sinnlose Schaltung einmal aufgebaut und getestet hast, ist Dir die Notwenidgkeit von Pull-X-Widerständen deutlich vorgeführt worden.



    Um auf Deine Frage zurückzukommen:


    Du brauchst einen Spannungsteiler, der die 5V eines Eingangssignals auf 3V3 bringt. Beispiele für Widerstandwerte wurden Dir bereits genannt. Ein PULL-UP-Widerstand würde Dir immer etwas erzeugen, was deutlich größer als 3V3 ist - und damit den GPIO-Pin oder gleich den ganzen Raspberry Pi zerschießen.


    Brauchst Du nicht zu wiederholen - haben schon genug andere vor Dir gemacht.



    Tip am Rande: Ich würde an den Begriffen, die Dir Fachkundige hier nennen, in einschlägigen Informationsquellen recherchieren und versuchen zu verstehen, was sich dahinter verbirgt.


    Wenn Du den Spannungsteiler verstanden hast, dann wirst Du ganz schnell merken, das der etwas ganz anderes macht ein als ein PULL-X-Widerstand.



    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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.

  • Besten Dank Andreas :thumbs1:


    Was ein Spannungsteiler ist weiß ich und habe es auch verstanden, ich hatte nur meine Probleme mit dem Pull Down bzw. Pull Up Widerständen, habe das mal in einem Forum gelesen bezüglich eines Stromzählers mit s0 Ausgang, welcher ja auch Impulse liefert, deswegen dachte ich, dass kann man auch ähnlich auf mein Problem anwenden, was mir aber gerade klar geworden ist, ist dass der s0 Ausgang im Gegensatz zu meinem Sensor kein Spannungsimpulse liefert sondern Stromimpulse und deshalb wird der Pull Up Widerstand eingesetzt und mit deiner Erklärung gibt das für mich nun auch Sinn weshalb dieser eingesetzt wird, um ein definiertes Signal zu bekommen.


  • Spannungspegel von 0 - 0,8 V werden als LOW erkannt - der Widerstand heißt dann PULL-DOWN-Widerstand.


    Spannungspegel > 1,3 V werden als HIGH erkannt - der Widerstand heißt dann PULL-UP-Widerstand.


    Hm :s Meines Wissens nach hat erst mal weder HIGH noch LOW etwas mit dem Pull-Up/Down Widerstand zu tun, da dieser standardmäßig nicht aktiviert ist.


    Erneut, meines Wissens nach:


    Wenn man Pull-Up verwendet muss man den GPIO mit einer Spannung beschalten. (so wie Andreas beschrieb) (to pull up , also hoch ziehen)
    Wenn man Pull-Down verwendet muss man den GPIO mit GND beschalten. (to pull down , also runter ziehen)
    Den internen Widerstand des GPIO's muss man erst aktivieren.


    Aber wie gesagt, unter Vorbehalt! Kann mich hier auch irren, dann dürft ihr mich steinigen :D

  • Hallo Meigrafd,


    ich habe ausdrücklich nichts von aktiviertem Pull-X-Widerstand geschrieben, weil ich die eingebauten Widerstände Käse finde. Vergisst man die zu aktivieren, dann verbrutzelt Dir das den Pi genauso, als wenn Du keinen oder einen falsch dimensionierten verbaut hast.


    Wenn ich also von Pull-X-Widerständen rede, dann meine ich ich die, die der Bastler selber verbaut hat.


    Was in der Betrachtung von mir gefehlt hat, ist ein Aktor (wie Taster) oder Verbraucher. Erst dadurch findet ein Pegelwechsel statt, da erst dadurch ein Stromkreis geschlossen wird (bzg. des GPIO-Pins, der Pegelwechsel erkennen soll. DAs hatte ich als Selbstverständlichkeit betrachtet - und nicht erwähnt.


    Im Elektronik-Kompendium ist eine anschauliche Schaltung für die beiden Fälle enthalten.


    Dann sollte Alles geklärt sein.


    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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.

    Edited once, last by Andreas ().