Lüftersteuerung mit DS1621

  • Moin beinander,


    kurz noch einmal zum Baustein DS1621:
    Der Chip verfügt über eine I2C-Schnittstelle und ist sowohl ein Temperatur-Sensor als auch ein Thermostat.
    Ich habe den IC in Verbindung mit einem SEPA MFB25A-05 Ventilator getestet. Dieser Fan ist mit seinen 25x25x10 mm ein Winzling der auch noch in ein normales Pi Gehäuse passen sollte und für seine Größe ganz ordentlich "Luft ablässt ;)".


    Auf dem Lüfter sind 5V 0.2A angegeben, wobei im Betrieb lediglich 50 mA gezogen werden. Die 200 mA beziehen sich m.E. auf den Einschaltpeak.
    Wer also nicht schon zu viel an seinen GPIOs resp. denen seines Pi angesteckt hat, der kann den Lüfter ohne externe Stromversorgung betreiben.


    Der Vorteil des DS1621 liegt darin, dass ich den Pin Tout verwenden kann, und nicht dauernd auf irgendwelche Temperaturgrenzen prüfen muss. Da das Ansprechen des Chips ein wenig tricky ist, habe ich eine kleine Bibliothek in C dazu erstellt, die als Sourcecode bei github abrufbar ist:


    Zitat


    Funktionsweise:
    Der IC kann als normaler Temperatur-Sensor ausgelesen werden. Dazu wird ein Register des Chips gelesen und in eine Temperatur umgerechnet. Die Genauigkeit liegt bei +/- 0.5 °C.
    Zudem besteht die Möglichkeit, eine Temperatur-Ober- und eine Temperatur-Unter-Grenze zu definieren. Wenn die aktuelle Temperatur den oberen Grenzwert über- bzw. den unteren Grenzwert unterschreitet, wird ein "Alarm" ausgelöst. Dieser setzt in den Registern des DS1621 ein Flag (THF Temp. High Flag bzw. TLF Temp. Low Flag) und zusätzlich den Pin Tout des IC auf Low bw. High. Letzteres kann ebenfalls über das Control-Register definiert werden (Active LOW bzw. Active HIGH).
    All diese Werte lassen sich mit den C-Sourcen relativ einfach lesen und schreiben.
    Der Gag dabei ist, dass die eingespeicherten Werte auch beim Ausschalten nicht verloren gehen.


    So ... nun besteht die Möglichkeit, den Pin Tout auf einen GPIO-Pin zu legen, der als Input definiert ist, und dann auf einen "rising edge" Interrupt zu warten (z.B. mit wiringPi).
    Es geht aber auch, direkt einen Lüfter damit anzusteuern ... und das ist das, was ich in angehängtem Schaltbild gemacht habe.
    Da der DS1621 an Tout nur max. 2mA liefert, wird mit diesem Pin ein Standard-Transistor vom Typ BC337 angesteuert. Durch den vorgeschalteten Widerstand von 10 kOhm liegt der benötigte Steuerstrom bei ca. 0.25 mA.
    Der Lüfter (soll der Kreis mit den beiden Anschlüssen rechts oben im Bild sein) wird zwischen Collector und +5V angeschlossen. Der Emitter geht direkt auf GND.
    Die Stromversorgung des DS1621 erfolgt über einen 3V3 Pin der GPIO-Leiste.
    I2C Clock und Daten werden ebenfalls direkt an die entsprechenden Pins der GPIOs angeschlossen.
    Nach Anschluss des IC sollte er mit i2cdetect -y 1 auf Adresse 0x48 auftauchen.


    So, ich hoffe, ich habe jetzt nichts vergessen.
    Dann viel Spass beim Ausprobieren. Bei Fragen etc. einfach melden ...


    Viele Grüsse aus dem, mittlerweile regennassen, Süden,
    -ds-

  • hast du den Sensor mit Wärmeleitkleber verkehrt auf die PI CPU geklebt ?
    so ganz verstehe ich noch nicht, ich brauche einen PI o.ä. um den Sensor am I2C zu setzen
    da könnte ich auch die PI CPU Temp befragen und den Lüfter einschalten.



    All diese Werte lassen sich mit den C-Sourcen relativ einfach lesen und schreiben.
    Der Gag dabei ist, dass die eingespeicherten Werte auch beim Ausschalten nicht verloren gehen.
    -ds-


    und bei stromlos ? nach dem Programieren, kann der autark arbeiten ?

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von jar ()


  • Hi jar ...


    nö ... angepappt habe ich den nicht. War ja auch nur mal ein Versuch, ob ich das so hinbekomme, wie ich es gerne hätte. Muss ja auch nicht unbedingt die CPU-Temperatur, sondern kann auch Dein Kaffeewasser sein :) 
    und ja ... klar könntest Du die CPU-Temperatur befragen und einen Lüfter ansteuern. Du kannst aber auch einmal die Grenzwerte im Thermostaten setzen und dem dann die Arbeit des Ein/Ausschaltens und Prüfens überlassen.
    Und ja auch stromlos - die Werte werden scheinbar in einer Art Eeprom gespeichert.
    Und richtig ... das meinte ich - der kann autark arbeiten ... das ist ja der Witz dabei ;) ...
    cu,
    -ds-

  • Du kannst aber auch einmal die Grenzwerte im Thermostaten setzen und dem dann die Arbeit des Ein/Ausschaltens und Prüfens überlassen. Und ja auch stromlos - die Werte werden scheinbar in einer Art Eeprom gespeichert. Und richtig ... das meinte ich - der kann autark arbeiten ... das ist ja der Witz dabei schrieb:

    Normale Schmitt-Trigger und OPAMPS sind günstiger.

  • Habs gefunden. :danke_ATDE:

    Das heisst, ich kann nur die Subadresse festlegen ?

    Ich habe nämlich noch einen A/D-Wandler am Pi, welcher auch auf 0x48 festgelegt ist.

    Das gibt doch Konflikte, oder stehe ich wieder mal auf dem Schlauch ?

  • Jo ... wenn Du Dir das


    Zitat

    The next 3 bits of the control byte are the device select bits (A2, A1, A0). They are used by the master device to select which of eight devices are to be accessed. These bits are in effect the 3 least significant bits of the slave address.

    ( Datasheet Seite 8 )


    mal verinnerlichst, hast Du's ;)


    //EDIT: irgendwie witzig, dass Du ausgerechnet eines meiner ersten Machwerke hier ausgebuddelt hast :)


    cu,

    -ds-

  • Zitat

    irgendwie witzig, dass Du ausgerechnet eines meiner ersten Machwerke hier ausgebuddelt hast

    Hm, ertappt. Ich weiss selbst nicht mehr wie ich diesen Thread gefunden habe, aber nachdem ich ihn gelesen hatte, musste ich die Leiche nochmal ausbuddeln. :lol: