Output schaltet "willkürlich"

  • Hallo,
    ich hab mir erst vor ein paar Tagen meinen ersten Raspberry zugelegt und möchte mir eine automatische Bewässerung damit basteln.
    Leider habe ich Probleme mit der Ansteuerung 2er Relaiskarten weshalb ich euch, hier in meinem ersten Forumsbeitrag, um Hilfe bitten möchte.
    (Ich hoffe im richtigen Bereich...denn ich denke es handelt sich eher um ein Elektronik als um ein Python-Problem)

    Zuerst mein Python Code:

    Je nach Programm (Grün, Blau oder Gelb) schalten die Relais für eine bestimmte Zeitdauer. Die Programme Blau und Grün funktionieren einwandfrei. Aber beim Programm Gelb (führt zuerst Programm Blau und anschließend Grün aus) spielen die Relais verrückt.
    Es wird zwar das gewünschte Relais eingeschaltet aber ab und zu (kein Muster erkennbar) schaltet sich einfach das zweite Relais dazu. Manchmal funktioniert auch das gelbe Programm ohne Probleme.

    Hier 2 Bilder der Console:
    Normal:Problem:

    Ich habe bisher nur die GPIO 16/20/21 als Output probiert? Können diese Schuld sein?
    Oder kann es sein das die Output Pins zu viel Strom ziehen? (Laut Relaiskarte sollten nicht mehr als 5mA gezogen werden; und würde dann nicht eher ein Relais ausfallen als eines zu viel dazuschalten?)
    Eigentlich habe ich die Massekabeln alle kontrolliert, aber kann es sein dass der Fehler daher kommt?

    Vielen Dank im Voraus und Liebe Grüße!

  • ich kann in den beiden ProgrammBlau/ProgrammGrün Routinen die while-schleifen Einrückungen nicht erkennen:
    Also: was gehört da in die while-Loop? Das müßte ja eingerückt sein...

    Ist das ein copy/paste Fehler oder die Antwort auf deine Frage (Programmfehler...)

    MfG, das Zen

  • Hallo.
    Ich baue auch an einem Bewässerungssystem und hatte auch ein ähnliches Symptom.
    Sind bei dir am Relais bereits die Magnetventile angeschlossen, oder betreibst du nur die nackte Relaisplatine?

    Ich hatte unkontrollierbare Auslöser, wenn ich die Magnetventile angeschlossen habe.

    Christian

  • Hi,
    pullup am GPIO soll schon sein .... aber;
    ist das so richtig (gewolt)?

    ...

    Code
    elif GPIO.input(TASTER_GELB)==True:
            #Beides beregnen Zuerst Wiese und dann Hochbeet
            ProgrammGruen()  <-----!!!!!!!
            time.sleep(2);
            ProgrammBlau()


    ...
    :huh:

    Sollte ich "Müll- reden" :blush: - bitte mich (?) "auf die Nuss" hauen. :huh:

    Einmal editiert, zuletzt von georg-Lu_1963-1 (20. Mai 2015 um 10:06)

  • Relaiskarte: Es handelt sich um 2 Relaiskarten von Pollin (Datenblatt bei Pollin)
    Diese habe ich direkt an die GPIO-Pins angeschlossen ohne zusätzliche Widerstände.

    An den Relais hängt noch keine Last, da die Magnetventile heute erst angekommen sind.
    Werde versuchen das so schnell wie möglich mit Last zu testen.

    georg-Lu_1963-1: Wie raspiprojekt geschrieben hat, es sollten einfach beide Programme hintereinander mit einer Pause von 2 Sekunden aufgerufen werden. Ich weiß die Bezeichnungen sind nicht gerade ideal (Habe mich anfangs einfach auf die Tasterfarben bezogen).

  • So, nun wird das Bild klarer. Die Relaiskarte ist im Gegensatz zu fernöstlichen Karten schon mal direkt anschließbar. Sie überlastet den GPIO nicht, da sie bei 3,3V tatsächlich nur ca. 2mA zieht. Unser Problem liegt eher daran, dass die Karte zu empfindlich ist. Der low Pegel beim Raspberry Pi ist nähmlich nicht gleich 0V, sondern kann tatsächlich bis über 1 Volt gehen. Da die Karte aber dort schon zu schalten beginnt, kann es sein, dass dieses Verhalten auftritt. Das kann von GPIO zu GPIO und von Karte zu Karte unterschiedlich sein. Aber das ist gar kein Beinbruch, denn das kann man beheben. Versuchsweise klemme einfach mal einen Widerstand zwischen (+) und (-) des Eingangs (nicht der Versorgungsspannung). 5-10k sollten passen, damit am Eingang Störungen durch unsaubere Pegel abgehalten werden. Gehe aber nicht unter 1K, sonst beginnst Du die GPIOs ernsthaft zu überlasten.

    EDIT: Entgegengesetzt zu meinem ersten Beitrag bei dem ich von einer Arduinorelaiskarte ausgegangen bin, wäre es bei Deiner Karte ein Pulldown, also zwischen Signalleitung und Masse.

    Und noch ein EDIT: Da es sich um einen Optokoppler handelt wäre evtl. ein Widerstand zwischen GPIO und Eingang (in Reihe) sinnvoller, ca 470 könnten gut sein. Schaltet die Relaiskarte gar nicht mehr, dann tiefer gehen.

  • Vielen Dank für die schnelle Hilfe.
    Ich habe gerade die Magnetventile an die Relais gehängt und in ca. 5 Testläufen ist der Fehler nicht mehr aufgetreten.
    EDIT: Zur Sicherheit möchte ich aber den Tipp von raspiprojekt berücksichtigen und einen Widerstand in Reihe der Signalleitung einbauen.
    Sobald es Ergebnisse gibt, gebe ich euch Bescheid!
    :danke_ATDE:

  • Habe leider keinen kleineren Widerstand als 500 Ohm zu Hause. Damit schaltet das Relais nicht mehr (~2,3V dürften dann doch zu wenig sein).

    Die Bewässerung ist jetzt aufgebaut und läuft (komischerweise) auch ohne Widerstände mit angeschlossenen Lasten einwandfrei. Vielleicht werde ich in den nächsten Tagen kleinere Widerstände besorgen und ausprobieren.

    Vielen Dank nochmal für eure schnelle Hilfe!

    Für die die es interessiert, ist hier der Letztstand des Programmcodes (inkl. Logging) und ein Bild vom Innenleben meiner Steuerung.


    Innenleben mit viel Heißkleber (an den Tasterenden befinden sich Widerstände)
    Kann den Schaltungsaufbau gerne posten sofern dies gewünscht wird.

    Lg

Jetzt mitmachen!

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