LowTech.com



 同一I2Cアドレスセンサーの多数個同時使用の実験


 カラーセンサ1個使用の次に、I2Cをパラレル読みして、多数個のカラーセンサーを使うことに挑戦してみました。ここで言うパラレル読みとは、下の回路図のようにPORTB,PORTC,PORTDをポートごとバイト読みすることを言います。ADRUINO-UNOの場合は、16個のセンサーまでですが、40pin以上のCPUであれば24個まで可能です。しかし、そんなに必要なことがあるとはとても思えませんが、、。回路図は下図のとおり簡単なものですが、工夫(?)と言えるところはSCLのところです。全てのセンサーに同一の動作をさせますので、SCLも全く同一で良いことになります。従って一本のビットポートから供給できることになりますが、SCL端子の静電容量が最大で20pF、16個並列だと320pFになってしまいます。なので2本のビットポート(pin2,pin3)から8個づつに分けて供給することにしました。SDA側は当然センサーと同数のビットが必要で、プルアップ抵抗も同数必要ですが、これは内臓のプルアップ(約30kΩ)を使用することにしました。
 ソフトの方は1バイトづつ3度読み込みしていますが、この程度の通信速度であれば問題ないようです。3バイトずつ並列に8回読み込んだデータを、各ポートの各ビットごとに串刺しにして24個分のセンサーデータとします。積分時間は、上記1chでの実験を固定モード(22.4ms)で行いましたので、こちらはマニュアルモードとし、2.8ms×10倍=28msとしました。
 実際の実験は、8個のセンサーをch1~ch8、ch9~ch16に繋いで実験しました。PC側はARDUINO付属のシリアルモニターで確認しました。また、PC側制御監視プログラムも、VB2010エクスプレスエディションを使って自作していますが、それについては次の項で紹介しています。

D/L_files_arduino_and_color_sensor_16ch.zip

Arduino_and_color_sensor(S11059-02)-16ch

 
 
 




Copyright 2019 © LowTech.com

inserted by FC2 system