vendredi 25 septembre 2015

Contrôler le chauffage par fil pilote (1er épisode)

Note: le 2ème épisode est aussi disponible.

Si vous avez déjà regardé le branchement d'un chauffage électrique, vous avez sûrement remarqué la présence d'un 4ème fil (ou 3ème) généralement noir en plus de la phase/neutre/terre.
Présent sur la plupart des chauffages modernes, c'est le fil pilote. Celui-ci permet de contrôler le radiateur à distance.
On peut ainsi commander un ou plusieurs radiateurs de la maison. Allumer/éteindre, passer en mode confort, en mode hors gel ...

Bien entendu, on trouve nombre de produits du commerce permettant de gérer les fil pilotes. Et bien entendu aussi, nous n'allons pas les utiliser. À la place on va faire ça nous même :)
Nous pouvons même facilement trouver des arguments pour justifier ce choix :
  • le prix
  • la versatilité (je veux pouvoir les utiliser à partir de mon soft de gestion domotique)
  • le fun :)

Le protocole

(si l'on peut parler de protocole à ce niveau)
Le principe est simple, on envoi sur ce fil pilote du 230V alternatif. Selon la forme du signal envoyé, le radiateur déclenchera telle ou telle fonction.
On voit sur cette image (glanée sur le net) que les commandes confort, éco, hors gel et arrêt sont très facile à générer puisqu'il suffit de "couper" la sinusoïde de la phase. Les confort -x°C sont bien plus compliquées. Nous les ignoreront donc ! (en plus ça sert à rien)

Attention :  comme vous l'avez remarqué, nous allons travailler avec du 230V. Ce peut être très dangereux (dangereux dans le genre mortel). Donc si vous n'êtes pas sur de vous, ne faites rien.

En tout état de cause, au minimum ces conditions doivent être remplies :
  • on ne touche rien quand c'est sous tension
  • la carte de contrôle branchée à la phase doit être dans un boîtier fermé
  • on ne doit pas pouvoir l'atteindre quand elle est branchée (attention aux trous)
  • si le boîtier est conducteur, il doit être mis à la terre
  • le fil pilote doit être protégé par un disjoncteur (voir par exemple ce post de forum) avec signalétique appropriée le cas échéant
  • etc...
Bref, les normes électriques DOIVENT être respectées à la lettre.

Le bloc de base

Donc nous cherchons à générer 4 signaux à partir de la phase :
  • une sinusoïde complète (Éco)
  • rien (Confort)
  • les alternances positives uniquement (Arrêt)
  • les alternances négatives uniquement (Hors Gel)
Le schéma pour cela est très simple (on le trouve un peu partout sur le web)

Le principe est très simple, on fait passer la phase à travers 2 diodes tête-bêches. Chacune va laisser passer le positif ou le négatif. Il suffit donc de choisir avec nos optocoupleurs quel(s) côté(s) on laisse passer.

Version 1

Ma 1ère réalisation date maintenant de quelques années et est toujours en fonctionnement. Elle ne me permet de contrôler qu'un seul fil pilote.

Les optocoupleurs sont commandés par un ATtiny45 connecté en USB vers le contrôleur (en l’occurrence un raspberrypi). La partie usb est gérée par la magnifique bibliothèque v-usb.
Le schéma implémente simplement la partie analogique vu ci-dessus d'un côté. De l'autre, la partie usb vient directement des exemples de v-usb.

https://github.com/jerome-labidurie/avr/blob/master/fpusb/hardware/usb.pdf

Sur le pi, un petit programme en C et basé sur la libusb envoi les commandes vers l'ATtiny.

L'ensemble est réalisé sur une plaque à trous.



L'ensemble du code source (hardware, firmware attiny et appli) est disponible sur github

Pour la petite histoire, je peux ainsi allumer mon sèche serviette le matin pendant les heures creuses et avoir une serviette chaude au sortir de la douche.

Version 2

Maintenant, je souhaiterai contrôler plus d'un seul radiateur. L'option que j'avais choisi à l'origine était d'augmenter la taille du µcontrôleur de ma version 1 pour pouvoir contrôler plus d'optocoupleurs.

Mais ayant déjà dans mon "système domotique" un arduino qui s'ennuie, je me suis dis que je pourrais le réutiliser. De la, je suis parti sur le design d'un circuit intégrant uniquement des blocs analogiques (opto+diodes) qui serait donc modulaire. Je veux rajouter un fil pilote ? Hop, je rajoute une carte et c'est parti.



J'ai donc actuellement le schéma et pcb d'une carte permettant de contrôler 3 fils pilotes (à partir de 6 entrées TTL).

Sa taille est de 5cmx5cm pour une réalisation facile (et pas chère) avec seeedstudio. Ses composants sont en DIP pour réutiliser ce que j'ai déjà en stock.


La partie contrôle sera donc déléguée à un arduino nano qui est déjà (sous)utilisé. Le code reste à écrire, mais devrait être vraiment très simple.

Comme pour le reste, tout est (et sera) disponible sur github.

Prochaine étape: fabriquer les cartes, coder et tout mettre dans un boitier bien isolé.

À suivre ...

Bibliographie