« 新しいピンセット | トップページ | MSP430 の低消費電力化 »

2013.02.10

MSP430 で消費電力測定(INA226) (3)

i2c が使えるようになったところで、今度はINA226です。
014ina226maekara

strawberry linux説明書をみると、電流、電圧を読めばよいのかと思い
単純にi2c で読み込みしてみましたがうまくよめませんでした。
これは私の勘違いで、INA226は読み込むアドレスを書き込んで
以降は、そのアドレスの値が読めるようで、かってアドレスが、カウントアップ
してくれたりはしないようです。
なので、電圧と電流を連続して読む場合、

1. i2c 電圧値のアドレスを書き込み
2. i2c 電圧の読み込み
3. i2c 電流値のアドレスを書き込み
4. i2c 電流値の読み込み

というのを繰り返す必要があります。

また、読み込んだ値に関して
1.電圧は取説の通り、1.25倍すると、[mV]の値となる。
2.電流値は、実はそのままだと、0です。これはcalibration (aaddress 5)に値を書き込まないと0が出てきます。電流値として読める値は、

Current = ShuntVoltage*CalibrationRegister/2048

となります。つまりCalibrationが0(POW時は0)の時には、0しか読めないことになります。
TIのデータシート(link先にあり)を見ると、Calibration を 0x0a00 とすると、読み込んだ値は、そのまま [mA]となるので、この値がおすすめです。(シャント抵抗が2mΩの時)

また、Calibrationを設定すると、power (Address 3)も0以外の値が読めるようになります。(電流が0なら電力も0になるのは あたりまえー♪ ですね。)

この辺まででやっと、電流と電圧が読めるようになりました。

写真のように、LaunchPadは、USB で電源がとれるので、お手軽ですね。


|

« 新しいピンセット | トップページ | MSP430 の低消費電力化 »

趣味」カテゴリの記事

組込」カテゴリの記事

電子工作」カテゴリの記事

MSP430」カテゴリの記事

コメント

こんばんは 久(ひさし)といいます
早速ですが、INA226が動いたとのことでご教授願います
私は、PIC18F2620でマイクロC5.6でプログラムを作成しています
I2CでINA226の初期設定を下記のようにしています
データ0x8000をアドレス0x90(INA226の固定アドレス)にコマンドアドレス0x00にして書込みを行います
次に0x2787を同様にコマンドアドレス0x00に書き込みます
次に0XA000をコマンドアドレス0x05に書き込みます
ここまでが初期セットとなります
続いて電流計測を行いますがここではコマンドアドレスは0x01としています
読み込んで1.25を乗算しています

問題点 無負荷の状態で0.381Aを表示します 基板と計測電源は繋がっていません
   5Ω3個並列の抵抗を繋いで電流を計測すると7.171Aの表示となります
   電圧は11.9Vですので計算上は7.125Aとなりますがので誤差の範囲かと思います
   リナックス社の説明では電圧電流共に1.25を乗算すればよいとなっていますが
   貴殿の説明ですとmAで直読出来るように受け取られますが、
   どのような初期セットをされているのでしょうか
   また、読込み時のコマンドアドレスは0x01ではないのでしょうか
   無負荷時のAの値が0.0にはならないものでしょうか
   (プログラム内でいろいろやってみましたが極端な値になってしまうので)
   なお電圧は読み込めています
   
   残念ながらMSP430云々のプログラムは分かりませんので
   上記のような説明でお願いします
   またプログラム作成を業務とはしておりません
   ただいま無職です
   お忙しいなかご教授のほどお願いします。

投稿: 久 | 2013.02.18 20:04

久です
変な書込みとなってしまいましたので改めさせて頂きます
INA226はリナックス社で購入しました
アドレスは0x90にしています
プログラム上では先に0x8000をConfiguration Registerに書込み
10ms後に0x4787を再度Configuration Registerに書込み
10ms後に0x0A00をCalibration Registerに書込み
ここまでが初期セットとなります
以下電流計測時にはShunt Voltage Register 01h
電圧計測時はBus Voltage Register 02hを読み込んでいます
データに1.25を乗算して答えを出しています
問題点にありますように無負荷の状態で0.381Aを表示することが
問題なのですが、もし、初期セット、あるいは読み込み時のRegister番号が
貴殿の場合はどのようにされていますか?
改めて、今回の質問とさせて頂きます
負荷電流を計測するため、INA226のISENSE-,+に使用する電線は12AWGで
端子台は使用していません

投稿: 久 | 2013.02.19 08:29

久 さん こんばんは。
コメント頂いていて、返事が遅くてすみません。
普段、ほとんどコメントが書かれることが無いので、見落としていました。
基本的には、ストロベリーlinuxのINA226のページにある、
http://strawberry-linux.com/pub/ina226.pdf
を参照ください。

当方の設定では、
1.レジスタアドレス0x05 のcalibration に0x0a00設定
のみです。
あとは、レジスタアドレス 0x02 のbus voltage X1.25倍で電圧[V]、0x04を読めばそのままで電流値[mA]です。
0x01 の値は、電圧表示ですので、これを読んで計算するのであれば、特に初期設定は必要ないはずです。

電流が0にならないのは、測定する端子がオープンしているせいかもしれません。
試しに無負荷(オープン)ではなく、ショート状態で測定してみてはいかがでしょうか?

投稿: tomoji | 2013.02.19 21:09

すみません。書き忘れました。
Shunt Voltage も current も読んだ値は、2の補数表現です。マイナスの値をとれるので、当たり前と言えば、当たり前ですが。
一応参考まで。

投稿: tomoji | 2013.02.19 21:38

早速プログラムを作成してみました
結果は04hのアドレスでは無負荷で1.531A
短絡で0.002Aとなり、5Ω3個並列の抵抗値を
接続すると7.152Aとなりました
電圧は11.9Vです
補数に関しては、逆接続した時のことと考えて
いて今は無視しています
貴殿のINA226の電流端子は画像に映っているものは
短絡状態なのですか
お忙しいところ申し訳ありません。
10時過ぎましたので本日はここまでとします。

投稿: 久 | 2013.02.19 22:10

久さんこんばんは。
すみません。写真を撮ったときは、たぶん、その(2)の状態( V+ I+ 間に抵抗、 i- V-間にLED)の状態だと思います。
 上記負荷(R,LED)が無い状態では +-数mA 程度を表示していたように記憶しています。
 実機は今、手元にないので、明日にでも、もう一度確認してみます。
 あと、一般論ですが、電流測定側は微弱な電圧を測定しているので、電源が安定しないと、A/D値もふらつきます。また、部品の配置によりMPUからの影響を受ける場合もあります。

 電圧に関しては、7A流れているとすると、0.14V程度の電圧降下がシャント抵抗でありますので、ほぼ正しい気がします。
あとは、試しに入力インピーダンスのなるべく高いテスターで、オープン状態のI+,I-の電圧を測定してみて、その状態のIN226の測定値と比べてみると、どうなりますか?

投稿: tomoji | 2013.02.19 23:00

すみません 前回短絡して0.002Aと書きましたが、本日再確認のため同じことをしましたが、
値は変わりません(0.002Aに近ずかない)クリップで接続しましたが駄目でした
直にターミナル同士を手でくっつけたところ値が変わりましたが、値がちらついて
再び1.531Aの値に戻りました
手持ちのテスターでオープン状態のI+,I-を計測しましたが0Vのままでした。
英語が大変弱く、取り説はダウンロードしていましたがCalibration Registerの
項目は無視してまたFSの意味もわからず初めは0x00にセットしていました
まあ値に1.25を乗算してそれなりの値が得られましたので、それでよしとしていました
(貴殿の説明によりわかりました)
今回無負荷の状態で表示が、貴殿の装置が0mAになっていれば、私の基板は壊れている
と思いますので新たに購入しようと思います

投稿: 久 | 2013.02.20 13:00

久さん こんばんは。
実機の表示を確認してきました。
当方の物で、全端子をオープン状態にして、電流表示は、-2mA から 2mA の間を
ふらふらしておりました。
 もしかして、負側の電流値になっているということはありませんか?試しに、換算前の値を確認してみては如何でしょうか?

投稿: tomoji | 2013.02.20 22:08

本日INA226側のI+,I-に接続してあるケーブルを入れ替えて通電してみました
無負荷(換算前の値)   1.6Ω負荷接続(換算前の値)
5425~5426        41809~41810
ケーブルを元の接続にした時
無負荷(換算前の値)   1.6Ω負荷接続(換算前の値)
5425~5426        29046~29048

となりました。
取りあえず別のセンサーATTOPILOTの50v90Aを接続して電流を計測してみます
今回のINA226も無負荷での値が異常値を示す以外、少電流(1A)ではその値に
変化しますので個人レベルでの使用には問題ないかな?
いろいろご指導頂きありがとうございました。
またご指導を仰ぐかもしれませんのでその時はよろしくお願いします。

投稿: 久 | 2013.02.21 14:19

こんばんは。
無負荷での値、やはり、INA226の基板自体がおかしいようですね。
 あとは、小電流 10mA 位を測定してみて
どうなるか?ですが。
 いろいろトライしてみてください。

投稿: tomoji | 2013.02.22 21:48

いろいろすみません。
被電源圧を12Vとします。

抵抗値Ω    01hの値     04hの値 

無限大     00.37 A      65532 mA
940Ω     00.00 A         9 mA
470Ω     00.02 A        23 mA
220Ω     00.05 A        53 mA
 1.67Ω    07.25 A       7255 mA

抵抗値は、1/6Wで袋に記載してある数値です。
01hは数値は4桁で小数点以下2桁まで(LED4桁で表示するプログラムを
そのままLCDにもってきたためです 以前のデータで4桁以上あるものは
小数点以下3桁目からは無視してください)
04hは取得データをすべて表示としました。

以上のような結果です。

投稿: 久 | 2013.02.23 16:32

久さんこんばんは。

 ちょっとだけ見えてきました。
まず、
各抵抗の時の計算値と、実測値(INA226の値)をの関係は以下のようになります。

抵抗値  実測値   計算値
940Ω    9mA    12.8mA
470Ω    23mA    25.5mA
220Ω   53mA    54.5mA
1.67Ω   7.26A    7.19A

で、電圧の精度や、誤差を考えるとほぼあっていると思います。
 そこで、問題の無限大の時の値ですが、
65532mA とあります。これを16進数に直すと
FFFCh となり、これは2の補数表現では負の値で、-4mA となります。
ただ、まだ 01hの値(シャント抵抗の両端の電圧の値)がちょっと違う気がしますが、
やはり、電流値を2の補数表示として扱わないといけないと思います。

これで、ちょっとだけ 正解に近づいてきたように思いませんか?

投稿: tomoji | 2013.02.23 19:48

こんばんわ
補数の計算で戸惑いました
取りあえず04hのD15ビットが1であるかを確認し1のときはマイナス符号を表示し
、1の時は補数プログラムに入るようにプログラムを変更する。
と無負荷の時はマイナス3,4を表示するようになりました
ただI+,I-を入れ替えた時違いが発生しました 無負荷時の3,4mA分です
マイナス符号は点灯となります
 
親戚に不幸があり連絡が遅くなりました 申し訳ありません

投稿: 久 | 2013.02.24 20:44

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: MSP430 で消費電力測定(INA226) (3):

« 新しいピンセット | トップページ | MSP430 の低消費電力化 »