78K0で電力料金計
予告どおり、今回は78K0を使ってコンセントに挿した家電製品の電気代を算出する
「電力料金計」の製作記事です!
計測を開始してからの時間と、現在の消費電力(1400Wまで)と、計測開始から現在までの
電気料金が1秒ごとに更新されて表示されます。
この電力料金計では、電圧は100V一定であるとみなし、電流のみを測定しているので、
回路自体の誤差に加え、電圧の変動や電圧と電流の位相差によって誤差が生じます。
力率を常に1として計算してしまうので、消費電力というよりは皮相電力になります。
なので表示される電力は大まかですが、これよりあれのほうが電力を大きく消費する、
とか、1時間使い続けると電気代が大体何円になるかとか、そういうことがわかります。
パソコンのように、はっきりと消費電力が表示されていない機器の大まかな消費電力を
知るのに便利です。
■電力料金計の仕様!■
CPU:uPD78F0503DA
AC100V専用
最大計測電力:1400W
最大計測時間:約18時間
最大積算料金:4294円96銭まで
電力計測分解能:2W
電力算出方式:テーブルタップを通過する電流実効値×100
誤差:力率を算出しないことによる誤差を除いて約3%
コンセント差込口:3口
表示:USB接続したパソコン上のターミナルソフト
さらに今回は昨秋リリースされた新マイコン統合開発プラットフォーム
「CubeSuite」を使ってソフトを書いています!!!
CubeSuiteのすごいところは、このソフト一つでコンパイル・アセンブル・シミュレーション・
オンチップデバッグ・書き込みができることです。これまでの開発環境のように
別々にダウンロード・インストールする必要がなく、一つですんでしまうのです!
★重要★ 安易にまねしないように! ★重要★
今回の工作はAC100Vラインの被覆をむいてしまいます。なのできちんと絶縁をしないと、
ギャー!大惨事!!!ということになりかねません。工作経験の少ない人は
まねしないでください。この記事の執筆者(ome)は、記事の内容についてなんら
責任を負いません。まねするときは、むき出しになったAC100Vラインとそのほかの
導体部分の距離を十分に保つか、絶縁体をはさんできちんと絶縁してください!
■■■まずは「CubeSuite」をインストール!■■■
1.マイコン登録ユーザ になる!
NECエレクトロニクス マイコン登録ユーザ になっている人は、ここを飛ばして
.NET Framework・Visual C++ ランタイムライブラリ ダウンロードに進んでください。
マイコン登録ユーザ になっていない人はここ↓で
https://www5.necel.com/micro/tool_reg/McTechNoteEntrance.do
新規登録の方はこちら をクリックして新規登録します。
登録をして翌日か翌々日ぐらいに「このページにアクセスしてオンラインユーザ登録
手続きを続行してください」という旨と、その手続きのためのURLが載った
メールが届くので、URLをクリックして手続きを完了させます。すると、ログインすれば
NECエレクトロニクスのサイトからフリーツールをダウンロードできるようになります。
2..NET Framework・Visual C++ ランタイムライブラリ ダウンロード!!
http://msdn.microsoft.com/ja-jp/netframework/default.aspx
と
http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ja
にアクセスして、「.NET Framework」と「Visual C++ ランタイムライブラリ」を
ダウンロード&インストールしてください。
すでにインストールしている人は3.CubeSuite をダウンロードに進んでください。
3.CubeSuite をダウンロード!!!
http://www.necel.com/micro/ja/freesoft/cubesuite/index.html
にアクセスして、下のほうにスクロールするとダウンロードのためのボタンがあります。
それをクリックして、同意したり、ログインしたりしてダウンロードします。
ななんと450MBもあります。でっかいソフトなんですね。最初だけ時間かかりますが、
これまでのように、コンパイラ・アセンブラ・シュミレータなどをいくつも別々に
ダウンロードしなくてすみます。便利です。
ただ書き込みは、書き込み機能付インサーキットエミュレータ「MINICUBE」を
接続しないとできないので、「MINICUBE」を持っていない人は書き込みソフト
「PG-FPL3」をダウンロードしてください。ここ↓でダウンロードできます。
http://www.necel.com/micro/ja/freesoft/78k0/kx2/index.html
4.CubeSuite をインストール!!!!!
ダウンロードしたEXEファイルを起動すると次のようなウィンドウが出ます。
次へをクリックしてすすみます。ここでは開発ツールはみんなインストールして
しまいましょう!
ライセンスは購入していないので、この画面ではただ次へをクリックすれば大丈夫です。
インストールが始まりました。450MBもあるだけに時間がかかります。
omeの使用しているマシン(Pen4 2.6GHz 1GB)で約20分ぐらいかかりました。
しばしの間待ちます。
終わりました!さっそくこれでソフトを書いてみます!!
起動中です。起動中の画面がかっこよい。
起動直後の画面です。新しいプロジェクトを作成GOをクリックして
電力料金計のプロジェクト作成!!!
※ターミナルソフトも必要なので、TeraTermをダウンロードしてインストール
しておいてください。
■■■ハードウェアの説明!■■■
回路図はコレ↓。
■回路の大まかな説明■
左上らへんが電源部分で、ここでスイッチングACアダプタの+15Vから、
OPアンプに必要な±12Vとマイコンの電源の+5Vを作っています。
OPアンプはオフセット電圧の小ささと、ノイズの小ささからOP07CPにしました。
下半分は左から電圧−電流変換のための抵抗、絶縁のためのトランス、
入力された電圧を20倍するアンプ、全波整流回路です。
ダイオードはなんでか2素子入りのものを使っていますが、べつにスイッチングダイオード
2本でも大丈夫です。
■78K0に入る前■
1.抵抗に1Aの電流が流れると、オームの法則でV=RI=0.01×1=0.01[V]の
交流電圧が抵抗の両端に生じます。これが20倍されて交流0.2[V]になります。
2.さらにこれが全波整流回路に入り、実効値0.2[V]の脈流になります。
3.これを78K0のA/D変換の入力端子に入れ、RMS-DC変換を78K0のソフトウェアで行います。
■78K0に入った後■
78K0のAVREF端子にはアナログ電圧のリファレンスとして、約4.096Vを抵抗の分圧で
作って加えています。なので正しくA/D変換できるのは0〜4.096Vになります。
4Vをアンプの電圧利得の20倍で割ると0.2Vとなり、オームの法則からI=V/R=0.2/0.01=20[A]、
これが 瞬間で 検出できる電流の限界になります。これはあくまで瞬間の最大の
数字なので、仮に電流波形がゆがみのない正弦波であり、このときの電流のピークが
20[A]であるとすると、このときの電流の実効値はこれをルート2で割った値、
つまり14.14[A]になります。これに電圧の100Vをかけると、
P=VI=100×14.14=約1400[W]が今回計れる最大の電力であることがわかります。
※実効値の算出方法
実効値=瞬間値の2乗の平均の平方根
標準のライブラリmath.h内の平方根を算出する関数sqrt()は、計算に数秒かかって
しまうので、計測周期の1秒に間に合いません。そこで 平方根 算出 でググると
あゆしゃ法(世界最速の平方根算出アルゴリズム)というのを見つけました。
http://ayusya.hp.infoseek.co.jp/ProgramAlgorithm.html#Sqrt
この↑ページを下にスクロールしていくとあります。
世界最速だけあって、なんと約4ms@10MHzで平方根を出せました!すごい!!!
■■■ハードウェアの製作!■■■
まずは電力料金計の電源になるACアダプタの加工です。秋月の15V0.8A出力の小さい
やつです。電力料金計は必ずコンセントにつないで使うのに、使うたびに電力料金計の
ACアダプタをコンセントに挿していたのではめんどくさいので、電力料金計を
テーブルタップと一体化させ、その途中からAC100Vをとることにします。
ACアダプタを開けると内部はこんなんです。
で、プラグは使わないのではずしてしまいます。
AC100Vの入力とDC15Vの出力の線を引き出して、それが通るようにケースに穴を開けて、
プラグがあったところがむき出しにならないようプラ板を入れてケースを閉めたら
こんな風になります。
今回使うテーブルタップです。普通の3口のやつです。
加工したACアダプタから出した線を通す穴、テーブルタップのコードを通す穴、
USBケーブルを通す穴を電力料金計のケースに開けます。写真は加工後のケースです。
テーブルタップのコードの被覆をカッターでコの字の形に向きます。片側は芯線を
むき出しにするだけ(写真の右側)にし、もう片側は線をむき出しにして、抵抗を
取り付けられるだけの間隔をあけて芯線を切り(写真の左側)ます。
今回は小さなケースを選んでしまったので、基板の上はとてもきゅうくつです。
三端子レギュレータが三つ並んだ奥に、負電圧生成ICのLTC1144があります。
三つ並んでいる8PのICが0P07CPです。
ケースに入れるとき、基板の上にAC100Vの線がむき出しになっているので、絶縁の
ためにL字に曲げたプラ板を三端子レギュレータに取り付けています。
ケースに入れた写真です。トランスもあるので中は結構ぎっしりです。
ケースのふた部分がこれまたアルミ板なので、絶縁のためにプラ板を切ってのせてから
ふたをして完成です。
●●●ソフトウェア●●●
78K0のいいところは、コードサイズが32KまでCコンパイラが無料で使えるところです!
コーディングが楽!!!
ソースコードが結構大きくなってしまったので、ソースコードの公開はしません。
すみません。ですが、文章でソフトウェアの概略のみ説明します。
1.UART6をUSBシリアル変換ICにつなぎます。
2.ターミナルソフトから"S"か"s"を受信したら計測と1秒ごとの送信を開始します。
3.もう一度"S"か"s"を受信すると計測と送信を停止します。
4.計測していないときに"R"か"r"を受信したら、それまでの時間・電気料金をゼロクリアします。
5.計測中は1秒ごとに計測時間の変数をインクリメントします。
6.計測中は1秒ごとの10msの間に128回、A/D変換とその結果の2乗の算出、合計を出します。
7.128回の計測と2乗の算出、合計ができたら、その合計値を128で割って、2乗の平均値を出し、
さらにそれの平方根を求めます。つまりA/D変換結果の実効値を求めるということです。
8.A/D変換結果の実効値を電流の実効値に変換します。この電力料金計の分解能は
最大20Aの入力、A/D変換のビット数を10とすると、20/1000=0.02A、これに100Vを
かけるとP=VI=100×0.02=2Wであることがわかります。つまり、A/D変換結果の実効値に
2をかけた数字が電力になります。
9.お世話になっている電力会社のホームページから1KWhあたりの電力料金を見つけて、
それを3600で割ると単位が[KWs]、それをさらに1000で割ると単位が[Ws]となって、8.で
求めた電力[Ws]と単位がそろいます。この数字を求めた電力にかけると、1秒あたりの
電力料金になります。これを1秒ごとに積算していきます。
10.5.で求めた計測時間、8.で求めた電力、9.で求めた積算電力料金を1秒ごとに
パソコンに送信します。計測中は5.〜10.が繰り返されることになります。
■■■実際に計測!■■■
計測中の画面はこんな感じ。
右から計測時間:分:秒、そのときの電力、積算電力料金。
パソコンは消費電力が表示されていないので、いったいどれぐらいのものなのか
いつも疑問でした。そこで、omeが使用しているパソコンの電力を測ってみた!
パソコンのスペック:Pen4 2.6GHz 1GB、19インチ液晶モニタ×2
起動したあと何も作業していないとき(本体+画面)120W、1時間で2.7円
画面の電源が切れているとき(本体のみ)67W、1時間で1.5円
スタンバイ時:24W、1時間で0.5円
うーん、意外と少ない!
パソコンはアメリカ主導で作られてきたし、DOS/Vパソコンのパーツ屋に行っても
売っている電源は300Wとか400Wだからもっと大きいと思っていました。
CPU使用率が100%になると180Wぐらいを示していました。それでも意外と少ない!
■オマケ■
消費電力が一定で変動しない場合は、電化製品の消費電力と、1KWhあたりの電力料金が
わかっていれば、一時間あたりの電力料金は簡単に計算できます。
電力料金[円]=表示されている消費電力[W]÷1000×1KWhあたりの電力料金[円]
例)20Wの蛍光灯、東京電力,従量電灯B,第1段階料金,燃料調整費なし の場合
20÷1000×17.87=1時間当たり0.3574円
コメント
この投稿には、まだコメントが付いていません
コメントの投稿
ごめんなさい、現在コメントを付けることは出来ません
