create 2014.03.22
update ----.--.--

title

INA226の試用(USB電流計を作る)

回路図

プロジェクトファイル一式 2014.03.22
更新履歴



収集癖・・・

前作の「電流計付きUSB電源アダプターを作る」 の時に電流測定方法を検索して見つけた「Texas Instruments」 の「INA226」が気になって購入してしまいました。
相も変わらず収集癖が治りません。

INA226」は若干の部品を接続するだけでマイナス電流も高精度で測定が可能なICで、2次電池の充・放電を監視するモニター用として最適と思われます。
さらに、ローサイド・ハイサイドの両方の測定方法に対応している点も見逃せません。

INA226」はパッケージが小さい為、手作業でのハンダ付けが難しいかもしれません。
ストロベリーリナックス」から「INA226 I2Cディジタル電流・電圧・電力計モジュール」が低価格で発売されているので、こちらの商品を利用するのが無難かと思われます。

しかし、天邪鬼な私はプリント基板を自作して手作業で「INA226」を実装することにしました。


猿まね・・・

最終的には「ゆき」さんの「太陽電池充電システムの製作・実験」のようなシステムを作ってみたいと思っておりますが、まずは「INA226」の使い方を学習するための必要最小限の回路を製作することにしました。

で、目を付けたのが左にあるような製品です。
なんとなく、「自分でも作れるかな?」と思い回路図を書いてみました。

いつもの事なのですが、私が作るものは独創性が無くてダメですね。

上記の商品は楽天アフィリエイトからリンクしております

シャント抵抗・・・

INA226」はシャント抵抗で発生した電圧降下を2.5μV単位で-32768~+32767LSBまで測定可能です。

前作の「電流計付きUSB電源アダプターを作る」と同じ抵抗(10mΩ)を使用すると

分解能 = 2.5μV ÷ 10mΩ = 0.25mA
測定範囲 = -8192mA ~ +8191.75mA

データシートの参考回路図と同じ抵抗(2mΩ)を使用すると

分解能 = 2.5μV ÷ 2mΩ = 1.25mA
測定範囲 = -40960mA ~ +40958.75mA

使用するシャント抵抗の値によって、分解能と測定範囲が決まります。
シャント抵抗の値が小さいと測定範囲が広がりますが分解能が下がり、シャント抵抗の値を大きくすると分解能が上がりますが測定範囲が狭まります。
分解能を上げすぎるとシャント抵抗で発生する電圧降下が問題になる場合があるかもしれません。

今回は「Digikey」で扱っている「RW1S0CKR005DE」をシャント抵抗として使用します。 抵抗値は5mΩ±0.5%ですので

分解能 = 2.5μV ÷ 5mΩ = 0.5mA
測定範囲 = -16384mA ~ +16383.5mA

となります。
この抵抗器には電圧測定用の端子が用意されているのでプリント基板の設計で悩まなくても済みそうです。


作ってみました・・・

img001 img002

サンハヤト」の「感光基板」を使用しております。
今回の基板は導体クリアランスを0.2mmで設計しましたが、問題なく作成できました。
どれくらい細かいパターンを作れるのか、いつか実験してみたいと思います。

システム用にUSBのVBUSからLDOを通して3.3Vの電源を確保します。(Texas InstrumentsLP2985-33DBVR)

INA226」はDC36Vまでの電源電圧を測定可能ですが、LDOの都合により16Vまでしか入力できません。
USBの測定用として使用する分には何の問題もありませんね。

img003 img004

搭載するマイコンはお馴染みの「ATmega328p」です。
プログラムサイズが8KBに満たない上に、I/Oも5本しか使用しないので勿体ないのですが、入手性が良いという理由で選択しました。
いつもならDIPタイプを使用するのですが今回はTQFPタイプを使用して基板サイズを小型化しました。

img005

マイコンを覆い隠すように秋月のLCDが実装されます。
このLCDは簡単に割れてしまいますので取り扱いには注意が必要です。


ファームウエア・・・(INA226覚え書き)

INA226」は数種類のレジスタを持っています。

Busレジスタ」は「VBUS」-「GND」間の電位差をA/D変換した値が保存されます。

1LSB辺り1.25mV固定です。
「Busレジスタ」の値が1000だった場合は「1000 × 1.25 = 1250mV」のように電圧値を求める事ができます。

Shuntレジスタ」は「VIN+」-「VIN-」間の電位差をA/D変換した値が保存されます。

1LSB辺り2.5μV固定です。
「VIN-」の電位が「VIN+」を上回ると負数が保存されます。(2の補数)
「Shuntレジスタ」の値が25000だった場合は「25000 × 2.5 = 62500μV」のように電圧値を求める事ができます。
更に、電圧値をシャント抵抗の値で割る事で電流値が求められます。(オームの法則)

Calibrationレジスタ」に適切な値を設定すると後述の「Currentレジスタ」と「Powerレジスタ」が有効になります。

設定値は「2.5 × 2048 ÷ シャント抵抗値(mΩ)」で求まります。
何故この計算式なのかはデータシートを参照していただければ理解できると思います。
ちなみに計算結果が整数になるような抵抗値でなければ計算誤差が発生します。

Currentレジスタ」は「Shuntレジスタ」と「Calibrationレジスタ」の値から電流値を計算した結果が格納されます。

マイコンで電流値を計算する場合は、このレジスタは使用しません。
「Calibrationレジスタ」に適正な値が設定されている場合、「mA単位」で電流値を取得可能です。

Powerレジスタ」は「Busレジスタ」と「Currentレジスタ」の値から消費電力を計算した結果が格納されます。

このレジスタもマイコンで電力計算を行う場合は使用しません。
25mW単位で電力値を取得可能です。

INA226」と秋月のLCD「AQM0802A-RN-GBW」は、I2C通信で制御します。
常にAVRがI2Cマスターで動作するのであれば、外部プルアップ抵抗を省略して部品点数を減らすことができます。
今回は「INA226」のデータを表示するだけの、ハード、ソフト共にシンプルな構成となっております。


ケースを作ってみた・・・

img010

ちょうど良い大きさのケースが無いので、今回は基板材料のガラスエポキシ板(t=0.8)を加工して作ってみました。
6枚の板を切り出して接着して、角を補強すれば強度の高いケースができあがります。しかも難燃性というおまけが付いてきます。

あとはテキトーに穴を開けて地道にヤスリで仕上げていきます。

外形サイズ:D50×W25×H13

img011

つや消し黒の塗料を塗って、中に基板を入れてみました。

自作基板の動作確認後、若干修正を行い「seeedstudio」の「Fusion PCB」に基板を発注。
このサービスの存在を知ってしまったおかげで、余計なコストが発生しているような気がします・・・。

img012

電流計付きUSB電源アダプター」に接続してみたところ、なかなか良い感じで動作します。
ちなみにLCDの左上に表示されている文字は「-」→「\」→「|」→「/」の順番で変わり、クルクル回っているようなアニメーションが表示されます。

外部にプッシュスイッチが付いているのですが、これは電流の零点補正用スイッチとして動作します。


応用?・・・

img014

非常に見づらい画像ですが、2つ直列に接続してみました。
本機の消費電流は1mA~2.5mA程度といったところでしょうか。

img013

こちらは高負荷をかけた状態です。
こうして見ると「電流計付きUSB電源アダプター」の測定部分の精度も捨てたものではないですね。

電圧と電流を同時に測定する場合、2台のテスターを使用しなければならないのですが、本機は1台で済みます。
本格的な測定は不要だけど、そこそこの精度で測定したい場合に重宝しそうです。

基板上のUBSコネクタを取り外して、太めの電線(1.25SQ)を使用して自動車のACC電源ラインに割り込ませる事が可能です。(24V不可)
この場合、バッテリー電圧とACC電源の消費電流を測定可能となりますが、自己満足で終わってしまいそうですね・・・

INA226」は電流測定用のICですが、高感度で解像度が高いADCという見方もできます。
センサーの入力用として利用しても面白いかもしれませんね。


最終仕様・・・

  • 入力電圧:3.4V ~16.0V
  • 測定可能電流:0mA ~ 16383mA(マイナス電流値は0表示)
  • 電流値零点補正スイッチ付き
  • 測定値表示:電圧値/電流値を約300m秒毎に更新

【HOME】