[ EN | FR ]

Home Heat Controlling System

Copyright © Mateusz Viste 2009-2014

Introduction

Electric heating offers unparalleled opportunities for management, subject to the availability of pilot wire heaters (which are controllable). The pilot wire is a mechanism that allows to switch an electric heater from one mode to another (Eco, Comfort, Frost...) in a fully automated way (eg by day of week, time, etc). This will allow to define heating zones. Each zone can be programmed independently. However, it will require a controlling host (power manager) that will send to the radiators (via their pilot wires) the various required signal levels.
I have not found any power manager on the market that would meet my needs, so I decided to create my own one, using an old PC for which I wrote a software GUI to manage my heaters, and I designed a little electronic interface pluging into the LPT parallel port of the computer. I am hereby publishing all of my work so that others can reuse this solution.

Overview

Schéma logique de fonctionnement

The computer (which I also use for other tasks) is running Linux. The software GUI is coupled to a web server, thereby I can change the parameters of my heating system via a simple html page. This web interface, which I call "HeatInterface", modifies configuration files, which are then read by a program I named "HeatControl". The latter's role is to control the parallel port (LPT) of the computer, depending on schedules and orders given heating.
Of course, it is impossible to connect a radiator directly to the parallel port of a computer. That's why I created a small electronic circuit connected to the port of the computer, which translates the port states into orders that can be sent to my heaters via their control wires. The device has four outputs for control wires, which allows to connect up to four heating zones. Four orders are available: Eco, Comfort, Frost and Off.

The software

Web management interface

Le "soft" est constitué de plusieurs briques: Le serveur web, l'interface "HeatInterface", et le daemon "HeatControl". Tout cela fonctionne sous le contrôle de la distribution Linux "Debian". L'interface de gestion est en réalité un programme CGI, nécessitant donc un serveur web pour fonctionner. Pour ma part, j'ai utilisé le serveur web "Grumpy". Le daemon "HeatControl" est un programme qui se charge en mémoire, et fonctionne en permance. Le plus simple est de le charger au démarrage du système d'exploitation (par ex. via un script init.d).
Il est important de noter que certains fichiers de configurations doivent être édités manuellement. Ainsi, il sera nécessaire de placer dans le répertoire /etc/heatcontrol/ deux fichiers: "driver.cfg" et "slotnames.cfg". Le premier indiquera au daemon "HeatControl" le port LPT à utiliser (un exemple de ce fichier est fourni avec le logiciel), le second, quand à lui, est optionnel, et permet de spécifier des noms de slots personalisés (au lieu de "Slot 1", "Slot 2", etc.). Ces noms de slots seront affichés par l'interface "HeatInterface". Le fichier "slotnames.cfg" doit comporter 10 lignes, où chaque ligne correspond au nom du slot donné (par exemple la troisième ligne spécifiera le nom du slot n° 3).

Clic here to go to the download area

Note: I published both the 'HeatInterface' and 'HeatControl' softwares under the GNU/GPL v3 license.

The hardware

Electrical orders for pilot wire

Le circuit électronique à pour but d'envoyer des ordres de chauffage spécifiques, en fonction de l'état du port LPT de l'ordinateur. Quatre ordres sont gérés: Éco, Confort, Hors-Gel et Éteint. Ces ordres correspondent à des tensions alternatives normalisées (Éco: 230V, Confort: 0V, Hors-Gel: -115V, Éteint: +115V). Ces tensions sont générées en jouant sur plusieurs relais, couplés à de simples diodes.
Afin de diminuer la consommation du circuit électronique, il est possible de remplacer les relais par des contacteurs statiques (solid state relay). Ceci assurera également une longévité plus importante du montage, et permettra aussi de faire l'économie des diodes D1, D3, D5, D7, D9, D11, D13 et D15 (dont le rôle unique est de protéger les transistors des pics de tensions générés par l'induction des bobines de relais).

The diagram of this circuit is available below, in several formats:
heatlpt.ps (PostScript)
heatlpt.png (PNG)
heatlpt.sch (Qucs)

Voici la liste des éléments:
  T1, T2, T3, T4, T5, T6, T7, T8 - NPN transistors, 80V/1A/1W (BC639)
  R1, R3, R5, R7, R9, R11, R13, R15 - Resistors 10KΩ/0.25W
  R2, R4, R6, R8, R10, R12, R14, R16 - Resistor 1.5KΩ/0.25W
  LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8 - Green LEDs
  D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16 - Diodes 1000V/1A (1N4007)
  S1, S2, S3, S4, S5, S6, S7, S8 - Relays "normally open" with 12V coils and 250V/10A contacts (RAS-1215)
  C1 - Condensator 470µF/25V
  V1 - Electrical power supply 12V/500mA
  Live - Live wire of the electrical installation
  P1 - LPT D0 (PIN #2)
  P2 - LPT D1 (PIN #3)
  P3 - LPT D2 (PIN #4)
  P4 - LPT D3 (PIN #5)
  P5 - LPT D4 (PIN #6)
  P6 - LPT D5 (PIN #7)
  P7 - LPT D6 (PIN #8)
  P8 - LPT D7 (PIN #9)
  P9 - LPT GND (PINs #18...#25)
  P10 - Pilot wire for zone 1
  P11 - Pilot wire for zone 2
  P12 - Pilot wire for zone 3
  P13 - Pilot wire for zone 4

Any questions? Suggestions? My email address is here!


This page has been entirely created using free software. The software used was, among others: OpenSUSE, KWrite, Firefox, KSnapshot, Dia, Inkscape...