Menggunakan Arduino Nano dan transformator arus (CT), saya mencoba merasakan arus yang mengalir melalui garis 120 V 60 Hz.
Sirkuit
CT output 0-1 Vsesuai dengan spesifikasinya. Output ini bias AREF/2= 2,5 V.

analogRead Nilai-nilai
Sumbu x mewakili nomor indeks sampel ADC, sedangkan sumbu y mewakili nilai ADC (0-1024). Kecepatan pengambilan sampel sekitar 9 kHz. Perbedaan puncak-ke-puncak adalah sekitar 1026 sampel.

Apakah bentuk gelombang ini seperti yang Anda harapkan dari CT? Mengapa ada daerah di mana nilainya datar, dan bukannya terus berubah?
Lebih jauh, jika kita melihat bagian kurva dari plot, mengapa Arduino membaca nilai di atas 512dan di bawah secara 512bergantian? Bunyinya nilai di atas 512, kemudian nilai di bawah 512, lalu nilai di atas 512dan seterusnya.
Waktu yang dibutuhkan untuk analogReaddiukur menjadi 110 mikrodetik untuk pengaturan saya dan ada 1026 sampel di antara puncak-puncak gelombang. Itu berarti akan ada sekitar 9 puncak dalam 1 detik, meskipun saya akan mengharapkan 60 puncak karena kami merasakan garis 60 Hz. Apa yang Anda dapatkan dari ini? Ada kapasitor, C1di sirkuit, apakah ada hubungannya dengan ini?
Apakah nilai analogRead ini cocok untuk digunakan untuk menghitung tegangan RMS, dan karenanya arus RMS yang melewati kawat dirasakan? Tujuan akhir dari ini adalah untuk menghitung penggunaan daya setelah menentukan arus RMS yang mengalir melalui kawat.
Sketsa digunakan untuk mendapatkan nilai untuk plot
void setup() {
Serial.begin(9600);
}
void loop() {
double sensorValue = analogRead(1);
Serial.println(sensorValue)
}
analogReadPoin data aktual di wilayah benjolan
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
Plot nilai analogRead
Nilai analogRead sekarang disimpan dalam buffer sebelum dikirim melalui Serial. Sekarang ada 55 titik data ADC yang membentuk 1 periode. Mempertimbangkan waktu analogRead adalah 110 µs, setiap siklus membutuhkan 6.05 ms, memberikan kita frekuensi 165 Hz! Apa yang salah?

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()dan menemukan itu menjadi 110 mikrodetik. Memperbarui pertanyaan.
