PSDできちんと距離を測定するには
ロボット作ろう:シェーキー製作記
シェーキーにはロングレンジ測距用としてGP2Y0A710K、ミドルレンジ測距用としてGP2Y0A02YK、二つのシャープ製PSDを、カメラ上部のレンジファインダエンクロージャ内に、この写真のように搭載しています。
電源を独立してON/OFFできるようにしてあるので、切り替えて使用します。このPSDで周囲の環境を測定してマップを作成する予定です。となると、この測距センサの精度が問題になります。
まず、PSDには本質的に下記の誤差要因があります。
1・モノの角や本の背表紙が凸凹に並んでいる本棚など、平面でない物体との距離は正確に計測できない
2・平面でもポスターのように模様があると正確に計測できない場合がある
3・メッキ面や鏡など光を反射する物体は反射光がセンサに帰ってこないので測定できない
4・遠距離になるほど測定結果が正確でない
つまり、PSDで正確に測定できるのは、経験から、デバイスの測定最大距離の半分程度までで、単色の平面までの距離を測定する場合のようです。この条件だとかなり正確に距離を測ることが出来ます。
それ以外の誤差の要因としては、電気的なノイズが測定結果に混入することが考えられます。以前、PSDの消費電流を解析した結果から見ても、ちょっと心配です。早速センサ出力を測定して見ました。
100mV/Divです。波形が毛羽立っているのは、 DC-DCコンバータのスイッチングノイズです。デジタルオシロは極めて短い(数nsくらい)の信号も正直に拾い上げるのでこんな感じになります。このケバは相当高速のADでないと拾えないので、それほど気にする必要はありません。ただ、100us強のパルス幅、1000us強の周期で、100mVほどのパルス性のノイズが乗っているのはいただけません。これはADコンバータに捉えられ、誤ったデータをシステムに与える恐れがあります。障害物回避などの用途ならそれほど問題はありませんが、今回のようになるべく正確に距離を測定したい場合は何とかしたいところです。モチロン、ソフトウエアで対処する手もありますが、アナログな僕は、オーソドックスにノイズを「元から断つ」という方針で対策しました。
このノイズはここで投稿したパルス状の電流消費が影響しているのは明らかです。パルス幅、周期が同じです。これをなるべく少なくするには電源まわりのインピーダンスを下げればいい訳です。
そこで、各PSDの電源ラインに4700uFのコンデンサを入れました。こんな感じです。
なるべくPSDの近く(電気的に)入れました。その結果の出力がこんな感じです。
かなりパルス性のノイズがとれていると思います。
ただ、これでもまだ問題ありで、50Hzの電灯線ハムのような成分が乗っていることがわかりました。(写真を撮りそびれてしまいましたが)シェーキーではPSDの出力をシールドなしのロボットケーブルで50cm以上引っ張っています。あまり、外来ノイズに強い構成とも思えません。ただ、これは信号ラインのインピーダンスが高く、オシロのプローブを接続したことで乗るということも考えられるので、信号ラインにOPアンプによるボルテージフォロワを入れてみました。前の写真の下の方に見えているのがそれ用のOPアンプです。
しかし、この対策は全く効果なしでした。まあ、もうちょっと考えなくてはなりませんねえ。
この状態でSTM32F4 Discoveryで読み込むと、読み込むたびに数十mVもの差が出ることがあります。そこでとりあえず、20mS(50Hzのハムの周期)ほどの間に100回読み込んで平均を取るようにしてみました。これだと毎回の差はかなり小さくなります。つまり、ノイズの周波数成分がわかっているので、それをキャンセルするようにした訳ですね。電気的に対策したいものですが・・
うーむ、なんとなく釈然としない部分もあるのですが、とりあえず何とかなっています。近いうちにもう少し分析したレボートができればと思います。
« アクエストークLSI・ATP3011F4-PUを試してみる | トップページ | シェーキーの近況あれこれ »
「ロボット作ろう」カテゴリの記事
- Raspberry Pi3でturtlebotを動かしたいのだけど(2016.06.11)
- STM32F4のAD変換トラブル(その2)(2013.03.29)
- TrueSTUDIOからEclipseへ乗り換える(拾遺)(2012.07.14)
- TrueSTUDIOからEclipseへ乗り換える(その3)(2012.07.13)
- TrueSTUDIOからEclipseへ乗り換える(その2)(2012.07.07)
コメント