こんばんは。
英語でも解説サイトが少ないことから、TC74A0を例にLINXでI2Cを利用する方法の解説を投稿させていただきました。読込だけですが参考になれば幸いです。
Wordをペーストしたため、画質が悪いなど見苦しい部分がありますが、大目に見ていただけますようお願いします。
また、用語の間違えや改善点等がございましたら、コメントしていただければ幸いです。
///////////////////////////////////////////////////////////////////////////////////////////
(本文)
I2Cの利用方法について、温度センサー「TC74A0-3.3VAT」を例に解説します。
データシート
https://www.alldatasheet.jp/datasheet-pdf/pdf/515525/MICROCHIP/TC74A0-3.3VAT.html
販売サイト
https://www.marutsu.co.jp/pc/i/988285/
https://jp.misumi-ec.com/vona2/detail/222005585728/?PNSearch=TC74A0-3.3VAT&HissuCode=TC74A0-3.3VAT&s...
① 回路作成
RPiは3.3Vで駆動することから、GPIOの入力は3.3Vである必要があります[1]。そのため、3.3Vで駆動するTC74A0-3.3VATを利用します。
回路図は図 68の通りであり、プルアップ抵抗として10kΩを採用していますが他の抵抗でも問題ありません。ただし、極端に小さい、大きい場合は問題が発生しますので注意が必要です[2]。
図 68 TC74A0-3.3VATの回路図
② アドレスの確認
I2Cを利用するためにはデバイスのアドレスが必要であるため、ラズベリーパイに接続されたI2Cデバイスを確認します。
- RPiのコンソール画面にログイン後、「sudo raspi-config」を実行し、I2Cが有効になっていることを確認します。
- I2Cのアドレスを確認するためのソフトをインストールします。
sudo apt-get updatge
sudo apt-get install i2c-tools
- インストール完了後、次のコマンドを実行し接続されたデバイスのアドレスを確認します(図 69)。結果は16進数として表示され、今回はアドレスが0x48(2進数表記では1001000b)であることが分かります。
I2cdetect –y 1
図 69 コマンド実行後の画面
なお、アドレスはデータシートにも記載されています(図 70)。
図 70 データシートのアドレス
③ Labviewプログラムの作成1
デバイスと通信ができているかを、デバイスから得られるバイナリデータ(2進数の数値)確認するためのプログラム(図 72)を測定フォーマット(図 71)に従って作成します。この際、”I2C Read”に入力するアドレスを定数として指定する際、デフォルトでは浮動小数点数(floating point)が設定されているため16進数に変更します(図 73)。また、読込バイト数は図 70より、デバイスから8ビット(1バイト)送信されることから、1バイトと指定します。
VIを実行し、受信されたバイナリデータが表示されれば問題なしです。
図 71
図 72 デバイスの確認プログラムのブロックダイアグラム
図 73 16進数表示への変更方法
④ Labviewプログラムの作成2
通信ができたことから、得られた2の補数のバイナリデータを元に温度を算出します。
TC74から得られたバイナリデータと温度の対応は図 74の通りであり、得られた2の補数を10進数に変換した値が測定データになります。
図 74 データの対応する桁数
以上を踏まえて作成したVIは図 75、76あり、2の補数の変換にはLINXに用意されている関数を利用しています(図 77)。
図 75 ブロックダイアグラム
図 76 フロントパネル
|
図 77 変換に関する関数
|
[1] Raspberry Pi > 3.3V駆動なのだろうか? > GPIOは3.3Vで入れること
[2] プルアップ抵抗について解説