三行でまとめると:
- アンペアが足りない。
- 台風15号が来た。
- 電流メーターを自作した。 (良い子は真似しないでね)
夏の我が家の電力不足
もともと電気は沢山使う傾向があったが、子供が出来てからさらに色々と家電が追加されいよいよ30Aでは足りなくなり、 しょっちゅうブレーカーを落とすことになっていた。
常時起動のサーバー、エアコン×2、洗濯乾燥機、食洗機、除湿機あたりが比較的多くの時間帯で電気を食い、 それらが動いているときに更にヘビーな電気ポットやコーヒーメーカー、ドライヤーなどが入るとアウトな感じ。とくに灼熱の日とかはキツイ。
で、先々月(台風15号の前)にさすがに契約アンペア数上げよう、ということにした。 しかし(建物が古いせいで?)うちに入っている電気が単相2線式で、東京電力持ち分含めて結構大掛かりな工事が必要だということになった。 その上にどうも電気屋さんが混んで忙しいらしく、なかなか時間がかかるらしい。
少し待って9月になり、なんとかとりあえず調査に来てくれて、屋内配線の調査などして東京電力に申請してもらい、ようやく二週間後ぐらいに工事が始まる?、という所まできた。
台風襲来
がしかし、ここで台風15号の直撃である。
幸いうちは停電しなかったが、うちの周りは停電だらけ。うちの周りだけではなく(ご存知の通り)停電が千葉県中で置きていて大変なことになった。 もちろん東京電力もフル稼働なんだろうが、それでも足りないようで日本中から電力会社の応援やら自衛隊の災害派遣やらが来ていた。 おそらく木更津中の電気屋さんも色々な対応に駆り出されていたに違いない。
そして電気屋さんからの音沙汰はなくなったのであった・・・。
(まぁ状況が状況なのでこちらからも特に催促もしてないけどね)
自給自足
多少アンペア足りないぐらいでピーピー騒ぐなという感じですね。死者が出る程の危険な状況での大停電だし。
こういうときは自分でなんとかするしかない。
とはいっても自前で電気を作るのはムリ。金がかかりすぎる。ムダも多くなるし。
そして考えたのは、電気は増やせなくても、家全体の消費電流メーターがあれば目安がわかるので、ブレーカー落ちは防げそう、という事。
今まではこの辺をカンに頼っていたり漫然と使ってたりしていたけど、警告してくれるものがあれば自分たちで家電の利用時間を調整できるので大分よくなりそう。
どんなものを作ろうか
- 家全体の電流値と、ついでにサーバー関連の消費電流を計測する。
- クランプセンサーを使って作る。家の回路側は一切改造しないようにする。(賃貸だし、そもそも危険)
- 家全体の電流がどれぐらい消費されているかが大体わかる表示をする。
- 特に30Aに近づいたらわかりやすく警告されるように。
- スマホとかで具体的な値も確認できるといい。
今回はArduinoを使用してつくった。食わず嫌いしていたのですが、これめっちゃ楽で良いね。
!!注意!!
以下では比較的危険なことをやっていて、怪我や死亡事故につながる可能性があるため十分注意すること。
真似したり参考にしたりした場合ももちろん僕は責任を一切責任を負いません。
使ったパーツ
- ESP WROOM 02の開発ボード
- Arduinoが使えて、Wifiも使えるボード。Wifiでデータ送信とかしてスマホとかPCと連携できる。
- 今回はSwitch ScienceのESP-WROOM-02開発ボードを使用しました。
- 秋月電子やその他の開発ボードだったり、自前で同等の回路を作ったりしても良さそう
- 秋月電子のADS1015モジュール
- CTセンサー SR-3702-150N
- 100Ωの抵抗 × 4
- CTセンサー用抵抗。精度が必要。今回は1%誤差の ( 酸化金属皮膜抵抗 3W100Ω )[ http://akizukidenshi.com/catalog/g/gR-11019/ ]を使用。
- 180Ωの抵抗 × 4
- LED用抵抗, 1/6Wのカーボンとかで十分。精度不要。
- 2.7kΩの抵抗 × 2
- 電位調整用の抵抗。カーボン抵抗使っちゃったけど、精度高いほうが良かったかも。
- セラミック キャパシタ 0.1μF
- IC電源の安定化用、多分無くてもいい
- セラミック キャパシタ 10μF
- 計測の基準電位の安定化用。今回の場合あったほうが計測値は安定した。パーツ配置によっては良いかも知れないし、 別容量のが良いかも知れない。
- 警告表示用のLED × 4
- 5〜10mAぐらいで使えるやつ。赤・黄・緑・青の4つ使ってカラフルにしました
- 適当なユニバーサル基板、ハンダ、線材
- 必要であれば適当な(2接点以上の)コネクタのオス+メス etc.
試作
とりあえず試しにブレッドボード上で試作してみました。
基本的にはESPボードにADCのADS1015をI2Cでつないで、 そのADCに(抵抗とか入れつつ)クランプをつなぐという感じです。
ついでにブレーカーの方も。
(注意) これオープンしたり内部に触ったりするのは大変危険ですのでご注意ください。っていうかおやめくださいってブレーカーの蓋に書いてあったよ!
こんな感じに計測したい回路の部分にクランプすればOK。家全体の電流と、一つの子系統 (サーバーマシンなどがつながっている系統) の電流を計測するようにしました。上図ではデバッグのために家全体計測のクランプが2つつながっています。
うちは単相2線だったからどこからとっても良かったけど、単相3線の場合はどうすればいいんですかね。。。
先行例を参考に実装したのですが、安定してきれいな波形を出した上で 正しく計測できるようになるまでは結構色々と試行錯誤しました。とりあえず引っかかったポイントだけ書くと
- ADS1015やADS1115でGNDからの負電位を計測しようとしている記事も有る (参考 [5], [6]) が、それは正しくない。
(GNDに対して)負電圧が計測できる、と誤認されているのかもしれないが、そうではなくて差分計測においてその基準電圧 (A1やA3に入れた電圧) に対しての
負電位が計測できる、という話である。
- そもそも ADS1015のデータシート によると、AINxに印加していい電圧はGND-0.3Vまでで、それ以下の電圧を掛けるとぶっ壊れるカモ、と書いてある。 (ADS1115も同様)
- したがって、CTセンサーの基準電位はGNDではなくて、適当な電圧を掛ける必要がある。
- それか整流して正電位だけ計測して計算するとか? (マイコン側で負圧を無視する、というのはNG)
- 僕も最初は負電位計測できると思ってたんですが (そしてある程度まで結構正しく計測できる)、 高負荷かけた状態だと波形がかなり乱れたり-2048 (最低数値)固定になっちゃったりして安定しません。
- 低負荷だったら-0.3Vに収まるので計測できる、とかいう話かもね
- Single EndedよりもDifferential Inputを使ったほうが精度が1ビット増えるので良い。ただし最大3入力しか使えなくなる。
- 今回はとりあえず2入力使えればよかったので差分計測にした。
- 逆に4入力使用する場合は、Single Endedにしてオフセットをプログラムで計算する必要が有る。
- 回路構成にも依るが、結構激しくノイズが乗っていたようだったので、色々と試した上でCTセンサーの基準電位とGNDに10μFのキャパシタ噛ませたら比較的波形がきれいになった。
- もしかしたら安定したのではなくて単になめただけかも知れない。(=値が正確になったわけではないのかも)
- 波形はArduinoのシリアルプロッタ使って見てました。Arduino便利。
- サンプリングはADS1015側は3300SPSに設定し、ESP側で概ね全サンプル取れるように調整した。
- サンプル値から電流値の計算方法は二乗平均平方根でよさそう。
- 東京の商用電流は50Hzなので、サンプル長は20msの倍数になるようにするとよさげ。そうすればサンプル開始時の位相とかあまり気にしなくていい
- 今回は12周期 (240ms) にした。
- 電流値が正しいかどうかは、家にあった別のクランプメーターを使用して見てました。ただこれも古かったり安物だったりして精度がよくわからないから、どの程度正しいのか分からない。
- だいたいこのクランプメーターと8%誤差ぐらいにまでは出来た。どっちがどうずれているのかは不明。
最終的に作った回路
回路図的なものを書いてみました。
中央のESPとADCはI2Cで接続する。 I2Cの信号線はプルアップが必要なので、AE-ADS1015のI2Cプルアップジャンパをショートさせるか、プルアップ抵抗を追加する必要がある。
左側の4つのLEDで消費電流状態を表示するようにESPの適当なIOピンに接続する。 ESP8266のIOピンは12mAまで流せるようなので、それ以下になるように抵抗をつける。
右側ではCTセンサーとADCの各チャンネルを接続。電圧は正負にかかり、またADCの電位はGND以上にする必要が有るので、CTセンサのベース 電位が3V3とGNDの中間になるように適当な抵抗 (R5,R6) を配置した。
一応基盤の写真も貼っときます。
ちょっと基盤実装後でも色々と試行錯誤してしまったため、不要なピンヘッダがあったりとか、配線が変だったりする。
(それにしても見事な芋ハンダですね)
プログラム例
消費電力量0A〜30Aで点灯するLEDの色がかわったり点滅したりします。
(実際に使っているプログラムからコードを削ったものです)
完成!
100均で買ってきたアクリルケースを頑張って穴あけ加工して、その中に完成品を入れました。結構湯気とか近いのでケースが無いと不安だったので。
うちの場合は大体電気使うもの、かつON/OFFよくするものはブレーカーがある台所に有るので、きっと大体問題ない。
色んな色が光って比較的楽しいぜ。
あとデータサーバーも適当にこしらえた上で、スマホから現在値を確認できるようにしたり、時系列データをプロットしてみたりしました。 あんま用途無いけど、とりあえず良い感じ。
そして・・・
結構良いものが出来たと思ったのだが、結局10月になってしまい猛暑も落ち着いてしまった。
自然とブレーカーが落ちることも無くなったのであった。
めでたしめでたし。
参考
- [1] ADS1015のデータシート - Texas Instruments
- [2] ADS111xのデータシート - Texas Instruments
- [3] M5Stackとクランプ式電流センサーで交流の電流値を測る
- [4] こじ研(ESP 端子を増やす編) - こじ研(小嶋研究室)
- [5] 3GPI とラズパイで家庭の消費電力量をグラフ表示する - Qiita @osamasao
- [6] RaspberryPiでリアルタイム電力計を作る - H.Ishikawa