自作電子小物/簡易電力量計/4チャネル電池駆動版
自作電子小物/簡易電力量計/4チャネル電池駆動版
Wh meter V0.7
2011年4月16日土曜日
一般家庭の分電盤(ブレーカボックス)用の4チャネル簡易型デジタル積算電力計・電力量計です。リアルタイムでの電気使用量と、月間の累積電力量を数値で確認できます。また過去13ヶ月分の実績も保存されていますので月の推移や前年同月との比較も確認可能です。クランプ型の電流センサと、バッテリ駆動の構成により、設置を容易にしました。製作費は約5500円/3チャネル分、電流センサにカレントトランスを、電圧センサに抵抗器、制御部にマイクロチップテクノロジー社のPIC16F1939を使用し、ソフトウエアはC言語にてコーディングしています。
<機能/特徴>
■配線を変更せずに取付け出来る
■3回路分もしくは4回路分を複数同時に計測
■外部電源不要、単四乾電池3本で1年間稼働、取り付け簡単
■文字高10mm×8桁の見やすい表示
■電圧計測も可能、測定精度が向上し力率も表示される
■単純、製作容易、補正作業不要
<仕様>
名称:一般家庭向け3〜4チャネル電力量チェッカ
分類:商用電源単相交流100V/200V用多チャネル簡易積算電力量計/皮相電力量計
測定測定数: 電流のみの場合最大4カ所 、電圧計測する場合最大3カ所。
測定方法:
被回路の片線にCTを装着。方向性有り。
電圧測定する場合は、一カ所「みの虫クリップ」を取付。
上図は分電盤に取付ける場合で、各系統毎にCTを一つづつ装着します。N側L側のどちらでも構いませんが、取付方向(向き)が有ります。電力値がマイナス表示になった場合は向きを反対にして下さい。左図が電圧測定しない場合で、右図が電圧測定する場合です。電圧測定する系統は100V系なら何処でも構いません。例の場合、系統ブレーカを切ると他の系統の計測が出来なくなる事に注意して下さい。この図は一般的な家庭用の受電方式「単相3線式」1φ3Wでの取付け箇所の例ですが、単相2線式1φ2Wでも使用可能です。単相200Vも混在可能ですが若干の注意点があります。
CTは開く構造になっているので、既存配線を変更する事無く付加する事が出来ます。電圧計測をすればより正確な結果を得られます。既存配線の露出部分をクリップで接続すれば、これも配線を変更しなくて済みます。
分電盤だけでなく、テーブルタップから分かれる各回路の測定に使っても良いでしょう。
計測範囲:
電力量:0〜596kWh/チャネル・月間
電力:2.6W〜2500W(100V・正弦波の条件、その他条件では最大32,767W)
電圧:単相交流50Hz/60Hz 100V固定または 〜250V
電流:交流25.7mA〜25.7A(正弦波の条件、ピーク値が36.3mA〜36.3A)
計測間隔:1秒
数値精度:基本確度-10%〜+10%
表示単位:
電圧:0.1V単位(2.43V/41point=0.06V)
電流:1mA単位(36.3mA/41point=0.8mA)
電力:0.1W単位
電力量:1Wh単位
表示項目:
ST RPT RDMの表示は、それぞれチャネル1、チャネル2、チャネル3を表す。チャネル4はどれも表示されない。
コールアイコンが付くまでチャネル変更ボタンで送ると、積算値は月単位ではなく日単位の数値となる。
データ保持機能:
過去13ヶ月間の積算電力量を保存
電池切れになった場合、当日の実績は消えるが、前日までの積算値は残る。
データ出力機能:なし
入力操作:
1ボタン:表示切項目換え
2ボタン:次チャネル
3ボタン:前チャネル
1+2ボタン:設定画面、50/60Hz指定、電圧計測モード指定、日時設定
2+3ボタン:チャネル自動めくりモード
1+3ボタン:履歴画面
外形:幅144mm、奥行21mm、高さ62mm
電源:単四乾電池3本、アルカリで電流計測のみの場合約1年
注)*1
200Vのチャネルの数値の読みを2倍にして下さい。電圧計測する場合100V系統に接続して下さい。200V専用として使用する事も可能で、この場合数値を2倍にする必要はありません。
重要:
分電盤内に関わる作業は、それなりの知識が無いと生命に関わる事故や火災になる可能性があります。
電気工事士の資格者が行うようにして下さい。基本的には資格を持った方が自己責任で行う電子工作だと理解して下さい。
電圧計測する場合、基板は交流電源と絶縁されていません。最終的な使用状態で金属部分が露出しない様にして下さい。また、外部機器への接続機能を付加する場合は、絶縁について慎重に設計して下さい。
<技術的なポイント>
■ハードウエア
・Microchip Technology社のPIC16F1939マイクロコントローラ
・マイコン内蔵LCDコントローラ使用
・7セグメントLCDパネル aitendo LCD-30P使用
・電力の計測
CT(カレントトランス、 変流器 、分流器)による交流電流の計測
分圧抵抗による交流電圧の計測
・32KHz時計用水晶
・非絶縁回路
■ソフトウエア
・プログラミング言語はC、開発環境はMPLAB、コンパイラはHI-TECH C
・有効電力計算、電圧・電流RMS計算、積算
・積算値の維持、EEPROMの利用
・タイマ割込でカレンダ時計の実装
■開発法
・プログラム開発は、無料で利用出来るMicrochip社の標準的なIDEを使用
・回路とプリント基板設計は、無料で利用出来るCadSoft Computer社のEAGLEを使用。
<目標とする物>
5年前に作った初代(WHM0.1〜0.4)と同じで良いです。家全体で1つの電力値では荒すぎるし(料金メータを見れば良い)、エコワットや、ワットチェッカ等を使って器具一つづつ調べるのは面倒。系統単位での数値が、家全体での消費傾向を知る効果的な情報と考えました。まずは、電力量が大きい器具を探して潰して行くのが常套手段で、その為の小物が欲しいという事です。
今回の小物はこれに加えて、若干の不満点を改善したいと思います。
具体的な点は以下通りです。
・無電源化
ACアダプタが必要だったが、分電盤付近は意外とコンセントは無い。
電源確保がやっかいなので、自立動作出来るようにしたい。
もちろん次の特徴は継承させます。
・取付け簡単、分電盤工事などもってのほか
・積算機能だけでなく、瞬間電力も表示
・時計を内蔵し、月初に積算値を自動リセット、13ヶ月分を保持
・精度は二の次、安く、単純、製作容易、補正作業不要
なお、可能であれば以下も改善したい。
・真のRMS計算を実装し精度UP
・皮相電力ではなく有効電力値を出したい
<大まかな設計>
扱う電力は、事故になる可能性が高いレベルですので、十分注意して設計する必要があります。特に、電力送電・供給システム側については重要だと思いますので、過去の知識に頼らず必ず再確認するようにします。
■電力測定
基本的にはWHM0.4と同じ、電流センサにCT(カレントトランス・分流器等と呼ばれるコイル)を使い、電圧を100V固定にしてマイコンで計算します。専用ICを使用すれば、何も考えなくともよくなりますが、入手性とコストの理由で選択できませんでした。なぜ、この構成にしたかについてや、計算方法等、詳しい事はWHM0.4のページをご参照下さい。
簡単におさらいしますと、以下の計算式により電力値を得られます。
方法1:交流電力=実効値(電圧)×実効値(電流)×力率
方法2:交流電力=平均(電圧×電流)
ここで言う所の電圧・電流は単一値ではなく、交流は時間軸で激しく変化している事に注意。
アナログ演算回路で実現するか、タイムスライスしてデジタルで計算するのが一般的。
実効値とは二乗した数値の平均の平方根で求めます。
力率は通常、器具の性質によって決定されます。使用方法によっても変わる事もあります。
方法1は力率が判らないといけません。電圧・電流波形が正弦波で位相差が判れば三角関数で力率を計算出来ます。電流波形がきれいな正弦波を描くような単純な器具は少なくなっているので、現実的には力率から計算するのは難しいと思われます。力率は設備効率の観点では100%に近づけるように努力すべきものなので、極端に悪い器具はないようです。大消費器具は特に。割り切って100%固定にしてしまうのもあり。実効値も、精度にこだわらなければ平均値や平滑回路で代用してしまう手もあり。また、電圧値は100V前後であまり変動する物でもなく、取り込むと絶縁問題も出てくるので、思い切って固定にしてしまう事にすれば、交流電力=100V×電流値×100%と、意外に簡単に電力値を得られるのです。もっとも、正確さには欠けますので、単なる目安程度の使い方に限られます。
電流の測定は通常被測定回路に割り込む形にセンサを入れる必要がありますが、既存の設備の電力を測りたいので、設備の改造を何とかしないで済む方法を探しました。分割できるCT(クランプ型CT)という、正にこの為の電流センサがありました。高価ですが、取り付け簡単、絶縁問題も解決で、これ以外の選択はないように思われます。
■電圧測定
しかしながら、前と同じでもつまらないので、やはり精度を向上させる為に、電圧計測を出来ない物か考えてみました。一番のネックは絶縁問題です。その重要性をご存じない方に一応触りだけでも説明させて頂くと、日本に限らず商用電源は交流で供給されますが、極性を持たないはずの交流でも、線に区別があります。良く、電線2本同時に触れなければ感電しないと言われるのは正確ではなく、商用電源では1本に触れただけでも感電する事があります。これは、供給側で片方が接地(アース)されているためで、地面と間接的でも体の部分が触れている状態で、接地していない方を触ると感電します。100V何て少しピリピリくる程度だから怖くないと思っているのであれば、それも改めた方が良いと思います。自分は大丈夫でも家族の方は感じ方が違うかも知れませんし、条件によっては42Vでも死に至る事があると言われています。事実、毎年何人かは感電死しています。詳しくは、他のサイトを探して頂ければ誇張でない事が判ると思います。
それでも、電気的な接続は避けたいと思うかもしれませんので、電圧測定はオプション扱いにし、選択出来るようにします。
■無電源化に対応する為に(別途電源用のコンセントを用意しなくとも良い様にする)
・ライン電圧から直接電源を取る
本来この方法が一番単純なのですが、安全性から商用電源ラインとの絶縁を重視していたため、ライン電圧の取り込みは行わない方法を選択していました。今回、これを再考し、電圧計測するついでに、ここから自身が動く為の電源を取り出す方式を考えます。
電圧の取り込みは、コンセントプラグで行うのが簡単なのですが、分電盤周りにコンセントがある事は少ないでしょうから、実際の使用では苦労する事が想定されます。そうすると、分電盤から直接、みの虫クリップ等を使って取得するのが現実的だと思われます。しかし、これは感電の危険性が増してしまいます。もっとも、作業は電気工事士の資格が必要と思われるので、余計な心配かもしれません。クリップ式が良さそうです。
次に、AC100VからDC3〜5V/10mAを作り出す方法は、
電源モジュールを使用 扱いやすいがオンボードタイプでも1500円超
ACアダプタを内蔵 300-500円位で入手可能なので意外と安く上がる
トランスレス電源回路を使う 部品代500円位かかる、非絶縁になるので外装/ケースに注意
定電圧ダイオードで受け流す 安く済む、電力変換効率が悪い、消費電流が少なけれ利用価値あり、絶縁に注意
小物自体の消費電流は1mA級に抑える事は出来ると思うので、定電圧ダイオード式が良いと思われます。
・バッテリ駆動で安直に解決
バッテリの大きさ(容量)と、消費電流のバランス次第です。一般的ではない電池や大容量の物が必要になっても好ましくないので、要件として単三電池1〜2本で1年動作する物で考えます。
電池容量÷消費電流<1年でなければなりませんので、概算では500mAh÷(365日×24時間)=57μA以下に平均消費電流を抑える必要があります。(単三マンガン電池がおおむね500mAhの容量、簡略化のため動作に必要な電圧は本数で調整する事にした試算)
このクラスの消費電流1mA〜100μA未満となると、計測自体は低電力型のマイコンで実現可能な数字ですが、表示器は現状ではLCDしか選択がありません。
LCDモジュール:流通量の多い品種で1mA級、少ない品種でも300μAは必要
LCDパネル直駆動:セグメントLCD、10μA級で可能、入手性は良くない、多ピン制御要
通常時は表示を止めて節電:表示素子の選択は広がる、ユーザインタフェースは低下
バッテリ使用の最大の問題は、寿命が有る事です。
・CTが出力する電気エネルギーを利用する
CTを電流センサとして使う場合、抵抗を通過させる事で電圧変換して計測出来るという仕組みですが、抵抗の代わりに蓄電デバイスで受けたら、小物自身で消費する電力をまかなえるのではと考えたのが発端です。CTは分流器とも呼ばれるように、一次側の電流を電磁結合で横取りします。その割合は通常1/1000〜1/10000のわずかな量ですが、小物が動作する量から大きく外れる訳ではありません。電流を取り込む専用のCTを用意するのももったいないので、計測は一瞬で済む事を利用し、それ以外の時間帯は電源回路に送るようにすれば一石二鳥になります。
問題は、利用可能な程の大きさの出力があるのかと、被測定回路に流れる電流に依存してしまう事です。もう少し具体的に考えると、一次側に1Aの電流がありCTの巻き線数が3000回の場合は、二次側に流れる電流は1A/3000回=333μA(正確には係数などが絡んでくるけど概算と言う事ではしょっています)ですので、何とかなりそうな感じです。しかし、必ず100W以上の消費電力がないと動かないという条件づけは、はたして使い物になるのか疑問です。
選択:最後の案に心引かれるものがありますが、今回は回路の単純化に重きをおいて「バッテリ駆動」の方式を選択します。初期コスト50円(電源部にかかるコスト:電池ボックス代)で済むのが優位点です。ただし、運用コストは年間約300円かかります。
■積算値記録
バッテリ駆動なので、停電の事は考えなくとも良いのですが、非常に長い期間、データを保持する必要があるため、不揮発性の記憶デバイスに積算値を保存した方が使い勝手は向上します。多少面倒でも、EEPROMに値のセーブを行います。
注意すべきは書き換え回数制限で、ターゲットのマイコンでの保証値が100k回ですから、10年使う前提で
100,000/(10年×365日)=27.4回/日
不意の電源断で積算値が0に戻る事のないように、出来るだけ高い頻度で保存したいのはやまやまですが、多くとも1時間に1回以下の頻度に抑える必要があります。今回は、余裕を持って1日1回の頻度とします。最低でも前日までの積算値は保証出来ます。
<詳しい設計>
■電源部
検討経過の中で、PIC16F1939とLCD-30Pとバッテリを使う事が仮決定していますので、この条件で電源部を考えてみます。
電圧安定化:不要(ボルテージレギュレータは使わずバッテリ直結する)
マイコン内蔵のA/Dコンバータの基準電圧は電源と共用になっている事が多く、電源電圧を安定化させる必要がある事が多いのですが、このマイコンはFVRと呼ばれる基準電圧を内蔵していますので安定化させる必要がなくなっています。
必要電圧:4.5V(3セル)
マイコン側は1.8V〜5.5Vとかなり融通が利くので、バッテリ2セルから使用出来そうです。
しかし、LCD-30Pの駆動電圧は4.5Vは必要で、3.3Vではコントラストが薄くて大変見にくいです。3.0Vでは完全に見えません。バッテリ3セルは必要となります。
DC-DCコンバータで昇圧させてセル数を減らす手段もありますが、電池単価・電池寿命/効率・追加の部品代を考えたら適用する理由は余りないと考えます。
■電流計測部
CT素子:U_RD社 CTL-10-CLS + 負荷抵抗330Ω
コア部分が分割できる小型の入手しやすい物という事で探した部品です。これは、負荷抵抗が外れた時に大電圧が発生しないように、7.5Vのリミッタ(クランプ素子)が内蔵され、巻き線数が多いので出力電圧が〜4Vと好都合なものです。
電流値への変換特性はデータシートに記載されていますが、直線部分で使う分には、CTとして一般的な下記の式に当てはまります。
電流=(負荷抵抗間電圧×巻き線数N)/(係数K×負荷抵抗値) N=3000 K=1.0 ...製品により変化するパラメタ
負荷抵抗の値は、30Aぐらいまで測るので「出力電圧特性」グラフから100〜1kΩの位が良さそうです。今回は、丁度その中間(対数的に)の330Ωとしました。
入力回路:CTの出力を直接マイコンへ入力
過電流保護の為に抵抗を挿入しますが、何の加工もせずA/Dコンバータの入力ポートに接続します。負側、Vddを超える電圧からの保護は、マイコン内のクランプダイオードで受け持つ形です。負側のデータが取れなくなりますが、非対称の波形は無い想定です。正側のデータだけで計算するために、2倍にするか対称波形を作ってしまえば良いと考えました。
キャプチャ範囲:1サイクル分
キャプチャ間隔/回数:244μS/82回or68回(1/32.768kHz*8クロック)
1サイクル間に約100ポイントのデータを取りたいと考えたため、20ms/100=200uS位の間隔にしたいのですが、基準がTimer1の32.768kHzなので、CPUで処理しやすいように2の倍数の8クロック分とし、244uSにします。50Hzの場合82回、60Hzの場合68回のサンプリング回数となります。前図では、41回ですがテストコードの都合で半分になっています。
測定間隔:1秒
省電力を考えると出来るだけ長く取りたいのですが、変化の多い器具の場合取り損ねる確率が増えるので、誤差が大きくなってしまいます。1秒間隔なら我慢出来る範囲なのではないかと考えました。
A/D変換時のスリープ:未使用(プログラムループ待ち)
一番残念だったのがA/D変換完了待ちにスリープを使えなかった事です。PIC16F1939自体はそのような機能を持っているのですが、今回の設計では正確に一定時間毎にA/D変換を行う必要があり、変換時間が読めないRCクロック(スリープさせたければこれを使うしかない)を使用する事は出来なかったのでした。Timerでタイミングを作ればと考えますが、PIC16はスリープ中はペリフェラルクロックも止まってしまうので、そもそもが使えないというジレンマに陥ります。頼みの綱は時計用のTimer1で、これだけは止まる事がないのですが、割込を使う訳にもいかず、結局はプログラムループで待つしかないという結果になってしまいました。一度、ペリフェラルクロックを自由に選択出来る事を知ってしまうと、こういう時の残念度が上がってしまいます。
位相補正:補正なし
CTもコイルの一種ですので位相差が出てしまうのは仕方の無い所。今回使用した CTL-10-CLS をこの条件で使う分には目に見える位相差が無い様でしたので、何もしないという事にしました。もし、位相差を考慮しなければならないとしてもマイコン内での計算処理で補正は可能だと思います。
■電圧計測部
具体的な話をすると
ACラインーー100kΩーーー+ーーー>A/Dコンバータ
330Ω
ACラインーー100kΩーーー+ーーー>GND
の回路では、100V/100kΩ=1mAの電流が体に流れる可能性がありますが、この程度の電流は全く問題ないそうです。330Ω間の電圧は100V*(330/(220+100k+100k))=165mVなのでA/Dコンバータで計測可能(41カウント、1カウント=4mV)です。バッテリ駆動する事で考えていますので、外部との電気的な接続を全く無くす事が出来ます。
■表示部
このパネルの良い所は、2つの項目を並べて表示させられる事です。表示させたい項目がたくさんある場合、数値とその意味や単位を出せれば判りやすさは格段に増します。今回は以下のような表示を切り替えで行うようにします。
(1)電力量 kWh 電力 W …よく見る項目なので2つ同時に表示させます、単位は出ません
(2)電気料金 ¥ …¥文字は出ないので「yen」と表示
(3)電圧 V …「V」と表示、電流と合わせると良さそうなのですが、(1)と区別しにくくなるのでわざと別々に表示
(4)電流 A …「A」「mA」と表示
(5)力率 % …「PF」と表示
(6)日時 …「mm.dd hh:mi」の形式で表示、コロンを表示できるので、他の項目とは区別可能
チャネルの区別はアイコンで行います。判りにくいのですが「ST」「RPT」「RDM」アイコンをCH1,CH2,CH3に当てます。また、切り替え操作が面倒になると思われたため、一定周期で自動的にチャネルめくりが行われる機能を付加します。
■制御部
PIC16F1939に決定済み。省電力化のため、大きく2つ考慮しました。
32.768kHzクリスタルを使用:低電力で時計機能を実現するには避けられない。
部品増も仕方なし。Timer1用オシレータに接続。
メインクロックは16MHz:CPU/電力コスト比で一番有利(データシート上)
270uA/500kHz=540uA/MHz
2.0mA/8MHz=250uA/MHz
3.1mA/16MHz=193uA/MHz いづれもINTOSC(内蔵オシレータ)の条件
少ない電流でゆっくり処理するのと、多少大きい電流でも短い時間で済ますのでは、どちらが有利か?
待ちが多いの場合は、低速が有利。計算処理が多い場合は高速が有利。
■入力部
(1)モードボタン
(2)UP+ボタン
(3)DOWNーボタン
あまり深く考えずプッシュボタン3個としました。
<回路図>
部品は少なめに出来たと思います。電源にボルテージレギュレータを使わなくて済んだので部品数削減には好都合。ただし、LCDパネルの駆動電圧の関係で電池本数は3本必要になってしまいました。
実装上、特に注意すべき点はありません。ただ、Eagleに標準的に付いている部品ライブラリのMicrochip-PIC16F1939は、ピン40と39が逆なようだったので、“microchip.lbr”を直接修正してしまいました。お気をつけ下さい。LCD-30Pの部品ライブラリは今回TOG.lbrに新規追加しました。
後で気がついたのですが、単なるデジタルクロックとしても使える回路です。かなり長い期間(数年)電池交換しないで済むでしょう。
<部品表>
基板、配線材・ケース材料、送料/交通費を除きます。
本体部分は約500円で済みますが、CTが1チャネル当り1575円(U_RD社直販サンプル価格)ですので、3チャネル分で約5300円、最大4チャネル分用意すると6800円が必要です。
LCDのピンピッチが1.8mmなので入手容易な2.54mmピッチのユニバーサル基板では難儀すると思います。専用のプリント基板を作るとなれば安くとも1500円、初めてであればフィルムや現像剤・エッチング液等で3500円、それと精度の良いインクジェットプリンタが必要になります。
ケースはアクリル板から作る場合、材料費だけでも1000〜2000円位かかると思います。形状的にプラスチックの筆箱が流用し易いと思います。
<ソフトウエア>
■開発に必要な物
Windows PC(パソコン)
Microchip MPLAB IDE 8 (*1)
HI-TECH C for the PIC10/12/16 MCU Family (*1)
PICkit3等のプログラム書込み器
*1: Microchip社のサイトからダウンロード可能
■全体処理フロー
メイン処理自体は非常に単純で、メインループ内で計測・計算・表示を繰り返すだけです。時計の機能は、1秒間隔のハードウエアタイマ割込でカウントアップ処理を行っています。
■ソースコード
main.c:ローカルなサブルーチンや割込ルーチン等、全てのアプリケーションコードが記述されています。全部で約1100行と大きめですが、単調なので読むのは難しくないと思います。
lcd7seg.c:セグメントLCDの表示処理をまとめたサブルーチンです。PIC16F1939のLCDコントローラは、LCDの各セグメントをビットマップに対応してオン・オフさせる簡単なインタフェースなので、特に独立サブルーチンにする必要も無かったのですが、一応移植性を考慮しました。PSoC DesignerのLEDユーザモジュールのAPIに合わせてあります。10進と16進の数値表示機能と、セグメントを直接指定してのビットマップ表示機能が主です。
lcd7seg.h:上記サブルーチンのヘッダ定義です。
プログラムメモリが比較的余裕があるので、全く制約無くコーディングできました。特に、浮動小数点演算(float/double変数)を使っても残りメモリが気にならないのは楽でした。最終的なプログラムメモリ使用率は約50%なので、まだまだ機能追加する余地があります。
PICkit2はMPLAB8.36からPIC16F1939への直接プログラム書込みがサポートされていませんが、PICkit2ユーティリティからは書込み出来ますので、使えない事はありません。MPLAB XでもPICkit2は未サポートなので、新規で購入する場合はPICkit3お勧めします。
まず、使用したマイコンのA/Dコンバータでの電圧取込みは、内部コンデンサを通して計測処理を行いますので、チャージに若干の時間を要します。それが、左図のTAQで、チャネル切換え後9.5μs待つ事で満足させられます。これは、机上での最大値ですので、実際はもっと少なくてよいかも知れません。
A/D変換時間は、このマイコンではおおむね11.5μs前後なので、割込処理でのオーバヘッドとプログラムループでの待ち処理は大差なくなってしまうので、今回はプログラムループにしました。
これを、4チャネル分繰り返して、ある瞬間での電圧値を取込みます。ただし、若干の時間差(20μs+、実測100μs)がある事に注意しなければなりません。電圧値との時間差は最大300μsとなりますので、最大1.5%程度の位相差が出てしまうと言う事です。今回は気にし無い事とします。
次に波形データを得るには、一定時間間隔でA/D変換を繰り返す必要があります。出来るだけ、細かい間隔にした方が、より正確な波形を得られますので、理想的にはA/D変換を待ち無しで実行させます。注意すべきは、A/D変換後の計算処理を含めると、毎回全く同じ時間間隔になならない事があります。大きな時間差でなければ特にきにする程でもないと思います。今回は、32kHzクロック・タイマを利用し、16カウント分の488μs毎に取込む様にしました。
消費電流を計測した所、電圧計測する使用状態の場合、毎秒約200msがアクティブな処理時間でした。割合にして20%です。インアクティブ時は0.03mA、アクティブ時は3.1mA(データシート)なので、 3.1×0.2+0.03×0.8=0.644mAh、アルカリ電池容量が1000mAhと仮定した場合、1552hつまり64日間しか持たない事になります。当初の設計値の60μAから比べると1桁も違っていました。ちょっと数字が多かったかもしれませんが大事です。そこで、省電力対策を行いました。
(1)計測間隔を1秒から2秒にする(もっと増やしても良い)
(2)キャプチャ回数の84回を半分にする(半波でも42回は多いかも、多いね)
(3)電流値と電圧値はRMS計算という重い処理を行う必要があるので、表示しない時はこの処理をスキップする
最後の方法が100msに削減できましたので、だいたい2倍づつの延命法になります。
(1)は外部仕様が変わってしまうので、公開しているソースコードは(2)(3)のみ対策したものです。コメントアウトを外せば良い様にしていますので、使用状況に合わせてカスタマイズが可能です。16ヶ月稼働も夢ではないかもしれません。
残念ながら、マイコン内のA/Dコンバータの仕様を逸脱する使い方をしています。測定精度を上げる目的で、Vrefを1.024V, 2.048V, 4.096V に動的に変更するロジックを加えており、測定値が低い場合1.024Vまで下げるケースがあります。しかし、内蔵A/Dコンバータのデータシートを見ると1.8V以上である必要があり、保証外の使い方になってしまいます。ソフトウエアを書き換えれば対策出来ます。
<ダウンロード>
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境:
Windows2000 SP6 / VMware Fusion 3.0.2 / Mac OS X 10.5
CadSoft Computer EAGLE 5.11 Light Edition for Mac
Microchip MPLAB IDE 8.36
HI-TECH C PRO for the PIC10/12/16 MCU Family(Lite) V9.65PL1
PICkit 2 v2.60
<基板>
LCDパネルのピンピッチが1.8mmなので、一般的な蛇の目(ユニバーサル)基板にそのまま刺さらないし、最近配線が面倒になった事も有り、専用プリント基板を作りました。
左側が部品配置の様子です。PIC16F1939は40ピンDIP品を使いましたが、実物を見るとデカイ!40ピンと言えば大昔使ったZilogのZ80以来です。EAGLEの標準部品ライブラリにあったのでそのまま使いましたが、ピン40と39が逆の様です。ダウンロードできるファイルは対策済みです。LCDパネルのLCD-30Pは新規登録しています。両面の設計になっていますが、表面は2本だけなのでジャンパ線で対応可能です。
右側が最終的なアートワークです。クリックするとPDFファイルをダウンロード出来ますので、そのまま感光基板のフィルム印刷に使えます。
サンハヤト社の感光基板で作っています。まだ、クイックポジ感光基板の感光時間には慣れませんね。150mmx100mmの基板で2枚取りましたが、1枚は修正が必要でした。線ピッチはいつもより緩くしてあったんですが。穴空けして、部品を半田付けしている途中が右写真です。
まずは、PICとISPコネクタのみをハンダ付けし、PCからプログラマでPICにアクセス(認識)出来る事を確認しておきます。こうしておけば、動かなかった時の切り分けが出来ます。
ジャンパ配線2カ所は部品の下になるので、忘れずに付けておきます。PIC16F1939は40Pの割には安いので、ICソケットを使うのは割が合いません。基板直づけです。
ISPコネクタのピンは基板裏に出る様にしてあります。これは、ISPコネクタのは位置を、LCD外の位置にすると配線の通りが悪かった為です。ケース裏に飛び出す形になります。
他の部品を普通に半田付けし、最後にLCDを乗せます。LCDもソケットを使う程でもないので直づけです。動かなかった時の修正が困難になりますが、気にしない事にします。でも、LCD表面(両面)に付いている保護フィルムは事前に剥がしておいたり、取付け高さに注意をする必要があります。高過ぎてケースに入らなったり、PICとのすき間がないと反射材を入れられなくなったりします。
右の写真が完成した状態です。LCDパネルは透過するので、反射材としてスチロールのシートを使いました。アルミホイルとか色々試してみたのですが、これが一番しっくりきました。それでも何か見にくいなあと思っていたら、表と裏の両方に透明保護フィルムが付いていました。無理してはがすと、偏向フィルムまで取れてしまう可能性があるのですが、粘着テープを使うと簡単に取れます。
<ケース>
いつもの調子で、アクリル板で専用のケースを作りました。
クリックすると細かい寸法を見る事が出来ます。表示器が大きいので、厚みを抑えて圧迫感が出ない様にしたつもりです。手前側にわざとすき間を付け、センサの線を引き出せ、ふたを開けてボタン操作するといった使い方です。プラスチックの筆箱ですね。
今回は、製作途中の写真を撮り忘れたので、この2枚だけ。正面パネルは透明素材を使い、LCDが見える以外の部分は、つや消しスプレーで磨りガラス状にしています。中が見えすぎでしたのでメタリック系の塗料の方が良かったかも知れません。右側は裏面の写真で、ISPコネクタピンが出る様に穴空け加工しています。この上にマグネットシートを両面テープで張付け、鉄板にくっつく様にしました。
電圧検出用のみの虫クリップは、クリップのラバー内に抵抗器を入れる様にします。
使用している状況。右は分電盤への取付の様子。
<性能検証>
測定器を使わない方法で確認します。
・器具の消費電力仕様と一致するか
・電気メータと一致するか
・力率100%の時、電圧測定モードと電流測定モードで一致するか
(1) 器具の消費電力仕様と一致するか
器具の表示ワット数と、小物が表示するワット数が一致するかどうか確認します。テレビやPCなど消費電力が変動するものは比較しにくいので、安定した器具を用いる事にします。(バージョン07a)
合うのも有れば、合わない物も有り何とも言えないという結果になってしまいました。大物のトースターがほぼ合っているのでとりあえず一安心です。
(2)電気メータと一致するか
電力会社の電気メータ値と、小物の全チャネル合計値が一致するかどうか長期的に確認します。
測定対象外の系統は、電気を使ってしまわない様にブレーカを切った状態で計測しています。
WHM0.5と同じ条件で、ワークシートも同じフォーマットです。なお、WHM0.7は電圧測定する設定です。
以下は10日間の実績です。
Ch1は電灯・壁コンセント。Ch2は台所・冷蔵庫など。Ch3は電気温水器です。エアコン未使用です。
最初に数値が荒れていたのが気になりましたが結局、積算誤差が100%という嬉しい状態でした。あまりにも良すぎる結果なので、逆に不安になり長期間の確認試験を行いました。
2011年5月の一ヶ月通しで比較したのが次の表・グラフです。(バージョン0.7a)
5月21日以降は測定に失敗したので無視して下さい。やはり月間1%程度の実力を持っているようです。半分近くを占めるCh3は4kW電気温水器=力率100%で、非常に単純な例なので割り引いて考えた方が良いでしょう。それにしても、私的には十分な精度です。
測定に失敗したのは、電池切れを起こしていたためです。A/DコンバータのVREF(基準電圧)が下がってしまい、本来の数値より多めに出てしまったのでした。マンガン電池でも一ヶ月位は持つはずだったのですが、何故かダメでしたので原因調査と対策をしました。
対策後、2011年7月の一ヶ月で再度比較したグラフです。(バージョン07b)
約一ヶ月で179kWh/181kWhの積算誤差と若干の精度低下がありますが、割合としては1%程度である事から、目標仕様を満足する事が判りました。2kWhは電気料金にして40〜50円程度なので、実使用上でも全く問題がないと考えます。精度低下はキャプチャ回数を削減した影響だと思われます。気になるようであれば、元のキャプチャ回数に戻せば良いので気持ちが楽です。
(3)力率100%の時、電圧測定モードと電流測定モードで一致するか
純抵抗系器具を動かした状態で、モードを切り替えて値を確認します。(バージョン0.7a)
電圧値が違うので、その分を補正すれば、ほぼ同一値と言って良いと思われます。当たり前の比較ですが、意外とこういう所が違う事があるので、安心しました。
<関連>
「自作電子小物/簡易電力量計/7チャネル版」 ← 過去版
「自作電子小物/電力インジケータ/分電盤用」 ← 電力ロガー,SDcard/PIC18
「自作電子小物/電力インジケータ/テーブルタップ版」 ← 電力ロガー,SDcard/PSoC1
「自作電子小物/簡易電力量計/7チャネルGUI版」 ← Bluetooth/STM32
「自作電子小物/電力インジケータ/テーブルタップ版0.6.5」 ← Bluetooth/PIC32MX
<あとがき>
正直申し上げますと、この小物を公開するつもりはありませんでした。以前作成した小物WHM0.4から大した進化もしていませんし、特殊な部品(LCDパネル)も使っていますし、あまり参考にならないと思ったからです。それに、数値なんか見ていても、そのうち飽きがくるに決まっています。私的には細かい記録が残るWHM0.5とWHM0.6のコンビの方がお勧めです。しかし、震災で一般家庭でもピーク電力を1〜2割減らす義務が出来た現状を考えれば、それを知る選択肢は多い方が良いと考えました。この小物の良い所は、商用電力は消費しないという一点のみです。調べたい待機電力以上の電力を使って計測していたなんて事態にはなりません。
その内、最初から分電盤にこのような機能がついている時代がくるのかもしれません。系統ブレーカにワット表示が付いてたりするとうれしいですね。元々電流センサが入っているでしょうからいけそうな気がします。
富樫 豊彦 tog001@nifty.com
Multi channel watt hour meter.
About one year battery operation.