Capteur sans fil pour compteur d’eau avec « cyble » – Partie 1 : principe de fonctionnement
Quand j’ai voulu domotiser mon compteur électrique (d’abord le modèle Actaris, puis le Linky), ça a été relativement simple, puisqu’on trouve des informations sur le site d’enedis et pas mal de tuto sur le net. Pour le compteur de gaz (Gazpar), malgré la simplicité de récupération des impulsions, trouver de la doc a été un peu moins simple.
Pour ma prochaine victime, le compteur d’eau, ça semble encore plus compliqué. On ne voit pas de sortie impulsion, lisible par exemple avec un interrupteur reed. Il n’ y a pas non plus de connecteur à collecteur ouvert ou de simili port série… Les seuls éléments visibles sont l’index avec les chiffres qui tournent et une sorte de demi rondelle métallique qui tourne au gré de l’eau qui passe. Elle n’est pas magnétique.
Au fil de mes recherche, je suis tombé sur un projet très aboutit qui utilise un capteur optique en jouant sur l’effet miroir du disque pour capter les rotations : https://www.openhardware.io/view/15/Itron-Aquadis-watermeter-sensor#google_vignette
Étant donné que je n’ai pas l’électricité au niveau du compteur d’eau, j’ai continué à cherche une autre solution car la led IR du TCRT5000 tire un peu trop de courant pour pouvoir utiliser un accu lithium avec une autonomie d’au moins un an.
Une version avec des capteurs optiques plus adaptées à certains compteur avec une cyble « miroir » est disponible dans un autre article : Capteur optique sans fil pour compteur d’eau
La Cyble
D’après une documentation trouvée sur le site du fabriquant du compteur d’eau, ils appellent cette roue « cyble ». Dans les explications du principe de fonctionnement, il est dit :
Par effet de “courants de Foucault”, il y a variation du signal envoyé dans la bobine en regard de la cible et donc détection du passage de celle-ci.
La forme de la courbe me rappelle de lointains cours où on parlait de circuit RLC en régime libre et de signaux pseudo périodiques amortis. Elle m’a aussi rappelé un circuit réalisé il y a quelques années pour mesurer la valeur soit d’une inductance, soit d’un condensateur avec un arduino (en connaissant la valeur de l’autre) puis en mesurant la fréquence du signal résultant. La fréquence de résonance est donnée par la formule suivante, avec L en Henry et C en Farad :
Connaissant la fréquence, L ou C, on peut retrouver la valeur inconnue.
Le principe de détection
D’après ce qui est énoncé, la présence de la « cyble » devant l’inductance devrait faire que le signal sera amorti plus rapidement. Au final, pour cette mesure, la fréquence de résonance n’est peut être pas d’une importance capitale. Elle doit néanmoins jouer sur l’autonomie : plus elle est élevée, plus la mesure sera rapide et plus le microcontrôleur pourra retourner en veille rapidement. Elle ne doit pas être trop élevée non plus pour rester mesurable par le microcontrôleur ou les composants annexes.
De plus, l’inductance devra être de petite taille (la taille du composant) car le diamètre de la « cyble » est relativement petit, 18mm de diamètre sur mon compteur.
Conception du circuit
L’oscillateur
Pour commencer, on va faire un simple oscillateur LC qui sera soumis à un échelon de tension par une des sortie d’un atmega328p (Arduino uno). PULSE est connecté sur une des sortie, ici D4 (PD4). On peut observer que sur les petites durées, la fonction delayMicroseconds n’est pas très précise.
Ajout d’un bias et d’une tension de référence
Dans l’idée, ça fonctionne! Il va falloir maintenant traiter un peu le signal pour ne plus avoir de composante négative et ajouter un pont diviseur qui servira de référence de tension afin de compter les oscillations qui la traversent.
Compter les oscillations
Au début, j’ai pensé à dégainer un LM339 (4 comparateurs différentiels) et ainsi compter le nombre de fois où le signal amorti se trouve sous la tension de référence. Mais l’atmega328p est équipé d’un comparateur analogique. Les tensions entre AIN0 etAIN1 (alias D6 et D7 sur l’arduino uno/nano) sont comparées.
AIN0 peut être remplacé par la tension interne de référence via le bit ACBG du registre ACSR.
AIN1 peut être remplacé par un des port de l’ADC (PC0, PC1… alias A0, A1 sur l’arduino) via le bit ACME du registre ADCSRB et le registre ADMUX pour choisir le numéro PCx.
Sur le schéma suivant, basé sur un arduino nano, on utilise D4 pour l’impulsion, D6 (AIN0) pour la tension de référence générée par le pont diviseur et A0 (PC0) pour le signal oscillant.
Le principe de base de la détection est maintenant opérationnel. Dans la prochaine partie on s’intéressera aux points suivants :
- abaisser au maximum la consommation du circuit
- comment compter le nombre de tour ? comment gérer le sens de rotation si besoin ?
- trouver la fréquence de mesure idéale en fonction du compteur
- calibrer la valeur mesurée avec et sans présence de la cyble.
One thought on “Capteur sans fil pour compteur d’eau avec « cyble » – Partie 1 : principe de fonctionnement”