Lire données analogiques d'un TC

Bonjour,
Je débute en Arduino et j’ai besoin de votre aide;
Je tente de lire l’intensité “lue” par un TC juste après mon compteur EDF pour suivre ma consommation d’electricité.
Je me suis donc équipée d’une Arduino Uno et d’un TC dont la réf est YHDC SCT-013-030 (http://www.yhdc.com/en/product/320/).
Après pas mal de recherches sur le net et d’essais sur ma breadboard voici ce que j’ai compris et testé :

  • Le TC renvoi une tension Alternative de 0…1V proportionnellement au courant qui est sur ce modèle de 0…30A.
  • les entrées analogiques d’Arduino sont 0…5V en continue, avec une précision de 1024 “points” (je ne sais pas comment vous appelez ca);
  • J’ai suivi les conseils de cette page (http://openenergymonitor.org/emon/buildingblocks/ct-sensors-interface) et j’ai donc insérer deux résistances de 10kOhms et un condo (100uF le miens, j’avais que ca) pour que le niveau “0” de mon TC soit à 2.5V. Autrement dit ma tension du TC va varier à 2.5V ±1V soit entre 1.5 et 3.5V, normalement.

Si j’ai bien compris, il faut donc que je récupère l’amplitude de cette tension pour connaitre l’intensité, ce que j’ai fait avec le code ci dessous. Sauf qu’à faible intensité ca va, j’ai des valeurs cohérentes, mais dès que j’allume un appareil qui consomme beaucoup (sèche cheveux, lave vaisselle) les différences sont trop importantes.
Je précise que pour controler mes mesures j’ai un voltmetre juste en sortie du TC, avant l’arduino. J’ai aussi une pince ampèremétrique sur le cable. Exemple à l’instant je mesure 33mV sur le voltmètre en sortie de TC et 0.97A sur ma pince (0.033*30 = 0.99A, CQFD).
Sur la fenetre série d’Arduino pour cet exemple ca oscille entre 31 et 34, mais quand je branche un appareil qui consomme j’ai par exemple 260mV sur l’Arduino et 380mV sur le voltmètre… :~

Qu’en pensez vous? Merci beaucoup pour votre aide.

temps;vmin;vmax;tension
1002;140.00;127.00;31.74
2006;140.00;126.00;34.18
3010;140.00;126.00;34.18
4014;140.00;126.00;34.18

const int sensorPin = A0;
const int number_of_samples = 50;

int vmin;
int vmax;
int sampleI;
int summax;
int summin;
int jmoy;
double moymax;
double moymin;
double Vrate;
double tension;
int topdepart;

void setup()
{
  Serial.begin(9600);
  Serial.println("temps;vmin;vmax;tension");
  summax = 0;
  summin = 0;
  jmoy= 0;

  topdepart = millis();
}

void loop(){

  vmin = analogRead(sensorPin);
  vmax = vmin;

  for(int i = 0; i <number_of_samples;i++){
    sampleI = analogRead(sensorPin);

    if (sampleI < vmin)
      vmin = sampleI ;

    if  (sampleI > vmax)
      vmax = sampleI ;

  }

  summax += vmax;
  summin += vmin;
  jmoy++;

  if(millis() >= (topdepart+1000)){

    moymax = summax / jmoy;
    moymin = summin / jmoy;


    Vrate = (moymax - moymin) / 2.0;
    tension = Vrate * 5000.0 / 1024.0;

    Serial.print(millis());
    Serial.print(";");
    Serial.print(moymax);
    Serial.print(";");
    Serial.print(moymin);
    Serial.print(";");
    Serial.println(tension);

    topdepart = millis(); 
    jmoy = 0;
    summax = 0;
    summin = 0;

  } 


}

Bonsoir, Si ton TI fourni en sortie une tension alternative, il faut impérativement redresser la tension (redressement mono-alternance ou double-alternance) et lisser la tension par l'adjonction du condensateur chimique. C'est un minimum. Pour faire la mesure tu peux changer analogReference de ta carte pour être dans une plage de conversion plus précise mais cela dépend de la carte utilisé, voir : http://arduino.cc/en/Reference/AnalogReference#.UwABgGJ5OO8. @+

Bonjour, Merci pour ces deux pistes, n'y connaissant pas grand chose je vais me plonger dans les ponts de diode et vous tiens au courant. Pour l'amplitude d'entrée analogique, si je comprends bien je peux passer du défaut (5V) à la fonction "INTERNAL" analogReference(INTERNAL) qui abaisserait cette tension à 1.1V pour plus de précision ?

Bonjour,

littlepanda: Pour l'amplitude d'entrée analogique, si je comprends bien je peux passer du défaut (5V) à la fonction "INTERNAL" analogReference(INTERNAL) qui abaisserait cette tension à 1.1V pour plus de précision ?

Exact, c'est magique ;)

Je pense que tu t'embrouilles un peu. Tu prends 20 échantillons mais sans savoir où dans la période du secteur. Le signal que tu mesures c'est un sinus superposé à une tension continue. Si tu fais la moyenne des échantillons pris sur un sinus tu obtiens 0. Donc normalement le résultat de ta moyenne c'est la valeur de ta composante continue. Maintenant comme tes échantillons sont pris au hasard sur le sinus c'est déjà un miracle que le résultat soit stable.

Tu as pris le schéma sur le site open energy monitor. Pourquoi ne pas utiliser leurs librairies?