Détecteur de désamorçage pompe piscine

Bonjour,
Après avoir découvert que la pompe de ma piscine devait tourner sans eau depuis plusieurs jours, désamorcée à cause à l'évaporation importante de l'eau pendant la canicule de l'été dernier, heureusement elle n'a pas grillé. :saluting_face:
Pour éviter que ça ne se reproduise vu le prix de la pompe, il me fallait trouver un dispositif permettant de détecter son désamorçage pour la stopper.
Partant du principe que la pompe consomme un certain courant lorsqu'elle fonctionne habituellement (dans mon cas environs 4A), et qu'elle tourne "à vide" lorsqu'elle est désamorcée (soit 1.5A), il me suffisait de faire une mesure du courant et la comparer à un seuil, pour déclencher l'alimentation de la pompe.
Au final, après quelques galères pour comprendre comment mesurer de la tension alternative issue d'un capteur de courant, et grâce à une vidéo sur Yout...e qui aborde l'offset de tension alternative pour la rendre exploitable entre 0/5V= et l'exploitation de la librairie "Emonlib", j'ai fini par réaliser ce montage qui fonctionne à la perfection !

Composants utilisés et montage:

Le programme:

#include "EmonLib.h"         // Integre bibliotheque Emon Library
EnergyMonitor emon1;      // Creer une instance Emonlib

void setup()
{ 
  // Declaration des entrées/sortie/LED intégrée (Pas de A1 car gestion pin 1 par Emonlib)
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(A0, INPUT);
  pinMode(2, OUTPUT);
  
  // Mesure Courant sur broche entrée A1, calibration TA12-100 (5, 4 en réalité)
  emon1.current(1, 4);

  // Temporisation de mise en service détection pour laisser le temps que la pompe démarre.
  delay(2000); // Attendre 2000 millisecondes
}

void loop()
{
  // Gestion clignotement LED intégrée pour signaler le fonctionnement du XIAO.
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500); // Attendre 500 millisecondes
  digitalWrite(LED_BUILTIN, LOW);
  delay(500); // Attendre 500 millisecondes

  // Calcul courant Irms pompe (1480 = nombre d'échantillonages)
  double Irms = emon1.calcIrms(1480);  

  // Déclaration variable Valeur seuil A0 en bits pour lecture sur moniteur serie
  int valA0 = analogRead (A0);

  // Déclaration variable Courant converti en 1023 bits sur entrée 3.3V, pour calcul courant
  int Courant = ((Irms * 1023) / 3.3);

  // Comparaison en bits seuil A0 défini par potentiomètre / mesure courant pin1 par capteur TA12-100)
  if (Courant <= analogRead(A0)) { // Si courant mesuré est inférieur à la valeur du potentiomètre...)
    digitalWrite(2, HIGH); // alors active la sortie 2 => le contact NF du relais s'ouvre et coupe l'alimentation de la pompe)
  } else { // sinon...
    digitalWrite(2, LOW); // laisse la sortie 2 au repos => le contact NF du relais alimente la pompe
  }
}

Principe de fonctionnement:

  • Le dispositif est installé entre l'alimentation de la pompe et la pompe
  • A la mise en service de la pompe, le montage alimente en parallèle la pompe et le circuit de mesure du courant vers le XIAO
  • La mesure ne démarre que 2 secondes après la mise sous tension de l'ensemble, le temps que la pompe soit à sa puissance nominale
  • Au bout de 2 secondes, le XIAO mesure le courant consommé par la pompe via le capteur TA12-100, et le compare au seuil préalablement réglé à l'aide du potentiomètre entre l'intensité à vide et l'intensité nominale du moteur
  • Dés que l'intensité passe en dessous du seuil, la platine relais s'active et s'auto-maintient dans cette position, ce qui coupe l'alimentation de la pompe
  • Pour remettre en service le système, il faut couper l'alimentation complète, et remettre en route la pompe
  • Cependant, dans le cas où le dispositif tomberait en panne, ou que la pompe se désamorcerait, (afin de purger l'air dans les tuyaux, ce qui amène à une intensité proche de l'intensité à vide tant que l'eau n'est pas complètement revenue dans les tuyaux), un commutateur de "marche forcée" permet de by-passer le montage pour alimenter directement la pompe...

Bon bricolage ! :wink:

Vue interieure:

Platine électronique (XIAO + pont d'offset mesure courant)

Capteur TA12-100:

Modules d'alimentation 220V/5V et 5V/3.3V (les entrées/sorties du XIAO ne fonctionnent que sous 3.3V) :

Boitier en position "pompe désamorcée":

Oups, j'ai oubliè un schéma de principe du système de mesure du courant avec l'offset:

1 Like

@critoune
Bravo, super réalisation :grin: :+1:
Le rendu est top, ça fait hyper finit :slight_smile:
Bravo a toi !

Cordialement
Pandaroux007

+1👍

Merci à vous ! :wink:

oh oh super intéressant, merci !
je mets ça en marque page et dans la tête je note surtout de mettre le "truc" en œuvre...
(la pompe à sec, ça m'est déjà arrivé mais par étourderie)

De plus je découvre le XIAO... et je m'aperçois même sans y avoir regardé de plus près que c'était une lacune de ne pas avoir connu ça plus tôt !

Une remarque critique : (juste une, et du genre critique positive je crois) :
bien que ça dépende de la puissance de la pompe, mais même... je ne fais pas trop confiance dans le pouvoir de coupure du relai installé et il me semble qu'un relai un peu plus costaud ne serai pas injustifié :
image

mais il est vrai que logiquement il ne doit basculer que très exceptionnellement

à nouveau merci. Bonnes baignades

(ah... et puis une question, j'oubliais, pourquoi un TA12 plutôt qu'un ACS712 à effet Hall ?
Je ne dis pas que ça serait mieux, c'est pour savoir)
(et puis ce minuscule régulateur pour faire du 3.3V... 800mA tout de même :
image
)

@simontpellier

Bonjour, merci pour le retour positif de mon projet :wink:
Pour le XIAO, je cherchais un petit arduino en taille, 4 entrées /4 sorties, 1 ADC, simple et pas cher, et surtout, facilement programmable pour moi !!! J'ai fini par tomber dessus grâce à une vidéo d'un électronicien québecquois qui le présentait : Seeeduo XIAO
Hormis qu'il n'accepte que des entrées en 3.3V au lieu de 5V, il me convient parfaitement pour mes petits montages :star_struck:

Pour répondre à vos questions à vos questions:

  • pouvoir de coupure du relais : en fait, comme indiqué, le relais est en permanence au repos si la pompe fonctionne correctement. Ma pompe consommant moins de 5A en nominal, même avec un contact "10A chinois", ça ne pose aucun problème...
    De plus, la pompe ayant vocation à être déclenchée sur une intensité faible (courant pompe à vide, image du désamorçage) la pompe s'arrête si le courant < 1.5A... bien loin des 10A chinois :laughing:
    Et comme la remise en service nécessite une mise hors tension du système pour redémarrer, le courant qui passe au démarrage et pompe correctement en service se fait qu'au travers du contact fermé du relais, sans risque de fumer sur une ouverture...

  • Pourquoi un TA12 plutôt qu'un ACS712 ? 3 raisons de mon choix...

    • pour moi, bien que l'ACS712 fonctionne en AC, il délivre un 2.5V +/- 0.5V quand il atteint 5A. Du coup, ça ne laisse pas beaucoup de marge pour détecter un minimum de 100mV... Certes c'est du numérique, mais avec le TA12-100 et Emonlib, j'ai une plage de 0A=2.5V / 5A=5V soit 2.5V de plage de réglage du seuil de déclenchement...
    • le TA12 permet d'avoir un isolement galvanique entre l'alternatif et le circuit de mesure de l'arduino => sécurité pour éviter le mélange des tensions si défaillance matérielle
    • enfin le challenge perso de comprendre comment programmer une mesure de courant alternatif via la librairie Emonlib... surtout pour un débutant comme moi ! :thinking:
  • Pour ce qui est du régulateur, j'avais un stock de ce modèle qui est réglable en tension de sortie, mais je prends l'info pour un prochain montage !

Bon bricolage ! :slightly_smiling_face:

Hello,
merci pour ces réponses.
Concernant les capteurs de courant, le TA12 est certes visuellement plus rassurant mais il me semble que "l'effet Hall" procure le même découplage. Mais "no matter"... ça ne change rien (en tous cas je confirme que l'ACS712 mesure le courant alternatif)
Ma découverte du XIAO m'amène à faire une proposition d'amélioration. Qui ne changerait rien ni sur le principe ni sur son efficacité, c'est le sketch qui en bénéficierait et deviendrait conforme à ce qui se pratique dans des applications de surveillance.
En effet je vois que le XIA0 dispose d'un watchdog (ou WDT : minuteur sommaire dont l'horloge totalement indépendante de la partie processeur est basée sur un bête circuit RC... donc sans grande précision mais ce n'est pas ce qu'on en attend)
Le principe est de faire des cycles de cette façon :

  • mesure (et action si besoin)
  • activation du watchdog et mise en veille du MCU
  • réveil du MCU par le watchdog au bout de la temporisation programmée
  • nouvelle mesure, etc.
    Je ne suis pas encore allé dans la datasheet et je ne sais pas quelle est la tempo maxi programmable... certainement quelques secondes dans tous les cas.
    Entre deux, le MCU s'économise.
    Autre avantage : si pour une raison ou une autre le code plante, le watchdog fera automatiquement un reset, ce qui sécurise le système.

Bonjour à tous,

Un point qui me chagrine : tu as un relais 5V alimenté en 3.3V ?
C'est limite ! ! Et ça fonctionne bien ?

il vaudrait mieux utiliser le type de relais que j'ai posté sur
https://forum.arduino.cc/t/module-4-relais-5v-elegoo-avec-esp32/1143728/13
Module 4 relais 5V ( elegoo ) avec ESP32 - #13 by 68tjs
mais en 5V.
Ainsi, la tension du relais pourrait être séparée de celle du contrôleur.
Ce n'est pas pour rien qu'il y a un optocoupleur.

+1
Le piège c'est que neuf le relai fonctionne sous 3,3 V.
Il ne faut surtout pas en tirer des conclusions hâtives du genre de celle de youtube.

Rien ne prouve qu'après un nombre indéterminé de manœuvres il continu à fonctionner sous 3,3 V.

Il est parfaitement normal qu'un organe mécanique comme un relai quand il est neuf commute à une tension inférieure à sa tension "garantie" de fonctionnement.

Il faut évaluer les risques : que se passera-t-il si le relais ne commute plus ?
Est-ce que gagner les quelques euros d'un convertisseur de tension est interressant devant le prix d'une pompe ?

Sous alimenté, le contact lame mobile du relais risque de ne pas bien "appuyer" sur la lame fixe = mauvais contact. (borne NO)

@68tjs
Petite précision il me semble pour clarifier: c'est bien un relais 3.3V qui est alimenté en 3.3V, et qui reçoit un signal 3.3V.
La photo sur le schéma est effectivement trompeuse car elle représent(ait) un relais 5V, mais je viens de la changer pour éviter tout débat ! Ceci dit, il est bien écrit aussi en dessous "Module relais 3.3V" :grin:

@geryko
Le contact n'a vocation qu'à manœuvrer exceptionnellement que lorsque la pompe se désamorce.
Etant donné que par défaut le contact est sur le NF et non le NO, peut de risque qu'il y ait un mauvais contact, sinon la pompe ne tournera pas dés le démarrage...
De plus, ce type de relais électro-mécanique n'a pas de position intermédiaire :grin:

  • soit la tension d'alimentation de la bobine est sous alimentée => la bobine surchauffe mais le contact ne manoeuvre pas
  • soit la bobine à suffisamment de tension pour produire le champs magnétique et bascule le contact dans la position opposée, mais jamais entre les deux...
    Sachant que sur ce type de platine relais la bobine est généralement commandée par un transistor qui ne peut qu'être bloqué ou passant, il est peut probable que la bobine soit sous alimentée puisqu'elle reçoit la tension d'alimentation... C'est du ON/OFF direct...

On peut améliorer tout ce qu'on veut sur ce système, libre à vous, je n'ai pas assez de connaissances en arduino pour pousser jusque là ! :wink:
Ca fait 1 an que ce système est en service, je l'ai testé la semaine passée aussi par erreur (après remplissage piscine, j'ai voulu utiliser la buse balais pleine d'air et pas d'eau, 2s après => pompe à l'arrêt ! Nickel...

Allez, une petite expérience d'alimentation "empirique" de relais 5V sous 3.3V, réalisée ce matin:

  • 3 platines à 2 relais (soit 6 relais) 5V, alimentées par une alimentation stabilisée
  • les 3 relais sont activées sur une mise à la masse des IN.
  • ne pas tenir compte de la qualité du montage à la "one again", ni de la précision chinoise de la platine de tension ajustable !

Résultats:

  • à la montée de tension, activation des bobines des relais entre 3.07V et 3.24V pour le dernier, OK à 3.3V en faisant des remises hors/sous tension 0-3.3V
  • à la descente de tension, désactivation des bobines entre 3.02V et 2.84V pour le dernier...
    Conclusion: un relais 5V peut fonctionner entre 3.3V et 5V sans problème, il faut juste s'en assurer avant :grin:
    Bonne journée à tous !

NON, absolument pas.

Si un relai neuf 5 V peut s'activer à 3,07 V, c'est parce que son vieillissement est pris en compte par le constructeur.

Le même relai dans un an ou deux s'activera peut-être toujours à 3,02 V, mais il pourra aussi ne s'activer qu'à partir de 4 V.

Relai 5 V veut dire que, dans le temps de fonctionnement garanti, il s'activera à partir de 5 V.

La datasheet, rien que la datasheet ! Celle du JQCF-3F donne la valeur suivante : Pick-up voltage 75%
Cela fait donc 5V * 0.75 = 3.75V
En dessous, rien n'est garanti, et on laisse la place au hasard, et le vieillissement, comme dit 68tjs, peut très bien ne pas arranger les choses.
Je ne vois pas ce qui empêche d'alimenter la bobine sous 5V, tout en conservant une commande en 3.3V.

D'autre part, il n'existe pas de modèle 3.3V, mais 3V. Alimenter un relais 3V sous 3.3V provoque un échauffement de +10%. Cela a son importance, surtout dans un boîtier exigu et non ventilé.

@68tjs
@hbachetti
Mon test ne visait qu'à démontrer la faisabilité d'un fonctionnement en dehors du "normal"...
Bien sûr que toutes les caractéristiques des matériels se font à tension nominale, et qu'ils ont des marges de manoeuvre pour assurer leur durabilité.... Bien que ! à l'heure de "l’obsolescence programmée", je ne suis pas persuadé que ces platines relais chinoises soient aussi pérennes dans le temps qu'elles soient alimentées à 3.3V ou à 5V... Tout ce débat pour gagner 6 mois, ça me laisser perplexe :thinking:

Bref ! comme ce n'est pas la cas de mon montage qui a un relais alimenté par 3.3V, et qui passe ses journées au repos à attendre un signal de 3.3V pour s'exciter et faire ce que je lui ai demandé , continuer à échanger sur cette problématique mériterai d'ouvrir un nouveau post pour de plus amples débats, ce n'était pas là le fond de mon partage sur ce montage...
Bonne journée à tous !

Très bien, mais en général quand on partage un projet c'est pour apporter une solution qui peut venir en aide à d'autres personnes, y compris des amateurs sans expérience qui ne comprendraient pas que leur relais ne réagisse pas, alors qu'ils ont scrupuleusement respecté le schéma.

EDIT : Ces personnes ne comprendront pas non plus qu'un relais 3V alimenté sous 3.3V reste coincé à cause de l'élévation de la température.

D'autre part, toute réalisation postée sur ce forum est critiquable, et c'est constructif.
geryko a mis le doigt sur un point douteux. Il donne en outre la solution : un module relais 5V avec VCC et JD-VCC séparés.

Si un amateur est intéressé par ton montage, je lui déconseillerais de s'orienter sur un module relais tel que celui que tu as utilisé. Un module à 4 broches VCC, JD-VCC, GND et IN serait plus approprié, alimenté bien sûr en 5V sur JD-VCC.

En outre je relève l'absence de toute protection anti-surtension sur la pompe. Je suggérerais également de placer une varistance 275V en parallèle sur celle-ci.
Une surtension à l'ouverture du contact peut avoir deux effets :

  • dégrader le contact
  • provoquer des plantages du µcontrôleur

Ce n'est pas parce que ton montage fonctionne avec le matériel que tu as utilisé, qu'un autre montage, utilisant une pompe différente, une alimentation différente, et même un câblage différent, fonctionnera.
On ne compte plus sur ce forum les problèmes de plantage qui ont été résolus suite à l'ajout d'une varistance sur une charge inductive 230V, contacteur, pompe, moteur, etc.

@hbachetti
Je comprend que toute proposition sur le forum soit discutable, et j'accepte la critique...
Pour autant :

Non, à moment donné faut pas trop pousser non plus ! désolé de vous contredire, mais en regardant le datasheet du relais, mettre 10% de plus aux 3V initiaux (soit 300mV) ne posent aucun problème, surtout quand je vois la ligne du bas !
30% max à 70° / 70% à 23°.... alors 10% de plus, c'est pas ça qui va flinguer le relais

Effectivement, on pourrait aussi mettre un limiteur de surtension...puis des diodes anti retour et des optocoupleurs pour éviter le renvoi de tension vers le XIAO, et puis un boitier blindé antiparasite, et puis un boitier IPxxxx pour l'humidité, et puis...
Stop ! ce montage n'a pas vocation à respecter 50 normes CEM ou je ne sais quoi, c'est un montage pour n'importe quel bricoleur qui maitrise un temps soit peu les bases de l'électricité :face_with_raised_eyebrow:
Là aussi, au risque de me répéter, le montage n'est voué qu'à déclencher "exceptionnellement" ! C'est pas un pilotage de pompe avec 25 démarrages par jour, c'est une sécurité uniquement.
Et ça fait 1 an qu'il fonctionne sans problème, alors je considère qu'il est assez fiable...
Et puis vu le prix des pièces par rapport au prix de la pompe, si ça doit tomber en panne dans 3 ans ou dans 5 ans, qu'est-ce que ça me coute ???

Maintenant, libre à qui veut mettre un relais 5V, ça fonctionnera pareil...
Et puis vous pouvez aussi mettre un Nano, comme ça vous n'aurez plus besoin des 3.3V...
Le but du montage est d'expliquer qu'on peut faire un dispositif comme celui proposé, mais chacun fait ce qui lui plait...

Je respecte tous les avis quels qu'ils soient, je me régale de toute cette technique, mais ça reste un montage simple et efficace, respectant les règles de base du domaine elec.
Que les composants chagrinent et interrogent certains, soit, mais ça n'est pas fait pas un bricolo du dimanche...

Ah, j'avais oublié de préciser, j'ai 30 ans de maintenance électrique industrielle, et formateur dans le domaine Elec depuis 8 ans... En résumé, pas un lapin de 3 semaines !
Alors si j'avais étudié n'importe quoi, est-ce que vous pensez que je me serais permis de présenter un montage qui présente des risques pour tout un chacun ?

Bonsoir

merci à @hbachetti et @68tjs pour avoir rappelé qu'utiliser dans une réalisation un composant hors spécification peut poser problème.....ce n'est pas à négliger, si on choisit d'utliser de travailler 'hors spécification' autant que ce soit en connaissance de cause...

@critoune : peux tu préciser stp le modèle de carte Seeduino XIAO utilisée dans la réalisation que tu proposes ? il n'y a pas une XIAO mais des XIAO variées.
Seeduino diversifie les XIAO en y mettant maintenant divers microcontrolleurs (SAMD21, ESP32-S3, ESP32-C3, nRF52840, RP2040...) , XIAO étant donc devenu un format commun pour des cartes variées

Un système de sécurité devrait désactiver la fonction par défaut. La logique voudrait que le relais colle pour activer la pompe

  • Dans la configuration présente, si la carte tombe en panne la pompe peut cramer.
  • Comme le relais ne fonctionne que rarement, il est tout à fait possible qu'il reste collé le jour il y en aura besoin. Je parle d'un collage mécanique du genre qui se produit sur un actionneur qui est tout le temps au repos.

C'est sûr, un relais tout le temps actif cela consomme mais, dans le principe, c'est plus sécuritaire.