(2019.1.13 作成)
(2020.10.11 修正)
このページではI2Cで電流/電圧値をモニタすることができる写真のモジュールについて紹介したいと思います。TI製の高精度モニタIC(INA226)を使用しており、簡単に電流と電圧を同時に計測することができます。電流と電圧のどちらかだけであればPC接続できるマルチメーターなどでもできますが、機器内に設置したり、同時に長時間記録したい場合などには便利に使えると思います。
国内だとストロベリーリナックスさんが同様のモジュールを販売していますが、写真のモジュールはそれより安く1個130円ぐらいでAliexpressから購入可能です。ただ写真の2個のモジュールはAliexpressで別々のショップから購入したのですが、微妙に仕様が異なっています。シルクが違うのはよいのですが、シャント抵抗の値が違っていました(左は10mΩ、右は100mΩ)。購入される場合は事前に注意して購入された方が良いと思います。
なおシャント抵抗による違いですが、計測できる最大電流量が違います。ADCが16bitで1LSB=2.5μVなので 10mΩの場合 2.5u x 32768 / 10m = ±8.2Aまで計測可能です。一方100mΩの場合は±0.82Aまでが計測可能範囲になります。もちろんビット深度は変わらないので上限が低い方が分解能は高いです。
写真をよく見ていただければわかるのですが、SCLとSDAの印字が逆になっています。正解は右の基板の印字です。使用される場合はよくご確認ください。
上記モジュールの開発元を調べてみたのですが、分かりませんでした。このため仕様がよくわからなかったので、購入後回路図を作成してみました。ご参考になればと思います。写真右側に縦に4個穴が開いていますが、一番上と下は取付穴です。
INA226の仕様書を読むと右図のようなローパスフィルタをシャント抵抗とINA226の間に入れることを推奨されていますが、このモジュールにはそのようなフィルタは入っていません。ストロベリーリナックスさんのモジュールには入っているので、このあたりの丁寧さはさすがだと思います。
とても有名なICなのでインターネットでの紹介記事も多く、詳細な使い方はそちらを参照していただいた方が良いかと思います。
接続はとても簡単で左図のように負荷とシャント抵抗が直列になるように接続し、各部の電圧を測るだけです。
管理人の場合、使いやすようにコネクタをつけてみたのですが、右図のように不細工になってしまったのでそのうち変更すると思います。後でINA226モジュールだけ外せるようにしたのが敗因です。。。
一般的なI2Cの仕様で通信できるので自分でFWを作成することも十分にできますが、すでにArduinoのライブラリが公開されているのでそれを使用するのが最も楽だと思います。
管理人が調べた範囲では以下の2つが使い勝手がよさそうでした
前者のライブラリには変換完了を待つ関数が実装されていなかったので後者のライブラリをお勧めします。後者のライブラリはちょっと癖が強く、難解ではあるのですがI2Cアドレスを気にせずにサーチしてくれるので楽に使えるのでは?と思います。
上記のFWはArduinoなのでシリアルモニタでデータを読むのが基本だと思うのですが、簡単に使えるように受信側のソフトを作ってみました。このページの下の方でダウロードできます。
使い方は単純でComポートを開き、何回受信毎にプロット点を打つか決めてからStartボタンを押すだけです。測定終了後SaveするとCSVファイルとして結果が保存できます。
ただこのソフトのフォーマットに合わせてArduinoからデータを出力してくれないといけないので、Arduinoには上記Zanshinさんのライブラリを使用したスケッチを書いておく必要があります。
またこのソフトは流れてくる通信を表示しているだけで、制御等は一切行っていません。このためサンプリングレートや平均化回数などはArduino側で調整する必要があります。
以下のリンク先から上記ソフトのダウンロードが可能です。圧縮ファイルの中に
が入っています。
まだコメントはありません。