Firmware VMC Helios

De Wiki LOGre
Aller à : navigation, rechercher


Projet réalisé par fma38.

Abandonné

Présentation

Le but de ce projet est de remplacer le firmware d'une VMC Double Flux Helios KWL EC-270/370. Pourquoi ? Quelques éléments de réponse :

  • il est bugué
  • la gestion du by-pass en mode automatique est incomplète
  • pas de passerelle pour le bus domotique KNX
  • inexistence du support technique Helios

Cela fait beaucoup pour un produit censé être du haut de gamme, certifié Passiv'Haus ! Après 18 mois de dialogue de sourd avec Helios, où j'ai bien compris qu'il ne se passera rien, je me lance dans le développement d'un nouveau firmware. Sous réserve qu'on puisse sauvegarder l'ancien et uploader le nouveau (il est possible de bloquer ces fonctions sur le µ-contrôleur utilisé ; espérons que les allemands ne soient pas aussi pervers !).

Problèmes du firmware d'origine

Bug date/heure

J'ai constaté que lors de certains changement de dates, genre passage du 31 mars au 1er avril, ou du 31 janvier au 1er février, au lieu de passer à 00h00, l'horloge continue de s'incrémenter au delà de 24h00 !!! Non content de cela, si la VMC est en mode auto (gestion de la vitesse des ventilateur en fonction de l'heure et du jour de la semaine, selon une séquence programmable), elle passe en vitesse maxi ! Autant vous dire qu'à minuit, cela réveille toute la maison, vu les bruits engendrés par la machine lorsqu'elle est à fond !

Bypass merdique

Cette VMC est équipée d'un bypass motorisé, pilotable de manière automatique selon certains critères. Le but du bypass est de court-circuiter l'échangeur, afin d'envoyer l'air extérieur directement dans la maison. C'est très intéressant l'été, lorsque la température extérieure redescend, la nuit ; cela permet de rafraîchir.

Les critères d'ouverture du bypass (mise hors service de l'échangeur) sont les suivants (ET logique) :

  • température intérieur supérieure à la température de bypass (consigne)
  • température de l'air extérieur inférieure à la température de l'air intérieur
  • température extérieur supérieure à la limite basse (consigne)

Tout cela est parfait, et fonctionne très bien. Là où ça coince, c'est sur les conditions de fermeture du bypass (remise en service de l'échangeur). En effet, les conditions sont les suivantes (OU logique) :

  • température de l'air intérieur inférieure à la température de bypass (consigne) moins 2°C
  • température de l'air extérieur inférieure à la limite basse (consigne)

Or, la seconde loi de Morgan dit :

NON(a ET b) = NON(a) OU NON(b)

On s'aperçoit donc qu'il manque une condition par rapport aux critères d'ouverture du bypass :

  • température de l'air extérieur supérieure à la température de l'air intérieur

Cela correspond à la négation de la seconde condition d'ouverture du bypass. Et je peux vous dire que cette condition manquante fout un belle merde !!! En effet, si, au petit matin, la première condition de fermeture (température de l'air intérieur inférieure à la température de bypass (consigne) moins 2°C) n'est pas vraie, c'est à dire si l'on n'a pas réussi à rafraîchir suffisamment la maison pendant la nuit (ce qui est souvent le cas en été dans nos régions où les nuits ne sont pas très fraîches) le bypass va rester ouvert (échangeur hors service). Plus tard dans la journée, la température extérieure va monter bien au dessus de la température intérieure, et la VMC va souffler de l'air très chaud dans la maison, alors que passer par le bypass permet de pré-rafraichir l'air entrant en croisant l'air sortant. À la fin de la journée, c'est 2 à 3°C de plus dans la maison ! C'est bien la peine de construire passif :o/

Le plus délirant, c'est que la réponse d'Helios est qu'ils savent qu'il y a ce problème, mais qu'ils ne peuvent pas le résoudre, car cela pourrait engendrer des problèmes de condensats à des endroits non prévus ! Mouarf, vraiment du grand n'importe quoi. La condition de fermeture du bypass interviendrait justement lorsque toutes les températures sont à peu près égales !!! Où et comment cela peut-il condenser dans ce cas ? De toute façon, la VMC est équipée d'évacuations ; heureusement, car l'hiver, ça pisse de partout, vu les deltas de température. Et il n'y a aucun souci.

En fait, c'est même pire que ça, car c'est dans le cas où le bypass reste ouvert que l'on se retrouve à balancer de l'air chaud et très humide dans des gaines qui, elles, sont plus fraîches. Donc c'est dans ce cas que ça peut condenser, dans les gaines d'insufflation, et éventuellement couler par les bouches !!!

On sent une grande maîtrise de la part de ce constructeur...

Passerelle KNX

Une des raisons qui m'a fait choisir Helios, c'est la passerelle KNX (bus domotique). Mais ce modèle (KWL EC 370 Pro) était tout récent lorsque je l'ai acheté, et la passerelle n'était pas encore disponible ; elle devait sortir un peu plus tard. Quelques 2 ans après, toujours pas de passerelle, et d'après ce que j'ai compris, elle ne sortira pas pour cette VMC, mais uniquement pour les nouvelles versions qui ont une régulation un peu différente !!! Là, ça me reste vraiment en travers de la gorge !

Bilans des entrées/sorties

Bon, avant de se lancer dans l'écriture d'un firmware, il faut savoir où sont connectés les périphériques, et comment ils s'utilisent...

Ventilateurs

Les 2 ventilateurs centrifuges (soufflage et extraction) sont de la marque EBM-PAPST. Bien que je n'ai pas pu lire la référence exacte, je pense qu'il s'agit de moteur de la série EC (d'où son nom à la VMC !), peut-être bien un M3G 074-BF (la courbe aérolique correspond à peu près). Ces ventilateurs s'alimentent en 230VAC, et se pilotent en 0-10V. Ils disposent également d'un retour tachy (1 pulse par rotation).

Sur la VMC, les sorties 0-10V sont pilotées en PWM via un montage à ampli-op (2904), lui-même alimenté en 24V :

  • PE9 (extraction)
  • PE11 (soufflage)

La fréquence du PWM est de 5kHz :

  • vitesse 1 : 25%
  • vitesse 2 : 50%
  • vitesse 3 : 75%
  • vitesse 4 : 100%

Les entrées tachy sont routés au µ-contrôleur via :

  • PB6 (extraction)
  • PB7 (soufflage)

Les valeurs de pulse sont :

  • vitesse 1 :
  • vitesse 2 : 55ms (~1100tr/min)
  • vitesse 3 :
  • vitesse 4 :

TODO: vérifier largeur des pulses et fréquence

Sondes de température

Il s'agit de simples thermistances NTC, donc la valeur à 21°C vaut environ 2,35kOhm. Cela semble être des 2K@25°C.

Elles sont interfacées via une simple résistance de tirage au Vdd, plus une capa à la masse :

  • T1 - PA1 (air extérieur)
  • T2 - PA2 (air soufflé)
  • T3 - PA3 (air repris)
  • T4 - PA4 (air rejeté)
  • T5 - PA5 (sonde chauffage - option)
  • T6 - PA6 (sonde pré-chauffage, antigel - option)

Bypass

Le fameux bypass est un bête moteur DC alimenté en 12V. Il est piloté via un pont en H (VN5770), lui-même alimenté en 24V :

  • PB0 (input 1)
  • PB1 (input 2)
  • PD8 (input 3)
  • PD9 (input 4)
  • PC5 (C.sense, via une résistance à la masse de 680Ohm)

Suivant le sens de déplacement voulu, la VMC commute les entrées 1+4 ou 2+3. Au repos, les entrées 3 et 4 sont activées, ce qui force les 2 broches du moteur à la masse (cela doit également servir à le freiner lors de l'arrêt) :

  • fermeture bypass (échangeur en service) : 2 + 3
  • ouverture bypass (échangeur hors service) : 1 + 4

Il n'y a pas de fin de course ; c'est le µ-contrôleur qui doit contrôler le courant consommé et détecte le blocage du moteur en fin de déplacement.

D'après ce que j'ai pu mesurer, PB0 et PB1 sont des signaux PWM, de fréquence ~330Hz, et de rapport cyclique de 1/3. Je n'ai pas réussi à mesurer la tension résultante, mais cela devrait donner 8V (alors que la doc parle de 12V). Je n'ai pas non plus réussi à mesurer la valeur sur PC5...

Relais et triacs

La VMC dispose d'un certain nombre de relais et triacs, soit destinés à piloter des composants externes, soit pour des fonctions internes.

Les relais sont piloté via un transistor (ou FET) :

  • PB9 - relais 1 (alimentation des ventilateurs)
  • PE1 - relais 2 (clapet air extérieur - option)
  • PB12 - relais 3 (clapet air rejeté - option)
  • PE2 - relais 4 (alarme)

2 triacs de puissance, montés sur dissipateur, sont utilisé pour le chauffage et l'anti-gel (options). Ces 2 triacs sont eux-même pilotés par 2 optos-triacs (MOC2023) :

  • PB10 (anti-gel)
  • PB11 (chauffage)

Il y a sur le PCB transfo et régulateur générant du 24V. Ce transfo de faible puissance est épaulé par un second transfo, plus puissant, monté hors PCB. Ce second transfo est mis en service par le µ-contrôleur, via un opto-triac :

  • PB8 (transfo)

Communication

La VMC dispose d'un bus RS485 pour communiquer avec les petits terminaux et les sondes hygro/CO2 :

  • PA9 (D RS485) - transmission données
  • PA10 (R RS485) - réception données
  • PA8 (DE/_RE_ RS485) - sélection direction

Autres entrées/sorties

La VMC permet de piloter une vanne mélangeuse, pour la fonction chauffage via batterie hydraulique. C'est une sortie 0-10V générée de la même manière que les signaux 0-10V des ventilateurs :

  • PE13 (vanne mélangeuse)

Il y a également 2 entrées par contact sec (le contact referme un signal à la masse), sur le même principe que les retour tachy des ventilateurs :

  • PC0 (contact externe - fonction programmable)
  • PC1 (thermostat sécurité chauffage)

Le PCB dispose de 2 petit switchs DIL, pour sélectionner des fonction internes (maître/esclave) :

  • PC6 (maître/esclave)
  • PC7 (inutilisé)

Il y a même l'emplacement pour 2 autres switchs DIL (non soudés) :

  • PC8
  • PC9

Programmation

Un petit connecteur type HE10 est relié à divers ports du µ-contrôleur, pour les fonctions de programmation/débugage :

 9  7  5  3  1
 O     O  O  O

 O     O  O  O
10  8  6  4  2
  • 1  : PA10 (Rx USART1)
  • 2  : Vdd
  • 3  : BOOT0_ (signal inversé)
  • 4  : PA9 (Tx USART1)
  • 5  : NRST
  • 6  : Vss
  • 7  : NC
  • 8  : NC
  • 9  : PA14 (SWCLK)
  • 10 : PA13 (SWDIO)

Ce connecteur permet de basculer le contrôleur en mode bootloader, et d'uploader le firmware via l'USART1. Les pins SWxxx permettent également une programmation style JTAG.

Résumé

Pin number Pin Name Direction Function Ventilation unit usage
15 PC0 input PC0 contact sec externe (programmable)
16 PC1 input PC1 thermostat sec sécurité chauffage
63 PC6 input PC6 contact interne DIL (master/slave)
64 PC7 input PC7 contact interne DIL (-)
65 PC8 input PC8 contact interne (non monté)
66 PC9 input PC9 contact interne (non monté)
24 PA1 input ADC12_IN1 T1 (température air extérieur)
25 PA2 input ADC12_IN2 T2 (température air soufflé)
26 PA3 input ADC12_IN3 T3 (température air repris)
29 PA4 input ADC12_IN4 T4 (température air rejeté)
30 PA5 input ADC12_IN5 T5 (température chauffage)
31 PA6 input ADC12_IN6 T6 (température anti-gel)
34 PC5 input ADC12_IN15 c.sense H-bridge (moteur bypass)
35 PB0 output TIM3_CH3 input 1 H-bridge (moteur bypass)
36 PB1 output TIM3_CH4 input 2 H-bridge (moteur bypass)
55 PD8 output PD8 input 3 H-bridge (moteur bypass)
56 PD9 output PD9 input 4 H-bridge (moteur bypass)
40 PE9 output TIM1_CH1 0-10V en PWM (ventilateur extraction)
42 PE11 output TIM1_CH2 0-10V en PWM (ventilateur soufflage)
44 PE13 output TIM1_CH3 0-10V en PWM (vanne 3 voies chauffage)
47 PB10 output PB10/TIM2_CH3 puissance batterie anti-gel (triac)
48 PB11 output PB11/TIM2_CH4 puissance batterie chauffage (triac)
67 PA8 output PA8 RS485 (sélection RD/WR)
68 PA9 output USART1_TX RS485 (TX)
69 PA10 input USART1_RX RS485 (RX)
72 PA13 bidir SWDIO Data JTAG
76 PA14 output SWCLK Clock JTAG
14 NRST input NRST Reset
92 PB6 input PB6/TIM4_CH1 tachy ventilateur extraction
93 PB7 input PB7/TIM4_CH2 tachy ventilateur soufflage
94 BOOT0 input BOOT0 sélection boot
95 PB8 output PB8 mise en service transfo
96 PB9 output PB9 relais 1 (ventilateurs)
98 PE1 output PE1 relais 2 (clapet air extérieur)
51 PB12 output PB12 relais 3 (clapet air rejeté)
1 PE2 output PE2 relais 4 (alarme)

Gestion VMC et nouveau firmware

Pilotage ventilateurs

L'alimentation de puissance des ventilateurs se fait au travers du relais 1. La VMC met en service ce relais lors de la phase d'initialisation. Elle pilote ensuite la vitesse via les sorties 0-10V, à la valeur de la dernière consigne enregistrée en mémoire.

Les ventilateurs ne démarrent qu'à une tension de 1,7V mini, et sont à leur vitesse max à 10V. Le firmware d'origine est limité à 4 vitesses ; autant faire mieux dans le nouveau firmware, en utilisant une consigne type 0-100%.

Lecture sondes de températures

Pilotage bypass

Lors du cycle d'initialisation, après la mise sous tension, le VMC pilote le bypass en position fermée pour être certain de sa position initiale.

Outils de développement

Carte de test

Pour les tests, j'ai acheté une carte ARM Cortex-M3 MINI STM32 Development Board STM32F103VBT6, pour une vingtaine d'euros. Cetet carte a le même chip que dans la VMC. La seule différence est qu'elle est cadencée par un quartz de 8MHz, au lieu de 12MHz pour celle d'Helios. Pas difficile à changer !

Pour me simplifier le développement au maximum, et le rendre facile d'accès à d'autres utilisateurs qui voudront hacker leur firmware, j'utilise l'environnement de développement Maple IDE ; c'est un équivalent de l'IDE Arduino, mais avec des librairies pour STM32.

Comme ma carte de dev. n'était pas supportée, j'ai commencé par modifier le code pour qu'elle puisse être utilisée.

Upload du firmware

La carte Helios ne disposant pas de port USB, il ne sera pas possible d'utiliser le bootloader Maple (sauf si possible de l'adapter pour qu'il utilise l'USART1, dispo sur le connecteur HE10)...

Le firmware devrait pouvoir être uploadé via le bootloader hard intégré dans le STM32. En effet, Helios a sorti sur le connecteur HE10 tous les signaux nécessaires pour ça :

  • BOOT0 - permet de sélectionner la banque contenant le bootloader
  • NRST - reset du chip
  • Vss - GND
  • Vdd - 3,3V
  • Tx USART1 - réception des données
  • Rx USART1 - envoi des données

Pour communiquer avec l'USART1, il faut un adaptateur FTDI en 3,3V.

La séquence pour passer en mode bootloader est la suivante :

  • TODO

Une autre solution, peut-être plus simple, est d'utiliser une carte supportant stlink (jtag-like), et d'utiliser les pins SWCLK/SWDIO.

Documents

Photos

Schémas

Attention : aucune garantie sur la justesse de ce schéma

schéma Eagle

Liens