Lüfter läuft nach Shutdown weiter

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Forum,

    ich habe, wie in diesem Tutorial beschrieben, einen Lüfter an meinen
    Raspberry Pi gebaut.
    Nun habe ich das Problem, dass bei mir die Steuerung des Lüfters genau umgekehrt
    funktioniert, als wie in dem Tutorial beschrieben. D.h. der Lüfter wird mit echo="0", anstatt echo="1" gestartet.
    Die Folge ist, dass der Kühler nach dem herunterfahren des Pi immer weiter läuft. (Solange er am Strom hängt)
    Das wollte ich jetzt ändern und brauche euren Rat.

    Das original Script:

    Meine Veränderung damit der Lüfter bei mir Funktioniert:



    Ansonsten habe ich alles wie im Tutorial gemacht.

    Gruß

    Einmal editiert, zuletzt von dbv (8. Oktober 2013 um 12:38)

  • Was man machen könnte, was jedoch nur geht ist, wenn der PI auch wirklich herunter gefahren wird und nicht einfach der Stecker gezogen wird, ein Script ausführen lassen, was das Signal für ausschalten sendet.

    Klingt simpel und sollte das Problem lösen. Wie es sich verhält wenn man einfach den Stecker zieht weiß ich dann nicht, das Script/der Befehl wird dann ja nicht ausgeführt

    Gruß,
    Nesc

  • nesc: Ich glaube da verpeilst du was... Bitte lies den Ersten Post noch mal genauer:


    funktioniert, als wie in dem Tutorial beschrieben. D.h. der Lüfter wird mit echo="0", anstatt echo="1" gestartet.
    Die Folge ist, dass der Kühler nach dem herunterfahren des Pi immer weiter läuft. (Solange er am Strom hängt)

    ..Der Pi wird herunter gefahren aber der Lüfter läuft weiter..

    Da der Lüfter vom RaspberryPI sein Strom bezieht, dieser aber kein PowerManagement hat, kann sich dieser auch nicht komplett Stromlos schalten, er geht also nicht wirklich komplett aus sondern wird nur angehalten

    Eine mögliche Lösung wäre ein Runlevel Script einzubinden welches beim herunterfahren den Lüfter auch wirklich anhällt

    Allerdings klärt das nicht wieso es hier bei Timmeyable genau andersherum läuft also anstatt "1" muss er 0 setzen - eben genau andersherum wie in der Anleitung beschrieben -- und ich vermute das genau hier das Problem liegt, da der GPIO Pin anders geschaltet wird als in der Anleitung beschrieben, also wäre mit solch einem Runlevel Script nicht gewiss ob das überhaupt funktionieren würde... Dann lieber herausfinden wieso es beim TE hier andersherum abläuft

  • Im Post, der vom Thread ersteller angegeben worden ist, hat jemand genau das gleiche Problem,
    da wurde ähnliches vorgeschlagen.

    Nochmal um zu dem Beitrag zu springen:
    Lueftersteuerung ohne Python

    Der Lüfter wird also mit LOW in dem Fall eingeschaltet, und wenn der PI heruntergefahren wird, liegt ja immer noch ein LOW im Register. Der PI hat ja auch weiterhin Strom, deshalb leuchtet die Power-LED auch immer noch. Deshalb war ich mir unsicher, ob es helfen könnte wenn man vor dem Herunterfahren eine 1 rein schreibt.

    meigrafd:
    Ja klar ist es komisch, das er es umgekehrt bedienen muss, dem sollte man auf jeden Fall nachgehen. Eventuell wird in dem Thread dem jenigen auch geholfen, der das gleiche Problem hat. ;)

    Gruß,
    Nesc


  • Im Post, der vom Thread ersteller angegeben worden ist, hat jemand genau das gleiche Problem,
    da wurde ähnliches vorgeschlagen.

    Nochmal um zu dem Beitrag zu springen:
    Lueftersteuerung ohne Python

    Hehe - Vergleich mal die beiden Namen aus diesem Thread und aus dem anderen: Timmeyable Timmeyable

    Der Lüfter wird also mit LOW in dem Fall eingeschaltet, und wenn der PI heruntergefahren wird, liegt ja immer noch ein LOW im Register. Der PI hat ja auch weiterhin Strom, deshalb leuchtet die Power-LED auch immer noch. Deshalb war ich mir unsicher, ob es helfen könnte wenn man vor dem Herunterfahren eine 1 rein schreibt.

    meigrafd:
    Ja klar ist es komisch, das er es umgekehrt bedienen muss, dem sollte man auf jeden Fall nachgehen. Eventuell wird in dem Thread dem jenigen auch geholfen, der das gleiche Problem hat. ;)

    ;)
    Genau das ist das Problem - allerdings bin ich mir mittlerweile ziemlich sicher das Timmeyable vergessen hat den GPIO Port auf " out " zu stellen - denn aus eigener Erfahrung weiss ich das "in" standardmässig "1" ist, wobei bei "out" standardmässig "0" ist..
    Wenn die Richtung "IN" und value auf 0 ist, leuchtet bei mir die LED (die ich zum nachvollziehen dieses Problems angeschlossen hab), stell ich die Richtung aber auf "OUT" leuchtet die LED nur wenn ich value auf 1 stelle


    Also vermutlich hat er die /etc/rc.local Datei beim bearbeiten kaputt gemacht (deshalb halte ich auch nichts davon die Datei zu bearbeiten)

    Die GPIO Port Initialisierung würde ich stattdessen über Crontab regeln

    Die crontab des root Benutzers öffnen:

    Code
    sudo crontab -e


    Wenn anstatt vi lieber nano genutzt werden soll, ein mal vorher export EDITOR=nano ausführen

    In die Crontab trägt man dann folgendes ein:

    Code
    @reboot  echo 14 > /sys/class/gpio/export; echo out > /sys/class/gpio/gpio14/direction

    @reboot sorgt dafür das der Befehl nur ein mal bei Systemstart ausgeführt wird

    ...das wars dann auch schon...

    Aber trotzdem sollte man ein mögliches Problem mit /etc/rc.local beheben


  • Genau das ist das Problem - allerdings bin ich mir mittlerweile ziemlich sicher das Timmeyable vergessen hat den GPIO Port auf " out " zu stellen - denn aus eigener Erfahrung weiss ich das "in" standardmässig "1" ist, wobei bei "out" standardmässig "0" ist..
    Wenn die Richtung "IN" und value auf 0 ist, leuchtet bei mir die LED (die ich zum nachvollziehen dieses Problems angeschlossen hab), stell ich die Richtung aber auf "OUT" leuchtet die LED nur wenn ich value auf 1 stelle

    hört sich sehr plausibel an, deswegen bin ich ja auch ein Freund von pulldowns also 1k Ohm am GPIO nach GND, dann sieht der ULN oder der Transistor bei IN auch ein echtes low welches man nur mit GPIO auf OUT umschalten kann

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Sorry, dass ich so lange gebraucht habe um zu antworten.
    Hatte nicht so viel Zeit.

    @meigrafd

    Code
    cat /sys/class/gpio/gpio14/direction

    gibt lediglich "out" aus.

    So sieht meine rc.local aus:

    Gruß Tim :)

  • Hast du /etc/rc.local unter Linux bearbeitet oder hast du die Datei unter Windows bearbeitet?


    Wenn unter Linux dann sehe ich jetzt (leider) kein Fehler - werde das aber heute Abend auch mal nachbauen, muss mir nur vor Feierabend einen Transistor besorgen ;)

  • Hm oke also unter Linux via nano bearbeitet...

    Wie ich aber gerade auch erst realisiert habe nutzt du GPIO-14, der gehört eigentlich zur seriellen Schnittstelle und sollte nicht für sowas benutzt werden

    Benutz mal stattdessen GPIO-17 und schreib das Script und auch die /etc/rc.local entsprechend um - das Script aus dem Thread ist zudem leicht fehlerhaft da fehlt am Anfang des Scripts der Shebang / Interpreter...

    Also dann so:

    nano /usr/local/bin/luefterskript.sh

    nano /etc/rc.local

    Code
    # GPIO Init
    echo 17 > /sys/class/gpio/export
    chmod 666 /sys/class/gpio/gpio17/value
    chmod 666 /sys/class/gpio/gpio17/direction
    echo out > /sys/class/gpio/gpio17/direction

    crontab -e

    Code
    * * * * *  bash /usr/local/bin/luefterskript.sh
  • Hm - hab mir jetzt einen Transistor besorgt (BD615) aber irgendwie funktioniert das nicht :-/ :s

    Das Steckbrett ist so aufgebaut:

    Spoiler anzeigen

    mbcwrnadyhsc.png

    Anstatt der LED hab ich ein 12V Lüfter angeschlossen. Der Widerstand hat 6,8k Ohm.

    Das Problem dabei ist jetzt, das der Lüfter permanent an ist sobald ich ein mal den GPIO-17 auf 1 stelle.. Setz ich den Pin aber auf 0 bleibt der Lüfter an - selbst wenn ich den GPIO Pin lösche also via gpio unexportall

    Code
    root@raspberrypi:~/_CHAT# cat /sys/class/gpio/gpio17/value 
    0
    root@raspberrypi:~/_CHAT# cat /sys/class/gpio/gpio17/direction 
    out
    root@raspberrypi:~/_CHAT#

    Auch wenn ich value über 1min auf 1 oder 0 stelle, ändert das nichts :(

    ..irgendwie steh ich grad aufm Schlauch :denker:

    /EDIT:

    Ich glaub ich hab den Bockmist entdeckt.. Und zwar scheint der BD615 nicht so zu funktionieren wie der BC547 :huh:
    Steck ich den mit der beschriftet Seite zu den Kabeln also wie auf dem Bild oben zu sehen in Richtung des Raspberry's, geht garnix
    Steck ich den anders rum rein also pin1 & pin3 vertauscht, ist der Lüfter permanent an...

    Glücklicherweise hab ich mir aber auch ein BC547 Transistor besorgt aber nun kommts: schliese ich den so an wie auf dem Paint Bild von diesem Beitrag passiert genauso wenig....
    Drehe ich ihn aber um funktioniert es! GPIO-17 auf 1 -> Lüfter an, GPIO-17 auf 0 -> Lüfter aus!

    /EDIT2:

    Die Pin Belegung vom BD615 ist anders da ist es B, C, E .. Also anders als bei dem BC547 mit C, B, E

    BC547: C = pin1 = Minus Pol am Lüfter ; B = pin2 = 6,8k Ohm Widerstand und GPIO ; E = pin3 = GND

    BD615: B = pin1 = 6,8k Ohm Widerstand und GPIO ; C = pin2 = Minus Pol am Lüfter ; E = pin3 = GND


    Wenn man das also richtig anschliest funktionierts obiges Script auch so wie gedacht... Von daher würde ich vermuten das du es falsch verdrahtet hast Timmeyable ?


    /EDIT3:

    Wenn ich das System runter fahre geht auch der Lüfter aus


  • Hm - hab mir jetzt einen Transistor besorgt (BD615) aber irgendwie funktioniert das nicht ....

    Ich glaub ich hab den Bockmist entdeckt.. Und zwar scheint der BD615 nicht so zu funktionieren wie der BC547

    Die Pin Belegung vom BD615 ist anders als bei dem BC547 mit C, B, E


    :thumbs1: gut recherchiert :bravo2: (meine ich ernst)

    ich gehe bei allen Beschreibungen natürlich davon aus das die Leute die richtigen Teile wählen und dann noch richtig anschliessen oder das Datenblatt befragen, aber das schützt natürlich nicht vor falsche Datenblätter (da falle ich sogar und mein Kollege drauf rein, aber wenigstens können wir das irgendwann feststellen)

    PS. wenn ich Install, Software und Scripte falsch übernehme funktionierts bei mir auch nicht (wenn euch das tröstet)

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Mit fritzing kriegt man 3 angezeigt: Steckbrett, Schaltplan, Leiterplatte

    Aber das bringt nix wenn ein Transistor eine andere Pinbelegung als der andere hat - Das Symbol für einen NPN oder für einen PNP Transistor ist im Schaltplan nämlich überall gleich, das sagt nichts darüber aus ob pin1 am Bauteil der Collector oder die Basis is... Dh. selbst wenn man ein Schaltplan hat kann man das Bauteil falsch anschliesen - anhand des Schaltplans weiss ich nur was an die Basis, den Collector und den Emitter soll/muss....

  • Vielen Dank für die schnelle Hilfe! Ich bin wirklich begeistert von diesem Forum.

    Ich werde die gennanten Lösungsvorschläge in den nächsten Tagen mal durchprobieren
    und melde mich dann. :)

    Gruß :thumbs1:

  • Hey,

    ich greife das Thema jetzt nochmal auf, da ich damals keine Zeit hatte das Problem zu fixen und es dann leider in Vergessenheit geraten ist.

    Welcher Pin ist den Pin 1 bei dem Transistor? Ich gehe davon aus, dass Pin 1 ganz links ist, wenn der Transistor mit der gewölbten Seite nach unten liegt. Ist das richtig?

    Gruß Tim


  • Welcher Pin ist den Pin 1 bei dem Transistor? Ich gehe davon aus, dass Pin 1 ganz links ist, wenn der Transistor mit der gewölbten Seite nach unten liegt. Ist das richtig?

    default gibt es keinen Pin 1 !

    Es gibt eine "übliche" Regel (von der viele heute auch abweichen können)

    man guckt dem Transisor unters Kleid auf die Beine (botton view) und wenn man dann ein Dreieck der drei Beine sieht Spitze oben und evtl. Gehäuse flach unten dann zählt es oft im Uhrzeigersinn ab links

    E B C oder auch B E C, wenn alle Beine nun in einer Reihe liegen, flach aber unten ist zählt man eben von links nach rechts (aber 1 2 3 ist so willkürlich, da sage ich nix zu)

    aber jede andere Kombination ist auch möglich ! deswegen immer Datenblatt von DIESEM Hersteller studieren, gleiche Bezeichnung, anderer Hersteller würde ich mich nicht drauf verlassen.


    NPN oder PNP kann man locker über Diodentest feststellen

    bei NPN muss die rote Plusstrippe vom Multimeter an ein Bein gelegt werden, solange bis man an den verbleibenden Beinen mit - schwarze Strippe 0,5-1,5V sieht.
    Dort wo die rote Strippe + auf beide anderen Beine mit - nacheinander Durchgang zeigt also unter 2V ist Basis

    bei PNP genau umgekehrt


    Unter 1V normaler Silizuim Transistor, über 1V Darlingtontransistor


    wer nun noch den Emitter finden will ? später mal :D

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Alles klar, dann schein die Verkabelung so richtig zu sein.

    Ich habe das ganze System jetzt so verändert, wie meigrafd das in seinem Post beschrieben hat.
    Und siehe da, der Lüfter wird wie gewollt gestartet und gestoppt, wenn die bestimmten Temperaturgrenzen erreicht sind und geht auch nach dem Shutdown aus.

    Der Widerstand ist jetzt an GPIO Pin 17 angeschlossen und das Script und die rc.local sind entsprechend angepasst.

    Vielen Dank für die Hilfe! :)

    Gruß Tim

    //EDIT:

    Muss man Pin 14 jetzt irgendwie wieder deaktivieren?

    Einmal editiert, zuletzt von 71m (8. Juli 2014 um 19:48)

Jetzt mitmachen!

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