電流計を作ってみた
数年前くらいに、Ambient の下島さんという方のブログを読んで、無性に電流計が作ってみたくなりました(たぶん、めちゃ有名な人…)。
「ちょっと暇になったら作ってみよう…」なんては思ってはいたのですが、あっという間に何年も経過してしまいました。ですが、昨今の電気料金の高騰などもあって、とにかく「どこでそんなに無駄に電気を使っているか」を知りたくなってしまい、作ってみることにしました。
で、まず最初に作ったのはこんな感じ…
ほぼ下島さんの作例をそのままトレースしている感じなのですが、コスト削減のため、ATOM Lite を使いました。
電流計の改良
でも、その後いろいろやっていると、どうもオーディオジャックの部分がグラグラしたりするのが気になってしまい、もう一度作り直してみることにしました。作り直したものがコレです(箱に入れました!)
テレビの裏なんかに置いて使うことも想定していたので、ちゃんと箱とかに入れた方がいいんじゃないか?と思った次第です。
ちなみに、この箱はタカチさんという会社が製造しているネットワークケース(PF8-2-8W)と呼ばれるもので、形が非常に美しいです。パネルの加工などもやり易かった。
ただ、ブレッドボード&ATOM Lite の組み合わせでは高さ的にこのケースに入らなかったため、ESP32C3 というマイコンを使いました。
ATOM Lite はハンダを使わずに工作できるので、非常に楽でよいのですが、ブレッドボードの上に載せると、それなりの高さになります。
また、いろいろ調べてみると、どうも ATOM Lite は電波が弱いらしいことがわかりました。内蔵のアンテナがあまりよくないのかもしれません。
測定装置をテレビの裏側などに設置する可能性もあると考えると、多少なりとも電波が届きやすい方がいいだろう…と考えて、今回は ESP32C3 を選択しました。
ESP32C3 の外部アンテナは、ケースの裏側に貼り付けました(ちょっと曲がってます…)
消費電力の測定
完成した測定器で電流を測ってみました。まずは、テレビやレコーダー等を置いているテレビ周りの消費電力です。
テレビを見ているときや、ニュースの自動録画機能などを使っているときに、ポンと消費電力が上がるイメージです。冷蔵庫なんかはこんな感じになりました。
コンプレッサーが稼働するタイミングで消費電力が上がっているような感じだと思われます。実際に測ってみると「まあ、そうだよね」という結果が得られただけで、あまり感動はなかったかもしれない…
データのロギングの仕組み
今回、データをロギングするにあたって、MQTT を使いました。Ambient を使う方がもっと簡単にできたかもしれないのですが、当初サンプリングを少し細かめに取りたい…という気持ち(妙な拘り)があり、 MQTT で行ってみました(サンプリング間隔は約5秒)。
MQTT の Message Broker は、Beebotte のようなサービスを使うことも考えたのですが、今回は自宅内のサーバで Mosquitto を動かしてしまっています。エッジ側は ESP32C3 で、コードは Arduino言語ですが、ロギングのコードは Python で実装しています。コードの方はこちらで公開していま
すので、興味のある方は参考にしてみて下さい。
あまりお手本になるようなコードではありませんが、少しでも参考になる部分がありましたら幸いです。
電流センサーに限らず、その他のアナログセンサーでも「センサーからデータを取得して、Linux PC や Raspberry Pi なんかでロギングする」といった用途であれば、多少のコードの修正で汎用的に使えるように思いますので、ぜひ遊んでみて下さい。
後日談
こんな感じでハードもソフトも作り終えて、うまくデータも取れたのですが、いろいろと課題も見えてきました。
精度の問題
下は 60W の白熱電球を ON / OFF したときの消費電力のグラフなのですが、実際にデータを取ってみると、白熱電球を OFF にしたときも電力が消費されているように見えることがわかります。
スイッチを OFF にしている間は、本当は電流が流れていないはずなのですが、なぜか電流が流れているように見えます。この理由は、正確にはわからないのですが、おそらくこれは計算の過程で本当に電線を流れている電力だけでなく、雑音の電力も同時に測ってしまっているからだろうと思っています。
ちなみに、コードの方では、電力を次のような感じで計算しているのですが、この電流値の二乗平均を計算する際に、雑音の電力が紛れ込んでしまっているのではないかというのが、いまのところの仮説です。
(電力)=(電流値の二乗平均)x (100 V)
この式で「皮相電力」なるものが近似できているんじゃないかと思っているのですが、そもそもの計算方法が間違っていたら、すみません m(_ _)m
なお、実質的な消費電力(有効電力)を計算するには、更に「力率」なるものを掛けないといけないらしいのですが、この値は電気製品毎に異なるものらしいので、今回は「力率」を掛けない値で消費電力の傾向のみを見ることにしています。
結局、このノイズの出所はよくわからなかったのですが、こちらのブログによれば、M5Stack Basic では LCD が発生するノイズが原因になったりすることもあるらしいので、やはりこれは電源ノイズに起因するものだろうと思われます。
https://msr-r.net/m5stack-current-sensor/
今回は、なるべく仕組みを単純化したかったため、ESP32C3 に内蔵されている AD 変換器を使ってしまいましたが、本当に精度を出したい場合は、独立したAD 変換器を準備して、電源をマイコンとは別にバッテリーで取ったりするといいらしいです。私のコードの方では、ローパスフィルタで少し雑音を抑えるようにしています。
ESP32C3 の起動の問題
いままで使ってきたマイコンは、M5Stack や ATOM Lite などで、電源を繋ぐとすぐに起動していたのですが、ESP32C3 の場合は単純に USB から電源を供給するだけではうまく起動してくれないことがあります。USB を抜き差ししたり、リセットボタンを押したりすると、最終的には起動してくれるのですが、ちょっと注意が必要かもしれないです。
もしかすると、これは単に私のコードがまずいせいかもしれないので、もし何かご存じの方がいたら、お教え頂けると、ありがたいです。
格安の既製品
ところで、これを作り終わった後で、Amazon にこんな製品があるのを見つけてしまいました…
2000円以下で、消費電力を測るだけでなく、電源の ON / OFF までできる…と。
クランプ式の電流計の場合、ブレーカーのところで測ることで宅内全体の消費電力を測れたりするらしいのですが、今回知りたかったのは電気製品ごとの消費電力だったので、そんな用途には上のような製品で十分だった模様です(涙)。
私の場合、1週間くらい消費電力を少し測定したら、すぐに飽きてしまい、その後は結局あまり使うことがなくなったので、そう考えると消費電力を測定し終えた後に、いろいろ使い道のあるこうした製品の方がやはりいろいろな意味でお得かもしれないと思いました(数年前ならまだ作ることに意味があったかもしれない…)。
製作費用
下は参考価格ですが、概ね 4000円ほどでした。これに秋月電子さんやモノタロウさんからの配送料がかかるので、トータルでは 5000円ほどでしょうか。結構いいお値段になってしまいました…
この中で一番価格が高いのはクランプ式電流センサーなのですが、こちらは秋月電子にもうちょい安いものがありました。
https://akizukidenshi.com/catalog/g/gP-08960/
試しに 1個購入して、ステレオミニプラグをハンダ付けしてみましたが、うまく動いているみたいです(線は短いので、延長コードは必須かも…)。
このセンサーなら、箱以外の部品調達を秋月電子でまとめることができるので、送料も安くできそうです(秋月さんでもタカチのケースをたくさん取り扱ってくれると嬉しい…)。
更なる精度向上
更に精度を上げる方法としては、こんな感じでコードをクルクル丸めて、挟み込むといいみたいなのですが、あんまりクルクルやると危険かもしれません(そもそもクランプ式センサーで挟めなくなる場合もある)。中に通すコードを何重かにすることで、その分検出する電流の大きさを大きくすることができます。
この技はどこかのブログで拝見したのですが、どこで見たのかを失念してしまいました(すみません…)。
参考にさせて頂いたサイト
今回の記事を作成するにあたって、参考にさせて頂いたサイトです。回路図等はこちらの記事を参考にして頂くとよいかと思います。
Ambient 社の記事:
一番最初に参考にさせて頂いたサイトです。大変勉強になりました。
MSR 社の記事:
IoT 関連のいろいろな情報を発信して下さっているサイトです。こちらのサイトでもいつも勉強させて頂いています。