August 15, 2008

XBee ワイヤレス電力計 設計資料

hamayanさんXBeeを使った家電等の総合管理システムを作られているようです。メインで使っているマイコンはFreescaleのcoldfireで僕自身は一度も触ったことがないのですが、製作記事が時系列に沿ってどんどん公開されているのでとても楽しいです。

そういえば以前こちらのブログでもXBeeを利用したワイヤレス電力計を製作したことを紹介しました。これは某プロジェクトの為に作ったコンセントにさせる電力計で、XBeeを通じて外部とデータの送受信を行うことができるものなのです。今回の記事では、プロジェクトも無事終了したこともあり、設計資料の公開に踏み切りたい思います。

emeter_8.jpg
トータルで8台作りました。

まずはEagleの回路図レイアウト図です。基板の外注は中国のpcbcartに頼みました。経験的にわかっていることなのですが、pcbcartを使う際は(一応対応を謳っている)Eagleのファイルを直接送るよりも、ガーバに変換してから送ったほうが確実です。基板の外形上が長方形ではなく変わった形をしているのは、この電力計のケースとして使ったエコワット(改造対策として現在は接着剤で分解しにくくなっています)にすっぽり収まるようにした結果です。

電力計のチップとしてAnalog Devices ADE7753を利用しました。内蔵のCTと組合わせることで正確に電流、電圧を時間積分し、電力を計算してくれる専用ICです。XBeeでやり取りするデータは、基本的にADE7753のレジスタで、これらを直接読み書きできるようにしてあります。

搭載しているマイコンはSilicon Laboratories C8051F410です。ファームウェアはsdccで開発しました。
ファームにはファイルシステムとしてELMのchanさんのTinyFatFsを搭載していますが、これを活用するには開発期間が短すぎました。XBeeと通信しない間、基板に実装されているmicroSDにデータを蓄えておく機能を実現しようとしたのですが、ファイルシステムはその名残です。
また、エコワットについていた液晶の制御もピン配置を解析の上ファームに取り込み、経過時刻を表示するようにしました。
XBeeとの通信は7bitsエンコーダ/デコーダという怪しげな方法を使っています。バイナリをXBeeに直接通すと通信状態から制御コマンドに移行してしまう可能性があったので、その対策です。

マイコン等の電源はAC100Vより生成しています。これにはRohm BP5034D5を使いました。手軽にAC100VからDC5Vが生成できます。が、AC100Vは非常に危険なので、しばらくトラウマになっています(一度配線ミスによりパターンが蒸発しましたよ、コンデンサ爆発ならまだしも…)。

PC側は、以前の記事にあるXbeeのUSBモジュールを使ってデータをやり取りしています。表示にはLabviewを使いました。動作しているイメージは下の動画を見ていただくのがよいと思います。

最後に、同じようなことをされている方がいましたら、その参考になれば幸いです。

12:06 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/655
コメント

goodです。
アナデバに電力演算用のICが有るとは知りませんでした。知っていたら、、、。

ACから絶縁無しで直接DCを作るICって、いつも引かれるものが有るのですが、やはり事故が起きた時が怖くてなかなか。
マイコン載せてオンチップデバックとか、、、ひょえ~~できません。

Posted by: hamayan : August 15, 2008 09:34 PM

>hamayanさん
AC100Vがとても"危険"だというのは、体感してみて初めてわかりました。作成した機器を使って計測しはじめたころは、火事がおきないか24時間付きっ切りだったのを覚えています(汗)。開発時においても100Vにつないだ状態でのオンチップデバックは怖いのでやっていません。途中の電源ネットからDC+5Vを外部給電していました。

Posted by: fenrir : August 16, 2008 03:26 PM

初めてコメント致します。
 電力計を製作中しています。ADE7753とarduino MegaでSPI通信していますが、読み出しているレジスターの値が、計算と全く合いません。データシートで書いてある内容の数値に成らないのですが? 何か根本的な勘違いが解釈に有るようです。申し訳けありませんが、例えばレジスター0x16のIRMSの内容について教えて頂けないでしょうか? 現在、ショート状態でも0x7FD820等、非常に大きい値に成っています。因みにZX信号同期、100ms間隔程度で読み出しています。
ご参考、私のブログです。
http://blogs.yahoo.co.jp/yyagu2002


 よろしくお願い致します。

Posted by: yagu : February 27, 2013 12:42 AM

>yaguさん
コメントありがとうございます、fenrirです。残念ながらかなり前にやった作業ですので、あまりその内容を覚えていません。電力の求め方ですが、当時は確か、理論電力消費値が力率100%のために簡単に計算できる抵抗を直結して、そこで消費された電力を元に、相対的に計算していたと思います。

Posted by: fenrir : March 1, 2013 11:18 AM

fenrirさん、ありがとう御座います。
 色々と確認しましたが、24Bitのデータの内、最上位のサインビットが勝手に立っていてました。データシートではサインビット無しの最大0x1C82B3なのですが? 結局上位ビットをマスクして読み取りデータとしました。なお、測定値の絶対値は、実態計算値とかなり合いませんね。fenrirさんやられたように、基準値との比較が最良の方法かも知れません。 一応、ハードウェア確認の為に米国から評価ボードを購入手配しました。
 fenrirさんは凄い事をやられているので、これからも記事を参考にさせて頂きます。

Posted by: yagu : March 2, 2013 12:11 AM
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。