google-site-verification: google3bd66dd162ef54c7.html

電力量計(積算電力計)から計量パルスを取り出し、Arduinoに入力

 間が空いてしまいましたが、電力量計の話の続きです。前回の記事はこちら

 今回は電力の測定値をArduinoから読めるようにしてみます。読むと言っても積算カウンタに表示されている数字を画像として読むのではなく、アラゴの円盤の回転を計量パルスとして読み出すことが目的です。

 相手はガラスのケースに密封されているので使える方法は限られます。今回はレーザー光を使ってクリーピング防止穴を検出する方式で行くことにしました。なお、こういう方法があることは匿名さんからのコメントで教えて頂きました。

▼取り付けたレーザーと光センサー
電力量計に取り付けたセンサ
 電力量計の円盤にはクリーピング防止穴が開いていますが、ガラスケースを通してこの穴を上から下へ見通すことが出来る場所があります。それは上の写真の位置です。ここに光源とセンサーを配置することで円盤の回転を検出することが出来ます。

 ガラスケースのサイズは結構大きくて150mmくらいあります。間隔がこんなに離れている場合は、レーザー光を使うことで確実な検出が出来ます。今回使ったレーザーは秋月で売っている「赤色ドットレーザーモジュール 6mmx17.5mm 1mW 超小型 スポット調整可」、を使いました。こんなものがわずか380円で手に入る時代になったんですね。また、これレンズの焦点調整が可能で、スポットの位置を調整出来るので今回のような用途にはぴったりです。

 電力量計のガラスケースにはテーパーが付いているので、木片で作ったホルダーを加工して光が鉛直に落ちるようにしています。また、光センサーには、秋月で売っている「照度センサ(フォトトランジスタ) NJL7502L」を使いました。探せばもっと用途に合った物がありそうですが、とりあえず手持のセンサーを使いました。なお、どちらもとりあえずテープとホットボンドで固定しています。

▼円盤の穴と光センサー
円盤の穴を検出
 円盤の穴にレーザー光が通って光センサーに当たっている状態です。下の赤く光っている場所に光センサーがあります。右の緑色のLEDは動作確認用で、センサーに光が当たった時にArduinoを経由してプログラムで点灯させています。

▼回路図
接続回路図
 動作確認用のLEDの配線を書き忘れてしまいましたが、これはおなじみの13番ピンにLEDを接続しています。フォトトランジスタを使った光検出回路はヒステリシスを持たせた方が良いのですが、とりあえずミニマムの回路でやってみました。

▼スタンドの背面に回路を背負わせる
背面にArduino
 電気メーターの後ろにArduino とブレッドボードがあるのは不思議な光景です。検出は光アイソレートになっているので安心です。

▼テスト用プログラム
//
// 電力量計読み取りテスト
// 2018/8/21 ラジオペンチ http://radiopench.blog96.fc2.com/
//

#define PowSig 2

unsigned long Tlast;
unsigned long Tdiff;
unsigned long Tnow;
unsigned long HoleCount = 0;

float Watt, Wh;
const float SFw = 1500.0; // 電力換算係数 SFw / パルス間隔(s) = W 
const float SFe = 2.4; // 電力量換算係数 パルス数 / SFe = Wh

void setup() {
Serial.begin(9600);
pinMode(PowSig, INPUT_PULLUP);
pinMode(13, OUTPUT);
Tlast = millis();
Serial.println("Power(W), Enargy(Wh)");
}

void loop() {
while (digitalRead(PowSig) == HIGH) { // ホール検出待ち
}

digitalWrite(13, HIGH);
while (digitalRead(PowSig) == LOW) { // ホール通過待ち
}
digitalWrite(13, LOW);

HoleCount ++;
if (HoleCount >= 2) { // 2つ目以降の穴だったら電力計算
Tnow = millis(); // ミリ秒単位のシステム時刻取得
Tdiff = Tnow - Tlast; // 時間差計算(millisオーバーフロー対策必要)
Tlast = Tnow;
Watt = SFw / (Tdiff / 1000.0); // 電力値計算
Wh = (HoleCount-1) / SFe; // 累積電力量計算
Serial.print(Watt); Serial.print(", "); Serial.println(Wh);
} else { // 1つ目のホールだったら
Tlast = millis(); // 時刻だけ記録して何もしない
Serial.println("0, 0");
}
Serial.flush();
}
 プログラムを走らせると、光センサがONする毎に電力(W)と電力量(Wh)をシリアルに流すようになっています。センサーの検出と結果出力には割り込みを使った方がいいのですが、とりあえず動作確認したいので簡単なプログラムを書いてみました。

▼Windows PC の TeraTeramで見た出力
シリアル出力
 これは負荷に50Wの白熱電球を接続した場合の出力ですが、それっぽく動いています。なおこの負荷では、1行(=1パルス)の測定に30秒かかります。電力によって出力のインターバルが変わってしまうのがこのプログラムの難点です。

▼動画

 動いている様子です。赤い光がゆらゆらと動いているのは、円板表面にエンボス加工されているマス目状のテクスチャでレーザー光の反射位置が変わるためです。動画の終わりあたりに、検出ホールを光が通過してセンサーに当たり、緑色のLEDが点灯する様子が映っています。(久しぶりにyoutube使ったら、キャプション機能が無くなっていて、説明用の文字が入れられなくなってました)

◆まとめ
 とりあえずArduinoに接続して動作確認が出来ました。このプログラムでもシリアル経由でパソコンに測定結果を送ることが出来るので何か使い道はありそうです。

 今回は動作確認ということで簡単なプログラムになっています。記事中にも書いたのですが、やはりタイマー割り込みを使って正確な時間間隔で測定出来るようにした方が、使い易くなるはずです。今後プログラムの改良をやってみたいと思います。

 なお、この電力量計はフルスケールが6キロワットもあるので、小さな電力を測る場合は測定時間が長くなってしまうという問題があります。これは仕様上仕方がないのですが、電力量計の使っていない相のコイルを使うことで感度を2倍に出来そうです。というか、実はこの記事の電力計は既にそういう接続にしているのですが、その話も近々記事にしたいと思います。
関連記事

コメントの投稿

管理者にだけ表示を許可する

なるほど、、

この記事をみてクリープ防止のため回転円板に穴が開いていることを初めて知りました。

さっそく我が家の積算電力計を見てきました。
しかし何時、電力会社が新しい形式のものに取り替えたのか知りませんが、今までのものと違っており、内部が分かりませんでした。

多分回転円板方式でなく、すべて電子回路の演算で行っている形式化と思いました。

我が家は積算電力計はもう一台あります。
それは夜間電力を使用する電気温水器に使用する積算電力計です。

これは回転円板の物でした、、、


ここで私が思ったのは、今まで何十年も回転円板形式のものを利用していたのなら、何故メーカは、ラジオペンチさんの、その穴を利用したカウンター方式にしなかったのかと?。

私は従来の形式は積算機構に機械式の歯車を使うので、明らかにラジオペンチさんの方式の方が優れていると思います。

いずれにしてもラジオペンチさんは非常に素晴らしい方法を発見されましたね。

re:なるほど、、

Jyoさん今晩は

機械式(誘導式)の電気メーターは、信頼性が高くて壊れにくいなど、良いところがたくさんあると思うので、今回私が作った程度の物ではとても太刀打ち出来ないと思います。

最近の技術では、完全電子式にした方が優れているので、その答えがスマートメーターなんだと思います。
カレンダー
03 | 2018/04 | 05
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード