Gemeinsame Masse? 5V über Transistor schalten – Fehler?

  • Hallo Zusammen,


    ich bin der Neue. ;) und habe hier schon einige Posts gelesen denen eine ähnliche Schaltung zugrunde liegt wie meine. Ich habe aber, weil Elektronik neu für mich ist, Schwierigkeiten die Beiträge auf meine Schaltung umzusetzen und den Fehler darin zu finden. Es wäre schön wenn mir jemand helfen könnte.


    Meine Frage:
    Warum brennt die LED sobald ich die 5 Volt der externen Stromquelle anlege? Erst wenn ich den Pi angeschaltet UND den GPIO 04 auf „out“ gesetzt habe erlischt sie. Ab dann kann ich sie wie gewollt ein/ausschalten. Schalte ich den Pi wieder aus leuchtet die LED wieder.


    Bin für jede Hilfe dankbar.


    wawapro


  • Die Schaltung ist mal grundsaetzlich in Ordnung.


    Vermutlich fliessen da irgendwelche parasitaeren Stroeme.
    Ist die LED gleich hell wenn der PI nicht eingeschaltet ist ?


    Der 100k-Widerstand scheint mir recht hoch. Was passiert
    bei 10k ?


    Noch besser ist es natuerlich, die Spannung an der Basis
    zu messen und den Strom der durch die LED fliesst.

  • Danke Tell und meigrafd für Eure Antworten.


    Ich habe jetzt alles nochmals (gefühlt zum 500-sten mal) Schritt für Schritt durchgespielt und dabei auch gemessen. Evlt. hilft Euch oder auch anderen es weiter zu erkennen wo mein Fehler liegt:


    • 5V angelegt + Pi aus (stromlos) → LED aus
    • Pi ein (strom angelegt) → LED an (es fließen jetzt 11 mA durch die LED, Die Spannung zwischen GPIO 4 (also vor dem 22 k Widerstand) und GRD beträgt 1,3 Volt, zwischen Basis und GRD 0,7 Volt, zwischen Pi und Basis fließen 0,4 mA)
    • echo „4“ /sys/class/gpio/export → keine Änderung
    • echo „out“ /sys/class/gpio/gpio4/direction → LED geht aus
    • echo „1“ /sys/class/gpio/gpio4/value → LED geht an (durch die LED gehen 16 mA, am GPIO 4 fließen 0,17 mA zur Basis)
    • echo „0“ /sys/class/gpio/gpio4/value → LED geht aus
    • Pi herunterfahren (shutdown -h now)→ LED geht an
    • Pi aus (stromlos) → LED geht aus


    Ich habe es auch mit einem 10k Widerstand statt der 100k versucht. Auch habe ich versucht den 100 k Widerstand ganz weg zu lassen. Das Ergebnis ist leider gleich.
    [hr]
    Jetzt kommts! :mad_GREEN:


    Bisher hatte ich wie beschrieben die Basis des Transistors and GPIO 4 (Pin 7). Ground war an Pin 9. Jetzt habe ich die Basis and GPIO 17 (Pin 11) und Ground an Pin 25 gehängt. Und siehe da jetzt geht alles wie gewollt und erwartet. Die LED bleibt so lange aus bis ich via echo "1" > /sys/class/gpio/gpio17/value die LED anschalte.


    Jetzt interessiert mich natürlich warum das ganze über GPIO 17 geht aber nicht über GPIO 4?


    Noch als Zusatzinfo: Keine Ahnung warum ich GPIO 4 ausgewählt habe. Aber wäre ich mal blos schon vor 3 Tagen darauf gekommen einen anderen Pin zu wählen. :wallbash:

    Edited once, last by wawapro ().

  • Einige Pins haben noch spezielle Funktionen. Ich weiß grad nicht auswendig welche das genau sind, aber das kann man ja googeln ;)
    Vielleicht ist der PIN den du zuerst genommen hast ja einer dieser speziellen. Gibt z.B. einen, den man mit GRND überbrücken kann um den RPi aufzuwecken, also wenn man da vom Pin auf GRND gehen muss, dann wird da wohl Spannung anliegen.

  • der einzige Unterschied zwischen GPIO4 und GPIO17 den ich kenne ist, dass GPIO17 für das RTS signal des UART vorgesehen ist. Vielleicht zieht der Kernel deshalb beim booten den Port auf Masse oder aktiviert den internen Pull-down Widerstand.


    Imho ist der 100k Widerstand an der falschen Stelle und zu hoch. Zwischen Basis des Transistors und Masse brauchts keinen Widerstand. Mich würd interessieren was passiert wenn du den Widerstand direkt zwischen GPIO4 und Masse setzt. 10k sollten gut genug sein um den Port sauber auf Masse zu legen, bevor er intialisiert wird.

  • Danke RyuKajiya und nurazur für Eure Antworten.


    Wie von nurazur angedacht habe ich zwischen GPIO 4 und Masse einen 10k Widerstand gesetzt. Und siehe da jetzt geht es auch mit GPIO 04. Die LED bleibt mit diesem Widerstand aus.


    Ich schließe daraus dass beim Starten des Pi nicht alle Pins gleich eingestellt sind. Kann ich das evtl. mit einem Startskript, mit dem ich alle Pins auf "out" setze, umgehen? Oder sollte ich grundsätzlich alle Pins die ich benutzen möchte direkt mit Ground verbinden?


    Ich war nebenher auch schon am googlen. Aber so richtig was gefunden, was ich mit meinem Anfängerwissen verstehe, habe ich bis jetzt noch nicht.

    Edited once, last by wawapro ().

  • Problematisch am GPIO beim RasPi ist, dass er nicht weiß was er darstellen soll. So sind die Pegel wärend des Startens undefiniert und können frühestens bei der ersten Möglichkeit des Lesens eines Scripts beeinflusst werden. Ein blöder Effekt ist, dass Du z.B. bei Relaiskarten beim Einschalten ein wildes geklacker haben kannst. Richtige Abhilfe schafft eigentlich nur ein Portextender Schaltkreis z.B. über den I²C-Bus. Dort sind die Pegel grundsätzlich auf low und ändern sich wärend des Einschaltens auch nicht.


  • Problematisch am GPIO beim RasPi ist, dass er nicht weiß was er darstellen soll. So sind die Pegel wärend des Startens undefiniert und können frühestens bei der ersten Möglichkeit des Lesens eines Scripts beeinflusst werden. Ein blöder Effekt ist, dass Du z.B. bei Relaiskarten beim Einschalten ein wildes geklacker haben kannst. Richtige Abhilfe schafft eigentlich nur ein Portextender Schaltkreis z.B. über den I²C-Bus. Dort sind die Pegel grundsätzlich auf low und ändern sich wärend des Einschaltens auch nicht.


    Ah ok verstehe. Danke Dir Jörg für die Info. Dann werde ich den Thread mal als gelöst markieren.


    Danke nochmals an alle die mir geantwortet haben.