Sử dụng Arduino Nano và máy biến áp hiện tại (CT), tôi đang cố gắng cảm nhận dòng điện chạy qua một dòng 120 V 60 Hz.
Mạch
CT đầu ra 0-1 V
theo thông số kỹ thuật của nó. Đầu ra này bị sai lệch AREF/2
= 2,5 V.
analogRead
Giá trị
Trục x đại diện cho số chỉ mục của mẫu ADC, trong khi trục y đại diện cho giá trị ADC (0-1024). Tốc độ lấy mẫu khoảng 9 kHz. Chênh lệch từ đỉnh đến đỉnh là khoảng 1026 mẫu.
Đây có phải là dạng sóng mà bạn mong đợi từ CT không? Tại sao có các khu vực nơi các giá trị phẳng, thay vì liên tục thay đổi?
Hơn nữa, nếu chúng ta nhìn vào phần đường cong của cốt truyện, tại sao Arduino lại đọc các giá trị cả trên 512
và dưới 512
? Nó đọc một giá trị ở trên 512
, rồi một giá trị bên dưới 512
, rồi một giá trị ở trên 512
và cứ thế.
Thời gian dành cho một analogRead
lần được đo là 110 micro giây cho thiết lập của tôi và có 1026 mẫu giữa các đỉnh dạng sóng. Điều đó có nghĩa là sẽ có khoảng 9 đỉnh trong 1 giây, mặc dù tôi mong đợi 60 đỉnh vì chúng ta đang cảm nhận được đường 60 Hz. Bạn làm gì từ điều này? Có một tụ điện, C1
trong mạch, nó có liên quan gì không?
Các giá trị analogRead này có phù hợp để sử dụng để tính điện áp RMS không, và do đó dòng RMS đi qua dây được cảm nhận? Mục tiêu cuối cùng của việc này là tính toán mức sử dụng năng lượng sau khi xác định dòng RMS chạy qua dây.
Phác thảo được sử dụng để lấy giá trị cho cốt truyện
void setup() {
Serial.begin(9600);
}
void loop() {
double sensorValue = analogRead(1);
Serial.println(sensorValue)
}
analogRead
Điểm dữ liệu thực tế trong khu vực vết sưng
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
Sơ đồ các giá trị analogRead
Các giá trị analogRead hiện được lưu trữ trong bộ đệm trước khi được truyền qua Nối tiếp. Hiện có 55 datapoint ADC tạo thành 1 giai đoạn. Xem xét thời gian tương tự là 110 âm, mỗi chu kỳ mất 6.05 ms, cho chúng ta tần số 165 Hz! Điều gì có thể đã đi sai?
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()
và thấy nó là 110 micro giây. Cập nhật câu hỏi.