使用Arduinoのナノ及び変流器(CT)を、私は120 V 60Hzの線に流れる電流を検出しようとしています。
回路
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個のサンプルがあります。つまり、60 Hzのラインを検出しているので60のピークが予想されますが、1秒間に約9のピークが存在することになります。これから何を作りますか?コンデンサーC1
が回路にありますが、これと関係がありますか?
これらのanalogRead値は、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値のプロット
analogReadの値は、シリアル経由で送信される前にバッファに保存されるようになりました。現在、55のADCデータポイントが1期間を構成しています。analogRead時間が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マイクロ秒でした。質問を更新しました。