Mit einem Arduino Nano und einem Stromwandler (CT) versuche ich, den Strom zu erfassen, der durch eine 120 V 60 Hz-Leitung fließt.
Schaltkreis
CT-Ausgänge 0-1 V
gemäß den Spezifikationen. Dieser Ausgang ist vorgespannt AREF/2
= 2,5 V.
analogRead
Werte
Die x-Achse repräsentiert die Indexnummer des ADC-Samples, während die y-Achse den ADC-Wert (0-1024) repräsentiert. Die Abtastrate beträgt ca. 9 kHz. Die Differenz von Spitze zu Spitze beträgt etwa 1026 Proben.
Ist diese Wellenform das, was Sie vom CT erwarten würden? Warum gibt es Regionen, in denen die Werte flach sind, anstatt sich kontinuierlich zu ändern?
Wenn wir uns den Kurventeil des Diagramms ansehen, warum liest Arduino dann abwechselnd Werte über 512
und unter 512
? Es liest einen Wert über 512
, dann einen Wert unter 512
, dann einen Wert über 512
und so weiter.
Die für ein analogRead
Setup benötigte Zeit betrug 110 Mikrosekunden, und zwischen den Wellenformspitzen befinden sich 1026 Abtastwerte. Das bedeutet, dass es in 1 Sekunde ungefähr 9 Peaks gibt, obwohl ich 60 Peaks erwarten würde, da wir eine 60-Hz-Linie erfassen. Was machst du daraus? Es gibt einen Kondensator C1
in der Schaltung. Würde das etwas damit zu tun haben?
Sind diese analogRead-Werte zur Berechnung der Effektivspannung und damit des Effektivstroms geeignet, der durch den zu erfassenden Draht fließt? Das Endziel ist die Berechnung des Stromverbrauchs nach Bestimmung des durch den Draht fließenden Effektivstroms.
Skizze zum Abrufen von Plotwerten
void setup() {
Serial.begin(9600);
}
void loop() {
double sensorValue = analogRead(1);
Serial.println(sensorValue)
}
Aktuelle analogRead
Datenpunkte in den Unebenheiten
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
Darstellung der analogRead-Werte
Die analogRead-Werte werden jetzt in einem Puffer gespeichert, bevor sie über Serial übertragen werden. Es gibt jetzt 55 ADC-Datenpunkte, die 1 Periode bilden. Wenn man bedenkt, dass die analoge Lesezeit 110 µs beträgt, dauert jeder Zyklus 6,05 ms, was eine Frequenz von 165 Hz ergibt! Was ist möglicherweise schief gelaufen?
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()
und festgestellt, dass sie 110 Mikrosekunden beträgt. Die Frage wurde aktualisiert.