ライントレーサの実験メモです。なんか、動くオモチャを作ってみようなんて思ったのは、一時期ミニ四駆(しかも電飾系)にハマっていた時以来のような。ただ、オモチャといっても、ライントレースはフィードバック制御のあるメカトロなので、一筋縄ではいかないものです。産業機械(コントローラ部)などは仕事で時々やるのですけど、メカから製作(しかも超小型)するなど初めての試みなのでどうなることやら(^^;。
今回はちょっとスタイルを変えて、製作の「過程」からリポートしてみることにしました。設計してポンと完成するものと違って、製作過程に試行錯誤が含まれる場合、結果よりその過程の方に価値があるものですから。そのような場合、こういったスタイルでのリポートの方が面白いと思います。
このプロジェクトのきっかけになったいしかわきょーすけさんの実験メモ。デジQを改造して自律動作させています。しかも、イメージセンサを使っているのでF/W変更で何にでもなるという代物。ちょっといじればマイクロ(ナノ)マウス?
というわけで、漠然としたイメージでプロジェクトスタート。最初は、同様にイメージセンサで行こうかと思ったのですが...
使う予定だったTrevaがそのままではサイズ的に厳しいので、バラしてイメージセンサを取り出してみた。しかし、パッケージがでかい(笑)。スペースメリットほとんど無いです。一応、FDIから5mm□サイズのセンサが出てはいますけど、これどっかで通販していないのかな? で、結局イメージセンサは諦めてオーソドックスな反射型センサを使うことにする。
マイクロコントローラには、Atmel AVRシリーズで手持ちのATmega8を使うことにしました。ROM:8KB、RAM:1KB、EEP:512B、10bitADC、内蔵OSCと、コンパクトにまとまりそうです。価格はトレー買いで @\460といったところで、結構納期かかった気がする。バラ買いでは \700程度か?
今の課題:上記の実現全て(汗)
さて、種となるチョロQを買いに近所の大手玩具店に行ってみた。いやぁ、あるわあるわ。ごくありふれた車種はもちろん、まるで車とは思えないようなモノまでいろんなのが棚にぶら下がっていた。とりあえず、スカイラインGT-Rと某美少女キャラをあしらった車を購入して店を出る。
早速バラしてみましたが、20年前と比べるとずいぶんと造りがチャチになっている気がします。流用できそうな部品がないのでちょっとがっかり。サイズだけ取ってシャーシから自作らないといかんみたいです。走行用モータには、秋月で売っているφ5mmの振動モーター(\150)から錘を取ったのを2個使う予定。十分なトルクが出るのだろうか? そもそも動力伝達機構はどうする? う〜む、課題がどんどん増えていくような(本当にできるのか!?(ぉ)。秋月にあると思ったボタン型Ni-Cdは既にないみたいなので、リチウム電池に変更。
今の課題:シャーシと駆動系の設計
何とかベースとなる車体ができた。まず、フレームを 1/20"ピッチのユニバーサル基板として、これにメカ部品やら電子部品やら直接取り付けていくことにした。これだと半田付けで固定できるので楽(^^)。タイヤは手持ちのミニ四駆部品の9mmベアリングにチョロQのタイヤを履かせた物。結局チョロQから使えたのはタイヤだけだった(^^;。適当なギアが手に入らないのでギア伝達を諦めて、モーターの軸をタイヤに押しつける摩擦伝達とした。単純な割には同じ段数のギアより減速比を大きく取れるのがメリットかな。でも、ゴミを巻き込んで引っかかりそうなので、モーターを傾けて軸との接点をタイヤの接地面からずらしておく。思ったよりスムースに回ってくれて、自走するくらいのトルクもありそうなのでとりあえず第一関門突破。
で、これがその駆動系。45mm×33mmである(車幅がちょっとレギュレーション違反(^^;)。写真はフレームの下側から見た様子で、この面にセンサやマイコンを乗せる(乗るのか?)。バッテリは反対側に動力系とコントローラ用に2個搭載する予定。
今の課題:マイコンの組み込みとセンサ回路
さて、配線を始めよう...と作業を始めようとしてふと手が止まる。回路図をまだ書いていない(笑)。とりあえず、適当に回路図を書いておく。定数は全部適当なので、センサ回路が意図した動作をするか心配である。センサのバラツキはF/Wで吸収するとして、やはり値を調整して中心値にもってこないとダメだろう。
今の課題:マイコンの組み込みとセンサ回路の動作確認
何とか部品が全部乗ってくれて配線が完了。スマメと並べてみるとそのサイズが分かると思う。ずいぶん余裕があるのでさらに小型化できる余地はあるけど。で、これが電池を乗せてみたところ。車高は最大12.5mmと平べったい。何というか....ちょうどゴキブリのようだ(笑)。micro と cockroach の合成語でMicroachと名付けてやろう。
試しに汎用AVRモニタを書き込んでI/Oを叩いてセンサをいじったり、モーターを回したりしてみたけど、なんかまっすぐ走らない(笑)。まぁ、左右別々のモーターをオープンループで駆動しているのだから当然だけど。さて、あとで暇見てF/W書きはじめよう。
今の課題:メカとセンサの調整とソフトウェア。
ライントレーサは遅々として進まず。本業で4本もプロジェクト持たされるし、タイミング悪いことにT誌から月末〆切で原稿を2本押しつけられるし(汗)。これではのんびり私事に熱中できない(;_;)。
センサの調整をしようとして受光部の負荷抵抗の値が全く合わないことが判明。意外に感度が高くて外光だけでサチっているし、パルス応答もトロい。仕方ないので、負荷抵抗を10kから330Ωに変更。後々調整しやすいようにセンサ回りの配線をやり直す。
今の課題:メカの調整とソフトウェア。
8月下旬になってから慌てる癖は子供の頃から変わらず(汗)。件の原稿は細部のチェックを残すところなので、頭を切り換えてライントレーサをいじり始める。
センサは、LEDをパルス駆動として外乱による光電流をキャンセルするようにしている。マウス使いなら常套手段だと思うけど、なかなか安定している。ただ、外乱の影響はないものの、対象との距離は大きく影響してくるようだ。モータからのノイズが入らないか心配も残るけど、とりあえずセンサ部は上出来かな。
で、これがテスト風景。電源はISPケーブル経由で供給しているので、リチウム電池は載せていない。センサ値をリアルタイムでパソコンに送信してモニタしているが、Mega8の内蔵OSCは±1%の精度なのでエラーも無く良好である。出力値から、LEDによる光電流は白地で1.8mA程度になるようだ(10bit A/D, Vref=2.5V, Rs=330Ωより算出)。
単三電池の電源で思いついたけど、これでホストにHP200LXを使えば、究極の「単三な開発環境」のできあが....いや、くだらない考えは止めておこう(^^;。
今の課題:ソフトウェア(センサ系)。
止めておこうと思いつつ....結局HP200LXでのAVR開発環境を構築してしまう。産廃の山から出土したHP200LXを復活すべく、AVRツールやDOS/V用の通信ソフトを移植したりして無駄に時間をつぶしていたけど、こんなに楽しいポケットPCってあったのね(^^)。でもなんか、やたら遠回りしているよーな気が(笑)。
mega8のEESAVEヒューズは結構便利。チップ消去でもデータを保持できるので、プログラムを書き換えた後もセンサのキャリブレーションをやり直す手間が省ける。で、センサ周りの制御はほぼ完了。6個のセンサの出力の分布を演算処理してラインの位置をリニアに取れるようになる。あとは、交差点でのエラーを適当に処理すればOKってところかな。そろそろ走らせてみよう。
今の課題:メカの調整とソフトウェア(モータ制御)。
動いた。あまりにもあっけなかったので、これくらいしか言いようがないですが(^^;。制御ループの遅れが大きいので調整に手こずるかと思いましたけど、P制御だけで十分でした。ただ、モーターの回転数制御が無くフリーラン状態なので、バッテリ電圧の変動でスピードが変わります。というか、CR2032でモーター2個駆動はきついようで、10数週くらいするともう分極でへたって止まってしまいます(しばらく置けば回復しますけど)。駆動系の摩擦をもう少し減らせないもんかなぁ...。
残る課題:リポート作成。
駆動系の摩擦はスライダが主原因だったようで、テール部にウイリーしない程度の重りを付けてスライダの荷重を減らしてみたら、かなりスピードが出るようになった。テフロンテープを貼るなど摩擦を減らすようにはしているけど、やはり影響が大きいようだ。ちなみに、車体の質量は電池込みで20g。
ところが、摩擦のロスが減ってループゲインが大きくなったせいか、サーボ系が発振してライントレースがおぼつかない。やはり、D制御を加えて位相補償する必要がある(オフセットは問題にならないのでI制御は不要)。トレース速度は、A3楕円コースで420mm/秒といったところで、ゴキブリ並だ(^^;。そろそろ打ち切ってまとめようかな。
残る課題:リポート作成。
1年間ほっぽらかしにしておいて何を今さらという感じもありますが、ようやくリポートを作成してプロジェクト完了しました(^_^;。リポートをまとめるに当たって、スライダによる支持をやめて5mmベアリングで支持するようにしたら、トレース性能も向上して結構いい感じになりました。
