[TUTO] Capteur de courant pour mesure de puissance 230V

Tags: #<Tag:0x00007fa7b21befc0>

Bonjour à tous,

Je vous propose dans ce tuto de concevoir un petit capteur de courant / puissance à partir d’une mini pince ampèremétrique et d’un NodeMCU.

Présentation capteur : fonctionnalités
Il peut mesurer un courant jusqu’à 50 ampères, et reporte périodiquement à Jeedom via le plugin ESPEasy.
Initialement, le projet portait sur un capteur autonome capable de signaler par mail lorsqu’une installation photovoltaique est en panne ; chez quelqu’un non équipé de domotique. Nous verrons cette fonction aussi dans le tuto.
N’ayant pas d’appareil capable d’étalonner le capteur, j’ai dû me baser sur les calculs théorique pour obtenir la meilleure précision. Il est néanmoins possible et facile de changer le rapport de conversion si vous disposez d’une pince ampèremétrique professionnelle (ou si vous avez un copain électricien qui peut vous faire une mesure instantanée pour comparer).

Le tout est monté sur un PCB très simple et un support pour pouvoir remplacer facilement le NodeMCU en cas de panne.

Quelques images de l’ensemble :

Montage Capteur
Boitier1Boitier2

5 J'aimes

Liste de courses

C’est assez simple et bon marché :

Soit moins d’un vingtaine d’euros avec du rab’ d’inserts, de vis et de résistances.

[Edit] Ah, j’oubliais un câble USB + une alim basique de chargeur de téléphone ou autre… ça se récupère en général. Sinon il faut compter 5€ de plus.


Avec une alim de RPi, pas trop de surprise sur la stabilité…

Installation d’ESPEasy sur le NodeMCU

Pour commencer, il faut connecter le Node sur votre PC via sa prise USB. Puis laisser Windows chercher un driver adapté s’il n’existe pas déjà.
Le Node devrait apparaître dans le gestionnaire de périphériques (Clic droit sur Menu démarrer / Gestionnaire de périphériques (à gauche) / Ports COM et LPT). Profitez-en pour récupérer le numéro du port COM.

Ensuite, il faut aller récupérer la dernière mouture d’ESPEasy ici :


Cliquez sur le titre « Release Mega YYYYmmdd » et téléchargez le fichier .zip sur l’écran suivant (tout en bas) : ESPEasy_ESP82xx_Mega-YYYYmmdd.zip

Dézippez l’archive et donnez les droits d’exécution « Admin » à esptool.exe et FlashESP8266.exe .
Allez dans le dossier /bin et copiez le fichier « ESP_Easy_mega_YYYYmmdd_normal_ESP8266_4M1M.bin » .
Revenez au dossier où se trouve FlashESP8266.exe et collez le .bin.

Ensuite on lance l’exécutable FlashESP8266.exe.
Il va proposer un port COM (choisir celui du NodeMCU) et un Firmware : normalement il n’y a qu’un seul choix possible : celui que vous venez de coller.
En cliquant sur « Flash », une interface doit apparaître et au bout d’un moment elle indique que le flash s’est bien déroulé.

On débranche et rebranche le NodeMCU. Il va redémarrer et se configurer pour créer un point d’accès Wifi nommé « ESP_Easy_0 ».
Avec une tablette ou un téléphone, connectez vous sur ce point d’accès avec le mot de passe suivant : configesp.
Une interface permettant de saisir un SSID et un mot de passe va apparaître. Mettez-y vos paramètres de wifi et validez.
L’interface se configure et vous indique l’adresse IP que votre NodeMCU a récupéré sur votre réseau.
Revenez sur le PC et tapez l’adresse IP dans le navigateur. Vous arrivez sur l’interface d’ESPEasy.

Dans la partie « Config / IP settings » vous pouvez mettre une IP fixe pour votre ESP. Validez et rebootez pour prise en compte.

Maintenant nous sommes prêts pour la configuration… mais avant il faut monter l’appareil.

Calculs, schéma électrique et PCB

Un peu de théorie… préparez vos aspirines !
Le principe du capteur ampèremétrique est le suivant : il récupère un courant inductif à travers le tore qui, traversant une résistance interne à l’appareil, devient une tension :
Principe Capteur
Entre +K et -L, on lit une tension proportionnelle au courant qui traverse le fil autour duquel est raccordé le capteur.
La résistance interne est de 7kOhm (trouvé sur la doc du fabricant, en googlisant les informations sur l’appareil). Ce qui fait pour 5V un courant à travers la résistance de 0.714mA
Pour lire une valeur dans l’entrée analog du NodeMCU, il faut se ramener à une tension max de 3.3V.
On doit donc placer une résistance en parallèle de celle interne de l’appareil, pour qu’on ait 3.3V sous 0.714mA. Soit une résistance équivalent aux deux en parallèle de 4620Ohm.
Un petit coup de formule pour deux résistances en parallèle (http://www.sengpielaudio.com/calculator-paralresist.htm) donne 13588Ohm. La plus proche est 10+3.3kOhm ; ça suffira.

Il faut donc relier notre capteur à une résistance de 13.3kOhm et entre ça dans l’analog du NodeMCU…

Création du PCB :

J’ai utilisé EasyEDA… soft assez facile à prendre en main, et ensuite il est très simple de commander chez l’éditeur du soft : JLCPCB, un leader mondial dans la fabrication de PCB.
Schéma électrique Routage
PCB

Vous pouvez commander directement chez JLCPCB avec le projet suivant :
https://easyeda.com/editor#id=7cb0e6f5d5dd498589260f7e108b4bfb

La procédure pour commander se trouve dans un autre tuto (si j’ai le courage, je la copierai ici) :


(à partir de : Aller dans « Fabrication / PCB Fabrication File (Gerber) » : )

Sinon, voici les fichiers Gerber pour ceux qui souhaitent réimporter dans un autre outil (enlever l’extension .pdf)…
Gerber_PCB_Line current probe_2021-04-21.zip.pdf (27,4 Ko)

Configuration d’ESPEasy sur le NodeMCU

Une fois ESPEasy installé et le wifi / réseau configuré, on peut passer à la configuration spécifique de l’appareil :

  • déclarer l’entrée analogique
  • configurer le mail si vous le souhaitez
  • configurer les remontées sous Jeedom
  • configurer les rules

Devices

Allez dans « Devices », cliquez sur le Edit de la première ligne, et voilà la config à faire :
ESPEasy config Devices
ESPEasy config Devices analog

Vous noterez la formule d’ajustement « %value%*50/976 »… 50 c’est pour la valeur max en Ampères du capteur. 976 devraient être 1023 (l’entrée analogique lit des incréments de 0 à 1023), mais moi je me suis trompé initialement dans mon calcul de résistance équivalente et j’ai soudé une somme qui me ramène à un petit peu moins de 3.3V pour 50A.
Je lirai donc 1023 pour plus de 50A, et 50A représenteraient moins de 1023 incréments. J’ai donc corrigé là. C’est avec ce paramètre que vous pouvez étalonner votre capteur avec une vraie pince ampèremétrique de précision.

Mail
ESPEasy a un inconvénient : s’il gère une notification mail, il faut impérativement que le fournisseur ne sécurise pas en SSL les transactions vers le serveur SMTP. Or des fournisseurs compatibles, il semble y en avoir très peu.
J’en ai testé deux : smtp2go.com et smart-mail.de… chez qui il faudra bien évidemment créer un compte pour avoir accès à leurs services. Je vous montre la configuration dESPEasy pour smtp2go :
Config mail
Attention : le « sender » doit être une adresse email valide (pas celle que vous créez chez smtp2go). Sinon ils vous rappelleront à l’ordre !
L’adresse IP en direct dans le champ « Server » permet d’éviter de louper des notifications si le DNS met trop de temps à répondre (il semble que le timeout soit un peu juste).

Configuration des remontées sous Jeedom

Aller dans « Controllers » et cliquer sur « edit » sur la première ligne :
Controllers1

Ensuite, configurez les champs comme ci-dessous, excepté l’adresse IP encadrée, qui doit être celle de votre Jeedom :
Controllers2
Pour la dernière ligne, la chaîne de caractères exacte est :
device=%sysname%&taskid=%id%&cmd=%valname%&value=%value%

Pour finir, il faut indiquer au « device » analog qu’il doit reporter au controlleur. Retournez dans « Devices », cliquez sur « Edit » de l’analog, et cochez la case « Send to controller » :
Device reports
L’IDX doit être unique par device (si vous en avez plusieurs). Choisissez l’intervalle comme vous le souhaitez.

Lorsque vous passez votre plugin ESPEasy en mode « Inclusion », la prochaine remontée de valeur de votre appareil l’ajoutera dans Jeedom.

Rules

Dans le cas où vous souhaitez un mail, il faut créer une règle qui dit à ESPEasy quand envoyer le mail.
Dans mon cas, je regarde tous les jours à midi et 2 minutes si le courant est au-dessus d’une certaine valeur et je notifie si ce n’est pas le cas.
Pour activer les règles, il faut aller dans « Tools / Advanced » et cocher la case « Rules ». Tant qu’on y est, on configure le serveur NTP qui permettra à l’ESP de connaitre la date et l’heure :
Activation Rules et NTP

Ensuite, il faut rebooter pour voir apparaitre l’onglet « Rules », puis y entrer ceci :
ESPEasy Rules

Traduction : s’il est 12h02 n’importe quel jour, alors si le courant mesuré est inférieur à 1A, alors appeler l’event « notif ».
L’event notif appelle la notification 1 qui envoie le mail.

Voilà…

Réalisation du boitier

Là, j’ai fait très simple… juste une boite avec quelques inserts pour mettre des vis. Il y a une découpe pour passer l’alim USB et sortir le câble qui va au capteur.

Boitier1
Boitier2

En coupe :
Coupe

Voici les fichiers pour ceux qui ont une imprimante 3D (enlever l’extension .pdf) :
Capteur courant-Pieces.zip.pdf (345,1 Ko)

Usage de l’appareil

Bon, là je voulais faire un laïus sur le fait qu’on ne mesure qu’un courant, et pas une puissance… que les approximations de calcul, de valeur de résistance normalisée, de qualité de la chaîne de mesure…etc… font que ce capteur n’est pas un capteur de précision… mais la discussion qui a déjà eu lieu plus bas avant que j’ai achevé la tuto a déjà permis de souligner ces points.

Si vous souhaitez calculer une valeur approchante de votre conso instantanée, il suffit de multiplier l’intensité mesurée par 230. Tout en gardant en tête que la tension varie au cours du temps et que vous n’arriverez jamais à égaler la précision d’un compteur EDF.

Hello,

Bon j’ai attendu pour répondre , mais la 1ere question qui me vient c’est pourquoi un canard ? https://www.youtube.com/watch?v=RoFeLaROdtk

Pour l’inspiration ? mon privé est ouvert pour une éventuelle réponse, idem pour une suppression de mon message pour ne pas polluer, je veux juste savoir :wink:

1 J'aime

Héhéhé, je connaissais pas…

C’est en lien avec le son que faisait un MacIntosh en cas d’erreur… quand j’étais étudiant j’aimais bien ce son, et pendant un moment je lui faisait sonner les heures avec ça.
Et puis après ça m’est resté… et j’ai adopté le bestiau.
C’est quand même le seul animal qui peut aller dans les 4 éléments.

Mais t’inquiètes pas, je proposerai une version de boîtier sans le canard !

3 J'aimes

Merci pour la réponse :wink:

Le canard ne me gêne pas :sweat_smile:

ce capteur utilise donc P=UI et non P=UIcos phi … je me trompe ?

C’est la bonne question :slight_smile:
demande a barnabé qui a déjà traité le sujet sur arduino :rofl:
un peut peut patience voyons …

Ce capteur mesure I… pour le reste, bien évidemment il est incapable de mesurer le déphasage entre courant et tension.
Donc la puissance, à vous de la calculer comme vous voulez. Mais normalement vous n’êtes pas censés avoir de déphasage trop important chez vous. Ou sinon vous devez le ramener à une valeur raisonnable.

Pour info, mon OWL CM180 « du commerce » mesure exactement de la même façon car j’ai la même puissance affichée dessus qu’en multipliant le I mesuré par mon capteur par 230 (à 2-3% près). L’alternative plus élégante et plus précise c’est d’extraire les données du Linky.

Sans mesure de tension il ne sera pas possible d’avoir le déphasage en effet, on mesure la puissance totale ou apparente. Pour ceux que ça intéresse : An Introduction to AC Power

Si vraiment on veut aller mesurer les puissances actives et réactives, le plus simple est de se tourner vers un PZEM004T v3 qui a aussi son plugin ESP Easy (et je suis tombé par hasard sur cet article : Mesurer sa consommation électrique dans Jeedom avec Espeasy and PZEM-004T).

Très bon tutoriel en tout cas, bravo.

Merci pour le partage,

Aura-t-on un résultat plus fiable en le couplant avec une mesure de tension ?

La valeur mesurée est de 235v en moyenne sur une prise Aeonlab Zwave
Mais fluctue en fonction de l’heure de 230 à 240v
image

Oui, bien sûr. Si tu as déjà la mesure par ailleurs, tu peux lancer un scénario qui multiplie l’intensité mesurée par la tension de l’autre capteur et rentrer ça dans une variable ou un virtuel. Moi je ne sais pas faire un capteur non invasif qui mesurera le 230V, en revanche.

Après, il faut rester objectif : on n’atteindra jamais avec un capteur comme proposé ci-dessus la précision de mesure d’un compteur EDF. Mais ça doit valoir ceux du commerce basés sur des mesures par pince ampèremétrique.

J’avais trouvé ce fil… et commandé aussi un PZEM004T. Mais c’était trop spécifique à mettre en œuvre pour la fonctionnalité finale recherchée (détecter si un panneau photovoltaïque débite).
Après, encore une fois, je pense que tous les capteurs basés sur les pinces ne font pas mieux… car ils ne mesurent pas non plus la tension. Mais ils coûtent tous plus cher que mon montage :smiley:

Bonjour, @Theduck38

La je suis très déçu de te voir faire tous ces efforts et de ne pas prendre en compte la tension
Je t’invite à regarder la vidéo de Barnabé Chaillot
https://www.youtube.com/watch?v=iks4qLBp9vg
qui traite le sujet de façon très économique et prend en compte tension et courant à l’aide de 2 entrées analogiques.

bonne journée.

Vidéo intéressante d’un personnage visiblement passionné

1 J'aime

Bon, j’ai regardé la vidéo pour te faire plaisir… il ne doit pas habiter bien loin de chez moi ce monsieur…
Le transfo pour lire la tension, c’est le « truc » qui est donné dans tous les forums quand on pose la question.

En ce qui me concerne :

  • Je ne voulais pas être intrusif dans le circuit
  • Je n’ai besoin que de l’information du courant, et j’aurais tendance à dire que même la précision n’était pas un critère initialement.
  • Je n’ai qu’une seule entrée analogique

Donc oui, en se piquant sur le fil de phase, on peut mesurer tout ce qu’on veut, mais là le but c’est d’imiter un capteur du commerce qui ne fait qu’une mesure d’intensité sans intrusion sur la phase. Histoire qu’en cas d’erreur ou mauvais montage de la part de l’utilisateur, il ne fasse pas dégager son installation ou mette le feu dans son armoire électrique, où il passe quand même pas mal d’ampères.

Mais bon, pour ne pas te laisser sur ta faim, je pense qu’en utilisant un ESP32 qui a plusieurs entrées analogiques il doit y avoir moyen… faut juste voir comment ESPEasy les gère (je n’ai jamais essayer de l’installer sur un ESP32).