Mesure courant et esphome, problème?

Bonsoir à tous. Je tourne en rond depuis quelques jours et trouve pas le probleme. Je souhaite récuperer le courant consommer par mon CE. Une ct clamp 50A/1V et un ESP32, le schéma on peu pas faire plus simple. Sous Esphome les logs donne le courant à zéro, pas moyen d’afficher une valeur, même fausse. J’ai essayé avec un programme test en language Arduino … ça a fonctionné du premier coup …

J’ai testé tout les ports ADC de l’ESP32 et même résultat.

Merci pour votre aide.

Voici le yaml que j’utilise.

Bonsoir Franck, je te poste mon code avec une sonde légèrement différente.

sensor:
  - platform: ct_clamp
    sensor: adc_sensor
    name: "Courant Congélateur"
    id: courant_congel
    sample_duration: 1s
    update_interval: 30s
    filters:
      - calibrate_linear:
        - 0.003 -> 0            
        - 0.36011 -> 1.8
        - 0.605 -> 3.0
        - 0.94466 -> 4.75

  - platform: adc
    pin: GPIO36
    id: adc_sensor
    attenuation: auto

  - platform: homeassistant
    name: "Tension réseau"
    id: tension_reseau
    entity_id: sensor.msunpv_voltres

  - platform: template
    name: "Puissance Congélateur"
    id: puissance_congel
    lambda: |-
      return id(courant_congel).state * id(tension_reseau).state;
    accuracy_decimals: 2
    update_interval: 30s
    device_class: power
    unit_of_measurement: W

  - platform: total_daily_energy
    name: "Congélateur (Energie)"
    id: energie_congel
    power_id: puissance_congel
    device_class: energy
    unit_of_measurement: 'Wh'

# Time component to reset energy at midnight
time:
  - platform: homeassistant
    id: homeassistant_time

Ne tiens pas compte de la partie filter et des calcul en dessous car propre à ma config mais le platform ct_clamp et adc devrait correspondre.
En fait je pense qu’il te manque la durée d’échantillonnage et l’atténuation.

Je vois également sur ton schéma que tu as ajouté une résistance de 22ohms. vérifie qu’elle ne soit pas déjà incluse dans ton capteur.

Bonsoir Tochy. La CT est une 50A/1V donc la résistance de burden est déjà dedans effectivement, le schéma était générique en faite.

Je ne garde que cette partie de ton fichier en faite?

Oui pour le code de mesure tu n’as normalement besoin que de ça.
Le reste de mon code me sert juste à calculer la puissance en fonction de la tension réseau que j’ai déjà dans HA et à calculer la conso pour l’intégrée dans le dashboard énergie de HA.

Pour ce qui est des mesures à l’oscillo je n’en sait rien puisque je ne n’en ai pas LOL.
Je sais juste qu’en théorie ma valeur va varie entre 0 et 3.3v (pour mon capteur de 5A).
Je me suis servi de cette video pour mon montage avec le meme capteur que lui.

Quand tu testes tu peux réduire le update interval pour que ça remonte plus vite mais il faut qu’il soit supérieur au sample duration quand même.
Tu n’es pas obligé de le fixé à trente secondes par la suite non plus, tout dépend de la fréquence d’actualisation dont tu as besoin dans HA

J’ai édité mon message précédent, désolé :slight_smile:

Alors, y’a du beaucoup mieux, j’ai enfin des valeurs.

Entouré en rouge: aucun courant ne circule dans la CT à ce moment là.

Entouré en vert: un courant de 4A (un grille pain pour le teste) circule dans la phase que mesure la CT.

Comment doit je interpréter ces valeurs?

c’est la que tu calibres maintenant

- calibrate_linear:
        - 0.007 -> 0            
        - 0.084 -> 4

et tu decommentes les lignes

Quand aucun courant ne circule dans la CT on à tout de même une valeur qui remonte, pour quelle raison? Celle ci fluctuant un peu, on ne peu pas avoir en faite un zéro?

La valeur en volts qui s’affiche par moment (adc sensor), elle correspond à quoi? On dirai la valeur d’offset créer par le pont diviseur R1 et R2?

Oui j’ai moi aussi une fluctuation. Comme on capture un champ magnétique je pense que cela variera toujours un peu.
Oui je vois aussi de temps en temps une valeur en volts passer je ne sais pas pourquoi ni à quoi elle correspond.
A vrai dire je ne me suis pas posé plus de questions que ça puisque j’avais le résultat que je voulais à savoir quand est ce que mon congélateur était en route et combien il consommait (même si les valeurs ne sont pas exacte au watt près)

Salut

il existe 2 types de CT clamp
celles qui renvoient 1 courant ( generalement ce sont les 100A/50mA) dans ce cas là, la resistance de 22 ohm ( burden ) est indispensable

celles qui renvoient une tension ( 5A/1V; 10A-1V; 15A/1V,30A/1V; 50A/1V) dans ce cas là, la résistance de burden ( celle de 22ohm sur le schéma ) n’est surtout pas a mettre.

par exemple les sct-xx que l’on utilise généralement on les caractéristiques suivantes
image

deuxieme point les ADC ( convertisseurs Analogiques / numeriques ) des ESP ne sont pas vraiment reconnu pour leur linearité
surtout dans les extremitées

ESP32 Analog Input with Arduino IDE | Random Nerd Tutorials.

bon sachant que sur le schema presenté il y a une mise en place de masse virtuelle, dans ce cas la tu retombe dans la plage de linéarité

pour ceux qui veulent plus de precision / sensibilité il est envisageable d’utiliser un ADC externe tel que
ADS1115 il y a un sujet existant avec schéma et code

voir le post ci dessous

j’ai ça en route depuis… 2 ans et c’est redoutable.

Quelle est la différence entre ces deux paramètres?

sample_duration: 1s
update_interval: 10s

Pour ce qui est de ces deux valeurs:

 - 0.007 -> 0            
 - 0.084 -> 4

La première ligne permet d’avoir un affichage à zéro quand aucun appareil fonctionne?
La seconde indique le vrai courant consommé comparé à celui détecté?
C’est bien cela?

sample duration: tu va faire un moyennage sur 1 seconde de la valeur mesurée
udpate interval : mise a jour du sensor toutes les 10 secondes

pour les 0.007->0
et 0.084 → 4
c’est les points d’étalonnage ( régression linéaire …; si cela te rappelle quelque chose )

n’hesite pas a consulter la doc d’esphome

pour l’explication e la masse virtuelle ou offset: F1ATB explique cela mieux que moi dans son projet de routeur solaire

pour les anglophiles
il y a de très bonnes informations
https://openenergymonitor.org/

oui c’est bien cela pour les valeurs de calibration. on lui dit que quand il lit 0,007 c’est 0A et pour 0,084 c’est 4A

Merci pour les lien :slight_smile:

Ce que j’obtiens est vraiment pas mal du tout.

Pour augmenter la précision, peut on faire varier la valeur sample_duration? Si oui dans quelle proportion?

Autre point, est il possible d’augmenter le nombre de décimale?
Là je suis à trois, peu on passer à 4 ou 5 ?

Avec accuracy_decimals peu être ?

attention attention

si tu utilises le convertisseur interne de l’esp tu as affaire a un ADC sur 12 bits
donc 2 ^12
soit 4096 valeurs
en supposant que ta sonde puisse mesure 30A
30/4096, soit une précision maxi de +/-0.007 A
donc deja a deux… chiffres apres la virgule c’est plutot gourmant
:wink:

C’est une 50A, donc 50 / 4096 donne ± 0.012 A.

Une CT de 0.007A est plus précis qu’une 0.012A, c’est bien cela?

Que veux tu dire par : c’est plutôt gourmand ?

quand je dis gourmand, tu souhaiterais avoir trois chiffres après la virgule alors que la sensibilité de ta mesure est de 0.024… (+/- 0.12 *2)
c’est que entre :

  • la précision,
  • la linéarité,
  • la sensibilité,
  • la répétitivité d’une chaine de mesure.
    Toutes les erreurs individuelles se multiplies entre elles
    donc c’est beaucoup en demander , d’où le gourmand

désolé si j’ai pas été clair a la base