Partage
  • Partager sur Facebook
  • Partager sur Twitter

Capteur de courant ZHT103

11 septembre 2019 à 23:14:17

Bonsoir, j'ai un capteur de courant ZHT103 qui sert normalement à mesurer le courant qui circule dans un cable mais je veux m'en servir de manière digitale. C'est-à-dire savoir uniquement si le courant passe ou pas. J'ai donc relié ce capteur à une broche configurée en INPUT mais lorsque je veux lire son état avec un digitalRead, la valeur reste à 0 que le courant passe dans le cable ou non. Qi-je fais une erreur dans le câblage ou dans mon code svp ?

const int lightSensor = 2;

void setup(){

  Serial.begin(115200);
  pinMode(lightSensor, INPUT);
}

void loop() {

  int lightState = digitalRead(lightSensor);
  println(lightState);
  delay(1000)
}


Merci pour votre aide

  • Partager sur Facebook
  • Partager sur Twitter
12 septembre 2019 à 13:15:35

Bonjour,

Les ZHT103 semblent tous être des capteurs analogiques, tu es normalement obligé de le connecter sur une entrée analogique et d'échantillonner le signal à 100Hz minimum pour pouvoir récupérer une valeur cohérente.

Est-ce un capteur nu ou sur un module ? Comment l'as tu connecté ?

  • Partager sur Facebook
  • Partager sur Twitter
12 septembre 2019 à 18:22:52

C'est un module je crois, j'ai une broche signal et une masse. Mais s'il n'est pas adapté pour détecter la présence de courant quel serait le capteur qui pourrait le faire ?
  • Partager sur Facebook
  • Partager sur Twitter
12 septembre 2019 à 20:36:54

Il faudrait montrer comment tu as câblé l'ensemble.

Question subsidiaire: quel courant fais-tu passer dans le conducteur?

-
Edité par zoup 12 septembre 2019 à 20:48:33

  • Partager sur Facebook
  • Partager sur Twitter
13 septembre 2019 à 1:50:05

Captain Matsuyo a écrit:

C'est un module je crois, j'ai une broche signal et une masse. Mais s'il n'est pas adapté pour détecter la présence de courant quel serait le capteur qui pourrait le faire ?

Si, il est adapté, tant que c'est bien pour mesurer du courant alternatif. En courant continu, il y a des modules plus simples en i2c par exemple, mais en alternatif, je ne crois pas que ça existe, du moins pas dans la même gamme de prix.

Le module à 2 broches n'a normalement qu'une résistance en parallèle de la bobine, donc tu as une tension alternative à ses bornes qui est proportionnelle au courant instantané qui traverse le conducteur (V = R * I / 1000, avec R qui semble être de 200 ohms), comme ce capteur est prévu pour 5A efficaces, soit 5 * √2 = 7.07A, la sortie varie de -1.4V à +1.4V, il faut la transposer entre 0 et 5V pour que l'arduino puisse la lire et comme c'est un courant instantané, il faut lire plusieurs valeurs pour avoir plusieurs points de la sinusoïde, par exemple tu peux lire plusieurs valeurs avec analogRead pendant 20ms (ou un multiple de 20ms pour les 50Hz du secteur) en extraire le maximum et le minimum. La différence des 2 devrait te donner une approximation de la tension crête à crête, donc du courant crête à crête (2*√2*courant efficace) qui circule dans le conducteur.

Pour transposer la tension autour de 2.5V, tu peux utiliser un pont diviseur de tension pour obtenir 2.5V à partir du 5V, puis connecter une des broches du capteur aux 2.5V et l'autre à l'entrée analogique de l'arduino:

Peut-être qu'il faudrait remplacer la connexion directe entre le capteur et l'entrée analogique par une résistance, au cas où la sortie serait supérieure à 2.5V, ça ne changera pas la valeur lue, mais ça évitera d'endommager l'entrée de l'arduino.

  • Partager sur Facebook
  • Partager sur Twitter