Utilisation d'un capteur de courant pour activer un relais

bonjour touts le monde.
voila mon problème. je veux activer un relais.
pour cela j'utilise ;
CAPTEUR DE COURANT SCT-013-
ARDUINO UNO R3 DIP16
UN RELAIS 5V
alimentation 12v
J'ai écrie ce code qui n'a pas marcher
le code a étai vérifier et compiler correctement et téleverser

voila le code


#include <EmonLib.h>  // Inclure la bibliothèque EmonLib
EnergyMonitor emon1;  // Créer un objet de type EnergyMonitor

int relayPin = 10;     // Pin du relais
int cutOffCount = 0;  // Compteur de coupures de courant
unsigned long lastActivationTime = 0;  // Temps depuis la dernière activation
unsigned long totalActivationTime = 0;  // Temps total d'activation

void setup() {
  pinMode(relayPin, OUTPUT);  // Configurer la broche du relais en sortie

  emon1.current(0, 50);  // Configurer le capteur de courant
  Serial.begin(9600);    // Initialiser la communication série
}

void loop() {
  double Irms = emon1.calcIrms(1480);  // Lire le courant (1480 échantillons)

  if (Irms > 0.1) {  // Vérifier si le courant est supérieur à 0.1 A (pour éviter les fausses détections)
    if (millis() - lastActivationTime > 600000 && cutOffCount < 2) {  // Vérifier si le temps écoulé depuis la dernière activation est supérieur à 10 minutes et si le nombre de coupures de courant est inférieur à 2
      digitalWrite(relayPin, HIGH);  // Activer le relais
      lastActivationTime = millis();  // Mettre à jour le temps depuis la dernière activation
      totalActivationTime += 600000;  // Ajouter 10 minutes au temps total d'activation
    } else if (millis() - lastActivationTime > 3600000) {  // Vérifier si le temps écoulé depuis la dernière activation est supérieur à 1 heure
      cutOffCount = 0;  // Réinitialiser le compteur de coupures de courant
    }

    if (totalActivationTime >= 86400000) {  // Vérifier si le temps total d'activation est supérieur ou égal à 24 heures
      digitalWrite(relayPin, LOW);  // Désactiver le relais
      totalActivationTime = 0;  // Réinitialiser le temps total d'activation
    }
  } else {
    cutOffCount++;  // Incrémenter le compteur de coupures de courant
  }

  delay(1000);  // Attendre 1 seconde
  
  pinMode(1, INPUT);
}

...............................
merci pour tout intervention.

Pourquoi cette ligne?

Et qu'est-ce qui ne marche pas?
Est-ce que le sketch current_only.ino qui est installé avec la librarie fonctionne correctement?

A noter les constantes sont par défaut de type int
Donc dans les tests comme celui-ci, par exemple:

il faudrait écrire

if (millis() - lastActivationTime > 600000ul && cutOffCount < 2)

pour indiquer que la constante est de type unsigned long.
La remarque est valable aussi pour les affectations ou les opérations.

Bonjour
le relais ce de déclenche pas.
merci pour une correction présente de vautres part.

ce qui concerne le sketch current_only.ino que faire pour le vérifier ?

je m'excuse pour le retard.
pinMode(1, INPUT); elle ne semble pas avoir de lien avec le reste du code .
je l'ai supprimé.

Et bien ce sketch affiche la puissance consommée en temps réel.
Cela permet de vérifier que le câblage est correct.
Penser à ajuster les paramètres du capteur dans le code pour coller avec celui qui est réellement utilisé.

merci pour la réponse, je suis débutant dans le domaine, si vous expliquez un peux plus,

Tout est expliqué ici, le hard comme le soft
https://docs.openenergymonitor.org/electricity-monitoring/ct-sensors/index.html

merci pou tes réponses, je v'ai le consulté.
vous m'avais suggérer de ajuster les paramètres du capteur dans le code pour coller avec celui qui est réellement utilisé. pouvez vous m'explique sa?
j'ai besoin de contrôler l’existence du courant dans le circuit et activer un relais , je n'est pas besoin des valeur ou des mesure.

hello
:innocent: :thinking:
un peu d'humour

je crois que 0.1 A (pour éviter les fausses détections) ??

as tu regardé ce lien ?

non

tu peu m'aidé sur le sujet?

j'ai regardé, sa n,a rien à voir avec mon problème.

Oui, mais il faut quand même donner les caractéristiques du capteur pour interpréter correctement la valeur retournée.
Il existe plusieurs variantes du SCT-013 avec des dynamiques de mesure différentes entre 5A pour le plus petit et jusqu'à 100A pour pour le plus gros. Donc suivant celui que tu utilises il peut y avoir un rapport 20 sur la valeur du courant et donc sur ton seuil.

je te remercie infiniment
le capteur que j'utilise est [SCT-013-000 100A]

si dans ton code, tu rajoutes
emon1.serialprint();

il executera cette fonction qui fait partie de la librairie qui inscrira sur ton moniteur:

Serial.print(realPower);
  Serial.print(' ');
  Serial.print(apparentPower);
  Serial.print(' ');
  Serial.print(Vrms);
  Serial.print(' ');
  Serial.print(Irms);
  Serial.print(' ');
  Serial.print(powerFactor);
  Serial.println(' ');

tu verras ainsi si ton capteur vois quelque chose

Ce capteur fournit 50mA pour 100A donc lorsqu'il est traversé par 0.1A il délivre 50µA.
Après, suivant la valeur de la résistance de charge que tu as sélectionné tu auras une tension à mesurer par ton Arduino.

je n'est pas d'instrument de mesure