ロジックアナライザでI2C 信号を見ると

INA226 と arduino の I2C 信号をロジックアナライザで見てみました。

コードは前回と同じものです。1秒ごとに4つのデータをゲットしています。

1

トリガは、SDA にかけました。Hi から Low になって信号が行くようです。

まず、I2C アドレス0x40 のレジスタ 0x02 を投げて、値が帰ってくる流れが見えます。読み出しには、1.7ms ほどかかっていることがわかりました。ビットの信号は、4us 程度のようです。SDAでビットが立っているのを判別しているようです。

 

たとえば、最初は INA226_REG_BUSVOLTAGE  (0x02) を読み出しているようで、値は16進数で 0x0E9E が帰ってきています。10進数では、3742 でこれに1.25 を掛けたものが mV になるので、4677.5 mV = 4.6775V ということですね。精度は、0.1mV ということです。

 

I2C のリアルタイムな生データを見るのは今回が初めてです。なかなか、IC同士で通話している感じがおもしろいですね。

1000分の1,2秒で、データを読み取っていて、0 と 1 の Hi と Low の信号のやり取りでそれをやっているというのが目で見えてわかりやすいです。ロジックアナライザって偉い存在ですね。

 

▼まとめ

・INA226 と arduino の I2C 信号を見てみた

・SDA の LOW にトリガーをかけて採取。

・スレーブアドレス+データ領域を指定すると、対応するスレーブから値が帰ってくる

・SCL にビットデータが流れ、SDA にデータ流れる感じ。両方ともHi になった部分が ビットが立つ感じ。

・ビット のHi になる時間は、4us ほど。

・1つのレジスタの読み出しには、1.7ms ほどかかる。

・呼び出しから応答までの間隔は、1ms ほど。0.7ms でデータをやり取りしている。合計で1.7ms

・安物のロジックアナライザでも十分現象を観察できた。

広告

INA226 を arduino nano で

もう1月も終わりですね。なんだか速く月日が経つような気がします。

さて、今日は 先日作った INA226 の電流電圧センサーを I2C で arduino nano クローンにて計測してみました。

前回の調査で見つけた、ポーランドのサイトにいいチュートリアルがありました。

Korneliusz Jarzębskiのサイト
Dwukierunkowy cyfrowy czujnik prądu/mocy INA226

github
Arduino-INA226
https://github.com/jarzebski/Arduino-INA226

このGitHub のsimple のソースにライブラリを配置し、

./INA226_simple
├── INA226.cpp
├── INA226.h
└── INA226_simple.ino

INA226.cpp の記述を以下に変更。25mR のシャント抵抗の設定をします。

#include "INA226.h"
::
void setup() 
{
::
  // Calibrate INA226. Rshunt = 0.025 ohm, Max excepted current = 4A
  ina.calibrate(0.025, 1);
::

配線は以下のようにしました。ちょっとわかりにくいですが、Arduino の A5(SCL) と A4(SDA) をつないで、GND と 3.3V を VSS に入れます。あとは、負荷を電流計測にハイサイド側に付ける感じです。

arduino_ina226

シリアル通信を開くと、以下のようになっています。

Initialize INA226
-----------------------------------------------
Mode:                  Shunt and Bus, Continuous
Samples average:       1 sample
Bus conversion time:   1.100ms
Shunt conversion time: 1.100ms
Max possible current:  3.28 A
Max current:           3.28 A
Max shunt voltage:     0.08 V
Max power:             117.96 W
-----------------------------------------------
Bus voltage:   4.67875 V
Bus power:     0.01250 W
Shunt voltage: 0.00007 V
Shunt current: 0.00300 A

Bus voltage:   4.68125 V
Bus power:     0.01250 W
Shunt voltage: 0.00007 V
Shunt current: 0.00300 A

Bus voltage:   4.67750 V
Bus power:     0.01250 W
Shunt voltage: 0.00007 V
Shunt current: 0.00300 A

PC からのUSB 電圧は4.67V 程度のようです。3mA で12.5mW ということがわかりました。ちゃんと計測できているようですね。

arduino だと装備からLCDなどに出す用途で使えそうですね。データをどこかに飛ばすものであれば、ESP8266 が良さそうです。

 

IC 回路の電圧は3.3V でも5V でもOKです。LEDの負荷を arduino の 3.3V から取って計測してみると以下のようになりました。

Initialize INA226
-----------------------------------------------
Mode:                  Shunt and Bus, Continuous
Samples average:       1 sample
Bus conversion time:   1.100ms
Shunt conversion time: 1.100ms
Max possible current:  3.28 A
Max current:           3.28 A
Max shunt voltage:     0.08 V
Max power:             117.96 W
-----------------------------------------------
Bus voltage:   3.26875 V
Bus power:     0.00500 W
Shunt voltage: 0.00004 V
Shunt current: 0.00150 A

Bus voltage:   3.27000 V
Bus power:     0.00500 W
Shunt voltage: 0.00004 V
Shunt current: 0.00150 A

Bus voltage:   3.26875 V
Bus power:     0.00500 W
Shunt voltage: 0.00004 V
Shunt current: 0.00160 A

 

ちょっとコードを追加して、レジスターの値を取ってみました。

Initialize INA226
-----------------------------------------------
Mode:                  Shunt and Bus, Continuous
Samples average:       1 sample
Bus conversion time:   1.100ms
Shunt conversion time: 1.100ms
Max possible current:  3.28 A
Max current:           3.28 A
Max shunt voltage:     0.08 V
Max power:             117.96 W
-----------------------------------------------
INA226_REG_CONFIG          (0x00):16679 ---
INA226_REG_SHUNTVOLTAGE    (0x01):30 ---
INA226_REG_BUSVOLTAGE      (0x02):3749 ---
INA226_REG_POWER           (0x03):5 ---
INA226_REG_CURRENT         (0x04):30 ---
INA226_REG_CALIBRATION     (0x05):2048 ---
-----------------------------------------------
Bus voltage:   4.68250 V
Bus power:     0.01250 W
Shunt voltage: 0.00007 V
Shunt current: 0.00300 A

レジスター値は10進です。アベレージの回数とかも定数があるので便利ですね。

精度は、0.1mA  のようですね。PCB のあまり部分で作ったモジュールでも結構遊べました。あと、小さなパーツの半田付けの練習にもなりました。

 

▼参考サイト

http://denshi-kousaku.fan.coocan.jp/report030.html

 

▼まとめ

・ライブラリ便利!

・INA226 モジュールを使って、arduino で i2c にて電流電圧を簡単に取れる

・精度は、シャント抵抗次第で、0.025R だと0.1mA(100μA) の精度になるようです

・GND はIC回路と共通で測定で、電圧を測定する場合は、IC の VBUS 8pin に計測電圧をかける

・LSB とは一般的には、最下位ビットのことで、least significant bit の頭文字。

・これの分解能力は16ビットなので、0.025R だと電流は0.1mA で電圧は 1.25mV

・とりあえず、十分な精度です。

コントローラーABできました

目玉おやじの胴体はボタンになってもらうので、切り落とします。

写真 1

ボリュームは、使ってないデットストックのをジャンク箱から見つけました。頭を削って調整します。

写真 2

まだ、配線してない状態ですが収まりは良さそう。

写真 3

続いて、携帯灰皿のコントローラ加工。こっちは、半固定抵抗で頑張ってもらいます。筐体は白にペイント済みです。

素材は、灰皿部分はアルミで出来ているので基盤を丸くけずり、ベース部分を作りました。半固定抵抗の柄には、グルースティックをつけてあります。

写真 4

USBケーブルを通し、スイッチを配線します。

写真 5

で、くみ上げてついにボール型のコントローラーAとBが出来ました!!

写真 1

1つは、マクドナルドのおもちゃを流用。そして、もうひとつは携帯灰皿を利用しています。携帯灰皿のほうは、蓋を開けるとホイールコントローラとスイッチが見えてなかなかかっこいいです。

写真 2

本体のケースはまだですが、プレイした感じ。

写真 3

来週くらいにはケースできるといいかなぁ。ぼちぼちと作っていきます。

写真 4

かなり面倒な作業がありましたが、なんとかコントローラが出来ましたよ。

arduino で pong 完成までもう少しです。

 

あと、100円ショップでケースになりそうなものを物色してきました。前回作ったESP12 の温度湿度照度のデバイスを入れようかなと。新幹線のと、レゴ風のケースとどちらかにしようかと。

写真 1

温度センサーは出さないといけないので、レイアウトに迷います。

写真 2

真ん中の車両はモーターも付いています。100円ショップは工作材料の宝庫です。

本体側への装着はだいたい終了

休み中には完成できませんでしたが、本体側はほぼ終了。

body

USB,VGA,SP はホットボンドでくっ付けました。本体は側面を作り、上からもうひとつのラケットで覆う感じにします。

 

USB の先に付くコントローラA,Bの加工はゆっくりやっていきます。

とりあえず工作三昧の夏休みでした。さぁて、完全に夜型になってしまいまいた。今日からお仕事です。がんばりますか。

電源まわり

とりあえず、電源周りを先にやっつけることに。

 

まず、基盤を一体化させるために連結します。

写真 1

 

次に、リチウム電池を固定させる電池ボックスを作成。クリップで微調整して接点を作ります。

写真 2

スイッチや充電ユニットと5V昇圧ユニットをつけてとりあえず電源周りは終了。

写真 3

手作り感、満載です。

本体、USB、VGAメスジャックを載せて配線すれば本体側はだいたい終わりです。

ブレッドボードへ仮組み

ブレッドボードへ仮組みし、ちょっとプレイ。

   写真 3

乾電池駆動でも動作してくれています。ピーク電圧が不安定なのでコンデンサが必要だとわかりました。音がなると、画面が暗くなります。

写真 1

調子にのって遊んでいたら、半固定抵抗のpin が折れてしまいました。うーん、修復するかまた探すかです。

写真 2

あと、グルースティックの軸だとたわむ感じがしてダイレクト感がなくなるのでどうしようかと。それ以前に、半固定抵抗のすべりがあんまり良くないので感触が悪いです。もう少し、いい感じにすべる抵抗がほしいところ。

 

ちょっと半固定抵抗を探す旅に出ようかと思います。ジャンク屋か、家の中の何か。オーディオ製品だとたくさんありそうなイメージですが。

目玉おやじのコントローラAを加工

マクドナルドのおまけの目玉おやじには、コントローラAになってもらいます。目玉を押すとスイッチになっていてしゃべるおもちゃですが、内部をばらして、どの位置にホイールコントロールをつけるか検討します。

 

写真 1

スピーカーは本体へ移動予定。スイッチ付きです。

写真 2

ねじが、三角の特殊ビットなので強引に精密ドライバーのマイナスでとります。

写真 3

中はスピーカーとボタン電池とカスタムIC、ゴムスイッチなどがあります。

写真 4

内部構造から、この基盤はつけたままにしておき、スピーカーを取り外しそこにホイールコントローラーを埋め込みます。

写真 5

スイッチのリードはここから取り出します。代わりのスピーカーを埋めこれば、ボールの発射時にしゃべる効果がつきそうですが。

写真 6

一度、半固定抵抗が動作するかブレッドボードに組み動作を確認してみようと思います。