PICマイコンカーを用いたオープンキャンパスプロジェクト2007 #3
武田のページ
目次
はじめに
コンセプト
ミニカーの構造
距離計測の原理
プログラム
結果
はじめに
7月21日に行われた宇都宮大学オープンキャンパスで紹介した超音波センサとPICを用いたミニカーについて紹介します。
コンセプト
目標位置に精度よく停止させるために超音波センサを用いて目標位置の30cm後方に置いた対象物までの距離を計測し、その値をモータ動作に反映させてモータを制御し、目標位置に停止させることを考えました。
また、モータドライバICを用いることで前進と後退が出来るようにし、目標位置を過ぎてしまった場合でも前進や後退を繰り返し目標位置付近に必ず止まるようにしました。
その他の特徴として、PICを超音波の送受信用とモータ駆動用に2つ用いています。
ミニカーの構造
今回製作したミニカーの構造としては下のようなものになりました。基となるミニカーは直進性のよいミニ四駆を用いました。青いスポンジに囲まれているところが超音波センサになっています。
距離計測の原理
上の図は超音波センサの概観を示したものであり、ここでは超音波センサを用いてどのように距離を計測したかを記述します。
上の図は距離測定の原理を説明するのに役に立つ図で、L:物体までの距離、Vs:音速、T:戻ってくるまでの時間、とするとこれらの間にはT=2L/Vsの関係があります。
ここで室温を約25℃と決めると、音速は約340m/secとなります。よって音が1cmの距離を往復するのにかかる時間TはT=2/34000=58.824μsecとなります。
この1cmの距離の往復にかかる時間を単位として距離を計測していきます。このあたりをもう少し詳しく説明していきます。
下の図がこの測定のタイミングを示したもので、まず、超音波を発振するのですが、これを短時間だけ送信して停止させ、確実に停止するのを待ってから反射波の受信を開始します。
この処理を、超音波がちょうど20cmだけ往復するのに要する時間を利用します。
すなわち588μsec×2倍の時間を使って、最初の588μsecだけ超音波を発振し、次の588μsecはお休みします。
そして、そのお休みの直後から受信処理を開始します。
こうすることで、送信センサの超音波が基板やケースなどを伝わって直接受信センサに入ることによる誤作動を避けることができます。
そのかわり、20cm以下の距離測定はできないということになります。
しかし、実は、センサ自身も30cm以下はあまり精度が良くないのでちょうどいい感じになります。
プログラム
プログラムは以下のようにしました。下のフローチャートは超音波距離計測のものとなっており、これは 後閑 哲也:たのしくできるPIC電子工作, 東京電機大学出版局(2000)の中の超音波距離計の距離計測プログラムを参考にしました。そして、そのプログラムの中にセンサで計測した距離をもう1つのモータを制御するPICの方に送信しています。
下のフローチャートはモータ動作のものとなっています。
このプログラムでは目標値を測定対象から30cm手前の停止位置にするため30cmとし、
出力をセンサが読み取った距離とし、偏差eをセンサの読み取った距離引く30cmとします。
そしてこの偏差eを用いて、80>e>0のときはx=1/2*e+40とし、このxをモータのデューティー比として目標位置に近づけば近づくほどモータの回転を落とすようにしています。
ここで偏差eが0のときでもデューティー比が0%ではなく40%となっているのは、実際にミニ四駆がデューティー比が30%のように低いときにはしっかり進んでくれないために40%としています。
また行き過ぎたとき、つまりe<0のときにはr=60-1/4*eとし、このrを後退のデューティー比としてバックさせます。
ここでも偏差eが0に限りなく近づいたときでもデューティー比が0%とならず60%となっているのは前進のところと同じ理由であり、60%と大きくなっているのはモータドライバICの関係上後退するときの方が力が必要なためです。
そして、停止位置付近で前進後退を繰り返し、偏差eがちょうど0になったときに停止するようなプログラムになっています。
また、回路図はこちら
結果
結果としては、最終的には精度良く停止するようにはなりましたが、停止位置付近ですんなり停止位置に近づいて停止する場合や前進後退を繰り返し、 なかなか停止位置で止まってくれない場合など停止するまでの過程にばらつきが生じてしまいました。
実験動画リンク
・PICマイコンカープロジェクトTOP
・各個人のページ
∟大沼
/坂田
/武田
/橋本
/江田