Menggunakan Arduino Nano dan transformator arus (CT), saya mencoba merasakan arus yang mengalir melalui garis 120 V 60 Hz.
Sirkuit
CT output 0-1 V
sesuai 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 512
dan di bawah secara 512
bergantian? Bunyinya nilai di atas 512
, kemudian nilai di bawah 512
, lalu nilai di atas 512
dan seterusnya.
Waktu yang dibutuhkan untuk analogRead
diukur 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, C1
di 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)
}
analogRead
Poin 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.