自作電子小物/簡易電力量計/7チャネル版
自作電子小物/簡易電力量計/7チャネル版
Wh meter for suzume-syako.jp
2006年9月1日金曜日
電灯線用7チャンネルの「超簡易」積算電力計で、多数の電気メータを用意しなくとも、一度にたくさんの電力量を調べる事が出来ます。ご家庭のブレーカボックスに取り付け、系統毎の電気消費量チェッカとして使用する事を想定しています。
実は、賃貸車庫の個別の電気使用量を調べる目的で製作した物です。市販品の電力量計は高価で、多数の回路分を用意しようとすると大きな出費となり、弱小個人事業者にはかなりの負担です。正確でなくても良いので、お安くできないものかと悩んだ末に、やってみました。精度にこだわらず、いくつかのパラメタを固定に考えれば、もの凄く簡単な回路で済みます。電灯線の片方にCT(電流トランス)を挟み込むだけでいいので、取り付け工事が楽です。
<機能/特徴>
■取付け簡単
■瞬間電力も表示されるので、電力消費元を探す情報源に使える
■時計を内蔵し、月初に積算値が自動リセットされる
■過去の値を15ヶ月分保持し、いつでも参照できる
■単純、製作容易、補正作業不要
名称:一般家庭向け7チャネル電力量チェッカ
分類:商用電源単相交流100V用多チャネル簡易積算皮相電力量計
測定方法:被回路の片線にクランプ型電流センサを装着
測定数:最大7カ所
計測範囲:単相交流 100V・1.7〜1700W。数値の読みを2倍にすれば200Vも可能です
数値精度:-10%〜+60%ぐらい?
実体は交流電流計で、電圧=100V、力率=100%固定で計算しておりますので、正確には「有効電力[W]」ではなく「皮相電力[VA]」値です。また、元となる電流値はRMSではなく平均値を使用しておりますので、多分に誤差が出る可能性があります。
表示項目:1画面1チャネル分表示
瞬間電力[W]
月間積算電力量[kWh]
月間積算料金[円](25円/kWh単価で計算)
年月日、時分秒(約20秒毎に相互表示)
データ保持機能:
過去15ヶ月間の積算電力量を保存
停電になった場合、当日の実績は消えるが、前日までの数値は残る(小数点以下は切り捨て)。また1日の0:00:00にリセットされる。つまり、毎日停電になると、月間積算されなくなり月の履歴も残らなくなる。
データ出力機能:なし
入力操作:
上ボタン(チャネル上めくり、長押しで日時設定入力)
下ボタン(チャネル下めくり、長押しで履歴表示)
外形:幅108mm、奥行48mm、高さ32mm
電源:AC100V(携帯電話用ACアダプタ)、約0.4W
製作費:チャネル数により変動、1チャネル:2500円、7チャネル:10,000円ぐらい
重要:
分電盤内に関わる作業は、それなりの知識が無いと生命に関わる事故や火災になる可能性があります。
電気工事士の資格者が行うようにして下さい。電気屋さんに頼んだとしても、認定のない機器を取付ける事は、まずなさらないと思いますので、基本的には資格を持った方が自己責任で行う電子工作だと理解して下さい。
<構成・方式>
■計測方式
・電力量を得るには
みなさんご存知だと思いますが一応、単に電力と言うと瞬間電力値を差し、電力量と言うと電力の積算値の意味として、ここでは区別したいと思います。
交流の電力量を直接計測する手段としては、電力会社から電気を買う為に取付けてある料金メータ「誘導式積算電力量計」円盤が回る機械式の物が思い浮かびます。しかし、これだと大きくて取り回しも大変ですし高価なので、複数揃えるのは要件に沿いません。
そもそも、電力量とは電力の時間軸での積算の事なので、まずは電力値を電子的に計測、要は電力計を作り、その値を積算するのが一般的のようです。
・電力値を得るには
先の誘導型の方法とか、熱エネルギーに変換し温度変化を計測するといった方法もあるようですが、純粋に電子的に行う方法として電圧値と電流値で計算から導き出すのが一般的のようです。判り易く解説されているサイトが有りますので、詳しくはそちらを検索して下さい。
ここでは、私の理解している範囲で簡単になぞってみます。基本は次の計算式。
電力=電圧×電流
直流では話は簡単です。
交流の場合は、電圧・電流は常に変化しているので、電流・電圧のそれぞれを、平均値(整流・平滑回路で直流化する)等に変換すれば、計算出来るだろうと考えてしまいますが、実は正しくありません。
あくまでも基本式に従い、 交流は、電流・電圧共に常に変化しているので、瞬間瞬間での電力値を計算してから、平均値等の単一の値にする必要があります。試しに表計算ソフトで計算しグラフ化してみました。
電力会社から供給される電気の電圧は50もしくは60Hzの正弦波に近い波形ですので、sin関数で元データを作り、電流も仮に同じにして、10V(ピーク)、6A(ピーク)に設定してみました。
面白い事に、交流は正と負を交互に繰り返しますが、電力波形は全て正領域に入っています。これを単位区間で平均した値が、通常表される交流電力値です。この場合、電力の平均値は30[W]です。10[V]×6[A]=60[W]では?と思われるかもしれませんが、交流は常に変化していますので単純ではありませんね。
ちなみに交流の表現としては、平均値では常に0になってしまうので意味がないので、ピーク値を使ったり、電気エネルギー的に直流と等しいとされる「RMS」という尺度を使ったりします。一般的に、特に表記がない場合はRMSです。
このRMSについての詳細は、他のサイトで調べて頂くとして、正確な正弦波では、ピーク値÷√2で得られます。試しに、このグラフ波形での電圧・電流のRMS値は、√2÷10[Vpeak]=7.07[Vrms]、√2÷6[Apeak]=4.24[Arms]です。このケース「電流と電圧が相似」では、 単純に「電力=電圧×電流」が使えますので、7.07[Vrms]×4.24[Arms]=29.98[W]と、最初の値と一致します。
ピーク値 の所60W(ピーク)を見れば判る様に、この条件下では単純計算が通用しそうです。当たり前ですが。
次にもう少し、現実的な例を考えてみましょう。電流・電圧がそれぞれ別々に変化する場合です。
電圧・電流が相似にならないという事はあり得ないのではないかと思われる方もいらっしゃるかもしれませんが、コンデンサやコイルが入る負荷では、波形が変わったり、ずれたりするものです。電気回路の基本的な話なので、説明は割愛させて頂きます。
比較し易い様に、タイミングだけをずらした時の様子をグラフに出してみました。電圧・電流値は全く同じです。これだけでも電力値は変わって来るのです。面白い事に、電力値に負が出てくる所です。これで相殺され電力は減ってしまうのです。消費の逆と言う事は、発生してしまうと言う事か!
タイミングがずれる事なんて実際あるのか?残念ながら器具によって大小の差はあれ「ずれ」(位相と呼ばれる)はあります。また、電圧の波形はおおむね正弦波なのですが、電流の波形は正弦波になるとは限らないので、整流・平滑では正確に出来ない事が想像出来ると思います。
つまり、正確な電力値を得たいのであれば、常に電圧×電流の計算をしなければならないという面倒な仕組みが必要なのです。
実は、単一式で済ませられる手があります。よく教科書に載っている内容です。
交流電力=電圧実効値×電流実効値×力率 (正確には有効電力)
交流は常に変化し続けるものなのですが、直流に相当するような数字が有ると扱い易いので、通常は「実効値(RMS)」という表現方法を使っています。これはエネルギー的に等しい数字とされており「2乗した数値の積算・平均値の平方根」で得られます。面倒な測定・計算が必要になるのですが、正弦波であればピーク値/√2で計算出来ます。平均値と似た値となりますが正確には違います。平滑回路で得られる値とも似ていますが、これも正確には違います。
力率は、電圧と電流の位相差(波形のずれの大きさ)により発生する電力効率低下量で、正弦波であれば位相差から計算できます。位相差はゼロクロス点(0V)の時間的なズレを計測すれば得られます。白熱電球や電熱器等の純抵抗系の器具の場合、位相差は出ませんので100%となりますが、大抵はコイル(インダクタンス)・コンデンサ(キャパシタタンス)成分が含まれていますので程度の差はあれ力率は100%未満です。
実際の器具での様子を見てみました。
電圧(赤)と電流(黄)の様子をオシロスコープで観察した物で、左が白熱電球、右が電球型蛍光灯です。白熱電球は、やはり位相差がなく一番単純な波形でした。電球型蛍光灯は、単に位相差があるという物ではなく、かなり変な電流波形である事が判ります。これを見ると、電流が正弦波である事を前提とした計算や、測定回路にするのは無理が有ると考えてしまいます。
では、実際どうしましょう?
面白い事に乗算を行う電子回路があって電力波形を出力させる事が出来ます。単純な回路ではない様なのですが、アナログ乗算器として専用IC化されており簡単に電力値を得られます。残念な事に値は張りますし入手性も良くありませんので利用はためらわれます。
サンプリングなので、あくまでも近似値となりますが、厳密な数値を求めていない要件では問題は無いと思います。精度が緩ければ、A/Dコンバータを内蔵したマイコン使う事で、少ない部品で安く実現出来る可能性があります。
今回は、後で説明しますが電圧値を取り込まない事にしてしまいましたので、上記を組み合わせた方法を取りました。電圧は100V固定、力率も100%固定で、実効電流値はマイコンで波形をキャプチャして計算する方法ました。ただ、マイコンの能力のかねあいもあり、実効値ではなく、相加平均値にしなければなりませんでした。実効値の計算は、PIC16ではかなり重い処理になったからです。
■電圧・電流センサ選択
・電圧値
分圧抵抗:絶縁するにはどうしても高価になる。
変圧器: 小型トランス、やや高価、電源と共用可能。
測定しない:固定値100/200Vとする、力率も100%固定。割り切りが必要。
・電流値
直列抵抗:絶縁するには高価になる、抵抗器自体安くない、分電盤工事要
CT(電流トランス):取付容易、高価(2k¥)
ホール素子:やや高価(1k¥)、小型、分電盤工事要
<選択>
電圧は測定しない → 他の方法では費用と安全性の確保に時間がかかりそう。やはり感電事故が一番怖いので絶縁は必須と考えます。
電流はCT使用 → 基本技術を使ってみたい。クランプ型もあり、被測定回路への取付が極めて容易。高価なのはいたし方なし。
CTは負荷抵抗RL間に発生する電圧を読み取る事により、電流値が判ります。これは、発生電圧と貫通電流の間にはほぼ比例の関係がある事を利用しています。実際の関係はCTの製造メーカがデータシートで明示していますので、これを数式にしてマイコンで処理させれば良いと考えました。負荷抵抗値は、CTの入力/出力特性が明確になっている値(データシートで確認)と同じ物を使います。これで、特性を調べる手間も省けます。(実際は変更する必要が出てしまいました)
CTの出力は交流なので、マイコンに入力するには、マイナス値を正側にオフセットさせるか、半波のみを測定対象にするかしなければなりません。今回は半波のみ計測する方法で、マイナス側はカット/無視します。非対称の波形もあり得ると思いますが、今回そこ迄の精度を求めず単純化を選びます。(そもそも交流は正側と負側を均せば等しくなるはずなので問題ないはず)
マイナス成分をカットする目的で、ダイオードで半波整流すると、Vf(準方向電圧)特性があるため、0電位付近の波形が若干変形します。また、ノイズ対策でバイパスコンデンサ等を使っても、波形が変わってしまいます。そのため、何も加工せずにピンへ入れる方法をとってみました。ただ、負電圧がマイコンに入ってしまうと壊れてしまうので、ダイオードでGNDに流れ込む様にする策を考えました。Vf特性の関係で完全に負電圧をカット出来ませんので、出来るだけVf値の小さいダイオード、現実的にはSBD(ショットキバリアダイオード)にします。抵抗Rlimは、負側電流がGNDに流れ込む際、CT-RL電流ループに影響させてしまう事が考えられるため、分離(電流を制限し、影響を少なく)する目的で付加しました。実は、マイコン内にこれと同じダイオードが内蔵されています。本来は過電圧保護目的のダイオードです。これで代用できるのですが、このダイオードの仕様がはっきりしないうえ、マイコンの負側の絶対定格電圧を軽く下回るので、本当はいけない使い方です。
以上、使う部品がかなり少なくなりました。
■表示部
4〜5項目の表示だけ行えれば良いので、安いキャラクタ型LCDを使用します。
■制御部
複雑な制御を行いますのでマイクロコントローラが前提となります。要件は、
・7CH以上のA/Dコンバータ
・8bitのI/Oポート
・タイマ(1秒を刻めればなお良い)
・EEPROM
今回は、Microchip technorogy社の「PIC16F88」を使用しました。特に選択理由はありません。結果的に、もう少しメモリ容量が大きく、処理速度が高いものが作りやすかったと思います。
■電源部
使用したマイコンの都合で、5V電源が必要です。長期間稼働しますので、バッテリはNG、商用電源からACアダプタ等を使って電力を得ます。7V程度以上のACアダプタを用意出来るのであれば、ボルテージレギュレータは5V出力の品種なら何でもかまいません。前後のコンデンサC1,C2はデータシートに従ったものに換えて下さい。
私は、使わなくなった携帯電話用のACアダプタが何個かありましたので、再利用しました。なお、A/Dコンバータのリファレンス電圧はCPUに内蔵されておりませんので、Vddを安定化させる必要があります。そのため、ボルテージレギュレータを付ける必要があります。私の場合、5.8V出力のACアダプタでしたのでLDOタイプにする必要がありました。
<回路図>
基本は方式設計通りです。CTは5V程度の電圧リミッタが入った物を前提にする事で、保護回路など付けないシンプルな回路にしました。非常に簡単な回路で済みますが、PICが壊れる可能性は高いです。
LCDモジュールは、コントラストを固定にしています。使った個体は少し濃いめで丁度良かったですが、環境温度によっては薄かったり、真っ黒になったりするかもしれません。Voに半固定抵抗10〜20kを入れておいた方が確実です。私はLCDモジュール基板上に半固定抵抗を直づけして、あまりコントラストの事を考えなくて良い様にしています。ブレッドボードでの実験時にも楽です。
バックライト無しで設計しましたが、設置場所が薄暗かったので、実際は「あり」版を装着しています。
RL(R1~R7)値は、使用するCTと所用の測定電力範囲によって決定します。以下の表はU_RDのCTL-10-CLSのデータシートのグラフから読み取ったものです。
なお、CTは物によって発生電圧が小さくマイコンで入力するにはアンプが必要となる場合が多いので、選定には注意を要します。直接入力が出来、取扱いも楽で比較的安い「CTL-10-CLS」がベストだと思います。
<部品表>
CT、ACアダプタ、ケース、基板¥100、送料/交通費を除きます。
約1000円です。CTはU_RD社の「CTL-10-CLS」直販で1575円(サンプル価格)でしたので、チャネル数により合計2600円〜12,000円は必要です。
<ソフトウエア>
大きく2つの機能分けにています。
・一つは割込処理で、バックグラウンドで動いている感じです。常時A/Dコンバータを駆動させるために、変換完了割込を利用し、無限にA/D変換を繰り返します。変換結果は、引き継ぎ用のメモリ領域にセットし、常に最新に更新します。同様に、時計もタイマの割込タイミングで年月日時分秒を更新します。(絵ではメイン処理に入っていますが、実際は割り込み処理内で行っています)
・もう一つがメイン処理です。一つの大きなループの中で、それぞれの機能を実現する短い処理「小機能」を繰り返します。これで、各処理が同時に動いているように見えます。小機能は積算処理、プッシュスイッチチェック、表示更新です。例外は、日時データのプッシュスイッチ入力処理で、この大きなループ外で処理しています。ソースコードが読みにくくなるのと、処理がやや複雑なのでこのようにしています。
詳しい実装はやはりソースコードをお読み下さい。K&Rスタイルで書かれており、違和感があるかと思いますが、ご容赦下さい。main()は一番最後にといった書き方になっています。
■ソースコード
・main.c: 本アプリケーションのソースコード。ローカルサブルーチンも含め、全てこの中に記述しています。
・lcd.c: LCDモジュール制御サブルーチン。Microchip提供のツール「Maestro」で自動生成させればOKと思っていたのですが、PIC16/C言語用が用意されていません。PIC18用の物を改修するぐらいで行けるかも、と楽観的に自動生成させたソースを編集して行きましたが、多くなったので途中で止め、新規で起こす作戦に変更しました。
・lcd.h: 同、ヘッダファイル。プロトタイプ、シンボル宣言等を行っています。新規とは言っても、APIが乱立すると間違いの元なので、PSoCのLCDユーザモジュールの仕様に合わせました。PICのライブラリは機種で微妙に違うようです。
・config.h: ハードウエア定義関係を集めたファイルです。RLの変更はこのファイルを修正してリビルドするだけです。
<ダウンロード>
バージョン0.4d リリース日:2009.12.15
Cコンパイラ:HI-TECH C PRO for the PIC10/12/16 MCU Family(Lite) V9.65PL1以上
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境:
WindowsXP HomeEdition SP3 / Parallels Desktop for Mac Build3226
CadSoft Computer EAGLE 5.6 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
<基板>
蛇の目基板(ユニバーサル基板)でも十分だと思いますが、専用基板を作ってしまいました。このバージョンは動作確認していませんので、動かないかもしれません。
EAGLEプロジェクトファイルもダウンロードできるようにしてあります。
LCDモジュールがかぶさる形です。固定がコネクタ部分で支えるだけ、少々手抜き状態です。
写真の基板は、実際に1年ほど使ったV0.1の物を改造したものなので、パターン面がキッタナくてすみません。
<ケース>
ケースはいつものように有り合わせのアクリル板を使って、簡単なのを作りました。(寸法図面:Save0004.TIF)
材料は3枚、黒・スモーク・透明板を使い、専用のヒータで直角に曲げ、接着しました。底板も黒にしたかったのですが、丁度良い端材がなく、仕方なく透明になっています。
ふたの支点は、新品のワイシャツ等に付いている小さい「虫ピン」です。
天板はスモークで、閉めた状態でも表示を確認出来る様にしましたが、少し色が濃すぎた様です。 時刻と日付は交互に替わります。瞬間電力は1[W]単位で表示されますが、精度の実力が伴っていません。
<性能検証>
■計測値精度
まずは基本的な計測です。
確認の基準となるような電力計を持っていないので、どの家にも必ず付いている電気メータ(料金メータ)と比較すれば良いのですが、全部の器具を止める必要があったり測定条件を作り出すのが難しいので、手持ちの測定器を使うしかありません。(実際は後で比較しました)交流クランプメータで電流を、DMMで電圧を測り、電力値を手計算する方法です。この測定機器では、きれいな正弦波が得られる器具でないと、正確な数値が出てこないと考え、トースター、白熱電球、こたつ、半田ごて等の純抵抗系の器具を用意しました。
以下の表とグラフがその結果です。 ±10%程度 の誤差でした。
10W以下を除けば、約±10%の誤差に収まっていますので、机上計算だけの無調整にしてはまあまあだと思います。
このままでも良いのですが、一応どこで誤差がでているか、切り分けするために、CTの出力も確認してみました。(数値は上記表、グラフに入っています)大きい数値の時は98%と問題ないようです。 そうすると、負荷抵抗から先の問題となりますが、オシロスコープでの波形の確認では、変形するなど変な所はないように見えます。(以下オシロ画像参照: 赤はCTの出力直後、黄色がマイコンのピンでの波形)
そうなると、A/Dコンバータでの取込み関係で誤差でしょうか。またもう一つの現象として、CT出力の時点で、数値が少なくなるにつれ大きな値になるのも疑問です。オフセット的な特性があるのでしょうか?ノイズかな?
原因特定出来ていませんが、使用目的からすると問題ない誤差に収まっているため、このままでも十分です。力率が悪い器具は多く出ますので、相殺され丁度良いかもしれません。(楽観的)
その後、実使用での確認で測定範囲を広げる必要がありRLを330Ωに下げました。ついでに、補正を加えてしまおうと係数も変更しました。下記のグラフがその結果で、もう十分満足できる結果になりました。
次に、電気メータ(電力会社の積算電力量計)との相違を調べてみました。
実環境で確認し誤差「96.0%」という結果です。
82時間計測し、料金メータ44.0kWhに対し、各回路系統の合計値が42.24kWhでした。消費の多くが温水器で、平均力率が高い需要家と言えますので、それで良い精度が出たと言うべきでしょう。温水器が稼働しない日中の時間帯のデータでは誤差率が増加しているのは、その理由と合致します。
時計は+335秒でした。つまり+0.11%の精度ですが、PIC16F88のデータシートでは、内蔵クロックの精度がtyp±1%なのを考えると非常に良い個体に当たりました。この環境では、月間約40分・年間8時間・3年で1日ずれる程度なの十分です。
計器と呼ぶには恥ずかしい位の低精度ですが、実際使ってみると、正確でないとは言っても、1W台から数値が出てくるので、意外な動きをする器具を見つける事ができました。IHコンロの待機電力が20Wもあり、信じられないのですがメインスイッチをオフにするとかえって増えます!今まで、マメにオフにしていたのが悔やまれます。このIHコンロ、プラグが200V用でゴツい上、収納の奥にあり引き抜くのが大変なので困ったものです。(実は炒め物がやりにくいので、カセットコンロも使っています。IHは妊婦さんへの影響も危惧されているようですし、この機会に全面的に使うの止めようかとも思っています)後日、この現象は超低力率が原因と判明し、実際はそんなに大きくはありませんでした。また、エアコンはエネルギーイーターのように思っていたのに、それ程の大きな運転電力でもなく、省エネの代表と思っていた「こたつ」は意外と大きかった。寒冷地で必須の石油ファンヒータは起動時に電力を多く使うので、運転停止・開始は良く考えなければならないなど、色々な発見があります。(これについては、起動時よりも運転時の方が重要で、メジャーな製品でも100W級だったりします、同じ価格帯でも10W級の製品もあるよ)
<関連>
「自作電子小物/電力インジケータ/テーブルタップ版0.6.5」
<あとがき>
商用電源の電力については金銭的な問題を持っているので、詳しい情報は長らく非公開にしていました。このページの存在意義を考え直し、遅ればせながら全情報を公開させてもらいました。(肝心な情報が書かれていないと、がっかりしますので)間違った数字が出ても、笑って済ませられる場面にお使い下さい。(2009年10月)
たったこれだけの回路で、それも入手容易な部品だけで済むので、初めてPICで電子工作を行う方でも作れるんじゃないかと思うレベルです。もし、電気工事士の資格が無いのでしたら、今後の為にも取得を考えてみてはいかがでしょうか。かなり助けられると思いますよ。
実際製作してみると意外と奥が深いと言うか、自分がいかに簡単に考えすぎていた事に気づきます。きちんと学んだ方からすると怒られる様な内容ですが、逆にこういうのが面白いのです。設計を進めていくと「0.1Wまで出せるんじゃないか?」「やっぱり最大2kWは計れないとだめだろう」「こうしないと正確な数値が出ない」と願望が膨らんでき、いつのまにか複雑な回路になっている事に気づきます。金をかければ目的に近くなるのは当たり前。ここは、ぐっとこらえて精度は二の次三の次「単純・最小」でどこまでできるかで挑戦したような「小物」になっています。
市販品では「エコワット」があり、今ではかなり安く販売されております。4日以内で特定の器具に絞った測定では「エコワット」が断然お勧めです。テーブルタップ式で個別計測できるやつがあっても良さそうなのですが。
しばらくぶりにHI-TECH Cを使いました(V0.4)が、やはり楽です。ソース中に記述したロジックコードは、一度もコールされなくとも通常バインドされプログラムメモリ領域を占有します。しかし、このリンカは、自動的に未使用の関数を抜き取り、メモリを節約してくれます。この所、メモリ不足にならまされる事が多いので助かります。
富樫 豊彦 tog001@nifty.com
Non committal 7channel watt hour meter. Use for wall outlet power checker. Voltage is 100V only.