部品実験 元に戻る

INA226 2024/11/01

本文目次

本文以外目次
1.簡単に使う
2.I2Cスレーブアドレス
3.レジスタ
 レジスタ一覧
4.キャリブレーション値の求め方
5.概要
6.INA226回路基板の作成
1.INA226 Arduinoプログラム
2.INA226 Pythonプログラム(RaspberrPi)

本   文
1.簡単に使う
 アクセスの仕方(INA226の値を読む方法)
 簡単には下記レジスタの値を書込んだり、読み込むことによりINA226を使用します。 
 実際はもっと有ります 「3.レジスタ」参照
アドレス レジスタ名 レジスタ概要 動作
0x00 Configuration Register 設定レジスタ R/W
0x01 Shunt Voltage Register 電流値の元シャント電圧値レジスタ R
0x02 Bus Voltage Register 母線電圧値レジスタ R
0x03 Power Register 母線電圧×電流で求める電力値レジスタ R
0x04 Current Register シャント電圧と変換値から求めた電流値レジスタ R
0x05 Calibration Register 電流値を変換する値 R?W
  I2C通信の信号は3種類 (1)設定を送る (2)値を要求する (3)値の返信

(1)設定を送る
 設定は2種類ある a.Configuration Register と b.Calibration Register 

a.Configuration Register 0x00 (0x00,0x4127)
 Configuration Register 16bitは下記の設定項目を決める。
 ディフォルト値 0x4127
 値の決定方法は「3.レジスタ(0)00h Configuration Register」を参照ください。
設定項目 概  要 bit 設定内容
RST レジスタリセット(ディフォルト値にする) 1 b0 リセットしない
SP '-- 3 b100 '--
AVG 平均化のサンプル数 3 b000 平均値 1
VBUSCT バス電圧変換時間 3 b100 変換時間 1.1ms
VSHCT シャンと電圧変換時間 3 b100 変換時間 1.1ms
MODE 動作モード 3 b111 シャントとバス、連続
 信号
 ①読取るINA226のスレーブアドレス番号
 ②設定するレジスタの選択
 ③コンフィグレジスタの設定
->
ー>
ー>
44   詳細は「2.I2Cスレーブアドレス」参照
0x00(※コンフィグレジスタ)
0x4127


b.Calibration Register 0x05 (0x05 ,6827)
 キャリブレーション値は「4.キャリブレーション値の求め方を参照ください。
 信号
 ①読取るINA226のスレーブアドレス番号
 ②設定するレジスタの選択
 ③キャリブレーションレジスタの設定
->
ー>
ー>
44
0x05(※キャリブレーションレジスタ)
0x1AAB (値は10進数で6827)



(2)値を要求する (3)値の返信
は下表の項目の値を要求します。
最低限には 0x01 Shunt Voltage Registerと 0x02 Bus Voltage Register を読むことにより母線電圧と計算により電流値を出すことにが出来ます。
0x01 Shunt Voltage Register 電流値の元シャント電圧値レジスタ
0x02 Bus Voltage Register 母線電圧値レジスタ
0x03 Power Register 母線電圧×電流で求める電力値レジスタ
0x04 Current Register シャント電圧と変換値から求めた電流値レジスタ
下記に動作試験をした各項目の要求と値の返信値を表します。
 なお動作試験では 母線電圧は24(V)、電流は1(A)を入れています。 シャント抵抗は0.75(mΩ)

0x01 Shunt Voltage Register
 (2)値を要求する
 ①読取るINA226のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
44
0x01(※シャント電圧レジスタ)
 (3)値の返信
 ①読取るINA226のスレーブアドレス番号
 ②シャント電圧レジスタの内容
->
ー>
44
0x0125 (値は10進数で293)
 電流の計算は 293×0.0025/0.75 = 0.9766(A) キャリブレーション値で計算する方法と違うので注意。
 また実際のシャント抵抗が違っている事もこの計算から判る。 
 電流値 1(A)が正しければ抵抗値は  293×0,0025 = 0.7325(mΩ)と思われる。次回確認する。


0x02 Bus Voltage Register
 信号
 (2)値を要求する
 ①読取るINA226のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
44
0x021(※母線電圧レジスタ)
 (3)値の返信
 ①読取るINA226のスレーブアドレス番号
 ②母線電圧レジスタの内容
->
ー>
44
0x4AF5 (値は10進数で19,189)
電圧の計算は 19,189×1.25/1000+0.005 = 23.99 V(小数点第三を四捨五入)


0x03 Power Register
 (2)値を要求する
 ①読取るINA226のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
44
0x03(※電力レジスタ)
 (3)値の返信
 ①読取るINA226のスレーブアドレス番号
 ②電力レジスタの内容
->
ー>
44
0x03B3 (値は10進数で947)
電力の計算は947×25/1000 = 23.67 W


0x04 Current Register
 (2)値を要求する
 ①読取るINA226のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
44
0x04(※電流レジスタ)
 (3)値の返信
 ①読取るINA226のスレーブアドレス番号
 ②電流レジスタの内容
->
ー>
44
0x03DB (値は10進数で987)
電流の計算は 987/1000 = 0.987 A


[目次に戻る]


2.I2Cアドレスの選択
I2Cのアドレスは7bitで値設定はA1及びA0と指定のピンに短絡する事により16のアドレスを設定できる。
A1 A0 ADDRESS
Binary HEX
GND GND 100 0000 40h
GND Vs 100 0001 41h
GND SDA 100 0010 42h
GND SCL 100 0011 43h
Vs GND 100 0100 44h
Vs Vs 100 0101 45h
Vs SDA 100 0110 46h
Vs SCL 100 0111 47h
SDA GND 100 1000 48h
SDA Vs 100 1001 49h
SDA SDA 100 1010 4Ah
SDA SCL 100 1011 4Bh
SCL GND 100 1100 4Ch
SCL Vs 100 1101 4Dh
SCL SDA 100 1110 4Eh
SCL SCL 100 1111 4Fh
[目次に戻る]


3.レジスター
キャリブレーションレジスターの設定について
計測する最大電流により、IN±に接続するシャント抵抗値やキャリブレーションレジスタの設定を変更する必要がある。
レジスタについて
INA266には10個のレジタが有ります。
測定した値は01h~04hのレジスタ値を読む事になる。
シャント電圧値、母線電圧値、電力値、電流値を読むことが出来ます。
なお電流値や電力値についてはキャリブレーションレジスターを設定する事によりシャント電圧を電流値に変換します。
レジスタ一覧
ADD REGISTER NAME FUNCTION DATA TYPE
BINARY HEX
00h Configuration Register All-register reset, shunt voltage and bus voltage ADC conversion times and averaging, operating mode. 0100 0001
0010 0111
4127 R/W
01h Shunt Voltage Register Shunt voltage measurement data. 0000 0000
0000 0000
0000 R
02h Bus Voltage Register Bus voltage measurement data. 0000 0000
0000 0000
0000 R
03h Power Register(2) Contains the value of the calculated power being delivered to the load. 0000 0000
0000 0000
0000 R
04h Current Register(2) Contains the value of the calculated current flowing through the shunt resistor.
0000 0000
0000 0000
0000 R
05h Calibration Register Sets full-scale range and LSB of current and power measurements. Overall system calibration. 0000 0000
0000 0000
0000 R/W
06h Mask/Enable Register Alert configuration and Conversion Ready flag. 0000 0000
0000 0000
0000 R/W
07h Alert Limit Register Contains the limit value to compare to the selected Alert function. 0000 0000
0000 0000
0000 R/W
FEh Manufacturer ID Register Contains unique manufacturer identification number. 0101 0100
0100 1001
5449 R
FFh Die ID Register Contains unique die identification number. 0010 0010
0110 0000
2260 R
[目次へ戻る]

(0)00h Configuration Register
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
RST AVG2 AVG1 AVG0 VBUSCT2 VBUSCT1 VBUSCT0 VSHCT2 VSHCT1 VSHCT0 MODE3 MODE2 MODE1
0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1
[(1)レジスター一覧へ戻る]

AVG 平均化のサンプル数
D11 D10 D9 平均値 備考
0 0 0 1 デフォルト
0 0 1 4  
0 1 0 16  
0 1 1 64  
1 0 0 128  
1 0 1 256  
1 1 0 512  
1 1 1 1024  
[Configuration Registerへ戻る]

VBUSCT バス電圧変換時間
D8 D7 D6 変換時間 備考
0 0 0 140us  
0 0 1 204us  
0 1 0 332us  
0 1 1 588us  
1 0 0 1.100ms デフォルト
1 0 1 2.116ms  
1 1 0 4.156ms  
1 1 1 8.244ms  
[Configuration Registerへ戻る]

VSHCT シャンの電圧変換時間
D5 D4 D3 変換時間 備考
0 0 0 140us
0 0 1 204us
0 1 0 332us
0 1 1 588us
1 0 0 1.100ms デフォルト
1 0 1 2.116ms
1 1 0 4.156ms
1 1 1 8.244ms
[Configuration Registerへ戻る]

MODE 動作モード
D2 D1 D0 MODE 備考
0 0 0 Power-Down (or Shutdown) 電源オフ(またはシャットダウン)  
0 0 1 Shunt Voltage, Triggered シャント電圧、トリガー  
0 1 0 Bus Voltage, Triggered バス電圧、トリガー  
0 1 1 Shunt and Bus, Triggered シャントとバス、トリガー  
1 0 0 Power-Down (or Shutdown) 電源オフ(またはシャットダウン)  
1 0 1 Shunt Voltage, Continuous シャント電圧、連続  
1 1 0 Bus Voltage, Continuous バス電圧、連続  
1 1 1 Shunt and Bus, Continuous シャントとバス、連続 デフォルト
連続、トリガー、またはパワーダウンの動作モードを選択します。
これらのビットは、連続シャントおよびバス測定モードにデフォルト設定されます。
[Configuration Registerへ戻る]

[(1)レジスター一覧へ戻る]

(1)01h Shunt Voltage Register
フルスケール範囲 = 81.92 mV (10 進数 = 7FFF)、LSB: 2.5 μV。
[(1)レジスター一覧へ戻る]

(2)02h Bus Voltage Register
フルスケール範囲 = 40.96 V (10 進数 = 7FFF)、LSB = 1.25 mV
[(1)レジスター一覧へ戻る]

(3)03h Power Register
Power Register LSB は、Current_LSB のプログラム値の 25 倍になるように内部的にプログラムされます。
[(1)レジスター一覧へ戻る]

(4)04h Current Register
電流レジスタの値は、シャント電圧レジスタの10進数値を乗算(式3に従って、キャリブレーションレジスタの10進数値)して計算されます。
[(1)レジスター一覧へ戻る]

(5)05h Calibration Register
電流および電力測定のフルスケール範囲と LSB を設定します。システム全体のキャリブレーション。
計算方法は「4.キャリブレーション値の求め方を参照ください。
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
CSIGN CD14 CD13 CD12 CD11 CD10 CD9 CD8 CD7 CD6 CD5 CD4 CD3 CD2 CD1 CD0
0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0
[(1)レジスター一覧へ戻る]

(6)06h Mask/Enable Register
アラート構成と変換準備完了フラグ。
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
SOL SUL BOL BUL POL CNVR AFF CVRF OVF APOL LEN
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SOL シャント電圧過電圧
このビットをハイに設定すると、変換後のシャント電圧測定がアラート制限レジスタにプログラムされた値を超えた場合にアラートピンがアサートされるように設定されます。

SUL シャント電圧不?電圧
このビットをハイに設定すると、変換後のシャント電圧測定値がアラート制限レジスタにプログラムされた値を下回った場合にアラート ピンがアサートされるように設定されます。

BOL バス電圧過電圧
このビットをハイに設定すると、変換後のバス電圧測定値がアラート制限レジスタにプログラムされた値を超えた場合にアラート ピンがアサートされるように設定されます。

BUL バス電圧不足電圧
このビットをハイに設定すると、変換後のバス電圧測定値がアラート制限レジスタにプログラムされた値を下回った場合にアラート ピンがアサートされるように設定されます。

POL 電力制限超過
このビットをハイに設定すると、バス電圧測定後の電力計算がアラート制限レジスタにプログラムされた値を超えた場合にアラートピンがアサートされるように設定されます。

CNVR 変換準備完了
このビットをハイに設定すると、変換準備完了フラグ (ビット 3) がアサートされたときにアラート ピンがアサートされるように設定され、デバイスが次の変換の準備ができていることを示します。

AFF アラート機能フラグ
アラート ピンで一度に監視できるアラート機能は 1 つだけですが、変換準備も有効にしてアラート ピンをアサートできます。アラートの後にアラート機能フラグを読み取ると、アラート機能がアラートの原因であったかどうかを判断できます。アラート ラッチ イネーブル ビットがラッチ モードに設定されている場合、アラート機能フラグ ビットはマスク/イネーブル レジスタが読み取られたときにのみクリアされます。アラート ラッチ イネーブル ビットが透過モードに設定されている場合、アラート状態にならない次の変換の後にアラート機能フラグ ビットがクリアされます。

CVRF 変換準備完了フラグ
デバイスはいつでも読み取ることができ、最後の変換のデータは利用可能ですが、ワンショットまたはトリガー変換を調整するために変換準備完了フラグ ビットが用意されています。変換準備完了フラグ ビットは、すべての変換、平均化、および乗算が完了した後に設定されます。変換準備完了フラグ ビットは、次の条件でクリアされます:
1.) 構成レジスタへの書き込み (パワーダウン選択を除く)
2.) マスク/イネーブル レジスタの読み取り

OVF 数学オーバーフローフラグ
算術演算の結果オーバーフロー エラーが発生した場合、このビットは「1」に設定されます。これは、電流および電力データが無効である可能性があることを示します。

APOL アラート極性ビット。アラート ピンの極性を設定します。
1 = 反転 (アクティブハイオープンコレクタ)
0 = 通常 (アクティブローオープンコレクタ) (デフォルト)

LEN アラート ラッチ イネーブル。アラート ピンとアラート フラグ ビットのラッチ機能を構成します。
1 = ラッチが有効
0 = 透過 (デフォルト)
アラート ラッチ有効ビットが透過モードに設定されている場合、障害がクリアされるとアラート ピンとフラグ ビットはアイドル状態にリセットされます。アラート ラッチ有効ビットがラッチ モードに設定されている場合、障害発生後、マスク/有効レジスタが読み取られるまでアラート ピンとアラート フラグ ビットはアクティブのままです。
[(1)レジスター一覧へ戻る]
(7)07h Mask/Enable Register
選択したアラート機能と比較する制限値が含まれます。
[(1)レジスター一覧へ戻る]
(8)FEh Manufacturer ID Register

製造者 ID レジスタには、製造者の一意の識別番号が格納されます。
ID: メーカー ID ビット
ビット 0 ~ 15 メーカー識別ビットを格納します
[(1)レジスター一覧へ戻る]
(9)FFh Die ID Register

DID: デバイス ID ビット
DIの一意の識別番号とリビジョン ID が格納されます。
ビット 4 ~ 15 デバイス識別ビットを格納します。
RID: ダイ リビジョン ID ビット
ビット 0 ~ 3 デバイスのリビジョン識別ビットを格納します
[(1)レジスター一覧へ戻る]
[目次に戻る]


4.キャリブレーション値の求め方(Step4 05h Calibration Register)
(1)キャリブレーション値の概略説明をします。
 電流を計測する上で回路にシャント抵抗を入れます。
 電流がシャント抵抗に流れる事により逆電圧が発生します。
 この電圧をINA225が測定し、電流値の表示を出力しますが、シャント抵抗の値によって逆起電圧の値は代わります。
 このため、逆起電圧の値がどれだけの電流を示すかINA226に教える必要が有ります。
 この事をキャリブレーションと言い、INA226のレジスタの一つキャリブレーションレジスタに設定を行います。
 なおレジスタのアドレスは05hです。

(2)キャリブレーションの値の計算方法は 2例を説明します
・使用する電流値から求める方法
・使用するシャント抵抗値から求める方法

①例として最大電流 ±40Aの場合
 シャント電圧の最大値は-81.9175~81.92mV(この電圧を最大シャント電圧と言う)となっている。

①-1 シャント抵抗値は
 最大シャント電圧 / 最大電流 > シャント抵抗
 からシャント抵抗値をキリの良い値にする。
 81.9175(mV) / 40(A) = 2.05(mΩ) → 2(mΩ)

①-2 この時のシャント電流LSB
 シャント電圧LSB / シャント抵抗 = シャント電流LSB
 0.0025(mV) / 2(mΩ) = 0.00125(A) = 1.25(mA)

①-3 キャリブレーション値は
 (1,000 × 2,048 × シャント電圧LSB ) / シャント抵抗
 1,000×2,048×0.0025(mV) / 2(mΩ) = 2,560

②例を変えて シャント抵抗を0.75(mΩ)とした場合に実際に電流1(A)を流してシャント電圧値を確認しキャリブレーション値を算出する場合は。

②-1 最大電流値は
 -81.9175(mV) / 0.75(mΩ) ≒-109.2233(A)
 +81.92 (mV) / 0.75(mΩ) ≒+109.2267(A)

②-2 この時の予想されるシャント電流LSB
 0.0025(mV) / 0.75(mΩ) ≒ 0.00333(A) = 3.33(mA)

②-3 予想されるシャントレジスタの値
 シャント電流×シャント抵抗 / シャント電圧LSB = シャントレジスタ値
 1×0.75(mΩ) / 0.0025(mV) = 300

②-4 実測によるキャリブレーション値の求め方
 シャント電流 ×1,000 ×2,048 / シャントレジスタ値 = キャリブレーション値
 シャントレジスタの値を測定した結果(実測値)297だった場合は
 1(A) ×1,000 ×2,048 / 297 = 6,896

②-5 実際のシャント電流LSB
 1(A) / 297 = 0.0033(A)=3.3(mA)

②-6 実際のシャント抵抗値(シャント電流値及びシャント電圧LSBが正しい場合)
 0.0025(mV)×297 / 1(A) = 0.7425(mΩ)

②-7 シャント抵抗の消費電力
 最大シャント電流2×シャント抵抗値
 109.22672(A) × 0.7425(mΩ) ≒ 8.858W
 に耐える構造及び周辺機器に対する温度上昇に注意する必要がある。
[目次に戻る]


5.概要
INA226は、I2CまたはSMBUS互換のインターフェースを備えた電流シャントおよび電力モニターです。
〇1.0V~36 V のバス電圧を検知
〇ハイサイドまたはローサイド検知
〇電流・電圧・電力をレポート
〇高精度、-0.1% ゲイン誤差 (最大) -10 μV オフセット (最大)
〇構成可能な平均化オプション
〇16個のプログラム可能なアドレス
〇2.7V~5.5V の電源で動作
〇10 ピン、DGS (VSSOP)パッケージ
回路図


このINA226はVBUSとGND間電圧をBus Voltage Registerに格納する。使用電圧は0V~36V
IN±の逆起電圧(この電圧を以降シャント電圧と呼ぶ)をShunt Registerに格納しCalibration Registerの値から電流を計算しCurrent Registerに格納また電力を計算してPower Registerに格納する。
Configuration Registerの値によりA/Dの変換時間や平均回数などを設定できる。
I2Cの通信で各レジスターのデータを授受すことができる。
なおVBUSのLSBは1.25mVで最大は40V、ジャンと電圧のLSBは±2.5uVで最大は-81.9175~81.92mVとなっているので注意する事。
電源電圧は2.7V~5.5Vで消費電力は330uAで動作します。

Pinアサイン
Pin DEVICE DESCRIPTION
1 A1 Address pin. Connect to GND, SCL, SDA, or VS. Table 2 shows pin settings and corresponding addresses.
2 A0 Address pin. Connect to GND, SCL, SDA, or VS. Table 2 shows pin settings and corresponding addresses.
3 Alert Multi-functional alert, open-drain output.
4 SDA Serial bus data line, open-drain input/output.
5 SCL Serial bus clock line, open-drain input.
6 VS Power supply, 2.7 V to 5.5 V
7 GND Ground.
8 VBUS Bus voltage input.
9 IN- Connect to load side of shunt resistor.
10 IN+ Connect to supply side of shunt resistor.
 [目次に戻る]

6.INA226回路基板の作成
 太陽光のバッテリー母線の電圧と電流を測定するために作成した。
 電流は60A程度を測定するため、外部抵抗は0.75mΩを接続する予定だ。
 外付け抵抗とINA226を取付ける場所が1m程度離れると思われるのでその間の電線はシールドケーブルにしたがどうなるか?楽しみでもある!
回路図 作成品
  INA226のアドレスはA0 & GND , A1&Vs で 1000100 = 44hです

  プリントパターンを失敗した!
  IN- と VBus を接続してしまったので、パターンを切って配線した 作成品の写真で赤線がその部分だ。
  次のプリント板作成でキチンと反映したい。

おもてプリントパターン うらプリントパターン 
       IN+ IN- GND  
   SCL SDA Vs GND

 [目次に戻る]