我正在使用Arduino Nano和电流互感器(CT),试图感应流过120 V 60 Hz线路的电流。
电路图
CT 0-1 V
根据其规格输出。该输出偏置AREF/2
= 2.5V。
analogRead
价值观
x轴表示ADC样本的索引号,而y轴表示ADC值(0-1024)。采样率约为9 kHz。峰间差异约为1026个样本。
您希望CT产生该波形吗?为什么有些区域的值是平坦的,而不是连续变化的?
此外,如果我们看一下曲线的曲线部分,为什么Arduino 交替读取上方512
和下方的值512
?它读取一个高于的值512
,然后是低于的值512
,然后是高于的值512
,依此类推。
analogRead
在我的设置中,测量所需的时间为110微秒,并且波形峰值之间有1026个样本。这意味着在1秒钟内将有大约9个峰值,尽管由于我们正在感测60 Hz线路,所以我预计会有60个峰值。你从中得到什么?电路中有一个电容器,C1
这有什么关系吗?
这些AnalogRead值是否适合用于计算RMS电压,从而计算出流经电线的RMS电流?这样做的最终目的是在确定流过电线的RMS电流之后计算功率使用量。
用于获取绘图值的草图
void setup() {
Serial.begin(9600);
}
void loop() {
double sensorValue = analogRead(1);
Serial.println(sensorValue)
}
analogRead
凹凸区域中的实际数据点
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
模拟读数值图
现在,analogRead值在通过串行传输之前已存储在缓冲区中。现在有55个ADC数据点组成1个周期。考虑到模拟读取时间为110 µs,每个周期需要6.05 ms,因此我们的频率为165 Hz!可能出了什么问题?
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()
,发现它是110微秒。更新了问题。