なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Arduino電力計 - 一日の消費電力を表示させる

Posted by arms22 on 2013年06月23日 8  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続
  8. Arduino電力計 - 一日の消費電力を表示させる



IMGP8552

Arduino電力計のスケッチを改良して、一日の消費電力を表示できるようにしたよ。表面のスイッチで表示を切り替えれるようにしてある。スイッチは両面テープで固定した。雑ですみません。。

IMGP8553

ついでに過去8日分の消費電力も表示させたよ。これで1週間の消費電力のパターンが分かるはず。できれば時間帯別の消費電力も表示させたいところ。というのも家の電気料金メニューは利用時間帯で電気代が大きく異なるからね。朝10時から17時までの間は電気代が特に高くなるので、この時間はなるべく消費電力を抑えたい。

一日の消費電力の表示に対応したスケッチはこちら。

Download: Watt meter /w Arduino
https://code.google.com/p/arms22/downloads/detail?name=watt_meter-1.1.zip

スポンサーサイト

Arduino電力計 - 分電盤に接続

Posted by arms22 on 2012年08月12日 2  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続

イントロダクション


IMGP2907

引っ越ししたりして、ずいぶん間があいてしまったけど、ようやく分電盤に電力計を取り付けたよ。LANの配線がまだなのでパッチベイには接続していません。家電の電源を入れたり消したりして、消費電力が増えたり減ったりしている様子をみながら一喜一憂しております。1つ1つみていくと、お風呂やトイレの白熱電球の消費電力が大きい。LED電球に替えたくなります。

IMGP2908

主幹に取り付けている電流センサはU_RDの「CTL-10-CLS」です。以前から使っていた「CTL-6-S32-8F-CL」だと主幹のケーブルに挟めないので、より大きいタイプの電流センサを購入しました。


スケッチ


電流センサの変更に合わせてスケッチを変更しました。またパッチベイへのデータ送信のコードも削除しています。ネットワークに接続せず単体で動作させたい方はこちらのスケッチをお使いください。

Download: Watt meter /w Arduino
http://code.google.com/p/arms22/downloads/detail?name=watt_meter-1.0.zip







1年ぐらい前に比べてずいぶん安くなったかな?

電力モニター

Posted by arms22 on 2012年07月01日 0  0

411Tc0Vw0VL.jpg

Amazonで良さげな電力モニターを見つけたよ。イギリスのメーカの「OWL」という商品。国内ではLean Energyが「はやわかり」という名前で販売を行ってる。

「はやわかり」は電流センサが2個ついた分電盤に取り付けて使うタイプの電力モニタ。本体とセンサは微弱無線(315MHz)で通信する。センサ側は電池3本で約1年、本体側は電池3本で約6ヶ月もつ。電圧センサはついていないけど、簡易な測定なら電圧なんかなくってもいいんじゃないかと最近思っている。この構成はなかなかいい。

315MHz帯の微弱無線って使ったことないけど簡単に使えるのかなぁ。ストロベリーリナックスで無線モジュール売ってた。

微弱無線モジュール(315MHz送信)
http://strawberry-linux.com/catalog/items?code=82003

微弱無線モジュール 3V品(315MHz受信)
http://strawberry-linux.com/catalog/items?code=82005

Lean Energyのネットショップでは電流センサが単体で販売されている。オフィス用の大型の電流センサも扱っているようだ。この電流センサなんかカッコいい。

標準センサー
http://lean-egy.shop-pro.jp/?pid=44451970

大型センサー
http://lean-egy.shop-pro.jp/?pid=41400597

過去の電力計の記事はこちら。
http://arms22.blog91.fc2.com/?tag=電力計


節電モニター
節電モニター
posted with amazlet at 12.07.01
2 Save Energy Ltd
売り上げランキング: 1662


Arduino電力計 - 2系統対応の回路図とスケッチ

Posted by arms22 on 2012年02月05日 4  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続

イントロダクション


IMGP0150

おまたせいたしました。2系統の入力に対応したArduino電力計の回路図とスケッチを公開します。2系統入力の対応に加えてちょっと大き目のキャラクタLCDもつけてみました。リアルタイムに消費電力がわかると楽しいですからね。


回路図


Arduino電力計回路図

キャラクタLCDと電圧計測用のトランス部分を回路図に追記しました。キャラクタLCDは秋月電子の20×4行。トランスは大阪高波の電源トランス(100V-6V)です。フューズは0.3Aのガラス管タイプ、バリスタはZNRV14221U。

スケッチ


今回のバージョンからArduinoの1.0に対応しています。Arduino 0022以前のバージョンをお使いの方はArduino 1.0にアップデートしてください。

このスケッチにはPachube(パッチベイ)に計測した電力情報をアップロードする機能が組み込まれています。それらの機能をお使いになる場合は settings.h のENVIRONMENT_ID、API_KEY、macAddressを書き換えてお使いください。

Download: Power meter /w Arduino
http://code.google.com/p/arms22/downloads/detail?name=watt_pachube-1.0.zip

Arduino - Software
http://arduino.cc/en/Main/Software



picoPSU-160-XT
picoPSU-160-XT
posted with amazlet at 12.01.30
Mini-Box
売り上げランキング: 41674


最近はこんな小さなPC用の電源が発売されているんですね。これ12V入力-3.3V/5V/12V出力のDC-DCコンバーターです。電子工作にも使えるかも。

穴あけゴリゴリ

Posted by arms22 on 2011年09月26日 0  0

IMGP0150

Arduino電力計に大きめのLCDを取り付けてみました。画面はハメコミ合成...ではなく、ダミーの値を表示させています。筐体の加工は苦手でいつも仕上がりに満足したことがなかったけど、今回、オルファのPカッターというプラスチック板専用カッターを使って加工したところ、わりと綺麗に加工することができた。オルファの商品ページにはPカッターの詳しい使い方が掲載されている。

[オルファ]P-450
http://www.olfa.co.jp/ja/body/detail/20.html

プラスチックもそうだけど紙とか木とか柔らかい素材はなるべき綺麗に正確に加工する技術を身につけたいなぁと、最近思う。紙とか木とか自分の中では基礎みたいなものでその後、鉄とか金属の加工とかとか思ったり。


Arduino電力計 - ケースに組み込む

Posted by arms22 on 2011年06月22日 7  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続

イントロダクション


少し時間がかかったけどArduino電力計をケースに入れてみたよ。ケースに入れるとより電力計っぽくなりますな。

P1020686

ケースはタカチのOP180B(OP型開閉プラスチックケース)を採用しました。蓋付なのでメンテナンスしやすい。

P1020712

青と白の電線で電力計と分電盤をつなぎます。電線はラグ端子台のネジでしっかり固定します。電線が外れてショートしたり、感電したりすると大変だからね!

P1020691

中の様子。Arduinoと電源基板、電源トランスなどなど。まだ若干余裕があるので、モニタリング用のキャラクタ液晶もつけようかと考え中。

P1020707

バニラシールドに回路を組み立てました。電流センサと電源トランス、電源基板はピンヘッダとQIコネクタで接続します。

P1020706

茶色い基板はデジットで買った電源基板で、AC100VからDC10Vを作ってくれます。1つ350円と格安だけど、負荷がつながっていないと出力が止まってしまいます。リップル(脈流)も少し多めらしい。こいつの出力を平滑回路(コイルとコンデンサ)を通してArduinoのVinに接続します。

P1020705

大阪高波の電源トランスです。2つあるのは2系統の電力を測るためです。

一般的な住宅では単相3線式とよばれる3本の電線を使った方式で電気が供給されています。3本(赤・白・黒)の電線の真ん中の白はGND、赤と白で100V、黒と白で100V、赤と黒で200Vになります。赤と黒の電線には負荷が均等になるよう家電が接続されています。赤と黒、両方の消費電力を測らないと家全体の消費電力は得られません。

電源トランスの1次側にはヒューズを直列に、サージアブソーバを並列に接続しています。サージアブソーバは雷ノイズや他の電気製品のノイズを吸収してくれます。ヒューズはサージアブソーバが短絡モードで故障した時の対策としていれています。

P1020695

ラグ端子台の反対側にイーサーネットポートがあります。その下はUSBポート。さて、いよいよ次回は分電盤への取り付けです。乞うご期待。



SANWA SUPPLY ワットモニター TAP-TST8
サンワサプライ
売り上げランキング: 81


サンワサプライ ワットチェッカーplus TAP-TST7
サンワサプライ
売り上げランキング: 1407


Arduino電力計 - Pachubeにデータをアップロードする

Posted by arms22 on 2011年05月18日 3  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続

イントロダクション


2015/9/27 追記
PachubeはXivelyというIoTのクラウドサービスに変わったようだ。


Arduino電力計で計測したデータをPachube(パッチベイ)にアップロードしてみたよ。

Pachubeはインターネットを介して環境データやセンサデータなど共有可能にするウェブサービスだ。Pachubeに参加すると、アップロードしたデータを共有したり、共有されたデータを使って新しいウェブサービスやアプリケーションを作ったりすることができる。例えばJapan GeigermapはPachubeにアップロードされた放射線データを日本地図にマッピングし、情報を可視化している。

Japan Geigermap : At-a-glance
http://japan.failedrobot.com/

Pachubeにアップロードしたデータは専用のページで見る事ができ、データは数ヶ月に渡って保存される。これでいつ・どのくらい電気を使ったのか確認することができるようになった。実際のところ、電力計はまだ分電盤に取り付けておらず、テーブルタップに繋がった機器の消費電力を計測して、自宅にいる間だけアップロードしている。

environment_feed_arms22_labs.png
Environment Feeds from arms22's lab

今回、Pachubeのサインアップ・フィードの登録・データのアップロードの仕方などは「レシピ39:自分の生活環境の放射線量を計測したい」を参考にした。Pachubeのサインアップなどの詳しい手順はレシピ39を参照してほしい。


ハードウェアの準備


IMGP0980

Arduinoをインターネットに接続するにはイーサネットシールドが必要だ。イーサネットシールドは写真のようにArduinoのピンソケットに挿して使う。こんなふうに基板を挿すことで機能を拡張できるのがArduinoの良いところだね。こう言った拡張基板を「シールド」と呼んでいる。

スイッチサイエンス - Arduinoイーサネットシールド(microSDスロット付)
http://www.switch-science.com/products/detail.php?product_id=383


Pachubeのサインアップ


まずはPachubeのサインアップから。次のページからPachubeにサインアップしよう。

Pachube - Choose a plan and sign up below
https://www.pachube.com/plans

1ヶ月ほど前、Pachubeの料金プランが一新され、7つ(ぐらい)あったプランがBasic、Pro、Premiumの3つになった。ProとPremiumは有料、Basicは無料だ。とりあえず始めたい人はBasicプランを選ぶといい。3つのプランの比較表を作ったのでPro、Premiumを検討したい人は参考にしてほしい。Proは365日データが保存されるのでおすすめ。

Pachube BasicPachube ProPachube Premium
非公開可能?不可不可可能
データの保存期間30日365日無期限
データストリーム5 データストリーム40 データストリーム250 データストリーム
APIアクセス制限5 回/分40 回/分250 回/分
データインポート制限500 データポイント/日4000 データポイント/日無制限
価格無料1ヶ月 $ 2.99
1年 $23.88(1ヶ月 $1.99)
1ヶ月 $ 11.99
1年 $95.88(1ヶ月 $7.99)


サインアップが終ったらタイムゾーンを日本/東京に変更しておく。
my profile→Details [click here to edit your info + password]→Time zone→(GMT+09:00) Tokyo


フィードの登録


次に新しいフィードを登録しよう。

Pachube - INPUT・Register a Feed
http://www.pachube.com/feeds/new

最低限入力しなければならない項目はFeed typeとFeed titleだ。Feed typeはmanualを選択しておけば良い。それ以外の項目について簡単に説明すると、
  • Description: フィードの概要
  • Feed tags: フィードタグ、カンマで区切って入力する
  • Website: ウェブサイトのURL
  • Contact email: メールアドレス、公開されるので非公開にしたいアドレスを入力しないこと
  • Location name: 場所の名前
  • Elevation (m): 高さ
  • Exposure: indoor(屋内)かoutdoor(外)
  • Disposition: fixed(固定)かmobile(移動体)
  • Domain: physical(物理的)かvirtual(仮想)
  • Datastream: データストリーム(この後解説)


データストリームの追加


Basicプランでは最大5つのデータストリームを追加できる。ここでは電力(W)、電圧(V)、電流(A)、皮相電力、力率の5つを追加する。それぞれID、タグ、単位、シンボル、タイプを指定して追加する。

datastream_example.png

タイプはbasic SI・delived SI・delived unitsなど5種類あるが、それぞれどのような意味かはっきりしないので、分らなければ何も選択しなくても良い、と思う。SIは国際単位系のことでbasic SIはSI基本単位のことだと思われる。SI基本単位はm(メートル)・kg(キログラム)・s(秒)・A(アンペア)・K(ケルビン)・cd(カンデラ)・mol(モル)の7つが定められている。

Wikipedia - SI基本単位
http://ja.wikipedia.org/wiki/SI基本単位

データストリームを追加したらSave Feedをクリックして、フィードの登録を完了しよう。登録を完了するとフィード専用ページにジャンプする。フィード専用ページのURL末尾5桁の数字はフィードIDなのでメモしておこう。
http://www.pachube.com/feeds/22512


APIキーの追加


PachubeにデータをアップロードするにはAPIキーが必要だ。 サインアップ時、すべての機能にアクセス可能なマスターAPIキーと呼ばれるAPIキーが1つだけある。マスターAPIキーは第三者に渡ると困った事態になりかねないので、非公開にしておく。

代わりにいくつかの制限を加えたAPIキーを作成し、それを使う。my profile→API Keysと進み、Additional API Keys→New API Keyを選ぶ。Permissions(アクセス権)、Expires(期限)を設定し、Create New API Keyを押すと新しいAPIキーが作成される。このAPIキーはいつでも削除できる。もし不正に利用された場合、直ちに削除すれば良い。

pachube_add_api_key.png

Show KeyをクリックするとAPIキーを確認できる。この長ったらしいキーもメモしておこう。

show_api_key.png


サンプルスケッチ


スケッチは次のURLからをダウンロードしてほしい。このスケッチはEthernetDHCPライブラリを使用するので、EthernetDHCPライブラリもあわせてダウンロードしておく。EthernetDHCPライブラリはArduinoのライブラリフォルダにコピーする。

Download: Power meter /w Arduino
http://code.google.com/p/arms22/downloads/detail?name=watt_pachube-001.zip

gkaindl.com - Arduino Ethernet
http://gkaindl.com/software/arduino-ethernet/

watt_pachube.pdeを開いて、settings.hタブを選択し、次の変数の値を書き換えよう。
  • environmentId
    フィードID、フィードの登録でメモした5桁の番号。
  • apiKey
    APIキー
  • macAddress
    イーサネットシールドに貼られているシールの12桁の番号
値を書き換えたらArduinoにスケッチをアップロードだ。

簡単にスケッチの内容を解説すると、setupはEthernetライブラリの初期化、DHCPでIPアドレスの取得を行う。loopはcalcWatt(消費電力計算)の呼び出しと1分間隔でupdateDataStream(Pachubeへのデータアップロード処理)の呼び出しを行う。実際のデータのアップロードはupdateDataStreamで行う。データは次の様にデータストリームの追加で指定したIDとデータ(数値)をカンマで区切って送る。
0,32.340
1,105.970
2,0.567
3,60.056
4,53.849


次回予告


ここまででArduino電力計の基本システムは出来上がった。次回はケースの作成と分電盤への取り付けを行う予定。長々と続けて来たこの連載も次で最後、かも。


YAPAN.org - レシピ39:自分の生活環境の放射線量を計測したい
http://www.yapan.org/main/2011/03/measure_radiation_dose.html

Ondra on Tumblr - 測ることで続ける節電
http://tumblr.ondra.cc/post/4866024075/saving-electricity-by-measuring

菅工房 - ウェザーステーション観測データ
http://www.sugakoubou.com/doku/ウェザーステーション観測データ


Arduinoイーサネットシールド(microSDスロット付)
スイッチサイエンス
売り上げランキング: 9571

Arduino電力計 - サージ対策

Posted by arms22 on 2011年04月26日 3  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続

イントロダクション


サージは落雷や静電気、他の機器の影響により発生する瞬間的な過電圧・過電流のことだ。電線や電話線、テレビのアンテナなどから侵入してくる。電線に取り付けられた電力計は、間違いなくサージの影響を受けるだろう。最悪、電力計は破壊されてしまうかもしれない。Arduino電力計の電流センサと電源トランスは商用電源の100Vと絶縁されているので、サージで回路が破壊されることは少ないと思うが、今回、追加のサージ対策として電源トランスの100V側(1次側)にバリスタとヒューズ、Arduinoのアナログ入力(2次側)にクランプダイオードと抵抗を入れることにした。

※これらの対策はサージに対してある程度有効だが万全ではない


Arduino側の対策


Power meter /w Arduino 回路図 rev3
追加した部品はR6とR7の抵抗と、D1~D4のショットキーバリアダイオードだ。R6とR7は過電流を制限し、D1~D4は「クランプダイオード」と呼ばれ過電圧を電源・GNDに逃すように働く。ダイオードは5.1Vのツェナーダイオードでも代用できる。ツェナーダイオードを使う場合、D1とD4の2箇所だけ入れればよい。


100V側の対策


IMGP0930

電源トランスの100V側の電線に、並列でバリスタを接続し、直列でヒューズを入れる。バリスタは電圧によって抵抗値が変わる素子。ある一定以上の大きな電圧をかけた時に抵抗値が急激に下がり、大電流を流す。この時の電圧をバリスタ電圧と呼ぶ。ヒューズはバリスタがサージによって破壊され、短絡モードで故障した場合を想定し必ず入れておく。バリスタはメーカによってはサージアブソーバと呼称される場合もある。バリスタの選定、接続の仕方についてはメーカーのテクニカルノートなどを参照してほしい。


雷サージ - Wikipedia
http://ja.wikipedia.org/wiki/雷サージ

バリスタ - Wikipedia
http://ja.wikipedia.org/wiki/バリスタ

ZNRサージアブソーバ Dタイプ Vシリーズ - 取り扱いに関する注意事項
http://industrial.panasonic.com/www-data/pdf/AWA0000/AWA0000PJ14.pdf

ZNRサージアブソーバ Dタイプ Vシリーズ - 酸化亜鉛バリスタZNRについて
http://industrial.panasonic.com/www-data/pdf/AWA0000/AWA0000PJ1.pdf

日本ケミコン - 使用上の注意
http://www.chemi-con.co.jp/catalog/pdf/va-j/va-sepa-j/va-precaution-j-100701.pdf

日本ケミコン - テクニカルノート
http://www.chemi-con.co.jp/catalog/pdf/va-j/va-sepa-j/va-appguide-j-100701.pdf




Arduino電力計 - 回路図とスケッチ

Posted by arms22 on 2011年04月26日 26  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続

イントロダクション


前回の続き。今回は回路図とArduinoのスケッチについてちょろっと解説します。まだまだ試作の段階なので回路とスケッチは今後も変わると思います。

2011/4/26
回路図とスケッチを更新しました。回路図にはサージ対策を追加、スケッチは電力計算精度を向上させました。


回路図


Power meter /w Arduino 回路図 rev3

電圧の検出には電源トランスを使っています。電源トランスはX1-1,X1-2に接続します。電源トランスの出力はR1/R2によって分圧され、Arduinoのアナログ入力端子1番につながります。R1/R2の分圧比は実験的に求めた値です。使用するトランスによってはArduinoの電源電圧を超えてしまう場合があります。Arduinoに接続する前にテスタでAC電圧を測り、Arduinoの電源電圧を超えてないことを確認します。テスタのAC電圧は平均値なのでピークはもっと高い値になります。テスタで計測したAC電圧に1.414(√2)をかけた値が最大電圧(振幅の最大値)になります。

電流センサはX2-1,X2-2に接続します。電流センサの出力には100Ωの負荷を接続し、Arduinoのアナログ入力端子2番に接続します。電流センサの出力電圧は次の式で求められます。
Eo = K * Io * RL / n
Eo : 出力電圧(Vrms)
K : 結合係数
Io : 貫通電流(Arms)
RL : 外付負荷抵抗(Ω)
n : 巻数(ターン)
巻数は電流センサによって異なります。電流センサのデータシートで確認します。結合係数は負荷抵抗によって変化するので、データシートで確認します。

電源トランス、電流センサの端子X1-2、X2-1にはArduinoの電源電圧を2分の1にした電圧(=VCC/2)を加えます。こうすることで電源トランス、電流センサの出力波形はVCC/2を基準に出力されます。


部品


使用したトランスは大阪高波のSIA-0035という入力100V-出力6V/0.35Aのトランスです。あとになって知ったのですが電圧検出には専用のトランスを使うほうが良いようです。

興和電子工業株式会社 - 電圧検出用トランス(PT・VT)
http://www.kowa-denshi.com/product/trans/PT.html

共立エレショップ - 電源用トランス
http://eleshop.jp/shop/goods/search.aspx

電流センサはU_RDのCTL-6-S32-8F-CLです。共立エレショップで\1,575と少々高めですが、分電盤のワイヤにカチっと挟んで止めるだけで使えます。

共立エレショップ - 分割・クランプ型交流電流センサ / CTL-6-S32-8F-CL
http://eleshop.jp/shop/g/g842136/


スケッチ


// 端子定義
const int arefPin = 0;
const int voltagePin = 1;
const int currentPin = 2;

// 商用電源周波数
#define POWER_FREQ        (60)

// 1サイクルあたりのサンプル数
#define NUMBER_OF_SAMPLES (25)

// サンプリング間隔(マイクロ秒)
#define SAMPLING_PERIOD   (1000000/(POWER_FREQ * NUMBER_OF_SAMPLES))

// デバッグ用
#define DEBUG 1

// 実効電圧、実効電流、有効電力
float Vrms;
float Irms;
float Watt;

// サンプリング用バッファ
int VASamples[NUMBER_OF_SAMPLES*4];

void calcWatt(void)
{
#define kVT    (86.9817579)    // 実測にもとづく係数
#define kCT    (100.0 * 0.99 / 800.0) // R * 係数 / 巻き数

  unsigned long t1,t2;
  int i,r,v1,a1,a2,v2;

  t1 = micros();

  // 1サイクル分のAD値をサンプリング
  for(i=0; i<NUMBER_OF_SAMPLES; i++){

    r = analogRead(arefPin);
    v1 = analogRead(voltagePin);
    a1 = analogRead(currentPin);
    a2 = analogRead(currentPin);
    v2 = analogRead(voltagePin);

    VASamples[(i*4)+0] = v1 - r;
    VASamples[(i*4)+1] = a1 - r;
    VASamples[(i*4)+2] = a2 - r;
    VASamples[(i*4)+3] = v2 - r;

    do {
      t2 = micros();
    } 
    while((t2 - t1) < SAMPLING_PERIOD);
    t1 += SAMPLING_PERIOD;
  }

  // 1サイクル分の電圧と電流、電力を加算
  Vrms = 0;
  Irms = 0;
  Watt = 0;

  for(i=0; i<NUMBER_OF_SAMPLES; i++){
    v1 = VASamples[(i*4)+0];
    a1 = VASamples[(i*4)+1];
    a2 = VASamples[(i*4)+2];
    v2 = VASamples[(i*4)+3];

    float vv = ((((v1+v2)/2) * 5.0) / 1024) * kVT;
    float aa = ((((a1+a2)/2) * 5.0) / 1024) / kCT;

    Vrms += vv * vv;
    Irms += aa * aa;
    Watt += vv * aa;
  }

  // 2乗平均平方根(rms)を求める
  Vrms = sqrt(Vrms / NUMBER_OF_SAMPLES);
  Irms = sqrt(Irms / NUMBER_OF_SAMPLES);

  // 平均電力を求める
  Watt = Watt / NUMBER_OF_SAMPLES;
}

float watt_hour;
float vrms_sum;
float irms_sum;
float watt_sum;
int watt_samples;
unsigned long last_update;

void setup()
{
  Serial.begin(57600);
  watt_hour     = 0;
  vrms_sum      = 0;
  irms_sum      = 0;
  watt_sum      = 0;
  watt_samples  = 0;
  last_update   = millis();
}

void loop()
{
  unsigned long curr_time;

  // 電力を計算
  calcWatt();

  // 1秒分加算する
  vrms_sum += Vrms;
  irms_sum += Irms;
  watt_sum += Watt;
  watt_samples++;

  // 1秒経過したらシリアルに出力
  curr_time = millis();
  if( (curr_time - last_update) > 1000 ){
#if DEBUG
    for(int i=0; i<NUMBER_OF_SAMPLES; i++){
      Serial.print(VASamples[(i*4)+0]);
      Serial.print('\t');
      Serial.println(VASamples[(i*4)+1]);
      Serial.print(VASamples[(i*4)+3]);
      Serial.print('\t');
      Serial.println(VASamples[(i*4)+2]);
    }
#endif
    vrms_sum /= watt_samples;
    irms_sum /= watt_samples;
    watt_sum /= watt_samples;

    Serial.print(vrms_sum);
    Serial.print("Vrms, ");

    Serial.print(irms_sum);
    Serial.print("Irms, ");

    Serial.print(vrms_sum * irms_sum);
    Serial.print("VA, ");

    Serial.print(watt_sum);
    Serial.print("W, ");

    // 力率 = 有効電力 / 皮相電力
    Serial.print((watt_sum * 100) / (vrms_sum * irms_sum));
    Serial.print("%, ");

    // 積算Whを求める
    watt_hour += watt_sum / 3600.0;
    Serial.print(watt_hour);
    Serial.println("Wh");

    watt_samples = 0;
    vrms_sum = irms_sum = watt_sum = 0;

    last_update = curr_time;
  }
}

簡単に処理の流れを解説します。まずsetupでいくつかの変数を初期化、loopで1秒間に数十回calcWattをコール、1秒間の電力の平均を求め、シリアルで出力します。

電圧・電流のサンプリング、電力の計算はcalcWattで行います。calcWattは交流電源の1サイクル分(関西だと60Hz、関東だと50Hz)の電圧・電流をサンプリングし、サンプリングした値から1サイクル分の電圧・電流、電力を計算しています。計算した値はVrms変数、Arms変数、Watt変数に格納します。

電圧はanalogReadで読み取った値をVに変換し、実験で求めた係数(87.5734677)を掛けて求めます。電流は次の式で求められます。
Io = Eo / (K * RL / n)
例えばanalogReadで読み取った値が200mVだった場合、
Io = Eo / (K * RL / n)
Io = 0.2 / (0.99 * 100 / 800)
Io = 0.2 / (0.12375)
Io = 1.6A
となります。

次回はPachubeへのデータアップロードに挑戦します。


Sanwa クランプメータ DCM-400
三和電気計器
売り上げランキング: 510


マザーツール 交流デジタルクランプメータ MT-600A
マザーツール
売り上げランキング: 4903

Arduino電力計 - プロトタイプ

Posted by arms22 on 2011年04月11日 3  0

目次

  1. Arduino電力計 - プロトタイプ
  2. Arduino電力計 - 回路図とスケッチ
  3. Arduino電力計 - サージ対策
  4. Arduino電力計 - Pachubeにデータをアップロードする
  5. Arduino電力計 - ケースに組み込む
  6. Arduino電力計 - 2系統対応の回路図とスケッチ
  7. Arduino電力計 - 分電盤に接続

イントロダクション


Power meter /w Arduino

ずっと以前から作って見たいと思っていた電力計を作り始めた。電力計はワットチェッカーやワットモニターなど安価でそこそこ使えるものが市販されているが、部屋全体の消費電力が知りたい場合、それらを電化製品1つ1つ(或いはテーブルタップ)に取り付ける必要がある。また照明など壁に埋め込まれた機器には取りけられない。

僕が作りたい電力計は機器とコンセントの間に挿入するタイプではなく配電盤分電盤に入れて※1、部屋全体の消費電力をモニタリングするような装置だ。刻々と変化する消費電力をリアルタイムでモニタし、データはXivelyPachube(パッチベイと読む)※2にアップロード+蓄積、何時でも何処でも監視できるようにする。

蓄積したデータを使って「今日の最高・最低電力」とか「本日の消費電力」とか表示させたい。数年分のデータがたまれば明日の電力予測もできるかもしれない。温度計のとなりに電力計を置く日も近いかもしれない。

※1...配電盤分電盤の作業には電気工事士の資格が必要です。違反した場合には懲役または罰金の規定があります。
※2...エネルギーや環境データなど、さまざまなセンサーデータの共有を可能にするウェブサービス。


プロトタイプ


Power meter /w Arduino Power meter /w Arduino

まずはArduinoを使って簡単に実験+プロトタイプを製作。電力計算に必要な電圧と電流を測定する部分を作る。

電圧は電源トランスを使って100Vを6Vぐらいまで落とし、さらに抵抗で2Vぐらいまで落としてからArduinoのアナログ端子に入力する。電流はU_RDの極小型クランプ式電流センサ「CTL-6-S32-8F-CL」を使う。電流センサのワイヤに100Ωの負荷をつなぐと、機器側に流れた電流に応じた電圧が発生する。この電圧をArduinoのアナログ入力で読み取る。電流センサは電源コードの片側に通して使用する(写真右)。

電源トランスの定格出力電圧は定格電流を流した時の電圧で、負荷が軽いと2~3割り高い電圧が出力される。今回使った電源トランスだとピークツーピークで25Vもでていた。マイコンを壊さないようしっかり抵抗で電圧を下げて使う必要がある。

電流センサの出力は0V~1Vとマイコンで扱い安い電圧が出力されるが、5V動作のAD変換の分解能が4.8mVと少々荒くなっていて若干誤差がでる。誤差を減らす為にアンプを通して電流センサの出力をもう少し高い電圧にする必要がありそうだ。


実測


プロトタイプを使っていくつかの機器の電圧、電流、消費電力を測定してみた。測定はテーブルタップに電流センサ、電源トランスを繋いだ状態で対象の機器を1つだけつないで行った(この記事のトップ写真)。青色のグラフは電圧、緑色のグラフは電流を表している。グラフの下に実効電圧(Vrms)、実効電流(Arms)、皮相電力(VA)、有効電力(W)、力率(%)、積算電力(Wh)も表示している。


定格100V、54Wの白熱電球。ワットは近い値がでている。力率100%のはずだけど96%とほんの少しだけ低い。ADCの変換時間分、位相はずれるけど4~5%もずれないはずだが。。回路側はオシロスコープがないと何ともならないな。
hakunetu-denkyu-hakei.png
103.25Vrms, 0.55Arms, 57.05VA, 54.98W, 96.38%, 0.85Wh


定格20Wの電球型蛍光灯。スパイク上の電流波形。
keikoutou-hakei.png
104.23Vrms, 0.39Arms, 40.37VA, 19.92W, 49.35%, 0.25Wh


MacBookのACアダプタ。スパイク上の電流波形。蛍光灯より鋭い。
acadapter-hakei.png
103.75Vrms, 0.38Arms, 39.67VA, 17.23W, 43.43%, 0.27Wh


MacBookのACアダプタやWiFiルータ、CATVコンバータのアダプタ。
hukugou-hakei.png
104.02Vrms, 0.64Arms, 66.59VA, 33.59W, 50.45%, 14.11Wh


長くなりそうなので回路図、Arduinoのスケッチはまた次回。


参考URL


電流センサのUユー・アール・ディー - 技術情報
計測技術研究所 - ワットチェッカーの動作原理
Yahoo!知恵袋 - ワンチップマイコンで交流電圧(正弦波)を測定したいのですが...
Aitem-Lab - 交流の大きさ表現
力率と皮相・有効・無効電力
YOKOGAWA - 交流電力の基礎知識と電力測定器の仕組み


関連URL


Under Power 研究所 - MSP430-CQ ベースボードのアプリケーション AC電圧/電流計
Fenrir's Blog - XBeeでワイヤレス電力計
がた老AVR研究所 - Xbeeを使った電力ロガーの仕様を考える
Arduino Blog - WiFi Enabled Whole House Power Meter
Twitterで電力消費量が丸ハダカ! 画期的なエコハック「Tweet-a-Watt」



サンワサプライ ワットチェッカーplus TAP-TST7
サンワサプライ
売り上げランキング: 929


SANWA SUPPLY ワットモニター TAP-TST8
サンワサプライ
売り上げランキング: 2117

該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。