Hushbox-Lüftersteuerung auf Basis ESP8266

  • Hallo zusammen,


    ich würde hier gerne eine Lüftersteuerung für eine Hushbox entwickeln.

    Als Basis dafür bietet sich der ESP8266 eigentlich sehr gut an, da er eigentlich alles notwendige unterstützt.


    Was soll die Steuerung können?

    a) Temperatur erfassen und die Lüfter entsprechend regeln

    Anfangen würde ich mit einem Kanal. D.h. es wird ein Temp.-Sensor ausgelesen und eine Geschwindigkeit der Lüfter geregelt. Später sollte sich das bei Bedarf sicher auf weitere Kanäle ausbauen lassen.

    Der ESP kann PWM erzeugen und sollte damit normale Gehäuse-Lüfter ansteuern können.


    b) Display zur Datenanzeige

    Ein Display zur Anzeige der aktuellen Temperatur und Lüfterdrehzahl ist sicher sinnvoll


    c) möglichst kompakt

    Soll ja am besten mit in die Box passen


    d) nachbaubar

    Falls jemand ebenfalls so eine Steuerung sucht, soll möglichst mit "Standardkomponenten" gearbeitet werden, um den Aufwand gering zu halten.


    e) Remote Abfrage der Werte *

    Ist wahrscheinlich keine schlechte Idee, die aktuellen Werte für Temperatur und Lüfterdrehzahl von aussen abfragbar zu machen, um sie in andere Steuerungen zu integrieren.

    Das wäre per HTTP-GET-Requests machbar.

    (* falls Interesse besteht)



    Bisher habe ich folgende Komponenten dafür ausgesucht:

    - ESP8266 (NodeMCU V3.3)

    - DS18B20 Temperatur-Sensor

    - 0,96 Zoll Arduino OLED Display SSD1306


    Dazu würde noch ein 12V-Netzteil und die Lüfter kommen.


    Mit der Programmierung der Steuerung habe ich schon mal etwas angefangen. Da die Komponenten bisher jedoch noch nicht hier sind, kann es noch nicht praktisch getestet werden.

    Denke/hoffe aber, dass ich das hinbekomme :)

    Sobald die Teile hier sind, werde ich es testen....

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Hi,

    kennst du ESP Easy? Da kann man sich genau das und noch viel mehr relativ einfach konfigurieren. Unterstützte Komponenten:

    https://www.letscontrolit.com/wiki/index.php?title=Devices

    Danke dir für den Tip. Kannte ich noch nicht.


    Glaube ich mache aber doch eher eine Software eigens dafür. Hab ich mal Lust drauf :boss:

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Will dir den Thread nicht kapern, aber hier noch ein paar Links.

    Alles gut. Habe das Projekt ja extra früh hier eingestellt, um evtl ein paar Anregungen dazu zu bekommen.


    An sich ist ESP Easy schon sehr mächtig und bietet viele Möglichkeiten. Wahrscheinlich ließe sich die Steuerung sogar damit umsetzen.

    Allerdings müsste das dann vermutlich rein per Konfiguration passieren. D.h. es müssten nicht nur alle Elemente (Sensoren, PWM, Display, MQTT,...) eingerichtet werden. Sondern auch die Regeln, was wann wo wie passieren soll.
    So wie ich verstehe, müsste dann jeder andere genau diese Konfiguration bei sich nochmal durchführen. Oder gibt es eine Möglichkeit, einen Stand in ESP Easy zu exportieren?


    Eine eigene Software hätte eben diesen Vorteil, daß man ein fertiges Paket hat, was schon genau das macht, was es soll.

    Fertige Libs für den Temp-Sensor, das Display oder auch MQTT gibt es bereits. Die einzubauen ist (hoffentlich) nicht allzu schwierig.


    Besser wäre MQTT

    Stimmt. Das ist auch ein gebräuchliches Protokoll und würde Sinn machen zu unterstützen.

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Inzwischen bin ich schon ein gutes Stück weiter gekommen.

    Der ESP samt Display und Temp.sensor kam schon an.


    Also habe ich als erstes mal etwas in ESPEasy reingeschnuppert.

    Die Installation und Einrichtung der beiden Elemente war wirklich easy. Schon nach kurzer Zeit, hat das Display die aktuelle Temperatur angezeigt :)


    Dann habe ich den IMHO Showstopper gecheckt, ob man alles exportieren kann.

    Das geht sogar, wenn auch nicht mittels einer einzigen Datei. ESPEasy nutzt dafür verschiedene Dateien

    Nach einem Export der Settings, hatte ich einen Werksreset gemacht und anschliessend wieder die Dateien importiert. So war wieder alles wie vorher.

    Passt also.


    Der große Vorteil wäre dann wirklich die einfache Erweiterbarkeit.

    Ein zusätzlicher Drehgeber zum direkten einstellen... ein anderes Display.... oder auch MQTT... kein Problem.


    Was allerdings gerade nicht so dolle war, war die Umsetzung der Steuerung.

    Dafür wollte ich einen klassischen PID-Regler umsetzen, dem man eine Soll-Temperatur vorgibt, anhand derer dann die Ventilatoren gesteuert werden. Für nicht-triviale Formeln und Variablen ist das Tool nur nicht so wirklich gemacht.

    Auch wenn die Regeln sch** aussehen :mad:es geht zumindest prinzipiell.


    Eine andere Lösung wäre es natürlich mit Temp.-Grenzwerten zu arbeiten, ab denen die Lüfter hoch-/runtergeregelt werden. Finde ich jedoch etwas schwerer zum einstellen.


    Der nächste Knackpunkt wird die Steuerung der Lüfter per PWM.

    Laut Spezifikation sollen Gehäuselüfter mit ~25kHz angesteuert werden. Der ESP macht Standardmäßig jedoch nur 1kHz. Laut ESPEasy Doku gehen auch bis zu 30kHz.
    Da muss ich mal schauen, wie sich das in der Praxis verhält.


    Als Lüfter habe ich mir jetzt die bestellt: Scythe Kaze Flex 120

    Das ist ein 120er PWM Lüfter, der auch sehr ruhig sein soll.

    Sobald die und das Netzteil dazu da sind, geht's weiter....

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Netzteil und Lüfter sind inzwischen da.

    Ein paar Erkenntnisse dazu auch...


    Die Lüfter lassen sich ansteuern. Allerdings anders als erwartet.

    Bei der PWM-Regelung lassen sich die Zustände von 0 (=aus) bis 1023 (=volle Drehzahl) setzen. Mein Lüfter verhält sich nur leider etwas anders.

    0 = volle Drehzahl

    1 = minimale Drehzahl

    1023 = weniger als volle Drehzahl.

    D.h man kann von 1-1023 die Drehzahl varrieren. Bei 0 geht er jedoch auf volle Drehzahl, die auch höher ist, als das was ich per PWM maximal einstellen kann.

    Meine Vermutung ist, dass bei ausbleiben eines Signals der Lüfter auf volle Drehzahl geht, um sicher zu gehen, daß im eventuellen Fehlerfall nichts überhitzen kann. Warum die Drehzahl jedoch nicht per PWM erreicht werden kann, kann ich bisher nicht sagen.


    Das kann jedoch von PWM-Lüfter zu PWM-Lüfter verschieden sein, wie ich gelernt habe. Anscheinend setzen die Hersteller da verschiedene Regelungen fest.

    Damit ist dann wohl auch leider die Umsetzung hier abhängig vom Lüfter und müsste notfalls an das jeweilige Modell angepasst werden.

    Eventuell wäre da ein 3-Pin Lüfter (also kein PWM-Modell) besser. Der sollte entprechend den Werten linear geregelt werden können. Bei denen kann man jedoch kein Tachosignal abgreifen, um ein eventuelles Stehenbleiben zu erkennen.


    Das "mein" Lüfter nicht ausgeschaltet werden kann, sondern immer mit einer mindest Drehzahl läuft, heisst dann auch, dass er vom Strom getrennt werden müsste. Dafür könnte man bspw ein Relais nehmen.

    Oder man schaltet die komplette Steuerung aus. Das wäre im Fall der PID-Steuerung auch sinnvoll. Denn die ist nicht unbedingt dafür gemacht im Leerlauf zu arbeiten.

    Allerdings sollte man das ja erst ein paar Minuten nachdem der Beamer sich selbst ausgeschaltet hat machen. Das wäre aktuell mein Plan - auch wenn der nicht der komfortabelste ist.


    Beim Stichwort "PID-Regler", muss ich inzwischen jedoch sagen, dass das eventuell doch ein wenig wie mit Kanonen auf Spatzen ist.

    Prinzipiell fand ich den Gedanken gut, dass sich die Lüfter selbst regeln und versuchen eine bestimmte Temperatur zu erreichen.

    Nachdem ich die Lüfter nun aber mal gehört habe, wäre es auch absolut praktikabel diese ab einer gewissen Schwelle voll aufzudrehen. Denn hören kann man sie nicht. Sie würden also auch nicht stören, wenn sie mit voller Drehzahl laufen, solange der Beamer an ist.

    Das würde fast wieder für eine ganz simple Steuerung sprechen, die einfach per Relais die Lüfter ab einer bestimmten Temperatur anschaltet.


    Unabhängig von den ganzen gesammelten Erkenntnissen, ist mir dann heute anscheinend mein Temp.Sensor abgeschmiert. Gestern hatte er angefangen teilweise keine Werte mehr zurück zuliefern. Heute kam irgendwann gar nix mehr.
    Hatte erst einen Wackler in der Verdrahtung oder einen anderen Fehler in Verdacht. Das scheint aber alles zu passen.

    Deswegen habe ich mir jetzt mal einen DHT22 Sensor bestellt und schaue mal, wie der sich so macht.

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Am Sensor ja.

    Hatte einen 10er Pack 4,7kOhm Widerstände gleich mitbestellt.

    Einen davon hatte ich mal zwischen das PWM-Signal gesteckt. Vorher wurden Werte ausgegeben. Danach kamen keine Werte mehr an.


    Das ist auch noch ein weiterer Punkt.
    Die exakte Drehzahl lässt sich nicht ermitteln, sondern schwankt sehr stark.

    Zumindest würde sich das PWM-Tachosignal aber dafür nutzen lassen, um einen Alarm auszulösen, sobald die Lüfter stehen. Keine Drehung wird zuverlässig erkannt.

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Mit ESPEasy habe ich nun denke ich einen Punkt erreicht, bei dem ich sagen kann, ja funktioniert.


    Der Temp.sensor ist eingebunden ist gibt die aktuelle Temperatur aus.

    Die Geschwindigkeit der Lüfter wird entsprechend reguliert.

    Die Zieltemperatur, sowie die aktuelle Temperatur und Drehzahl werden auf dem Display angezeigt.


    Das ganze auf dem ESP einzurichten ist auch kein Hexenwerk.

    Nachdem die Firmware geflasht wurde und man die eigentliche Oberfläche von ESPEasy sehen kann, sollte zuerst die Hardware eingerichtet werden.

    Wie so was aussehen sollte, sieht man hier:


    Das Display und der Temperatursensor sind aktiv. Ausserdem braucht man noch ein Dummy-Device, um die Parameter der Regelung einzustellen. Die "SetTemp" ist dabei die Zieltemperatur, die gehalten werden soll.


    Beim einrichten muss man auf die richtige Benamung achten.

    Der Temperatursensor muss "TempSensor" und der Parameter für dessen aktuellen Wert "Temperature" heissen.

    Das Dummy-Device muss "Params" und dessen Parameter entsprechend dem Screenshot heissen.


    Danach kann man die Regel für die Steuerung hochladen. Dazu auf den Reiter "Rules" gehen und die angehängte Regel per Copy&Paste einfügen und speichern.


    Jetzt sollte der ESP neu gebootet werden, um die Regel zu aktivieren. Das geht über den Reiter "Tools". Dort gibt es ein "Reboot".

    Jetzt sollten die Lüfter langsam anfangen zu laufen *daumendrück*


    So viel zur Einrichtung.

    Wer keine Programmierkenntnisse hat, oder die Möglichkeiten und Flexibilität von ESPEasy nutzen möchte, der sollte mit dieser Vorgehensweise zurecht kommen.

    Falls Unklarheiten bestehen, könnt ihr gerne fragen.


    Allerdings muss ich auch sagen, dass ich mit ESPEasy nicht wirklich grün wurde. So lag bspw. das Problem mit dem Temp.sensor anscheinend an einem Caching/Update Problem von ESPEasy. Nach einem Factory-Reset und erneutem einspielen meiner Konfiguration, ging der Sensor wieder.

    Auch wie man die Rules schreibt, sagt mir nicht so wirklich zu. Zudem lassen sich mit einer eigenen Software noch andere Dinge IMHO besser regeln.

    Deswegen bin ich inzwischen dazu übergegangen eine eigene Software zu nutzen.

    Dateien

    • rules1.txt

      (933 Byte, 401 Mal heruntergeladen, zuletzt: )

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Hier geht es dann mit einer Custom-Firmware für die Steuerung weiter.


    Neben den kleinen Problemen die ich mit ESPEasy hatte, lassen sich mit einer eigenen Firmware auch Dinge umsetzen, die mir pers. besser gefallen.

    Die Schriftgröße des Displays lässt sich einstellen. ESPEasy bietet nur eine Größe, die mir für das Display eigentlich zu klein ist.

    Die Drehzahl des Lüfters lässt sich genauer auslesen.


    Noch dazu gibt es zig Programmbeispiele, wie man was einbindet, so daß eine eigene Firmware kein allzu großes Problem ist.


    Dazu braucht man die Arduino-IDE. Ist die installiert, müssen darüber alle notwendigen Bibliotheken, sowie der ESP Typ (in meinem Fall "NodeMCU V1.0") installiert werden.

    Jetzt öffnet man den Programmcode. Wenn der keine Fehler enthält, kann man ihn direkt an einen angeschlossenen ESP hochladen.


    Mit dem aktuellen Stand kann bereits die Temperatur ausgelesen und auf dem Display angezeigt werden (in groß :zwinker2:)

    Die Lüfter anhand der Ziel- und aktuellen Temperatur geregelt werden.

    Die aktuelle Temperatur und (reale) Drehzahl kann per HTTP-GET Requests ausgelesen werden.


    Als nächstes würde ich noch die Zieltemperatur per HTTP-POST änderbar machen.


    Da inzwischen auch der zweite Temp.sensor ankam und ich nun zwei Sensoren habe, könnte man die auch dazu nutzen, um die EIngangs- sowie die Ausgangstemperatur zu messen.

    Oder ich schaue mal, welcher von beiden besser funktioniert und nehme doch nur einen.

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Inzwischen ist die Software eigentlich rund genug, um eingesetzt zu werden.

    Musste zwar nochmal die WebServer Bibliothek wechseln. Damit geht es jetzt aber.

    Wer will, findet den aktuellen Stand, unter dem Link weiter oben.


    Auch der zweite Sensor ist eingebunden und funktioniert.

    Allerdings muss man sagen, dass der DHT22 doch ein Stück behäbiger ist, als der DS18B20. D.h. es dauert länger, bis er Temperaturänderungen richtig erkennt. Merkt man ganz gut, wenn man beide mal gleichzeitig in die Hand nimmt.

    Wer also mal vor der Entscheidung steht, einen Temp.sensor zu wählen, dem würde ich eher zweiteren empfehlen.

    Werde den DHT22 jetzt einfach an den Lufteinlass setzen. Da sollte es nicht allzu starke Schwankungen geben :zwinker2:

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!