[Résolu] Problème avec capteur de courant

Bonjour.
j'ai pour projet une borne de recharge pour smartphone, mais, étant un débutant, je galère un peu.
mon code recoit d'un seeed electrical sensor les informations de deux cables, et met a jour un site en conséquences.
Malheureusement, les capteurs me donnent du fil a retordre (aucune donnée correcte( que des 0)), et le site se met automatiquement a "casier 1 non disponible, casier 2 disponible, peu importe le résultat
voici le code

#define ELECTRICITY_SENSOR A0
#define ELECTRICITY_SENSOR2 A1// Analog input pin that sensor is attached to
#include <SPI.h>
#include <Ethernet.h>
 

byte mac[] = {0x90,0xA2,0xDA,0x0F,0x21,0xC6};   //physical mac address
byte ip[] = {172,16,20,115};                  // ip in lan (that's what you need to use in your browser. ("172.16.20.108")

EthernetServer server(80);                             //server port     
String readString;

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
pinMode(ELECTRICITY_SENSOR, INPUT);
pinMode(ELECTRICITY_SENSOR2, INPUT);
 Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  


float amplitude_current;               //amplitude current
float effective_value;       //effective current
}
void loop()
{
      int sensorValue;  
      int sensorValue2; //value read from the sensor
      //Serial.println(sensorValue);
      //Serial.println(sensorValue2);
    uint32_t start_time = millis();
    while((millis()-start_time) < 1000)//sample for 1000ms
    {
        sensorValue = analogRead(ELECTRICITY_SENSOR);
        sensorValue2 = analogRead(ELECTRICITY_SENSOR2);
    }
    EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {   
      if (client.available()) {
        char c = client.read();
     
        //read char by char HTTP request
        if (readString.length() < 100) {
          //store characters to string
          readString += c;
          //Serial.print(c);
         }

        // if (HTTP request has ended){
         if (c == '\n') {          
           //Serial.println(readString); //print to serial monitor for debuging
     
           client.println("HTTP/1.1 200 OK"); //send new page
           client.println("Content-Type: text/html");

           
         }

Serial.print("a");
Serial.println(sensorValue);
delay(500);
Serial.print("b");
Serial.println(sensorValue2);
delay(500);

if (sensorValue>>2 && sensorValue2<<2)
 {
       client.println();     
           client.println("<HTML>");
           client.println("<HEAD>");
           client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
           client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
           client.println("<TITLE>Etat des bornes</TITLE>");
           client.println("</HEAD>");
           client.println("<BODY bgcolor='teal'>");
           client.println("<BODY>");
           client.println("<hr />");
           client.println("<br />");  
           client.println("<H2>Borne 1:non-Disponible</H2>");
           client.println("<br />"); 
           client.println("<H2>Borne 2:Disponible</H2>"); 
           client.println("<br />");     
           client.println("<br />"); 
           client.println("</BODY>");
           client.println("</HTML>");
    // Serial.println("01");
           delay(1);
           client.print("<meta http-equiv='refresh' content='5'>");
           //stopping client
           client.stop();

 }
if (sensorValue2>>2 && sensorValue<<2)
 {
         client.println();     
           client.println("<HTML>");
           client.println("<HEAD>");
           client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
           client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
           client.println("<TITLE>Etat des bornes</TITLE>");
           client.println("</HEAD>");
           client.println("<BODY bgcolor='teal'>");
           client.println("<BODY>");
           client.println("<hr />");
           client.println("<br />");  
           client.println("<H2>Borne 1:Disponible</H2>");
           client.println("<br />");
           client.println("<H2>Borne 2:non-Disponible</H2>");  
           client.println("<br />");     
           client.println("<br />"); 
           client.println("</BODY>");
           client.println("</HTML>");
   //  Serial.println("10");
           delay(1);
           client.print("<meta http-equiv='refresh' content='5'>");
           //stopping client
           client.stop();
 }
 if (sensorValue2>>2 && sensorValue>>2)
 {
       client.println();     
           client.println("<HTML>");
           client.println("<HEAD>");
           client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
           client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
           client.println("<TITLE>Etat des bornes</TITLE>");
           client.println("</HEAD>");
           client.println("<BODY bgcolor='teal'>");
           client.println("<BODY>");
           client.println("<hr />");
           client.println("<br />");  
           client.println("<H2>Borne 1:non-Disponible</H2>");
           client.println("<br />");
           client.println("<H2>Borne 2:non-Disponible</H2>");  
           client.println("<br />");     
           client.println("<br />"); 
           client.println("</BODY>");
           client.println("</HTML>");
 //    Serial.println("11");
           delay(1);
           client.print("<meta http-equiv='refresh' content='5'>");
           //stopping client
           client.stop();

 }
if (sensorValue2<<2 && sensorValue<<2)
 {
         client.println();     
           client.println("<HTML>");
           client.println("<HEAD>");
           client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
           client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
           client.println("<TITLE>Etat des bornes</TITLE>");
           client.println("</HEAD>");
           client.println("<BODY bgcolor='teal'>");
           client.println("<BODY>");
           client.println("<hr />");
           client.println("<br />");  
           client.println("<H2>Borne 1:Disponible</H2>");
           client.println("<H2>Borne 2:Disponible</H2>");
           client.println("<br />");  
           client.println("<br />");     
           client.println("<br />"); 
           client.println("</BODY>");
           client.println("</HTML>");
  //   Serial.println("00");
           delay(1);
           client.print("<meta http-equiv='refresh' content='5'>");
           //stopping client
          // client.stop();
 }
 }
 }
}




    
}

j'essaierai d'envoyer une photo du cablage des que possible



voici le cablage ^^

Dans quel monde vivont nous?:crazy_face:

Des câbles + 1 photo = "schéma de câblage?"

Il n'y a même pas la ref du

Ni ce que tu fais passer dedans, juste une photo tant qu'on y est...

Encore tu n'a pas fait remarqué que sur la photo de câblage:

  1. Il n'y a pas le câblage de l'élément qui pose problème.
  2. Qu'il n'y a pas de convention de couleur des fils.
  3. Qu'il deux fils sur la breadboard qui ne servent pas à grand chose et donc complexifie inutilement la lecture du câblage.

Cela n'engage que moi, mais lorsqu'un montage ne marche pas, j'essaye de simplifier au maximum celui-ci en retirant tout ce qui ne sert à rien ou qui pourrait engendrer une confusion.

comme je l'ai dit, je débute et je fais avec ce que j'ai
pour les couleurs g pas mieux, et je fais de mon mieux.
j'essaerai de modifier ledit cablage, et par rapport a la ref: voici le site

Je peux le comprendre c'est plus une boutade, pour te faire réagir.
C'est aussi pour ça que @jef59 te demande un schéma et pas des photos partielles de ton montage.
On a tous était confronté au problème et on à tous enfin je pense acheté plus de câble Dupond.
Un petit lien que tu devrais pouvoir recevoir avant la fin de la semaine.
Par contre je l'ai pris au hasard, je ne connais pas la qualité du matériel proposé :frowning:

Pour le câble, si tu as 3 fils qui doivent être interconnecté, pas besoin de passer par des câbles intermédiaire.
Comme ça cela t'évitera d'utiliser un câble noir connecté au 5V.

Bonjour @terwal

Ben oui!

Je présume que le

C'est 1 capteur de courant.

Courant continu, alternatif ?
Avec

Ça ne peut que être un courant DC.

Si dans le capteur de champ du seed tu fais passer le câble du chargeur, c'est à dire fil allé (+) et fil retour (-) avec un capteur DC tu mesure forcément 0, les champs s'anullant.

Bref comme tu dis, il manque trop d'info.

Ça me fait penser à l'histoire du Petit Prince qui demande à St Exuoéry "dessine moi un mouton", et St Exupéry au bout de plusieurs essais infructueux s'énerve, dessine une boîte avec des trous d'aérations, donne son dessin au Petit Prince en disant "tiens, voilà une boîte, ton mouton est dedans...".

Et le Petit Prince dit quelque chose comme "Merci, il est trés joli"

pourquoi, il n'y a pas de capteur de courant AC qui renvois une tension ?

dans ton lien, ton capteur n'a besoin que de deux fils, il n'y a pas d'alimentation, uniquement le GND et le signal.

Si, mais il faut voir si c'est une image du courant efficace ou instantané.

Selon le capteur ?

Et celui ci dit
"which can transform the large AC into small amplitude"

Valable aussi pour le code...

J’ajoute que chaque capteur ( on évite de parler franglais, merci, ”sensor” n’est pas du français) doit etre testé individuellement avec un programmequi ne fait que ça.

Si le capteur s’utilise avec une bibliothèque on fait au minimum un exemple de la bibliothèque.
C’est la méthode qui fait gagner du temps :

  • on s’assure que le capteur fonctionne
  • on s’assure que l’on a compris comment le programmer et l’utiliser

On a tous débuté, mais on a pas tous debuter en commençant par recopier des programmes complets et longs.

Pour aller de ma petite anecdote, j'ai commencé comme ça, sauf que la recopie du listing était à la main au lieu d'un copier/coller :slight_smile: , je peux donc dire par expérience que c'est très loin d'être la meilleur méthode pour apprendre :see_no_evil:

Non le lien donné un peu plus haut pointe sur un transformateur de courant.
Ce type de capteur ne mesure que de l'alternatif.

Il faut en principe ajouter un pont de résistance pour ajouter un offset de Vcc/2 afin de laisser passer l'alternance négative du signal sinon la mesure est faussée et de plus le CPU n'aime pas recevoir une tension négative sur ses entrées.

Je recommande de lire les informations sur l'usage d'un transformateur de courant.
Sur ton capteur, la résistance de charge (burden resistor, dans les explications) est déjà présente.
ET IL NE FAUT SURTOUT PAS LA SUPPRIMER.

Le principe est expliqué. Il y a des exemples de câblage et des morceaux de code.

Bonjour,

Je suis OK, mais que renvoit-il qui soit lisible par analogRead, 1 valeur efficace ou 1 instantanée ?

étant un transformateur ce capteur renvoie une valeur instantannée ..... à gérer comme on le souhaite dans le code

c'est bien décrit dans le lien donné par fdufnews en particulier sur cette page :
https://docs.openenergymonitor.org/electricity-monitoring/ct-sensors/interface-with-arduino.html

Bonjour,

Pour rappel:

Naïvement, j'ai imaginé que le courant de charge du smartphone était continu.

Et comme ce capteur, comme vous le dites, est plutôt du genre AC

Je me demande si c'est ce qu'il faut.

non si @laggy-911 cherche a obtenir une information sur l'intensité du courant continu qui charge le smartphone

oui si @laggy-911 cherche à obtenir une information sur le courant alternatif prélevé sur le secteur par le chargeur

Et non si on fait passer dans le capteur le câble en entier avec le fils de l'allé etcelui du retour.

oui, un seul des deux fils, comme avec une pince ampèremétrique !