PSDの出力を距離に変換する簡単な方法
ロボット作ろう:シェーキー製作記
以前、PSDの電圧出力を距離に変換する方法について投稿しました。その記事では変換式については説明しましたが、式の係数の求め方は、5球スーパーのトラッキング調整のように、近い距離、遠い距離で交互に調整していくという方法で、値は目の子で決めるようになっていました。
改めて考えてみると、未知のパラメータが二つの連立方程式なので、これを解けば一発で係数を決めることが出来るはずです。そこで、エクセルでこんな変換表を作ってみました。
おさらいをしておくと、浮動小数点での変換式は下記のようになっています。
距離(cm)=係数A / (電圧 + オフセットB)
つまり、PSDの電圧/距離のグラフを双曲線で近似しようという訳です。
PSDを動作させ、最近距離付近での電圧と距離の実測値と、最大距離の70%くらいでの距離と電圧の実測値を黄色のセルに入力すると、自動的にA,Bを計算し、変換式を完成させてくれます。PSDの種類は問いません。シェーキーではミドルレンジのGP2Y0A02YKとロングレンジのGP2Y0A710Kを使っていますが、いずれもこの表で変換式の係数を決めました。
実測するには写真のようにPSDをしっかり固定し、写真のようにPSDの最前面から対象物までの距離を測ります。
対象物は十分に大きなも白っぽい平面を用意します。写真ではノートパソコン用のトートを使っていますが、壁を使う手もあります。電圧はデジタルテスターで、距離はスチールメジャーなどで測定します。
先ほどの計算表の値は、実際に手持ちのGP2D12(GP2Y0A21の旧品番)を測定したものです。テストのセルに任意の距離での電圧を入れ、計算値と実測値をくらべたところ、おおむね0.5〜3cmくらいの誤差には入っているようでした。全体的に実際の距離より近めになるようです。また、近い方の距離の実測値がたとえば10cmだったとき、これを10.5cmなどと少し大きめに入力すると、距離の誤差が小さくなるという現象もみられました。
この計算式で別のGP2D12も試してみました。やはり個体差はあり、誤差は大きくなりますが、同じ計算式でも実用上は問題なさそうでした。
計算表のエクセルファイルはこれです。簡単ですがインストラクションも書いてあります。
「psd.xls」をダウンロード
浮動小数点の式だけではなく、mV入力でmm単位の距離を返す32bit整数版の式も同時に作れるようになっていますので、PIC16シリーズなど、浮動小数点演算が苦手のマイクロコントローラにも応用できます。
この計算表で作った変換式をプログラムに組み込んでおけば、距離が直接読めるので何かと便利です。
ただ、もともとPSDの測距結果は対象物によって精度はまちまちですから、この変換式も目安として使うべきでしょう。
« STM32F4 DISCOVERYのAD変換のトラブル対策 | トップページ | 移動テストの動画です »
「ロボット作ろう」カテゴリの記事
- 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)
コメント