カラーセンサ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エクスプレスエディションを使って自作していますが、それについては次の項で紹介しています。
Copyright 2019 © LowTech.com