Capteur inductif sans fil pour compteur d’eau avec « cyble » – Partie 3 : Finalisation

Capteur inductif sans fil pour compteur d’eau avec « cyble » – Partie 3 : Finalisation

A la fin de la partie 2, j’avais un prototype sur breadboard plutôt fonctionnel. Mais il restait encore plein d’améliorations pour avoir un circuit propre et fonctionnel.

  • Quel mode de transmission des données (quel module radio ?)
  • Quelle alimentation (quel type d’accu ?)
  • Améliorer le code pour économiser au maximum l’accu.

Pistes d’améliorations

Choix de l’accu

Le choix sera assez simple, ça sera un accu lithium-fer-phosphate (LiFePO4). J’aime beaucoup les accus LiFePO4 pour les petits projets comme ça car niveau sécurité ils sont plus sûrs que les lithium-ion. De plus, leur tension d’environ 3.3V une fois la charge terminée permet d’alimenter un circuit nécessitant 3.3V sans passer par un régulateur de tension. Néanmoins la tension de charge étant de 3.6V, on ne peut pas la charger en place sans une gestion de charge adaptée. De plus, l’auto-décharge est assez faible.

Le module de transmission

J’ai réalisé un certain nombre de circuits pour la domotique de mon logement basés sur le célèbre Nrf24l01+. Ils fonctionnent très bien pour les capteurs de température par exemple dans un environnement intérieur avec des cloisons et un nombre de murs porteurs limité.

Les compteurs d’eau sont parfois dans des endroits plus difficiles d’accès, sous une trappe au bout du jardin, à l’autre bout du couloir en immeuble et dans ces circonstances le Nrf24 et sa bande de fréquence dans les 2.4GHz peuvent rapidement montrer leurs limites.

Pour ce projet, le choix se portera sur un module LoRa SX1278 qui utilise une fréquence dans la bande des 433MHz et qui aura donc une meilleur portée.

Amélioration du code

Stockage de l’index : il sera sauvegardé dans l’eeprom du microcontrôleur. Pour pallier au nombre maximum de cycles d’écriture, un buffer circulaire est utilisé.

Calibration : dans le prototype, les valeurs limites entre présence ou non de la cyble étaient en dur. Ici, un bouton permettra d’entrer en mode calibration pour calculer la valeur adéquat directement sur le compteur.

Économie d’énergie : La plupart du temps le capteur ne fait rien (un cycle de mesure prend environ 1ms), donc l’atmega sera en power down la majorité du temps. De plus, le nombre de mesure est réduit quand le compteur ne tourne plus.

Cycles de mesure : Pour respecter des timing précis et reproductibles sur les deux inductions, cette portion du code manipule directement les registres de l’atmega. Pas de pinMode ou de digitalWrite à ces endroits, mais DDRx (le registre de direction) et PORTx (pour positionner à haut ou bas). Idem pour faire une impulsion d’à peine plus de 1µs, pas de delay, mais quelques instruction assembleur nop.

 

Circuit final

Le schéma et le circuit imprimé sont disponibles ici : https://oshwlab.com/SanglierLab/lora-cyble-water-meter-sensor

Le programme arduino ici : InductiveWaterCounter, il est compilé avec https://github.com/MCUdude/MiniCore pour utiliser un atmega328p en mode standalone. La configuration à utiliser est  l’horloge interne 8MHz (il n’y a pas de quartz sur le circuit).

Et ensuite ?

Maintenant, j’ai un compteur d’eau différent, où le disque n’a quasiment aucun effet sur l’oscillation. Mais il est effet miroir sur un fond noir, je suppose donc que celui-ci est prévu pour une lecture optique. La prochaine étape sera une modification du circuit pour remplacer les oscillateurs par des capteurs optiques réflectifs, comme ceux qui servent aux robots arduino à suivre des lignes.

3 réflexions sur « Capteur inductif sans fil pour compteur d’eau avec « cyble » – Partie 3 : Finalisation »

  1. Bonjour,

    merci pour votre blog très intéressant, j’ai essayé de reproduire ce montage pour suivre ma conso en eau, j’ai bien un circuit qui oscille de manière variable en fonction de la présence d’une masse métallique (50 oscillation sans métal et environ 20 avec du métal) mais lorsque je place la bobine juste à côte de la cyble je n’ai que des variations de quelques oscillations en fonction de la position, ce qui n’est pas suffisant pour assurer une mesure. Mes connaissances en électronique sont limités, y aurait-il un moyen pour augmenter la sensibilité ?? J’utilise une carte arduino pro mini en 3,3V si cela peut changer quelque chose?

     

    1. Bonjour,
      Je ne sais pas quel modèle de compteur vous avez, mais lorsque j’avais déménagé, le nouveau compteur d’eau ne faisait presque plus de différence entre métal et non métal pour avoir de mesure fiable.
      C’est pour ça que j’avais adapté le circuit pour le transformer en capteur optique qui fonctionne parfaitement avec le compteur que j’ai actuellement, où le disque semble en plastique brillant sur fond noir.
      J’ai remarqué également qu’il y a des bobines plus sensibles que d’autres mais si en test vous avez un ration 50/20 c’est correct pour faire une mesure.

  2. Merci pour votre réponse, j’ai un Sensus 620.

    Le pb est que je n’ai ce rapport 50/20 qu’avec un morceau de métal (tournevis) mais si je place la bobine sur le compteur le métal de la cyble n’induit qu’une très légère variation.

    Pour la bobine mis à part l’inductance quel autre paramètre pourrait être à prendre en compte ?

    Ca doit être faisable pourtant car j’ai acheté un second compteur d’occasion pour des test et mettre sur un réseau d’eau de pluie et il y avait un module de télérelève mais dont tout l’électronique était noyé dans une résine donc inutilisable mais c’était bien une détection par induction.

    Sinon je vais essayer avec un capteur optique mais je ne sais pas si je vais pouvoir distinguer la partie plastique rouge de la partie métallique.

     

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *