RaspberryPi GPIO Zustände vertauscht
lima-city → Forum → Heim-PC → Hardware
antwort
auswirkung
bau
code
elektromotor
fehler
gesetz
knopf
leuchten
liegen
machen
mode
motor
nutz
spannung
stelle
strom
url
verbraucher
widerstand
-
Hallo,
ich habe ein Problem mit den GPIO-Pins an meinem Raspberry Pi Modell B. Als Betriebssytem nutze ich Raspbian, um die GPIO-Pins zu schalten nutze ich wiringPi. An einem der Pins habe ich eine einfache LED angeschlossen, um den Zustand (An/Aus) dieses Pins sehen zu können. Das Funktioniert auch, aber aus irgendeinem Grund werden die Zustände vertauscht ausgewertet. Sobald ich
ausführe, also Pin 22 als Ausgang definiere, fängt die LED an zu leuchten.gpio -g mode 22 out
gibt mir dann folgendes für Pin 22 zurück:gpio readall
+----------+-Rev2-+------+--------+------+-------+ | wiringPi | GPIO | Phys | Name | Mode | Value | +----------+------+------+--------+------+-------+ | 3 | 22 | 15 | GPIO 3 | OUT | Low | +----------+------+------+--------+------+-------+
Als "Value" wird "Low" angegeben, so wie es auch sein sollte, da ich den Pin ja noch nicht aktiviert habe. Dabei leuchtet die LED aber schon, was sie noch garnicht tun sollte. Um sie jetzt auszuschalten, muss ich über
den Pin aktivieren, also genau falsch herum. Nachdem ich danngpio -g write 22 1
abgeschickt habe, schaltet sich die LED aus undgpio -g write 22 1
gibt folgendes zurück:gpio readall
+----------+-Rev2-+------+--------+------+-------+ | wiringPi | GPIO | Phys | Name | Mode | Value | +----------+------+------+--------+------+-------+ | 3 | 22 | 15 | GPIO 3 | OUT | High | +----------+------+------+--------+------+-------+
Laut dieser Angabe müsste die LED jetzt leuchten, aber das tut sie nicht.
Ich habe bereits zwei verschidene SD-Karten verwendet, um einen Fehler beim Installieren auszuschließen. Außerdem habe ich bereits mehrere Pins überprüft. Sowohl Pin 22 als auch Pin 27 liefern das gleiche Ergebnis. Ein PHP-Script, dass auf einem anderen Raspberry Pi mit identischer Konfiguration die Pins fehlerfrei steuern konnte, funktioniert jetzt nurnoch falsch, also der Knopf für "An" schaltet die LED aus und der Knopf für "Aus" schaltet die LED an.
Hat jemand eine Idee, wodran das liegen könnte? Ich habe schon ein bischen im Internet recherchiert, aber noch nichts brauchbares gefunden. Falls noch jemand weitere Informationen braucht, um eine Antwort zu geben, gebe ich diese gerne an.
MFG THWBM
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Bau die LED richtig rum ein, wenn das nicht funktioniert dann nutze einen Pull Down Widerstand.
Ach ja: LEDs gehören nicht direkt an Pins eines Controlers.
Beitrag zuletzt geändert: 21.2.2014 19:30:53 von fatfox -
Hallo,
danke für deine Antwort, aber ein paar Fragen habe ich noch:
fatfox schrieb:
Bau die LED richtig rum ein[...]
Was heißt "richtig rum"? Wenn man bei einer LED +/- vertauscht, leuchtet sie gar nicht erst, weil dann kein Strom fließt. Aber selbst, wenn ich einen Verbraucher wie einen Elektromotor anschließen würde, dann würde er zu keinem Zeitpunkt rückwärts laufen. Er würde nur, wenn ich den Pin auf "Aus" stelle vorwährts, und wenn ich den Pin auf "An" stelle gar nicht drehen.
fatfox schrieb:
[...][W]enn das nicht funktioniert dann nutze einen Pull Down Widerstand.
Was genau ist ein "Pull Down Widerstand"? Ein Widerstand allgemein verhindert einen Kurzschluss, wenn man beispielsweise einen Verbraucher hat, der auf 3V ausgelegt ist, man aber insgesammt 5V Spannung hat. Macht der Pull Down Widerstand das gleiche? Außerdem möchte ich keine Externe Lösung. Ich möchte, dass wenn mir der Raspberry Pi sagt, dass ein bestimmter Pin an ist, dieser auch an ist und ich nicht erst einmal umdenken muss. Der Fehler muss im Raspberry Pi liegen und nicht in der Schaltung selber, die ja nur aus dem Raspberry Pi, zwei Kabeln und einer LED besteht.
fatfox schrieb:
[...]Ach ja: LEDs gehören nicht direkt an Pins eines Controlers.
Inwiefern? Was sprich dagegen, eine einzelne LED zu Testzwecken direkt an die GPIO-Pins anzuschließen? Wie sollte ich es schlauer lösen?
Bitte entschuldige, falls das ziemlich einfache Dinge sind, nach denen ich hier frage.
MFG THWBM -
Überprüfe die Polarität der LED trotzdem, eine LED ist keine klassische Diode und hat in Sperrichtung eine geringe Sperrspannung, es ist möglich das eine falsch gepolte LED zu unerwünschten Signalzuständen führt.
Ein Elektromotor dreht niemals vorwärts oder rückwärts er dreht oder dreht nicht.
Die Drehrichtung ändert man indem man die Polarität ändert (oder bei Wechselspannungsmotoren die Phasenlage), wenn man die Polarität des Motors nicht verändern kann oder will dann verändert man eben die Polarität der Spannungsquelle. Je nachdem wo du also jetzt deinen Ausgangspin anschließt und wo deine Masse dreht der Motor bei logisch HIGH "vorwärts" oder "rückwärts" probier das mal mit einer Batterie und einem kleinen DC Motor aus...du wirst überrascht sein.
Ein Pull Down Widerstand ist ein Widerstand der für konsistente Signalpegel in digitalen Schaltungen sorgt. Der Pull Down Widerstand legt das Signal an einem Ein- oder Ausgang auf ein spezifisches Potential (oft GND) damit wird verhindert das bspw. Einkopplungen, Kapazitäten, statische Elektrizität das Signal verfälschen.
Mehr dazu hier: https://www.elektronik-kompendium.de/public/schaerer/pullr.htm
Im übrigen verhindert ein Widerstand (ganz allgemein) keinen Kurzschluss (wie könnte er) ein Widerstand begrenzt den durch Ihn fließenden Strom, nicht mehr und nicht weniger, entsprechend dem ohmschen Gesetz hat das Auswirkungen auf die Spannungen was man sich bspw. bei Vorwiderständen oder eben den Pull Down Widerständen zu Nutze macht .
Das Verhalten bleibt aber trotzdem fishy...nimm ein Multimeter im (Gleich)Spannungsmessbereich, schwarze Messleitung an GND, rote Messleitung an den Pin, Spannung messen und Zustand lt. Software notieren, dann Pin umschalten und wieder messen und erneut notieren und poste hier die Werte.
Zur Beschaltung.
An eine LED gehört MINDESTENS ein Vorwiderstand zur Strombegrenzung wenn du den nicht hast könnte auch das den Fehler verursachen. Besser noch verwendet man einen Ausgangstreiber bspw. einen Transistor, mehr dazu auf:
http://elinux.org/RPi_Tutorial_EGHS:LED_output -
Hallo,
vielen, vielen Dank für deine Antwort:
fatfox schrieb:
Überprüfe die Polarität der LED trotzdem, eine LED ist keine klassische Diode und hat in Sperrichtung eine geringe Sperrspannung, es ist möglich das eine falsch gepolte LED zu unerwünschten Signalzuständen führt.
Ich habe schlicht und ergreifend den falschen Pin erwischt, das konnte ja nichts geben. Jetzt funktioniert alles einwandfrei. Danke!
fatfox schrieb:
Ein Elektromotor dreht niemals vorwärts oder rückwärts er dreht oder dreht nicht.
Ich habe mich da vielleicht falsch ausgedrückt. Mit "vorwährts" bzw. "rückwärts" meinte ich die Drehrichtung.
fatfox schrieb:
Im übrigen verhindert ein Widerstand (ganz allgemein) keinen Kurzschluss (wie könnte er) ein Widerstand begrenzt den durch Ihn fließenden Strom, nicht mehr und nicht weniger, entsprechend dem ohmschen Gesetz hat das Auswirkungen auf die Spannungen was man sich bspw. bei Vorwiderständen oder eben den Pull Down Widerständen zu Nutze macht .
Ich glaube, da habe ich mich auch zu blöd ausgedrückt. Ich wollte Sagen, dass man Vorwiderstände einsetzen kann, um beispielsweise eine 12V Autolampe mit 24V zu betreiben, ohne dass irgendetwas durchschmort.
fatfox schrieb:
An eine LED gehört MINDESTENS ein Vorwiderstand zur Strombegrenzung [...]
Die LED, die ich verwende braucht laut Verkäufer eine Spannung von 2,9V - 3,5V. Die GPIO Pins des Raspberry Pis liefern aber nur maximal 3,3V.
Vielen Dank für die Hilfreiche Antwort, auch wenn der Fehler so einfach war.
MFG THWBM -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage