2016-07-06 20:05 | カテゴリ:PIC応用回路
もう、お腹一杯!と言わずに、、、

模型の製作を進めたいのですが、「これを組みたい!」というモデルが見つかりません。
その間、PICのプログラミングを勉強して、「ボケ防止」を兼ねたいと狙っています。

手持ちの部品に、バックライト付き液晶表示器と気温、湿度気圧計測できるセンサーがありましたので、これを使った電子工作をしていました。

Bred.jpg

続きは、、、



これらの部品のインターフェースは、i2Cです。
これまで、RS232シリアル通信、PWM(RCサーボ、LEDの点滅)、EEPROM、i2cシリアル通信などを自分なりに調べ、学んできました。
なかでも、i2C通信は、各種のセンサーや模型用モータードライブICなどの制御(パラメータの授受)に最近特に採用されてきました。
自分も、i2Cは使用したことはあるものの、ちょっと自信が無いので、ここでもう一度再確認したいと思います。

また、ブログ訪問の皆さんには、PIC工作のご参考になれば幸いです。
モータードライブICも最近はi2Cなので、この制御を理解すると、応用が広がると思います。

PICの開発言語は、XC8(無償版)を使用しています、また、PICは主に16Fシリーズを使っています。しかし、残念ながら、XC8では、16Fシリーズには、i2CのXC8関数が提供されていません。
無いものは作るしかありませんので、「使えるi2C関数」を作るところまで、頑張ってみようかと思います。


(i2Cシリアル通信とは?)


i2Cシリアル通信とは?
WEBで検索すると、諸先輩の丁寧なご説明がたくさん見つかります。
私なりに簡単に言えば、

* データ線、クロック線、GNDを利用したシリアル双方向通信
* PIC側をマスターとして、スレーブ側の各種デバイスを芋づる式に接続。

i2c_slave_master.jpg

* 通信速度は、同じ基板内などのように近距離で直結したデバイスと、100kbpsまたは400kbpsの速度で通信。
* 各、デバイスとは、固有のアドレス(デバイスごとに決められたシリアル通信の住所)を元にして、個別に通信可能。

というかんじでしょうか。

通信には決まった手順があります。
RS232通信では、送信ー>受信と一方通行で、PICと対象で双方向通信をしようと思えば、それぞれ、送信・受信回路を装備しなければなりません。
i2Cでは、データ線とクロック線の二本を、芋ずる式に接続すればよく、とても簡単なハードになります。

その分、簡単なソフトの手順(決まり)があり、それを守れば芋ずる式に接続された複数のデバイスと自由に個別にデータのやり取りができます。
たとえば、センサーで取り込んだ計測値(気温など)をPICで処理して、それを液晶表示デバイスに表示するという事が、i2Cだけで可能になります。

今回のテスト回路では、PICと液晶デバイスと気候センサーをi2Cで接続しています。

Sensors.jpg

上側が、気候センサー、下側が、i2C電圧変換アダプターです

ちなみに、デバイスによっては、動作電圧が5Vではなく3.3Vというものもあります。実は、気候センサーが3.3Vなので、i2Cの接続には、専用の電圧変換ICを間に入れています。

3Vpower.jpg

回路全体は、こんな感じです。

Bred.jpg

液晶表示器をつないで、気温、湿度気圧を表示しています。

PTH.jpg

計測数値がどの程度正確なのかわかりませんので、他の機器と比較してみました。

TempTest.jpg

まず、市販の時計と温度計がセットされたもの。クーラーのリモコンとも合わせて、温度は良さそうです。
湿度気圧は、以前に制作した、温湿度気圧計と比較します。

Press.jpg

Hum.jpg

PTH.jpg


湿度気圧は、いまいち合致しません。
どちらが正しいかはわかりません。

次回から、簡単な、i2C通信のプログラムをご紹介して、まずは、液晶に文字を表示する所から始めたいと思いますので、よろしくお願いします。



管理者のみに表示する