©2006 Paul Emmerich . Alle Rechte vorbehalten.


Hier einige Details zur Heizungssteuerung.

Das Projekt ist abgeschlossen , ein paar Details und die Software werden noch geändert .
.
Das Interface wurde im April 2015 in meine Heizung eingebaut und läuft wie geplant .
Habe für Gas und Solar verschiedene Temperaturparameter vergeben , welche sich bei der Rücklaufanhebung und der Puffertemperatur automatisch anpassen. Temperaturbereiche siehe weiter unten.
Die Einschalttakte des Brenners mit Puffer reduziert und Diagramme davon erstellt.
Zum schalten einiger Lampen oder Geräte Software für Funksteckdosen eingebaut.
Falls meine Solarsteuerung ausfällt , werde ich diese ebenfalls integrieren. Ist umgestellt !

Polynom für PT1000 wurde schon erstellt.

Hardware wurde schon angepasst für ein PT1000 Modul   MAX31865
Für den SPI-Bus mußte der Chipselekt erweitert werden , dafür ein M74HC138 eingebaut und CS2 mit GPIO-18 angesteuert ( siehe Interfaceplan )

Den Script sollte jeder für sich schreiben , da meiner sehr speziell zugeschnitten ist.
Deshalb veröffentliche ich hier nur die Schaltpläne und meine Gedankengänge.
 
 
Heizungsinterface verfügt über folgende Eigenschaften.
 
Tabelle neue Eigenschaften
1. 16 Temperatureingänge über MCP3008   ( zur Zeit mit NTC-5K ) einer davon für LDR Widerstand
2. Eingänge / 4 Ausgänge   ( über Gpio's des Raspberry )
3. 16 Ausgänge über I²C Bauteile gesteuert  ( MCP23017 SP )  davon einer Watchdog ,
alle Relais können potentialfrei betrieben werden ( je nach Hardwareschaltung )
4. 1 PT1000 Sensoreingang mit SPI Baustein MAX 31865 ( Kollektortemperatur )
5. Hardwarewatchdog
6. Real-Time-Clock , fertiges Modul Tiny RTC I²C Modul   ( steckbar )
7. Ebus-Kopplung zum lesen und schreiben   ( für Wolf Solarmodul SM2)
8. Funkansteuerung eines 433 Mhz Senders zum schalten von Funksteckdosen
9. Funktionen für eine Solaranlage sind eingebaut und getestet
10. 0 - 10 Volt Steuerung für einen Brennwertkessel eingebaut , damit ich alle Funktioen auslagern kann. (Gebäudeleittechnik)

 
 

 

 

Testeinheit für die Heizungssteuerung gebaut , damit die Widerstandsdecaden wegfallen und
die Temperaturen am Panel ablesbar sind . Dafür wurde eine zweite Steuerung gebaut.


 

 

Fotos von der Heizungssteuerung


 

 

Schaltpläne der Heizungssteuerung ( Interface und Relaiseinheit )


 

 
 
Solaranlage ist integriert und wurde erfolgreich getestet,
darurch ist folgender Text für meine Anlage nicht mehr relevant,
lasse diesen aber für Interessierte stehen.

 
Habe jetzt in der Software einen Zugriff auf den Ebus ermöglicht , sodaß ich den Status der Solarpumpe ,Betriebsbereitschaft und der Rücklaufanhebung sowie die Temperaturen des Schichtenspeichers unten und der Kollektortemperatur auslesen kann.
 
Telegramm " 71FE5017 " gibt Temperaturen des Schichtenspeichers unten und der Kollektortemperatur sowie Status Solarpumpe , Betriebsbereitschaft aus . Byte 11 bis 22
 
Telegramm " 71FE5023 " gibt Status Solarpumpe und Rücklaufanhebung aus . Byte 18
 
Sende Telegramm "07765022031E2D0A1B" um Puffertemperatur zu bekommen . Byte 22-25
 
und Telegramm "07765022038A2B0AFB" um Rücklauftemperatur zu bekommen . Byte 22-25
 
Für Temperaturen Schichtenspeicher Heizung und Warmwasser sind zusätzliche Fühler eingebaut , diese über MCP3008 ermittelt werden.
 
Spannungsversorgung wird nicht vom Ebus genommen , da ich auf der Platine 24 Volt habe.


Ebus - Kopplung

.

RRDtool (round-robin database tool) integriert , damit Graphen der Temperaturen erstellt werden können.

Kann jetzt in der Eingabezeile gs(x) Graph Stunden 1 bis 9 , gt = Graph Tag oder gw = Graph Woche eingeben.
Zur gleichen Zeit wird wird auch ein Diagramm vom Pufferspeicher und der Solaranlage ausgegeben.


 

 

Habe jetzt auf automatische Scalierung gesetzt , damit bei relativ kleinen Temperaturen Graph noch gut sichtbar ist.
Im linken Diagramm sind die unteren drei Kennlinien die Pumpen als Digitalsignal dargestellt , in Wirklichkeit wird aber ein Temperatursignal dargestellt mit der Differenz 0 bis 2 Kelvin mit Offset , damit ich diese im Graphen sehe.
Rücklaufanhebung als Digitalsignal und Erstellungsdatum ist jetzt ebenfalls sichtbar .


 

 
Bildschirminhalte des Start Bildschirms , weitere Bildschirme und Tablet Bildschirm
Bereiche wurden so angepaßt , das auf einem Tablet 7" ( 1024 x 600), hochkant gehalten , Heizungswerte und Tastatur gut lesbar sind. (Android Apps:  vSSH und  Hacker´s Keyboard)
Wenn Programm ohne Argumente aufgerufen wird , werden Ausgänge nicht verändert. In Datei /etc/rc.local wird Programm mit Argument gestartet und Ausgänge werden gesetzt .
Wenn über Tablet mit WIN 8.1 zugeriffen wird ( Ethernet im Haus oder Internet außerhalb ), benutze ich MobaXterm und damit habe ich die Bilder unterhalb erstellt .
Start des Heizungsprogramm Extern dann ohne Argument wie oben beschrieben.

Tablet Bildschirm

 


  • Start Bildschirm

  • 2. Screen , Zeiten und Eingänge

  • 3. Screen Bescheibungen

 


 
Angezeigte Werte sind Originalwerte , da ich diese Bilder über Ethernetzugriff gemacht habe . Ebus Daten werden im Startbildschirm ( nicht bei Extern ) nur kurz angezeigt und dies nur in der Testphase .
Gesendete Daten werden mit angezeigt ,da RS232 Puffer vor dem Senden gelöscht wurde.
Erst ab Hex 00 beginnt die Antwort . Werte nach Telegramm sind umgerechnete Temperaturwerte.


Heizungs Schema

Die Regelung wurde für meine Bedürfnisse programmiert.
Sie besteht aus zwei getrennten Kreisen mit jeweils einer Pumpe , einem Innenraumfühler mit Korrekturmöglichkeit und einem Vorlauftemperaturfühler im Heizungskreis.
Außentemperaturfühler ist auch vorhanden , zur Berechnung der Kennlinie.
Alle Einschaltzeiten der Pumpen und Brenner sowie Taktzeit Brenner werden abgespeichert für eine spätere Auswertung.
Abspeicherung 04:00 Uhr oder bei befehl safe .
Als Sicherheitsfunktion wurde das Einschalten der Pumpen um 12:00 Uhr hinzugefügt. Einschalten der Pumpen nur dann , wenn diese noch nicht an diesem Tag gelaufen haben.

Eine Eingabemöglichkeit zum ändern der Betriebsarten habe ich eingebaut, sowohl Hard und Softwareseitig. Dieser Punkt wurde gemacht um Betriebsarten zu ändern ohne Softwareeingriff. Änderungen werden in seperate Datei gespeichert , mit Datum verglichen und neu geladen . Falls Änderung von extern ( Internet )oder anderem User.
.
Hardwareseitig die Fernsteller von TEM FS3611 eingebaut , um pro Regeleinheit Betriebsarten und Temperatur-Korrekturen vorzunehmen , welche auch gespeichert werden. Nach Stromausfall werden zuletzt gemachte Änderungen geladen und wieder aktiviert.
.
          Tages und Nachttemperaturen sind alle halben Stunden veränderbar .

Tabelle Temperaturen
und das in 4 Stufen  Nacht Tag-Minus Tag Tag-Plus
gekennzeichnet im String mit ______ .............. ------ +++++
Temperaturen in Grad z.B. 19.0 20.0 20.5 21.0

.
Die Heizkreispumpen werden eingeschaltet , wenn die Zimmertemperatur 0,2 Grad unter Soll und die Rücklauftemperatur 10% unter Soll liegt . Wenn die Zimmertemperatur 0,1 unter Soll liegt darf die Rücklauftemperatur 20% unter Soll absinken .
Habe noch eine variablen Raumtemperatureinfluss je nach Vorlauftemperatur eingebaut. Dieser ist 10% von der Vorlauftemperatur +/- einem Korrekturwert , damit wird die Temperaturdifferenz zwischen Soll und Ist der Raumtemperatur multipliziert und zur Vorlauftemperatur addiert.
Falls die Vorlauftemperatur eines Kreises >= Soll Warmwasser ist , läuft Heizung paralell zur Warmwasseraufheizung , aber mit der vorgegebenen Temperatur vom Warmwasser.
Sind die Vorlauftemperaturen beider Kreise < Soll Warmwasser , wird Warmwasser vorrangig behandelt und die Heizkreispumpen werden gesperrt , da sonst die Vorlauftemperatur zu hoch wäre.
.
Desweiteren noch 2 Fühler im Schichtenspeicher Warm-Wasser (oben) und Heizung (oberhalb Mitte) eingebaut .
---- Solltemperatur wir bei hohen Puffertemperaturen angehoben , um bis zu 2 Grad
---- bei Rücklaufanhebung EIN und Puffertemperatur unter 40 Grad + 0.5 Grad
---- bei Puffertemperaturen von 40 Grad + 1.0 ; 50 Grad + 1.5 ; Nottemperatur + 2.0 Grad

Wenn Fühler Puffer-Heizung über 40 Grad kommt wird für beide Kreise Heizung eingeschaltet , obwohl diese eventuell aus oder auf Nachtabsenkung waren. Werden aber auf eingestellter Tagestemperatur geregelt.Nach Absenkung der Temperatur unter 40 Grad wird Funktion wieder ausgeschaltet und vorige Einstellungen wieder aktiviert.. Dies ist eine zusätzliche Kühlfunktion des Solarspeichers und damit ich die Energie auch richtig nutzen kann.

Neuer Heizungskessel mit Brauchwasserspeicher von Brötje wurde eingebaut ( BGB EVO 28H ) .

Die Steuerung von Brötje akzeptiert ein 0 - 10 Volt Signal für die Temperatur des Kessels. Pumpen werden von mir angesteuert.
Sicherheitshalber nutze ich den Gasdruckwächtereingang für eine Brennersperre. ( wurde von Brötje empfohlen )
Für die Ansteuerung mit 0-10Volt sollte ich den Parameter 5950 auf Leistungsanforderung stellen , welches sich aber als falsch herausstellte, da bei ereichen der Temperatur der Brenner nicht herunter modulierte. Habe danach den Parameter auf Verbrauchsanforderung VK1 gestellt und die von mir erwünschte Anforderung trat ein.
Nach Rückruf im Brötje Stammhaus wurde immer noch das gleiche behauptet , aber ein Techniker aus Krefeld gab mir recht.

Ladepumpe Warmwasser läuft mit Heizkreispumpen zusammen , wenn Vorlauftemperatur bei 50 Grad ist , bei Vorlauftemperaturen unter 40 Grad läuft diese alleine , da sonst die Vorlauftemperaturen für die Heizkreise zu hoch wären.
Desweiteren ist die geamte Sicherheit der Anlage inkl. Modulation in der Elektronic von Brötje geblieben. ( Garantieanspruch )

Die Heizungsanlage verfügt über einen 150 Liter Pufferspeicher, welcher bei Brennerfreigabe auf die nötige Temperatur je nach Außentemperatur gebracht wird. Dieser wurde eingbaut um die Einschalttakte zu verringern und einen Vorat für die zwei Kreise zu haben.
.
Bei den nächsten Bildern kann man das Verhalten mit und ohne Heizungspuffer erkennen.
Beim rechten Bild erkennt man das der Brenner länger läuft und die Heizungspumpen öfters ein bzw. ausschalten. Pumpen laufen auch wenn der Brenner nicht an ist und vom Puffer die Wärme nehmen.


 
 

Warmwasser wird durch einen Wärmetauscher von der Solaranlage vorgeheizt , sollte die Temperatur wegen der Witterung nicht erreicht werden , macht die Heizung den Rest.
Eingabe legio hinzugefügt , dies ist eine Legionellenfunktion und wärmt den Brauchwasser-speicher einmalig auf 65 Grad auf und sollte vorhandene Legionellen abtöten.

.
Desweitern ist eine Wolf Solaranlage angeschlossen mit 1000 l Pufferspeicher und 14m² Röhrenkollektoren . Diese meldet über potentialfreien Kontakt , wenn die Puffertemperatur 4 bis 8 Grad höher ist als die Rücklauftemperatur der Heizung.
Dann schalte ich einen Mischer ( kein Ventil ) dazu , der einen Teil des Rücklaufes der Heizungsanlage über den Pufferspeicher führt um die Temperatur auf den richtigen Level anzuheben . Den Mischer takte ich im 4s Takt alle 20s.
.

Da die Röhrenkollektoren im Sommer bei wenig Warmwasserverbrauch den Speicher schnell überhitzen können , dadurch die Anlage abgeschaltet wird und die Wärmeträgerflüssigkeit in Stagnation gehen kann. Dieses habe ich durch Abdeckung von 2 Elementen verhindern können. Deshalb habe ich mich entschlossen eine Markise über 2 Kollektorfelder zu installieren.
.
Die Installation einer Markilux Markise 780 über 2 Kollektoren ist erfolgt !
---- Markisensteuerung erfolgt vom Lichtsensor , der Zeit und von der Puffertemperatur
---- Markise vorbereitet zum Ausfahren bei ca 60000 Lux und Einfahren bei ca. 20000 Lux .
---- maximale Puffertemperatur von 8 - 20 Uhr ( 40 Grad + Stunden ) also variabel von 48 - 59 Grad .
---- bei zu geringen Puffertemperaturen wird der Lichtsensor ignoriert
---- Regensensor von Loxone wurde eingebaut und wird erst angesteuert , kurz bevor die Markise abdecken soll.


Markise auf 2 Kollektoren von 6


.
Da die NTC Temperaturfühler über eine nicht lineare Kennlinie verfügen , habe ich im ersten Schritt den Bit's , welche vom MPC3008 kommen , die Temperaturen in ein Grad Schritten einer Tabelle zugeordnet. Im Bereich von 15 - 25 Grad jedoch in 1/2 Grad Schritten.

Versuchshalber eine polynomiale Regressionskurve 8. Grades eingebaut siehe Diagramm.

Versuch gut verlaufen und diese Variante bevorzugt.

temp = K0+K1*(bits)+K2*(bits^2)+K3*(bits^3)+K4*(bits^4)+K5*(bits^5)+K6*(bits^6)+K7*(bits^7)

Da jetzt ein Kollektortemperatufühler dazukommt , für diesen ebenfalls ein Polynom erstellt .
Konstanten K0 bis K7 ( NTC )b.z.w K0 bis K3 ( PT1000 )wurden in einer Exel Matrix mit Funktion RGB ermittelt.

 
 

Ablaufdiagramm der Python-Module (Programmiert wird nur in Python , damit die Module übersichtlich bleiben.)
 


 

Verbindung Raspberry zur Heizungsplatine wurde mit einem 34 pol. Floppykabel gemacht. Wobei der obere Steckerteil über den Raspberry herausragt werden diese 8 Leitungen nicht abgetrennt ,sondern auf 8 poligem Stecker gequescht und mit P5 des Raspberry verbunden , da ich die vier GPIO von diesem Stecker als Reserve Eingänge benutze.
.
-- Eingang Rücklaufanhebung wie oben beschrieben.
-- Eingang Schornsteinfegerfunktion gibt Brenner frei und die Pumpen werden gestartet.
.
Bei der Watchdogschaltung handelt es sich um reine Hardware. Um bei der Überprüfung keine statische eins zu interpretieren wurde 1. und 2. Transistorstufe durch Kondensator gleichspannungsmäßig entkoppelt. Dadurch wurde diese aufwendige Schaltung erforderlich.
3 Minuten nach ansprechen des Watchdogsignals wird ein Reset am Raspberry ausgeführt. Diese Zeit wurde gewählt um das Einschalten bis zum Start des Programms zu überbrücken.
.
Die Ausgänge der Interfaceplatine steuern 24 Volt Relais und diese dann die 220 Volt Pumpen oder Mischer . Die Relais befinden sich in einem weiteren Montagegehäuse mit Hutschienen , Sicherungen und einem 24 Volt Netzteil.
Relais sind für Hutschienenmontage mit eingebauter LED-Anzeige und Freilaufdiode .
.
Habe noch eine Real-Time-Clock für I²C-Bus von Tiny eingebaut. Diese ist eigentlich für Arduino gebaut , kann aber nach einem Umbau auch gebraucht werden.
Es müssen nur die beiden Pullup-Widerstände R2 und R3 nach 5Volt entfernt werden.
Der Raspberry ist schon für den I²C-Bus mit 1,8 K Pullup-Widerständen nach 3,3 V bestückt.
Zusätzlich hat diese Platine ein Eeprom: AT24C32 für den I²C-Bus eingebaut.
Habe diese Platine für 5,80 € inkl. Versand bei EBAY gekauft.
.
Die noch freien Ausgänge werde ich für Lampen des Eingangsbereiches und des Gartens nehmen. Diese werde ich Zeit- und Dämmerungsgesteuert schalten.
LDR- Lichtsensor (LDR 03 von Valvo) wird wie ein NTC am MCP3008 angeschlossen und abgefragt.
---- Dämmerung ist bei ca. 850 bits = 88 lux
---- volle Sonne kleiner 20 bits = 60000 lux , bewölkt größer 40 bits = 20000 lux

.
Da ich nicht überall Kabel zum schalten der Lampen oder Geräte habe mußte eine Alternative her.
Habe preiswerte Funksteckdosen von goobay erworben und zuerst den Ident und Modulcode ermittelt , da diese Steckdosen keine Schalter besitzen zur Einstellung. Code mit 433 Mhz Receiver und Speicheroszillograph ermittelt
Der Code besteht aus 5 Byte Ident , 5 Byte Modul , 2 Byte für Status , einem Schlußbyte und 3 Leerbyte.
Diese 16 Byte werden in Bits zerlegt und zum Sender zum aufmodulieren gesendet.
Den Sender in der Garage zum Garten aufgehangen und eine 17cm Antenne , welche ausserhalb ist , angeschlossen . Sender wird vor dem Senden mit 10 Volt versorgt und danach folgt das eigentliche Signal.


Diagramm Funksignal

Beschreibung wird immer auf den neusten Stand gehalten.