Forum: Mikrocontroller und Digitale Elektronik [RPi2] Eingangsimpedanz der Pins?


von Carsten P. (r2pi)


Lesenswert?

Hallo,

kann mir jemand sagen, wie die Impedanz von einem auf Input geschalteten 
GPIO-Pin ist?? Irgendwie habe ich gerade ein Brett vor dem Kopf... Wenn 
ich einen Eigang mit 3,3V ansteuere, kann ich die 1 problemlos auslesen, 
aber wenn ich eine Quelle mit 5V habe und einen Spannungsteiler hinbaue, 
kommt immer nur eine 0 an. Ist so ein Pin so ein Stromfresser? Oder habe 
ich -- wahrscheinlicher... -- das mit den Pull-ups und Pull-downs nicht 
verstanden?

Also, um das mal noch bissel näher zu beschreiben, ich stecke die 
simpelste Standardbeschaltung eines astabilen Flipflops mit einem NE555 
zusammen, so ungefähr auf 1 Hz. Wenn ich den NE555 mit den 3,3V vom GPIO 
bestücke und den Ausgangspin direkt zurück auf einen GPIO-Pin verdahte, 
funzt alles wie gewollt. Nun wollte ich wegen meiner eigentlichen Ideen 
den NE555 mit 5V bevolten und den Ausgangspin mit einem Spannungsteiler 
(also nix weiter als 2 Widerstände) auf 3,3V runterpegeln -- in der 
Annahme, dass ein GPIO-Pin recht hochohmig ist. Aber Pustekuchen! Jetzt 
stecken schon kOhm-Widerstände im Brett, und es kommt immer noch 0 bei 
raus. Wieviel Ampere frisst so ein GPIO-Eingang denn bitte??

LG
Carsten

PS: Auch wenn das nicht so wirklich korrekt ist, meine ich mit Impedanz 
das ganze Gedöns aus Ohm, Farad, Henry, also den komplexen Widerstand.

: Bearbeitet durch User
von U. M. (oeletronika)


Lesenswert?

Hallo,
> Carsten P. schrieb:
> kann mir jemand sagen, wie die Impedanz von einem auf Input geschalteten
> GPIO-Pin ist??
Prozessoren gibt es wie Sand am Meer und bei den Eigenschaften der Pins 
gibt es sehr viele Varianten. Normal ist es eher recht hochohmig.
Kann aber auch sein, dass GPIO-Pins Pullup-R oder Pulldown-R integriert 
haben oder auch ganz spezielle (exotische) Eigenschaften aufweisen.
Wie das nun konkret beim RPi ist, weiß ich nicht.  Ich denke aber, die 
sind recht normal.

> Irgendwie habe ich gerade ein Brett vor dem Kopf... Wenn
> ich einen Eigang mit 3,3V ansteuere, kann ich die 1 problemlos auslesen,
> aber wenn ich eine Quelle mit 5V habe und einen Spannungsteiler hinbaue,
> kommt immer nur eine 0 an.
Und wo ist jetzt das Problem, zumindest mal statisch die 
Eingangsspannung zu messen?
> Wenn ich den NE555 mit den 3,3V vom GPIO
> bestücke und den Ausgangspin direkt zurück auf einen GPIO-Pin verdahte,
> funzt alles wie gewollt.
Um zu testen, ob ein Eingang einen rel. niedrigen Eingangswiderstand 
hat, schalte einfache einen Reihenwiderstand dazwischen (z.B. 
1...10kOhm).
Anhand der sich einstellen Spannungen kann man leicht abschätzen, ob und 
wieviel das GPIO-Pin an Strom zieht.
Man kann es auch anders testen, z.B. indem man einen Widerstand (z.B. 
10...100k) mal versuchsweise gegen 0V und +Vdd schaltet. Bei hochohmigen 
Eingängen stellen sich Eingangsspannungen nahe 0V bzw. +Vdd ein.

> Nun wollte ich wegen meiner eigentlichen Ideen
> den NE555 mit 5V bevolten und den Ausgangspin mit einem Spannungsteiler
> (also nix weiter als 2 Widerstände) auf 3,3V runterpegeln -- in der
> Annahme, dass ein GPIO-Pin recht hochohmig ist. Aber Pustekuchen! Jetzt
> stecken schon kOhm-Widerstände im Brett, und es kommt immer noch 0 bei
> raus. Wieviel Ampere frisst so ein GPIO-Eingang denn bitte??
Einfach mal ein Multimeter oder Oszi nehmen und messen.
Kann doch nicht so schwer sein, oder?
Gruß Uwi

: Bearbeitet durch User
von Carsten P. (r2pi)


Lesenswert?

Hallo Uwe, ich habe extra [RPi2] ins Topic geschrieben, damit man weiß, 
dass ich einen Raspberry Pi 2 meine, aber okay.

Jo, und was du gerade vorschlägst, habe ich gemacht. Es gibt ja einfache 
Einsteiger-Schaltungen für den Kollegen, wo einfach ein Taster mit Vcc 
und dem Eingangs-Pin beschaltet wird, ohne Vorwiderstand oder Teiler. Da 
habe ich mal mein Multimeter reingeklemmt und sage und schreibe 30 mA 
gemessen??? Das würde ja heißen, dass der Eingangspin gerade mal einen 
Widerstand von 100 Ohm hat? Das finde ich ziemlich... heftig... Wäre ja 
voll der Heizofen dann...

Dann habe ich mir was anderes zusammengesteckt, habe den NE555 so 
gelassen wie beschrieben, also Ausgang auf das Sternchen bei

GND -> -[ 1k ]- -> -|>|"- -> * -> -[ 1k ]- -> -|>|"- -> Vcc
( -|>|"- soll eine übliche rote 5mm-LED sein)

Habe das Sternchen rausgeführt mit einem Vorwiderstand auf einen BC547 
geschaltet, Kollektor auf Vcc, Emitter auf einen 1k-Widerstand und da 
wieder abgegriffen zwischen Emitter und Widerstand und auf den Pin vom 
RPi2, und der zieht die Spannung so in Grund und Boden...

Langsam verstehe ich das nicht mehr. Kann mir vielleicht mal wer mit 
einem Link auf ein Skribble von so einem Eingang weiterhelfen? Die Doku 
zum RPi2 ist zwar ellenlang, aber so ganz eindeutig ist sie nicht, halt 
oft "wenn man so und so beschaltet und dann dies und das tut, kommt das 
dabei raus", aber keine konkreten Zahlen.

Ich glaube aber nach wie vor, dass ich das mit den Pull-ups und -downs 
noch nicht so recht verstanden habe, wie das beim RPi geht.

LG Carsten

von Achim S. (Gast)


Lesenswert?

Carsten P. schrieb:
> ( -|>|"- soll eine übliche rote 5mm-LED sein)

In Sperrrichtung geschalten? So würde ich jedenfalls deine ASCII-Art 
interpretieren. Das könnte dann auch erklären, warum kein Strom 
durchkommt.

Carsten P. schrieb:
> Habe das Sternchen rausgeführt mit einem Vorwiderstand auf einen BC547
> geschaltet, Kollektor auf Vcc, Emitter auf einen 1k-Widerstand und da
> wieder abgegriffen zwischen Emitter und Widerstand und auf den Pin vom
> RPi2, und der zieht die Spannung so in Grund und Boden...

Mein Vorschlag: wenn du keine passende Software hast, um die Schaltung 
schnell mal nachvollziehbar zu zeichnen (man kann auch dafür z.B. 
LTSpice nutzen), dann zeichne sie doch einfach mal mit einem Stift auf 
ein Blatt Papier und stell ein Foto davon hier rein. Das wird die Sache 
sehr viel besser nachvollziehbar machen.

Wenn der IO einen Emitter "in Grund und Boden" zieht, dann ist
a) entweder der IO kaputt oder
b) der IO doch auf Ausgang geschalten oder
c) irgendwas in der Schaltung faul. Und um das zu prüfen, würde ein 
klarer Schaltplan helfen.

von U. M. (oeletronika)


Lesenswert?

Hallo,
> Carsten P. schrieb:
> ich habe extra [RPi2] ins Topic geschrieben, damit man weiß,
> dass ich einen Raspberry Pi 2 meine, aber okay.
Darauf habe ich mich ja dann auch bezogen.
Aber selbst innerhalb eines uC sind GPIO-Pins nicht alle gleich.
Im Zweifel muss man immer genau die Datenblätter studieren.

> wo einfach ein Taster mit Vcc und dem Eingangs-Pin beschaltet
> wird, ohne Vorwiderstand oder Teiler.
Da sollte man zumindest bei Bastelschaltungen vorsichtig sein.
Zumindest ein kleiner Reihenwiderstand mit z.B. 100 Ohm schützt vor 
direktem Kurzschluss. So mancher uC nimmt einen Kurzschluss an Pins sehr 
übel.

> habe ich mal mein Multimeter reingeklemmt und sage und schreibe 30 mA
> gemessen??? Das würde ja heißen, dass der Eingangspin gerade mal einen
> Widerstand von 100 Ohm hat? Das finde ich ziemlich... heftig... Wäre ja
> voll der Heizofen dann...
Nein, das ist ein sehr sichere Zeichen, dass das Pins nicht als Eingang, 
sondern noch als Ausgang parametriert ist.
Eine weitere Variante wäre nur noch: Das Pin ist kaputt (hat innen einen 
Schluss nach Masse oder +Ub). Ich nehme mal erstes an.

Nun kann es sein, dass du trotzdem an dem Pin einen Pegel einlesen 
kannst.
Das ist unter Umständen möglich, wenn ein Pegel mit einem ausreichend 
leistungsstarken Treiber auf den Eingang geprügelt wird.
Das ist natürlich keine Betriebsart, die irgendwo dokumentiert ist.
Danke dem lieben Gott, wenn die Pins davon nicht abrauchen.
Manche uC sind auch eher sehr robust.

> RPi2, und der zieht die Spannung so in Grund und Boden...
Ja, setze das Pin erst mal als Eingang.
Oder prüfe erstmal. ob das Pin überhaupt als GPIO vorgesehen ist.

Prüfe auch mal, wie sich das Pin im Resetzustand verhält.
Wenn es ein normales GPIO ist, das sonst keine spezielle Primäre 
Funktion hat, dann sollte es im Reset auch hochohmig sein.

> Ich glaube aber nach wie vor, dass ich das mit den Pull-ups und -downs
> noch nicht so recht verstanden habe, wie das beim RPi geht.
Was hast du nicht verstanden? Interne Pullup/Pulldown oder externe?

Ich meine, du hast ein ganz anderes Problem, siehe oben.
Gruß Öletronika

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Der NE555 hat einen TTL-Ausgang, d.h. schon bei kleiner Belastung sinkt 
die Spannung auf etwa VCC-2V ab.
Nimm einen 7555 CMOS-Typ, dann sollte es klappen.

Was ist so schwer daran, den Spannungsteiler auch zu benennen?
Niemand kann riechen, welche Werte Du genommen hast.

Typisch haben CMOS-Eingänge einen Leckstrom <1µA, Pullups ~50µA und für 
Ausgänge können 30mA Kurzschußstrom stimmen.

von Soul E. (Gast)


Lesenswert?

Carsten P. schrieb:

> kann mir jemand sagen, wie die Impedanz von einem auf Input geschalteten
> GPIO-Pin ist??

Üblicherweise gibt man den Leckstrom an, nicht die Impedanz. Der liegt 
je nach Controllertyp so zwischen 1 und 100 µA.

D.h. der Pin saugt maximal 100 µA aus Deinem Spannungsteiler, oder 
drückt 100 µA rein. Entsprechend sollte der Querstrom durch den 
Spannungsteiler 1-2 Größenordnungen höher sein.

von Ulrich F. (Gast)


Lesenswert?

Einen RPi Pin mit 30mA belasten?
WAHNSINN

Mein Halbwissen:
8mA ist die Grundeinstellung
In 2mA Stufen einstellbar, bis max(16mA?)
Die Pins haben keinerlei Strombegrenzung/Schutzschaltung.

Bei 30mA ist das also schon tief im Todesbereich.
Man man man ...

Alle Pins zusammen: maximal 50mA (?)

Tipp:
Erst kundig machen und dann messen.

http://de.scribd.com/doc/101830961/GPIO-Pads-Control2

Und zum Eingangswiderstand:
Die zuschaltbaren Pullup und Pulldown haben ca 60K
Der Eingangswiderstand eines Pin wird ERHEBLICH größer sein.

von Carsten P. (r2pi)


Angehängte Dateien:

Lesenswert?

Wie gewünscht die Schaltung.

Paar Erklärungen: R3 und R4 sind bewusst so groß gewählt, weil ich keine 
hell strahlenden LEDs will, sondern nur eine visuelle Rückmeldung und 
Energie sparen. Die LEDs sind Standard-Ramsch-5mm-rot. R6 ist eigentlich 
nur ein Schutzwiderstand, falls der RPi abfackelt.

Im Leerlauf messe ich zwischen GPIO_GEN0 und GND (ohne echte Verbindung 
zwischen der Schaltung und dem RPi) 0,00V und 3,15V. 3,15V sind laut 
Beschreibung locker im sicheren High-Bereich des RPi.

PS: Die Schaltung ist natürich nicht durchgerechnet, sondern eher 
"durchgeschätzt". Ist ja keine Semesterarbeit, sondern nur ein simpler 
Test.

Wenn ich den Emitter mit einem 3k3-Widerstand belaste (immer noch ohne 
echte Verbindung), sinkt die Spannung auf ~1,9V. So gut, so schön. Aber 
3k3 ist ja wohl kaum "hochohmig"??

Ich benutze übrigens die libbcm2835.

: Bearbeitet durch User
von Carsten P. (r2pi)


Lesenswert?

Das Problem hat sich erledigt.

Der Wrapper um die libbcm2835, den ich benutze, hat eine Macke. Man 
sollte sich eben nie naiv auf die Ratschläge, Rechnungen oder den Code 
von anderen verlassen.

Es war wirklich so, dass der Pin beim Initialisieren über den 
Konstruktor nicht auf IN geschaltet wurde, sondern noch auf OUT stand. 
Danke an denjenigen hier, der mich darauf gebracht hat, das nochmal 
abzufragen! Und zum Glück ist auch nichts abgeraucht, alle Pins noch 
heil. Hohe Widerstandswerte haben manchmal doch was Gutes :)

LG

von Achim S. (Gast)


Lesenswert?

Carsten P. schrieb:
> Das Problem hat sich erledigt.

na prima

Carsten P. schrieb:
> Wenn ich den Emitter mit einem 3k3-Widerstand belaste (immer noch ohne
> echte Verbindung), sinkt die Spannung auf ~1,9V.

Tja, dann ist noch was anderes faul. 1,9V an 3k3 sind 570µA. Wenn die 
Spannung am Emitter bei der geringen Belastung so weit einbricht, dann 
muss im realen Aufbau etwas anders sein als in obigem Schaltbild. Hast 
du vielleicht am BC547 Kollektor und Emitter vertauscht?

Einen gewissen Pulldown (wie z.B. den 3,3kOhm) wirst du übrigens 
brauchen. Mit der oben gezeigten Schaltung ohne Pulldown könntest du den 
RPi-Eingang nur auf High-Pegel ziehen. Soblad der NE555-Ausgang auf low 
geht, zieht nichts den  RPi-Eingang aktiv auf low. Vielleicht läuft er 
bei der geringen Frequenz des NE555 auch irgendwann gegen GND, aber 
damit machst du dich davon abhängig, wie groß irgendwelche Leckströme 
grade sind.

von Carsten P. (r2pi)


Lesenswert?

Achim S. schrieb:7
> Tja, dann ist noch was anderes faul. 1,9V an 3k3 sind 570µA. Wenn die
> Spannung am Emitter bei der geringen Belastung so weit einbricht, dann
> muss im realen Aufbau etwas anders sein als in obigem Schaltbild. Hast
> du vielleicht am BC547 Kollektor und Emitter vertauscht?

Nein, ich habe bewusst den Basisvorwiderstand so groß gewählt, um 
überhaupt mal den Fehler zu finden, der ja, wie gesagt, nicht in der 
Hardware, sondern im Wrapper um den Treiber liegt.

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
Noch kein Account? Hier anmelden.