Root » Serveurs » Chauffage » Arduino
Commande du chauffage central par Arduino
Port expander avec un CD4099BE
Port expander
Un Arduino peut être utilisé pour commander une petite installation de chauffage, par exemple trois zones à chauffer et on mesure la température de l'eau du boiler et la températuren extérieure (ce qui fait 5 des 6 entrées analogiques). L'affichage se fait via un petit module LCD commandé par le port sériel. Le problème se situe au nombre restreint d'entrées-sorties binaires.
-

-

Arduino


Mon chauffage en 2020:
commandé par arduino

Il faut commander le bruleur du chauffage, le circulateur (avec 3 vitesses, donc deux lignes):
  • LOW + MED = OFF,
  • LOW + MED = LOW,
  • LOW + MED = MED et
  • LOW + MED = HIGH
Il faut également commander 3 vannes, donc 6 sorties en tout. C'est faisable en théorie, mais il peut être interessant de placer des indicateurs dans certains locaux pour indiquer le statut actuel de l'installation.

Les entrées sont des boutons-poussoirs pour activer des fonctions, qui sont indiquées par des leds: augmentation de la température dans la zone, réduction de la température dans la zone, je suis sorti pour x heures, etc. Au minimum une dixaine de boutons (avec son indicateur de fonction) sont nécessaires.

J'utilise des boutons poussoirs (et non des interrupteurs) car il faut pouvoir commander certaines fonctions de plusieurs endroits. Les boutons-poussoirs sont alors simplement mis en parallèle et les leds en série (avec réduction de la résistance de charge).

Augmentation des sorties binaires


La procédure pour commander indirectement les sorties est décrite sur la page consacrée à la réalisation d'un horloge à affichage numérique par tubes nixie.

Si on utilise un arduino pour commander l'installation de chauffage, on se rend compte que le controller a trop peu d'entrées et de sorties binaires. Même la version "PLC" vendue dix fois plus cher n'a pas assez d'entrées-sorties (en fait la version PLC c'est simplement un boitier, une alimentation, des relais pour la sortie et des optocoupleurs pour les entrées).

Les ports binaires peuvent être commutés en entrée ou en sortie par le logiciel lors de l'initialisation.

Mais en utilisant 4 CD4099BE (BCD to decimal with latch) on peut disposer de pas moins de 32 sorties binaires en n'utilisant que 8 lignes de sorties. Le code BCD est converti en 8 lignes et la puce garde le code en mémoire.

Si 24 sorties suffisent, on élimine un 4099 et on récupère une ligne d'écriture (CE: Chip Enable). Si 16 sorties suffisent, on élimine encore un 4099 et on récupère encore une ligne d'écriture.

Augmentation des entrées binaires

L'arduino a également trop peu d'entrées binaires, mais on peut utiliser une partie des 32 sorties qu'on vient de créer pour lire plusieurs boutons-poussoir avec une seule entrée binaire. Supposons que nous avons 8 boutons-poussoirs à lire, on utilise alors 8 des 32 sorties. On va mettre la première sortie haute et les autres sorties basses et lire l'état de l'entrée. S'il est haut, c'est que le bouton correspondant est appuyé. On met la sortie à nouveau au niveau bas et on met la sortie 2 haute, et ainsi de suite, on "scanne" chaque bouton.

Avec 8 des 32 sorties il est possible de lire non pas 8 boutons-poussoir mais 24, ici on perd une entrée analogique (au lieu d'une entrée binaire). Chaque sortie peut lire l'état de 3 boutons. Ils sont connectés via une résistance à l'entrée analogique de l'arduino. Le bouton 1 a une résistance de 2.2kΩ le bouton 2 une résistance de 680Ω et le bouton 3 une résistance de 120Ω. L'entrée analogique a une résistance de 1kΩ vers la masse.

La première sortie est activée, on scanne ainsi le trois premiers boutons. Si le premier bouton est enfoncé, il produit une tension à l'entrée analogique d'environ 1.5V, si le second bouton est enfoncé, la tension est de 3V environ et si le troisième bouton est enfoncé la tension est d'environ 4.5V.

La diode produit une légère chute de tension, les tensions seront de 1V, 2.5 et 4V environ.

Quand la seconde sortie est activée, on scanne les trois boutons suivants et ainsi de suite. L'exemple est donné avec 4 sorties, qui permet de lire l'état de 12 boutons. C'est déja pas mal pour commander le chauffage.

Augmentation des entrées analogiques

L'Arduino a 6 entrées analogiques, ce qui devrait suffire pour la plupart des applications. Mais il est également possible de concentrer un nombre d'entrées analogiques, on va ici aussi utiliser une partie des sorties binaires qu'on a crée: 2 si on veut concentrer 8 entrées analogiques en 2 entrées (ou 4 en une) et 3 si on veut concentrer 16 entrées en 2 (ou 8 en une). Le code des sorties binaires est un code BCD sur 2 ou 3 bits (4 ou 8 sorties de commande des interrupteurs).

Un exemple est donné sur la page du multiplexage. Le code en entrée sur le 4028 est le code fourni en sortie par un des 4099 (décrit ici).

Publicités - Reklame

-