なる研電子工作小品集>窮鼠Largo(ライントレースロボット)

ライントレースロボット窮鼠 LargoVersion

JMCR(JapanMiconCarRally)2004に出走しました
所属:なる研 自動制御班  マシン名:窮鼠(きゅうそ)

コンセプトは、ちぃさく、軽く、安く、です。
電池込み150gに出来ました。

車 長163mm (センサ抜き:72mm) 駆動モータ田宮トルクチューンモータx2
車 幅142mm 駆動系電圧1.2V NiCd電池 2cell直列 1.8〜3.1V
車 高33mm 制御系電圧駆動系電圧を昇圧 5V
重 量電池抜き:110g 電池込み:150g ギヤ比8:30
ラインセンサTPS612,TLN113 アナログx4 タイヤ、ホイール田宮レストンスポンジタイヤ

●モータドライバ

 駆動用には大電流が流せon抵抗が非常に低い(7mΩ)のNch MOS-FET 2SK2956を、ブレーキには小型のPch MOS-FET 2SJ439を使用しています。共に入力容量が大きく(それぞれ2000pF,1050pF)、H8の許容(30pF)を超えているので、バッファICを入れています。また、PchとNchが同時にONすると電源をショートしてしまい、FETを破損したり配線を傷めてしまうので、ORロジックICを使い駆動優先で同時にONにならないようにしています。保護ロジックの配線を間違えて1つ燃やしました(^^;)。

 あとで気が付いたのですが、ANDを使ってブレーキ優先にしたほうが良いです、するとブレーキの手続きをブレーキピンHだけにできます。駆動優先だと、駆動信号がPWMなのでFETが十分チャージ/disチャージされず非常に効率がわるいのです。今回はANDのICが見当たらなかったのでPWM周波数を低く設定することで回避しました。

 モータの配線は大電流が流れるので特太の線材(33mΩ/m)を使用しています。モータにはノイズ対策の気休めでケースと端子の間に0.1uF積セラコンを付けています。

●Lineセンサ


 赤外LEDと赤外フォトトランジスタをセンターライン検出に2組、クランク検出用に2組使用しました。
 共にAD変換して、センターライン用は演算して30mmの間で256段階(実際は暗電流と飽和により半分位)のリニアな値を得、クランク用は単純に闘値と比較しています。
 昇圧して得た貴重な電流を少しでも節約できるように、LEDは一つずつパルス点灯しています。同時に点灯しないので、アノードコモンにすることで抵抗もケチっています。
 クランク検出用には変調型センサも検討しましたが、1組で8mA(IC4mA+LED4mA)と大喰らいなため止めました。
 センターライン検出にはあと4組くらい使ったほうが良いです、ステアリングを搭載しないことによりセンサ位置が車体に固定されるので、2組ではリニア化できる範囲が狭すぎて上手く制御できませんでした。

●ロータリエンコーダ

 速度や車体の回転角を監視したり、クランクの位置を予測するため、ロータリエンコーダを2つ左右に搭載しました。
 画のように、赤外LEDと赤外フォトトランジスタを向き合わせ、間に黒く塗って穴を開けたギヤを挟むことでタイヤの回転数を読んでいます。窮鼠は十分軽く且つLowPowerなためタイヤのスリップはほとんありません。
 分解能は、タイヤ直径15mm、穴4つ、電流の立ち上がりカウント、なので、15.0xπ/4≒11.8mmです(やはりπは3.14が良い)。
 昇圧して得た貴重な電流なので少しでも節約できるようにプログラムからDisableできるようにしました。
 MCRの公式ページではシュミットトリガICを外付けしていますが、データシートによるとH8のPA,PB(ボードのJ2,J3)は元々シュミットトリガ入力になっているので直接繋いでも正常にカウントしてくれます。

●DC-DCコンバータ

 窮鼠には電池2本でH8やFETを動作させるため、自家製DC-DCコンバータを搭載しました。
 電源はニカド電池2本で2.4Vですが、モータ駆動電流や電池残量減少による電圧降下を考慮し1.5Vでも動作するようにしています。更に、電池電圧を監視して1.8Vを下回るようならモータ駆動電流を制限することでCPUのリセットを防いでいます。
 また、出力電圧は、センサのADCを精確にするために3端子レギュレータで安定化するので、ドロップアウトを考慮し、5.5V付近になるように負帰還をかけています。出力電流は窮鼠の主要な消費電流が、CPU40mA、ロータリエンコーダ4mA、Lineセンサ4mA、なので多めに見積もって50mAとしています。最も多く電流を消費するCPUボードでは電源LEDを外したり通信用ICのMAX232にDisableスイッチを付けるなどして省電力化しています。
 回路はブロッキング発振回路と呼ばれている物を使用しました。回路は単純ですが動作理論は非常に難しいそうです。あたしの高校物理IIBでは手が出ません。なのでココはオブジェクト指向です^^。…と言っても効率を上げるためコンデンサの配置やコイル巻にはかなりの試行錯誤をしました。
 

●CPUボード

 大会で指定されているので、支給された「RY3048Fone」という北斗電子のボードを使います。「改造OK」とあったので、ボードからH8だけ剥して車体に実装しようと思ったのですが、車検に引っ掛かりそうなので断念。
 H8内部でプルアップ可能なJ5にパラメータ変更用のプッシュスイッチを4個ボード上に追加しました。
 車体からフラットケーブルが飛び出している様はあまり宜しくないので、コネクタを裏側に付け換えました。元のコネクタを外すと、その下でパターンがショートしていました。北斗電子に文句を言って開発が遅れるのは嫌なので、カッターでショートしている部分をカットして対処しました。普通は気付かない所ですが、他の方々はどうしたのでしょう?

●プログラム

 ほぼリニアなlineセンサの値を基にPD制御をしています。
 スムーズに開発できるようにインターフェース(右画)を作ってみました、これで窮鼠の状態が把握できます。規則に反する恐れがあるのでパラメータ転送機能は付けてません、各パラメータの変更はCPUボード上のスイッチできるようにしてあります。
 パソコンのインターフェースはActiveBASICで、H8のプログラムは全てアセンブリ言語で書きました。
 クランクの処理などLargoでは完成できなかった部分もあります。PD制御にしてもまだ理解が足りないので、大学に入学できたら来年「窮鼠Andante」として書くかもしれません。

●マイコンカーラリー横須賀地区大会
 結果は、3mほど安定していましたが、直線で急に発振し停止してしまいました。コースの繋目でセンターラインが2mmほどずれている(右画)ことに拠り、車体位置が瞬時に2mmもずれたと判断され微分項が強力に働いたものと思われます。センサは1秒間に10万回以上サンプリングするので、瞬時の2mmのずれは20m/s(=72km/h)で横滑りしていると判断されてしまいます。すると、安定させようと微分制御が左右輪のトルク差を最大にします。しかも、PWM周波数を低くしたため誤制御の状態が長時間継続してしまいます。まさかセンターラインが連続でないとは思いもしませんでした。数学で「連続⇔微分可能」というのがありますがまさにこれです、量子化しなかったら無限大となるでしょう。
 競技が早々に終了し1時間ほど自由にコースを使うことができました。ということで、錘として電池1本をタオルで包んだ物を引っ張らせてみると、ストレート、カーブ、共に安定して走行しました。これは、センサを浮かせて入力値をソフトに(やわらかく)する働きと「やじろべえ振り子の錘」のような働きをしたためと思われます。コースの雑巾がけ状態(^^。
 完走すらできませんでしたが、多くのデータを得ることができました。

H8 CPUボード各ピンの割り振り
J1 1VccCPUへ電源供給
2P77/AN7電池電圧監視
3P76/AN6NC
4P75/AN5NC
5P74/AN4LineセンサE
6P73/AN3LineセンサD
7P72/AN2NC
8P71/AN1LineセンサB
9P70/AN0LineセンサA
10GNDCPUへ電源供給
J2 1VccCPUへ電源供給
2PA7/TP7/A20/TIOCB2左ブレーキ
3PA6/TP6/A21/TIOCA2右ブレーキ
4PA5/TP5/A22/TIOCB1NC
5PA4/TP4/A23/TIOCA1左モータ(PWM)
6PA3/TP3/TCLKD/TIOCB0NC
7PA2/TP2/TCLKC/TIOCA0右モータ(PWM)
8PA1/TP1/TCLKB左ロータリエンコーダ監視
9PA0/TP0/TCLKA右ロータリエンコーダ監視
10GNDCPUへ電源供給
J3 1VccNC
2PB7/TP15/DREQ1/ADTRGCPU出力バッファ動作許可
3PB6/TP14/DREQ0CPU出力バッファ動作許可
4PB5/TP13/TOCXB4両ロータリエンコーダ動作許可
5PB4/TP12/TOCXA4LineセンサE動作許可
6PB3/TP11/TIOCB4LineセンサD動作許可
7PB2/TP10/TIOCA4NC
8PB1/TP9/TIOCB3LineセンサB動作許可
8PB0/TP8/TIOCA3LineセンサA動作許可
10GNDNC














改良版 窮鼠Andante
 予告どおりAndanteができました。

<<電子工作小品集へ戻る

Since 2003/08/31
LastUpdated 2003/12/21
Copyright 2003 Naru
アクセス  今日今日のアクセス  昨日昨日のアクセス