MCP2221Aを使ってLabVIEWでI2C通信
Microchip社の MCP2221A を使ってLabVIEWでI2C通信をやってみた。MCP2221A 用のWrapドライバ を使用したところ簡単にI2C通信が行えた。MCP2221Aは 秋 月電子で210円 なのでNI純正のI2C対応DAQ(¥60,000) と比べてかなり安価にI2C通信ができる。
関連記事:LabVIEWとBME280で温度・湿度・ 気圧測定
あらかじめやっておくこと
LabVIEW Home Bundleのインストール。
体験版で よいのでLabVIEW2017以降が使える環境を作っておく。
MCP2221A、MicroUSB コネクタ、 I2C
温度センサなど の購入。
回路を組む。コンデンサを入れ忘れたのに動いてしまった。MCP2221Aすごい。
MCP2221A
データシートの p.17 にあるとおり、本来であればVBUSとGNDの間、VUSBとGNDの間に
0.47uFのコンデンサを入れる。
I2Cのプルアップはされていないので
温度センサモジュールの方でプルアップをしておく。
USBに接続するとすぐにPCが認識する。
プログラミングの準備
1.MCP2221AのWrapドライバをダウンロードする。
https://lavag.org/files/file/300-mcp2221a-library/
(Benoit様)
2.圧縮ファイルを解凍する。64bitと32bit(x86)の2種類があるので32bitの方を使う。
3. WrapドライバがLabVIEW2017で作成されているので、前
回と同様に2014用へダウンコンバートする。
LabVIEW2017体験版で mcp2221_dll_um_x86.lvlib を開き、「ファイル」→「旧バージョン用に保存」。
2014を選び、以下のフォルダに保存する。
C:\Program Files (x86)\National Instruments\LabVIEW 2014\user.lib
4.新規viを開いて、ブロックダイアグラム画面を右クリックする。
ユーザライブラリ → MCP2221A→ VIs に入っているものを使用する。
Wrapドライバを使ってみる
ADT7410温度センサ
モジュールを使ってプログラミングした。(↓クリックで拡大)
測定画面。温度グラフが表示される。
使用したWrapドライバは以下の5つ。
Mcp2221 Get Connected Devices.vi
Mcp2221 Open By Index.vi
Mcp2221 I2c Write.vi
Mcp2221 I2c Read.vi
Mcp2221 Close.vi
MCP2221AがPCに接続されている数を調べる。MCP2221AのVID(04D8)とPID(00DD)を指定する。
Open By Index
MCP2221AのVID(04D8)とPID(00DD)を指定して使い始める。
I2c Write
ADT7410(スレーブデバイス、アドレスx48)に対して2バイトの書き込みを行う。
0x03(デバイス設定)
0x80(101 0000, 16bit分解能, one-shotモード)
参考:http://akizukidenshi.com/download/ds/analog/ADT7410a.pdf
参考:I2C 温度センサADT7410を使う(5) 16bitで読み出し
I2c Read
2バイトの読み込みを行う。
Close
ループが終了したら最後に終了処理を行う。