2012年5月16日水曜日

アナログ入力で距離センサを試す。

今日は午前三時頃に目が覚めてしまい、眠くもならないので、夜なべでケーブルづくりです。


 久しぶりに圧着したら、端子金具が曲がってしまいました・・・。しばらくやらないと、こういうものは鈍ってしまいますね。で、なぜにこんなケーブルを作っているかというと


 先日、実家に戻った際に在庫の中から、シャープのPSD距離センサがいくつか発掘されたので、今いじっているArduinoにでもつないでみようと思ったからです。しかし、このコネクタ、小さくて作りづらいです。なんか他のにしてくれればよかったのに。


 とりあえず、お試しなので、基板側のコネクタをブレッドボードに挿して、電源、グランド、それとセンサの出力をArduinoのアナログ入力へ接続します。


センサの発光素子が光っているのがわかります。赤外線なので肉眼では見えませんが、デジカメを通すと光っているのがわかります。赤外線リモコンの作成などをするときにとりあえず赤外LEDが光っているのかとかを確認するのにも、携帯のデジカメなどを使うと便利です。

PSDセンサの出力電圧を距離に変換するのですが、このセンサの出力はリニアではありません。


きちんと距離を図りたいのであれば、何点か電圧と距離のテーブルを持って、その間を補間して求めるようなことが必要になるかと思います。今回は「なんとなく前方に障害物がある」くらいを検出出来れば、モーターシールドを載せたおもちゃの台車に使えないかな?と、そんな程度なので、ある閾値を判別出来ればよしとしようと思います。

はじめは単純に Loop内でアナログ入力を拾って、その数値をコンソールに出力していましたが、O'Reilly Japan の 「Prototyping Lab (小林 茂さん著)」にちょうどそのまま、PSDセンサで距離を測る解説が掲載されていたので、そのスケッチを使わせてもらいました。処理としては、上の電圧-距離グラフを反比例式に見立てて、定数を測定したアナログ値で割り算することで距離を求めます。センサの個々の特性により定数は適宜決める必要があります。また、センサには直近は測れないデッドゾーンがありますから、取り付け位置を奥まらせるとか、オフセットを載せるとかで調整することになります。