Elektronik_Header_3Lüftersteuerung mit ESP-01

 

Lüftersteuerung mit Arduino Nano

Die Wechselrichter unserer PV-Anlage sitzen in einem Kellerraum in dem zusätzlich ein großer Warmwasserspeicher steht, der über Solarkollektoren aufgeheizt wird.

Im Winter ist das kein Problem, im Gegenteil, auch ohne Heizkörper ist der Raum immer schön kuschelig, auch wenn es draußen richtig kalt ist. Im Sommer hingegen heizt sich der Raum trotz geöffnetem Fenster ziemlich auf, gerne auch mal auf über 34° C. Das tut der Elektronik der Wechselrichter und der Heizungssteuerung sicher nicht gut, weshalb ein Lüfter dafür sorgen soll, dass die zu warme Raumluft nach draußen abgeführt wird.

Vorgriff auf später:
Der dafür eingesetzte Lüfter hat einen Durchmesser von 35 cm und zieht 90 W bei Volllast. Außerdem macht er in dieser Betriebsart einen Heidenlärm, so dass ich zusätzlich zu der Möglichkeit, den Lüfter mit einem Solid State Relais (SSR) per Microcontroller ein- oder auszuschalten, noch einen Drehzahlsteller dazwischen geschaltet habe um die Solldrehzahl und damit die Lautstärke auf ein angenehmeres Maß zu reduzieren.

Der zu warme Raum ist aber nur Teil des Problems, denn das Fenster ist Süd-Ost orientiert und ohne Schatten, so dass die Sonne im Sommer die Außenluft vor dem Fenster ordentlich aufheizt.

Würde ich also den Lüfter immer dann einschalten, wenn es im Raum zu warm geworden ist, kann es durchaus passieren, dass zeitgleich die Außenluft ggf. noch wärmer ist und der Lüfter den Raum noch zusätzlich erwärmen würde. Bei so einer Konstellation muss der Lüfter tunlichst aus bleiben.

Ich benötige also zwei Temperatursensoren für Innen- und Außentemperatur, ein SSR um den Lüfter zu schalten und ein Display um die Schaltschwellen und sonstige Parameter einstellen zu können.

Oben habe ich schon erwähnt, dass das Fenster unverschattet in der Sonne liegt, die Außenlufttemperatur lässt sich also nicht ohne weiteres messen. Zudem wollte ich vermeiden, dass Teile der Elektronik – hier der Außentemperatursensor – im Freien positioniert werden müssen. Der Außenfühler liegt also in dem Rohr, mit dem die Außenluft vom Fenster auf Fußbodenniveau geleitet wird, kann so nicht von der Sonne aufgeheizt werden und ist wettergeschützt untergebracht. Damit muss zur Beurteilung der Außenlufttemperatur eine Vorlaufzeit des Lüfters implementiert werden, so dass die Luft Zeit hat, den Sensor im Rohr zu erreichen und zu erwärmen, bevor der Vergleich mit der Raumtemperatur erfolgt.


Technische Realisierung

Raum- und Außentemperatur werden mit zwei Temperatursensoren DS18B20 erfasst, die über OneWire an zwei getrennten Pins am Arduino Nano V3 angeschlossen werden.

Überschreitet die Raumtemperatur einen einstellbaren Wert, wird ermittelt, ob die Außentemperatur kleiner ist. Ist das der Fall, wird der Lüfter über ein SolidState-Relais eingeschaltet.

Während der Laufzeit des Lüfters werden kontinuierlich weiter die Temperaturen erfasst und ausgewertet.

Sinkt die Raumtemperatur unter den eingestellten Schwellwert oder steigt die Außentemperatur zu weit an, wird der Lüfter wieder ausgeschaltet.

Die wesentlichen Pfade im Programm habe ich in einem Statediagramm festgehalten.

Temperatursteuerung State-Diagramm          (Click auf das Bild für größere Darstellung)

Die Schalthysterese, die Temperaturdifferenz zwischen Außen- und Innentemperatur zum Einschalten und weitere Parameter lassen sich über ein Menü einstellen und - bei Änderung gegenüber dem vorhandenen Wert - persistent im EEPROM speichern.

Über die oben im Diagramm dargestellte Funktionalität hinaus sind einige weitere Features in der Firmware implementiert.


Das Display wurde ursprünglich für die Siemens LOGO Steuerung gefertigt, hat 4 Zeilen à 10 Zeichen und eine kreuzförmig aufgebaute Tastatur mit Pfeilen und zwei Funktionstasten OK und ESC. Pollin bietet das Modul unter der Bezeichnung “LCD-Modul HB10401, 4x10” seit einiger Zeit recht preiswert an.

LOGO Display

Um dem Ganzen eine handhabbare Anmutung zu geben, habe ich ein Gehäuse für das Display und die Tastatur auf der CNC-Fräse erstellt.

Im Original hat das Logo Modul eine Gummi-Tastatur mit dreieckigen Cursor Tasten. Beim Prototyp des Gehäuses habe ich das nachempfunden.

Gehäuse Prototyp

Beim endgültigen Design wollte ich zuerst die dafür vorgesehenen Flächen auf der Leiterplatte mit Micro-Kurzhubtastern bestücken und kleine runde Stößel für deren Bedienung vorsehen. Die Tastenstößel hätte ich ebenfalls auf der CNC-Fräse hergestellt, deren Design ist in den Unterlagen enthalten.

Lüftersteuerung Gehäuse

Letztlich habe ich aber im Netz passende Silikon-Tasten fertig zum Einbau gefunden, die Leiterplatte blieb damit unverändert.

Silikon-Tasten

Hier noch ein Blick von schräg unten ins Gehäuse:

Blick von unten innen


Das Display des LOGO Modul hat ein 4-Bit Parallelinterface, weshalb ein I²C-Parallel-Konverter für den Anschluss an den Controller eingesetzt wird. Die Tasten sind auf einzelnen Leitungen herausgeführt.

Als Hirn der Steuerung ist ein Arduino Nano vorgesehen. Anzeigemodul, I²C-Parallel-Konverter und Arduino sitzen auf einer Platine mit allen notwendigen Anschlüssen.

LOGO Display-Adapter

Die blauen Leitungen müssen mit Drähten auf der Oberseite der Platine ausgeführt werden, da ich die Platine einseitig auf der CNC-Fräse geroutet habe.

Die SMD-Buchse rechts - oben sieht man nur den Footprint auf der Platine - passt genau auf den auf der Rückseite des Display aufgelöteten Stecker wenn Display und Adapterplatine im Gehäuse befestigt sind.

LOGO Display mit Stecker

Das Schaltbild der Lüftersteuerung präsentiert sich so:

LOGO Display-Adapter          (Click auf das Bild für größere Darstellung)


Die fertige Steuerung wurde in ein kleines Schaltschrankgehäuse eingebaut.

Steuerung im Gehäuse

Da die Tasten unter der Abdeckung nicht bedienbar sind, hängt das Gerät die meiste Zeit ohne Deckel an der Wand. Am oberen Bildrand sieht man links die Kabel der beiden Temperatursensoren und des DCF77 Moduls, der schwarze Stecker rechts führt die Versorgungsspannung von einem USB-Netzteil zu. Die Leitung links neben dem Stecker ist der Ausgang Richtung SSR, das in einer Feuchtraum-Aufputzdose, getrennt von der restlichen Elektronik, untergebracht ist.

Die Konstruktionsunterlagen des Gehäuses für Designspark mechanical stelle ich zum Download zur Verfügung, ebenso die Unterlagen zur Herstellung der Adapterplatine im Eagle V7.x Format.

Die Sourcen der Firmware der Temperatursteuerung können ebenfalls geladen werden.

Hinweis
Damit die LCD Library von Francisco Malpartida das LOGO Display korrekt ansprechen kann, muss die Routine zur Cursor Positionierung angepasst werden. Die passend erweiterte Datei “LCD.cpp” ist im ZIP mit der Firmware bereits enthalten und muss gegen die in der Library enthaltene Originaldatei getauscht werden.


Der Funktionsumfang der Firmware ist zum Schluss deutlich über das oben im Diagramm Festgehaltene hinaus gewachsen.

Über den AUX Anschluss kann z.B. ein DCF77 Modul angeschlossen werden. Ist das der Fall, kann die Uhrzeit und das Datum in der ersten Zeile des Display angezeigt werden.

Alternativ ist die Verwendung einer RTC (Real time clock) vorgesehen. Auch deren Informationen über Zeit und Datum sind anzeigbar. DCF77 und RTC können natürlich nur wahlweise aktiviert werden, es steht jeweils nur eine Zeile für die Anzeige zur Verfügung.

Die Anschlussleitungen für das RTC Modul müssen auf der Leiterbahnseite an den Kontakten des I²C Converters angelötet werden, es existiert kein Stecker dafür.

In Verbindung mit der Uhrzeit ist die Definition von Laufzeiten für den Lüfter möglich. Getrennt für Wochentage und Wochenenden können Zeiträume festgelegt werden, in denen der Lüfter nicht laufen darf - des Nachts zum Beispiel.

Über die Tastatur kann der Lüfter manuell fest EIN oder AUS geschaltet werden.

Das komplette Menü hat folgenden Aufbau:


"Temp"      "Schwelle"                          [nicht begrenzt]
            "TempDiff"                          [0..9]
            "Hysterese"                         [1..9]
"Zeiten"    "Vorlauf"                           [10..60]
            "Pause"                             [10..3600]
            "Intervall"                         [1..60]
            "Laufzeit"  "mdmdf" (Block Mo..Fr, [selektiert "MDMDF"/nicht selektiert "mdmdf"])
                        "ss"    (Block Sa+So,  [selektiert "SS"/nicht selektiert "ss"])
                        "Start Stunde"          [0..23]
                        "Start Minute"          [0..59]
                        "Ende  Stunde"          [0..23]
                        "Ende  Minute"          [0..59]
"Modus"                                         [kühlen/wärmen]
"Settings" "DCF77"                              [Ein/Aus]
           "RTClock"                            [Ein/Aus]
           "Version"
           "Zeitgeführt"                        [Ein/Aus]
 

Legende zum Menü

  • Temp - Schwelle legt die Temperatur fest, bei der der Lüfter eingeschaltet wird.
  • Temp - TempDiff legt die Temperaturdifferenz zwischen Innen und Außen fest, ab der der Lüfter startet.
  • Temp - Hysterese bestimmt, um welche Temperatur der Lüfter die Raumluft abgekühlt haben muss, bevor der Lüfter stoppt.
  • Zeiten - Vorlauf legt fest, wie lange der Lüfter laufen muss, bevor die Außentemperatur bewertet wird.
  • Zeiten - Pause ist die Zeit, die gewartet wird, wenn die Außentemperatur zu hoch war um überhaupt zu kühlen, bevor erneut eine Messung mit Vorlauf gestartet wird.
  • Zeiten - Intervall legt fest, in welchem Abstand die Temperaturen gemessen werden.
  • Zeiten - Laufzeit definiert Zeiträume mit Start und Ende, in denn der Lüfter laufen darf.
  • Modus legt fest, ob die Steuerung den Lüfter zum Kühlen oder zum Erwärmen der Raumluft eingesetzt wird. Beim Modus “Erwärmen“ werden die Temperaturen und Schwellwerte umgekehrt bewertet.
  • Settings - DCF77 aktiviert die Abfrage des DCF77 Moduls (muss am Eingang AUX angeschlossen werden) und die Anzeige von Zeit/Datum.
  • Settings - RTClock aktiviert die Abfrage des RTC Moduls (muss am I²C Bus - parallel zum Converter - angeschlossen werden) und die Anzeige von Zeit/Datum.
  • Settings - Version zeigt die Version der Firmware und den Ausgabestand der Adapterplatine an.
  • Settings - Zeitgeführt legt fest, ob die unter “Laufzeit” für den Lüfter festgelegten Zeiten beachtet werden sollen.

 

 


Beim Aufruf dieser Funktion werden Daten an Google in USA übermittelt. Neben Ihrer IP-Adresse wird auch die URL der besuchten Seite übertragen.
Besucherzaehler

Besucher seit
25.11.2000