Hallo alle!
Ich hab auch mit langem Googlen die Frage nicht beantworten können, wie man einen GPIO-Eingang (EINGANG!) des Pi beschalten muss oder kann.
Nach allem, was ich gefunden habe, versteht der Eingang alles unter 0,8 V als Low- und alles über 1,3 V als High-Signal.
Man darf nicht mehr als 3,3 V auf die GPIOs geben.
Die Eingänge sollten nicht mit mehr als 16 mA (manchmal liest man auch 50 mA) belastet werden. (Diese Angaben finde ich recht fragwürdig.)
Die GPIOS schalten bei 2-8 mA durch.
So, nun liest man immer wieder, man soll einen Widerstand vor die Eingänge schalten. Das verstehe ich nicht... denn:
1) Der Eingang muss einen inneren Widerstand >0 haben (sonst wär's ja keine Schaltung).
(Achtung: Es geht hier NICHT um die Pullup/Pulldown-Widerstände!!!)
2) Dieser Widerstand müsste, wenn bei mehr als 3,3 V / 16 mA eine Gefahr für den Pi besteht geringer als 206 Ohm sein (3,3 V / 0,016 A = 206 Ohm), weil sonst die 16 mA gar nicht erreicht werden.
Irgendwo hab ich einen Wert von 32 Ohm für den inneren Widerstand gelesen. Nehmen wir mal an, der wäre richtig.
Um auf einen Strom von 2 mA zu kommen, müsste bei 3,3 V der Widerstand 1650 Ohm betragen (3,3 V / 0,002 A = 1650 Ohm).
Dieser teilt sich auf in 32 Ohm internen Widerstand und einen vorzuschaltenden Widerstand von 1618 Ohm.
Vorwiderstand und GPIO bilden dann einen Spannungsteiler. U1 beträgt 3,24 V (1618 Ohm * 0,002 A = 3,24 V). U2 beträgt 0,06 V (32 Ohm * 0,002A = 0,06 V).
Am Eingang des Pi liegen also nur 0,06 V an.
Das widerspricht aber der Angabe, dass die GPIOs bei 0,8 V durchschalten. Und es widerspricht auch der Angabe, dass die GPIOs mit maximal 3,3 V belastet werden dürfen, denn so würden ja noch viel weniger als 3,3 V gefordert sein.
An anderer Stelle habe ich gelesen, dass die GPIOs hochohmig sind, wenn sie auf Input programmiert sind. Das würde Sinn machen, denn dann könnte der innere Widerstand tatsächlich so groß sein, dass bei 3,3 V nicht mehr als 16 mA fließen. Die Grenze von 3,3 V wäre dann entweder durch die Höhe des Widerstandes oder durch irgendwelche Durchbruchspannungen im Inneren der Schaltung gegeben.
Mal als Rechenspiel:
Der GPIO schaltet bei 2 mA und 0,8 V - das entspräche (ohne Vorwiderstand) einem inneren Widerstand des Eingangs von 400 Ohm (0,8 V / 0,002 A = 400 Ohm).
Ob man das als hochohmig bezeichnen kann ist wohl relativ.
Geben wir 3,3 V ohne Vorwiderstand auf diesen Eingang hätten wir 8,25 mA (3,3 V / 400 Ohm = 0,00825 A = 8,25 mA).
Das entspricht genau den 2-8 mA, die für den Eingang angegeben sind und würde auch bedeuten, dass man 3,3 V ohne Vorwiderstand auf den GPIO geben kann.
Der interne 3,3 V-Schaltregler des Pi liefert bis zu 50 mA (dann macht er wohl schlapp ;-). Irgendwo hab ich auch 100 mA für neuere Modelle gelesen.
Speist man alle 26 Pins als Eingänge mit den 3,3 V vom internen Schaltregler, so hätte man knapp 2 mA pro Eingang - das würde gerade so reichen. Bei 100 mA wären es knapp 4 - für die neueren Modelle mit mehr GPIOs erscheint das sinnvoll.
Speist man nur einen Eingang mit den 3,3 V, so bleibt es bei 8,25 mA (wegen des inneren Widerstandes von 400 Ohm).
Ist die Annahme, dass der innere Widerstand eines GPIO-Ports ca. 400 Ohm ist, plausibel? Oder hab ich da einen Denkfehler drin?
Kann ich also ungehemmt 3,3 V (von Pin 1 oder 17 oder aus einer anderen Quelle) auf einen GPIO legen?
Kann ich mit den 3,3 V beliebig viele Eingänge (also alle 26) parallel beschalten?
Hintergrund:
Ich möchte mehrere GPIO-Eingänge über 2 oder 3 Acht-Kanal-Optokoppler ansprechen. Die Acht-Kanal-Optokoppler haben jeweils einen gemeinsamen Spannungsanschluss (an den ich 3,3 V klemmen würde) und liefern an den Ausgängen ggf. ein High-Signal. (Nebenbei: Pulldown-Widerstände sind im Optokoppler verbaut. Ich könnte aber auch die internen Pulldowns im Pi verwenden.)
(Und: Ja, ich könnte auch mit inverser Logik gegen Ground schalten und Pullups benutzen, dann hätte ich das Problem nicht. Aber erstens interessiert es mich trotzdem und zweitens sind die High-Trigger-Optokoppler vorgegeben.)
Freu mich auf eine angeregte Diskussion.