光センサー測定方法調査

 Mindstorms RCX の光センサーの動きをハードウェア面から調査した結果を下記に公開します。

光センサー動作中の入力ポート電圧測定結果

測定対象:白
入力ポート波形
brickOS測定値:49 (0x31)

測定対象:グレー
入力ポート波形
brickOS測定値:41 (0x29)

測定対象:黒
入力ポート波形
brickOS測定値:31 (0x1F)

 brickOSにおいて光センサーをアクティブ・モードに設定したとき、入力ポートの電圧は約160マイクロ秒の短い周期で、High – Low を繰り返しています。

 この仕組みは次の通りです。

 Mindstorms RCX の光センサーブロックは、対象を照らすLEDと反射光を受ける受光素子(フォトトランジスター)の主に2つのモジュールから構成されています。一般的な回路構成であれば、LEDに電力を供給する「電源ライン」、受光素子の電圧を測定するための「信号ライン」、電源ラインと信号ライン共通の「グラウンド(GND)ライン」の3本の配線が必要になります。

 しかし、RCXでは配線をシンプルにするためにセンサーブロックとRCXは2線(2芯)のラインで接続されています。そこで光センサーには蓄電器(コンデンサー)が組み込まれており、短い周期、つまり上記の160マイクロ秒周期で「電力供給(コンデンサー充電)」と「センサー読み取り」を切り替えることにより2線のラインで3線の機能を実現しています。

 brickOSのシステムプログラムは割り込み処理を使って、上記の動作をユーザープログラムのバックグラウンドで実行しています。

 ちなみにbrickOSは(モーターの疑似PWM制御やSOUND機能を実現するために)複数の割り込みを利用しています。したがって下記の測定結果からも見て取れる通り、光センサーのコントロールが、しばしば遅延しています。(必ず160マイクロ秒おきに光センサーの読み取り値が更新される訳ではない。)

入力ポート波形

 以上の結果から、光センサーの更新周期をより短く、より連続的にしようとすると、光センサーへの給電(充電)時間を短くする必要があり、LEDの発光性能を低下させるリスクが予想されます。

以上です。


‘Mindstorms’, ‘Mindstorms RCX’ は、レゴグループの登録商標です。

参考URL

静岡大学 EE-Lab

http://eelab2.eng.shizuoka.ac.jp/mindstorms/rcx/mindstorms_rcx.html

このページを作成するために上記のWEBサイトの情報を参考にさせていただきました。



Creative Commons License
この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください