![]()
3.フォトセンサーを使う (2021.11.18-2021.11.30)
これから製作する二輪駆動の実験車には、近接センサーや距離センサー、ロータリーエンコーダー等の様々なセンサーを使用します。その基本的な動作を確認するために、それぞれに簡単なテストプログラムを作成します。手始めに、近接センサーRPR-220(ローム製)と言うフォトリフレクタをテストします。主に衝突防止が目的ですが、自動操縦では近接停止や駐車のための位置チェック等にも使用するつもりです。RPR-220は反射型のフォトセンサーで、近くに何も無ければオフ状態であり、一定の距離まで相手(壁等)に接近するとオン状態になります。フォトトランジスタ側のコレクタと+電源間に接続した抵抗値を変えることで、反応する距離を微調整することができます(デバイス仕様では1センチ程で最大感度)。テスト回路は下図の通りです。実験では図のRに10Kの抵抗と直列に10Kのボリュームを付けて、感度を調整できるようにしています。予定では距離2センチでオンになるよう設定したいと思います。

Arduinoのアナログ入力は、センサーの出力レベルによって変動します。反射物が無いオフ状態では1020程度、オンの場合では40前後で0にはなりません。フォトトランジスタがオンになっても、コレクタ-エミッタ間で電圧降下があるからです。従ってプログラムでは50未満になったらオンとみなすようにしています。Arduinoのシリアルモニタを利用して、アナログ検出値と共にセンサーオフでは「WAIT」、オンでは「DETECT」と表示します。テストのため1秒間隔でチェックしていますが、搭載時には10~100mS程度と短い間隔でセンスする予定です。
int pin = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
int val;
val = analogRead(pin);
Serial.println(val);
if (val < 50) {
Serial.println("DETECT");
} else {
Serial.println("WAIT");
}
delay(1000);
}
実際に使用する場合は、センサーオン/オフの瞬間にチャタリング(ごく短いオン/オフの繰り返し変化)と呼ばれる現象が発生する可能性があります。その対策のために、時定数を持つ遅延回路とシュミットトリガ・インバーターを組み合わせた回路を追加します。インバーターを使うことでセンサー出力が正論理になり(センサーオンでHIGH)、動作が分かりやすくもなります。実験車では近接センサーを前に4個(左右端と中央寄り)、後の左右端に各1個の計6個設置するため、シュミットトリガ・インバーターは74HC14の6回路分を使います。抵抗とコンデンサで電圧変動を吸収し、図の定数だとフォトトランジスタがOFF(L→H)時には110ms、ON(H→L)時には10msの時定数になります。シュミットトリガの前の抵抗は保護用なので、チャタリング防止には直接関係はありません。10~100ms程度の時定数があれば、概ねチャタリングは防止できると思います。
フォトセンサーで問題になるのは外来光の影響です。RPR-220の場合は可視光遮断フィルターによって防止していますが、その効果がどの程度なのか検証する必要があります。
実験車では中距離用の近接センサーも搭載します。概ね30センチ程度でオンする設定で周囲を見張ります。これには写真のようなモジュールタイプのセンサーを利用することにしました。amazonで10個セットが約800円と1個80円程の格安品ながら、コンパレーターによる閾値判定やチャタリング防止も入っている本格派です。感度調整ボリュームや検知時のLED表示等も付いており、比較的遠距離での検知を可能としていて、想定通りならかなり使える内容と言えます。ただし、センサー部はかなりアバウトな作りなので、恐らく外来光にもあまり強く無いと思われます。フードのようなもので覆って、少しでもセンサー精度を向上する必要があるでしょう。


これをRPR-220で使用したプログラムでテストします。このモジュールでは出力レベルがH/Lにはっきり分かれるので、ボリューム調整でどれ位の距離範囲が検出できるかチェックします。
当初RPR-220もオン/オフでのみ使用するつもりでしたが、接近状況を詳しく知るためにAD変換することも検討しています。なぜかと言うと、実験車の周囲の状況が詳細にわかれば、停止位置なども精密にコントロールできるからです。例えば壁から1センチ離れた位置で止めるといったことも、センサーのアナログ値を監視すれば可能になるわけです。一方で、やや離れた位置を短時間でチェックして大まかに把握することが、このセンサーモジュールにとっての重要な役割です。更に遠方の物体は超音波センサーで距離と角度を検知するため、三者が役割を分担することで高度な制御が可能になると考えています。
![]()