ライントレースロボット窮鼠 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 |
1 | Vcc | CPUへ電源供給 |
2 | P77/AN7 | 電池電圧監視 |
3 | P76/AN6 | NC |
4 | P75/AN5 | NC |
5 | P74/AN4 | LineセンサE |
6 | P73/AN3 | LineセンサD |
7 | P72/AN2 | NC |
8 | P71/AN1 | LineセンサB |
9 | P70/AN0 | LineセンサA |
10 | GND | CPUへ電源供給 |
J2 |
1 | Vcc | CPUへ電源供給 |
2 | PA7/TP7/A20/TIOCB2 | 左ブレーキ |
3 | PA6/TP6/A21/TIOCA2 | 右ブレーキ |
4 | PA5/TP5/A22/TIOCB1 | NC |
5 | PA4/TP4/A23/TIOCA1 | 左モータ(PWM) |
6 | PA3/TP3/TCLKD/TIOCB0 | NC |
7 | PA2/TP2/TCLKC/TIOCA0 | 右モータ(PWM) |
8 | PA1/TP1/TCLKB | 左ロータリエンコーダ監視 |
9 | PA0/TP0/TCLKA | 右ロータリエンコーダ監視 |
10 | GND | CPUへ電源供給 |
J3 |
1 | Vcc | NC |
2 | PB7/TP15/DREQ1/ADTRG | CPU出力バッファ動作許可 |
3 | PB6/TP14/DREQ0 | CPU出力バッファ動作許可 |
4 | PB5/TP13/TOCXB4 | 両ロータリエンコーダ動作許可 |
5 | PB4/TP12/TOCXA4 | LineセンサE動作許可 |
6 | PB3/TP11/TIOCB4 | LineセンサD動作許可 |
7 | PB2/TP10/TIOCA4 | NC |
8 | PB1/TP9/TIOCB3 | LineセンサB動作許可 |
8 | PB0/TP8/TIOCA3 | LineセンサA動作許可 |
10 | GND | NC |
改良版 窮鼠Andante
予告どおりAndanteができました。
<<電子工作小品集へ戻る
Since 2003/08/31
LastUpdated 2003/12/21
Copyright 2003 Naru
今日
昨日