GPIO Ausgang schaltet selbstständig ab!?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich bin derzeit an einer Zeitsteuerung für eine Pflanzenleuchte dran.

    Problem liegt nun generell daran, dass selbst bei simpelster Programmierung und Verdrahtung (siehe Code) der GPIO, egal welchen ich getestet habe nach wenigen Sekunden wieder abschaltet. Woran könnte das liegen? Bin ratlos.


    Python
    from RPi import GPIO
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(11, GPIO.OUT)
    GPIO.output(11, False)
  • mit "abschalten" meinte ich dass er nach wenigen Sekunden den Wert "True" setzt und somit in dieser kleinen Testschaltung die LED "abschaltet".

    Blinkende LED mit while-schleife funktioniert.

  • mit
    while(true):
    GPIO.output(11, False)
    time.sleep(1)

    dann ist der GPIO dauerhaft auf LOW-Pegel, dann sollte es funktionieren ;)

    oder:

    GPIO.output(11, False)
    while(true):
    time.sleep(1)

    Das Programm in dem du den Pegel definierst sollte nicht beendet werden, ansonsten tritt möglicherweise ein undefinierter Pegel am GPIO auf, wenn du mit einem Multimeter mal nachmessen würdest könntest du sehen, dass der Pegel auch nicht auf HIGH ist, sondern undefiniert (irgend ein Spannungswert zwischen 0 und 3,3 V, der auch schwanken kann)

    sollte der Pegel während des sleeps in einen undefinierten wechseln, so sind die GPIOs womöglich defekt...

  • In der Schleife setzen ist imho nicht nötig.
    Das Beenden des Programms dürfte da ausschlaggebend sein. Als Input haben die Pins dann sehr wahrscheinlich undefinierte Pegel.
    Hast Du schon mal das Tool gpio von wiringPi oder webiopi ausprobiert?

    cheers,
    -ds-

  • Ich habe außerdem einen 10kOhm Wiederstand zum definieren des Pegels zwischen GND und den GPIO IN geschaltet. Habe mit dem Multimeter bei nicht betätigtem Taster eine Spannung von 0,000V und bei betätigtem Taster eine Spannung von 3,253V gemessen.
    Wenn ich am GPIO OUT (18) messe ich bei True: 3,263V und bei False: 1,136V?
    Bei False sollte doch auch 0V anliegen?
    Problem ist wie gesagt, dass der OUT nicht nach den "sleep (20)", sondern bereits nach wenigen Sekunden -unabhängig von sleep- auf True wechselt.

    Wo liegt nun mein Fehler?
    Danke schonmal für die Hilfe

    dreamshader: Nein diese Tools hab ich noch nicht getestet. Sind mir aber ein Begriff. Möchte das Problem nur mal grundsätzlich verstehen wo jetzt mein Fehler ist.

    Hier ist mein Code.

  • Hi,
    die Tools dachte ich auch mehr als zusätzliche Möglichkeit, den Zustand der Pins zu beobachten.

    Welche Pins zeigen denn dieses Verhalten? Bei GPIO18 fällt mir ein, dass dieser wohl der einzige Pin des RPi ist, der Hardware-PWM beherrscht und vom Soundsystem benutzt wird.
    Eventuell besteht da ja ein Zusammenhang?

    cu,
    -ds-

  • Hi,

    habe die Spannung bei False Wert ebenfalls an GPIO25 (PIN22) getestet: 0,982V

    Habe ich einen Denkfehler oder warum schaltet der GPIO Ausgang bei einem False Wert nicht auf 0,0V? Liegt der Fehler in meinem Skript?

    Danke

    EDIT:

    Ich habe das Skript folgendermaßen abgeändert:
    Nun funktioniert auch die Zeit realistisch.

    Das Problem ist nun nur noch, wenn ich Spannung auf GPIO11 (IN) gebe und diese sofort wieder trenne, läuft die Funktion "def test(callback)" zwar ab, jedoch zwei mal hintereinander. Liegt wohl daran, dass der Taster zwei Befehle schickt, wenn ich ihn betätige und wieder loslasse oder?


Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!