【第10回】 実際に計測した電圧と電流を見てみよう
前回までで、電圧と電流のサンプリングと、電力の計算部分の実装が完了したため、実際に動作をさせてどのような値が出力されるのかを確認してみます。
ソースコード内の以下行のコメントをはずすと、サンプリングした67回分の電圧と電流のA/D変換した値が、コンソールに出力されるようになります。
float calc_watt(int *a, int *v){
≪省略≫
for(int c = 0; c < SAMPLE_CNT; c++){
≪省略≫
Serial.println(v[c]);
}
//----------------------------------------------
//サンプリングした電流波形の「-」側を「+」波形で補完
//----------------------------------------------
Serial.println("--");
for(int c = 0; c < SAMPLE_CNT; c++){
≪省略≫
Serial.println(a[c]);
}
注意点として、凄まじい量のログが出力されるため、シリアル通信の速度が9600のままだと、バッファがあふれてすべての値が表示されないです。
以下の行を9600から38400に変更して実行するようにしてください。
又、38400に変更した際は、シリアルモニタ画面の右下の数値も38400に設定してください。
Serial.begin(9600) ; // パソコンとシリアル通信の準備を行う
↓
Serial.begin(38400) ; // パソコンとシリアル通信の準備を行う
それでは、どのようなサンプリング結果が出るのか、1000Wの電気ストーブで確認してみます。
実験風景・・・ゴチャゴチャです;;;
--1--
-932
-936
-934
≪省略≫
-4
-3
-2
-12
-12
-12
≪省略≫
-11
-11
-12
--2--
0
0
0
こんな感じのログがダダダァーっと出力されました。
良く分からないので、グラフにしてみます
赤が電圧値
青が電流値
電流値がガクガクになっているのが見て取れると思います。
理由は、CTセンサ(電流センサ)の出力値が、電流1Aに対し出力電圧が50mVな為です。
ざっくり言うと、A/D変換の1LSB=100W相当に当たるため、1000W程度の電気ストーブでは、A/D変換のピーク値はせいぜい10前後。
つまり、CTセンサーの出力値が低すぎる。
ということです。
解決策として、OPアンプを使ってCTセンサの出力値を4~8倍増幅し、A/D変換をする事を考えていますが、、、、
まぁ大体のワット数が合っていれば良いので、今のところはこのまま放置することにします。
(「Arduino電力計 弐」で対応します)
計測した電力量の更正には、市販のワットメーターを使いました
更正のために、わざわざワットメーターを買いましたw
¥2200ぐらいです
ワットメーター自体もどれほどの精度かは良く分かりませんが、ほぼ正しい値を計測できていそうなので、とりあえずこのまま行くこととしました
さぁ、次はEthanetシールドを用いて、Webサーバーに計測結果をアップロードする実装を進めたいと思います。
Webサーバーにアップする方法は「http post」でアップします。
・・・というところで、次回に続きます