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 niedriger 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 Temperaturdifferenz gegen├╝ber der Einschaltschwelle 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 denen 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.


Noch ein Wort zum Modus “Erw├Ąrmen”:

Ein Kollege hat sich eine Luft-W├Ąrmepumpe in den Keller eingebaut um sein Brauchwasser mit der Raumw├Ąrme aufzuheizen. Das klappt auch ganz gut, nur wird der Raum dadurch ziemlich schnell ziemlich weit abgek├╝hlt, so dass das zu ├╝berbr├╝ckende Temperaturgef├Ąlle immer gr├Â├čer wird, ebenso der Energieverbrauch der W├Ąrmepumpe. Folglich muss nach M├Âglichkeit warme oder zumindest w├Ąrmere Luft von au├čen zugef├╝hrt werden. Hier kommt dann die oben vorgestellte Steuerung zum Einsatz, diesmal nicht zum K├╝hlen sondern zum Erw├Ąrmen - R├Ątsel gel├Âst :)

 


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