En utilisant un Arduino Nano et un transformateur de courant (CT), j'essaie de détecter le courant qui traverse une ligne 120 V 60 Hz.
Circuit
Sorties CT 0-1 V
selon ses spécifications. Cette sortie est polarisée AREF/2
= 2,5 V.
analogRead
Valeurs
L'axe x représente le numéro d'index de l'échantillon ADC, tandis que l'axe y représente la valeur ADC (0-1024). La fréquence d'échantillonnage est d'environ 9 kHz. La différence de crête à crête est d'environ 1026 échantillons.
Cette forme d'onde correspond-elle à ce que vous attendez d'un CT? Pourquoi y a-t-il des régions où les valeurs sont plates, plutôt que de varier continuellement?
De plus, si nous regardons la partie courbe de l'intrigue, pourquoi Arduino lit- 512
il 512
alternativement les valeurs au - dessus et en dessous ? Il lit une valeur au 512
- dessus , puis une valeur en dessous 512
, puis une valeur au 512
- dessus et ainsi de suite.
Le temps pris pour un a analogRead
été mesuré à 110 microsecondes pour ma configuration et il y a 1026 échantillons entre les pics de forme d'onde. Cela signifie qu'il y aura environ 9 pics en 1 seconde, bien que je m'attende à 60 pics car nous détectons une ligne à 60 Hz. Que pensez-vous de cela? Il y a un condensateur, C1
dans le circuit, cela aurait-il quelque chose à voir avec ça?
Ces valeurs analogRead peuvent-elles être utilisées pour calculer la tension RMS, et donc le courant RMS traversant le fil à détecter? L'objectif final de ceci est de calculer la consommation d'énergie après avoir déterminé le courant RMS traversant le fil.
Esquisse utilisée pour obtenir les valeurs du tracé
void setup() {
Serial.begin(9600);
}
void loop() {
double sensorValue = analogRead(1);
Serial.println(sensorValue)
}
analogRead
Points de données réels dans les régions de relief
487
534
487
535
488
537
484
536
487
538
486
536
484
540
484
539
485
540
483
540
484
541
481
539
481
540
484
540
480
543
484
539
481
540
484
541
486
542
485
538
485
538
488
535
489
534
491
530
491
529
493
531
492
526
498
526
499
524
499
520
503
518
502
518
507
Tracé des valeurs analogRead
Les valeurs analogRead sont maintenant stockées dans un tampon avant d'être transmises sur Serial. Il y a maintenant 55 points de données ADC constituant 1 période. Étant donné que le temps de lecture analogique est de 110 µs, chaque cycle prend 6,05 ms, ce qui nous donne une fréquence de 165 Hz! Qu'est-ce qui a mal tourné?
void loop() {
double sensorValue = analogRead(1);
char buf[32];
dtostrf(sensorValue, 8, 2, buf);
value = buf;
if (stop == 0) {
if (i < 10000) {
message += ',';
message += value;
i++;
}
else {
stop = 1;
Serial.println(message);
}
}
}
analogRead()
et je l'ai trouvé à 110 microsecondes. Mis à jour la question.Réponses:
Concernant vos mesures, j'ignorerais complètement le premier ensemble avec Serial.println () dans la boucle. Je suppose que le moment où cela se produira ne sera pas fiable.
Votre deuxième ensemble de données que vous avez capturé dans un tampon semble correct, mais votre estimation / synchronisation de fréquence peut être incorrecte. Je voudrais inverser une sortie numérique à chaque itération de boucle. Vous pouvez mesurer la fréquence de cela avec un multimètre et votre taux d'échantillonnage ADC serait le double de cette valeur.
Pour une alimentation PC ou ordinateur portable, c'est une forme d'onde de courant assez courante.
Sans correction efficace du facteur de puissance, le signal actuel illustré ci-dessous serait assez typique (source: http://www.nlvocables.com/blog/?p=300 )
Vous devrez calculer les valeurs RMS et il serait sage de filtrer le signal.
Voici un instructable que j'ai écrit sur la façon de construire et de coder un moniteur d'électricité basé sur Arduino Yun avec Cloud Support / Temboo et Google Drive. Cela devrait vous être utile.
la source
si vous mesurez une charge résistive, je dirais que la résistance de charge que vous avez choisie est erronée, il existe des TC bon marché sur ebay (SCT-013-xxx) qui ont des versions avec et sans les résistances de charge, celles-ci fonctionnent bien pour leur prix mais vous devez lire la fiche technique. le SCT-013-000 nécessite une résistance 20R pour sortir 1 V avec une charge de 100 A. Si cette résistance est incorrecte, vous pouvez obtenir une forme d'onde très déformée lorsque vous mesurez des courants plus élevés (similaires à ceux que vous avez fournis), vous vous attendez à ce plus la valeur de la résistance de charge est déformée, mais ce n'est pas le cas avec les TC.
la source