2014年3月27日木曜日

14.03.27 2代目ライントレーサー


 昨年、タミヤのミニモーターを使ってライントレースして走る2輪車を作ったが、レゴのモーターで同じコースを走る2輪車ができないかやってみた。
高さ方向はモーターのサイズがもろに効き、初代のほうが圧倒的に低いが、上からの投影面積はどちらも同じサイズでレゴの6*10のプレートに収まった。


タミヤのものは小さいモーターが車軸の後に左右に並んでおり、モーターの軸で車輪の外周を直接駆動する。一方レゴのものは、車軸の上部にモーターが前後に並び、歯車で駆動する。


PICとモーター駆動ICは、初代は8pinのPIC12F1822とDRV8830、2代目は18pinのPIC18F1320とLB1639を使った。
12F1822は8pinで小さくて使いやすいが、プログラム領域が2Kwrods、RAMが128bytesと小さいのが難点。ライントレーサーのコードはギリギリで収まっている。レゴのほうはDRV8830の手持ちがなかったので、LB1639を使うこととし、IOのピンが多い18F1320を使うことにした。こちらはプログラム領域が4Kwords、RAMが256bytesでコードは余裕があるが、RAMがあふれそうになり、リンクのスクリプトを一部修正して使った。


トレース用のセンサーは反射型のフォトインタラプタRohmのRPR220。太陽光や白熱電球の赤外線に反応するのが難点であるが、小型で外付け抵抗2ヶだけで使えるので重宝している。


初代のものはモーターを輪ゴムで取り付けて摩擦で駆動しているが、この部分はかなり調整が必要である。レゴのほうは歯車で駆動するので駆動系の調整は必要ない。ただし、サイズを最優先したので走るスピードは初代よりもかなり遅い。
同じコースを走らせてみると、初代は走るのは速いが安定度はイマイチでふらふらしながら走ることが多い。レゴのほうはゆっくりではあるが、安定して走っていく。


2014年3月9日日曜日

14.03.09 またもや逆立ち三輪車


 ライントレースに使った反射型のフォトインタラプタの出力がアナログ値であることに気が付き、これで逆立ちができないかトライしてみた。
三輪車のボディは以前作ったものをほぼそのまま使う。PICのシステムは、往復運動で残像表示したときに作った基板を使う。電源は単4電池3本。


 センサーは車体の前部、モーターの上に取り付けた。センサーと床の距離が小さくなると出力値が大きくなり、距離が大きくなると出力値が小さくなる。これで床までの距離を測定し、傾きを減らすように車輪を駆動する。


 電源電圧が4.5Vなので、古いPIC18F2431を使う。モータードライバーはLB1639。残像表示用にLEDが8ヶついているので、センサーの測定値を7段階でLEDに表示する。
車輪の駆動は、モーター側24歯、車輪側40歯の歯車とした。


制御は、前回の測定値と今回の測定値を使ったいきあたりばったりの制御だが、動作間隔、駆動の強さをリモコンで調整できるようにした。
これで何度か調整してみたが、うまく逆立ちできるときと全くできないときがあり、ハードが悪いのかソフトのバグか電源が弱いのか、などあれこれ調べているうちに、昼間太陽光が明るい時とか、夜白熱電球をつけているとうまく動かないことに気が付いた。センサーは赤外線のLEDを光らせ、その反射光をフォトトランジスタで受けるようになっており、太陽光や白熱電球などで赤外線が光っているとそちらに反応してしまい、測定ができなくなってしまうことが判明。このおもちゃは太陽光が届かない部屋とか、夜蛍光灯の明かりの下、などでしか遊べないことがわかった。