TD4を使って,ライントレースカーを作ってみる.08.08.17.
1.はじめに
「CPUの創りかた」という,とても有名なディジタル回路入門書があります.
この本で題材とされているのが,「TD4」という4bitのCPUです.
とても面白い本で,私も部品を集めてTD4を組み立ててみたりしました.
しばらく遊んで,その後4年以上おいてあったんですが,
ソーラーカー で部品が余ったので,これも使いながらライントレースカーを作ってみることにしました.
「四畳半くらいの無限」をもうちょっと使ってみたいと思います.
2.まずはTD4
![TD4](./fig/line_tracer_td4/td4_c.jpg)
TD4です.(04年製)
しばらく動かしてなかったし,途中で部品を外して他のものに使ったりしてたので,
まだ動くのか心配でしたが,動きました.
組み立てたとき,デバッグが楽になるように,LEDが多めに付けてあります.
ただ,74HCの定格出力電流をちょっと超えていたような気がします.
いつか自走させたいとは思っていたので,なるべく小さく作ってあります.
また,入出力ポートのところにピンヘッダが立ててあります.
![TD4の裏側](./fig/line_tracer_td4/td4_s.jpg)
裏側はこんな感じです.
配線はちょっと大変です.
3.ラインセンサの製作とTD4の改造
![ラインセンサ](./fig/line_tracer_td4/line_sensor.jpg)
ソーラーカー で余った,ラインセンサ(後)です.
浜松ホトニクス 光変調フォトIC S7136と,
東芝 赤外LED TLN231の組み合わせです.
TD4にちょっと改造が必要でした.
1つめは入力ポートです. S7136はオープンコレクタ出力なので,普通はプルアップで使います.
TD4の入力ポートはプルダウンになっているので,プルアップに変更します.
2つめはクロックです. TD4のクロックは,10Hz/1Hzになっていますが,ライントレースをするには,ちょっと遅いです.
線に気がつくまでに時間がかかり,通り過ぎてしまいます.
クロック周期を決めている無極性電解コンデンサを2.2uFに変更しました.
これでクロックが,だいたい50Hz/5Hzになります.
4.車体の製作
![車体上側](./fig/line_tracer_td4/chassis_c.jpg)
車体兼,モータドライバ基板.
シンプルにトランジスタでモータをドライブします.
FA-130モータの定格電圧が1.5~3.0Vなので,電源はTD4と別です.
なんだか最近,eneloopファンです.
![車体下側](./fig/line_tracer_td4/chassis_s.jpg)
裏側.
定番のタミヤ楽しい工作シリーズです.
・ツインモータギヤボックス
・ボールキャスター
・トラックタイヤ
・単3電池ボックス1本用×2(表側)
![ライントレースカー](./fig/line_tracer_td4/line_trace_car.jpg)
組み立てたところ.
TD4用の電池は,真ん中の段にあります.
センサは,3つありますが,
両端の2つだけ使うことにしました.
入力ポートのスイッチで無効にできます.
5.プログラム
プログラムは下記のようにしました.
IN A ;入力ポートからAレジスタに読み込む 00100000 ADD A,1111 ;線がない? 00001111 JNC 1101 ;線がないとき,ジャンプ 11101101 IN A ;入力ポートからAレジスタに読み込む 00100000 ADD A,1110 ;左に線があるか? 00001110 JNC 1000 ;左に線があるとき,ジャンプ 11101000 OUT 0010 ;右に線があるので右に曲がる 10110010 JMP 1111 ;最後に跳ぶ 11111111 OUT 0001 ;左に線がある場合は左に曲がる 10110001 JMP 1111 ;最後に跳ぶ 11111111 IN B 01100000 IN B 01100000 IN B 01100000 OUT 0011 ;線がないのでまっすぐ行く 10110011 JMP 1111 ;最後に跳ぶ 11111111 IN B 01100000ラインセンサが接続されている入力ポートは,
- 線が無いとき,「0000」
- 左に線があるとき,「0001」
- 右に線があるとき,「0100」
- 「0010」で左モータON
- 「0001」で右モータON
プログラムの内容は,
- 線が見えない場合は,2つのセンサの間に線があるはずなので,両モータをONしてまっすぐ行く
- 左に線がある場合は,右モータをONして左に曲がる
- それ以外の場合は,右に線があるはずなので,左モータをONして右に曲がる
ただし,TD4はクロック周波数が非常に低いため,ちょっと工夫が必要です.
左に曲がる場合と,右に曲がる場合で,実行するプログラムの命令数が異なると,
右に曲がる時間と,左に曲がる時間が異なることになり,バランスが悪いです.
上記のプログラムでは,右に曲がる場合と左に曲がる場合,
どちらでも同じ命令数になるように調整しています.
6.テスト走行
![テスト走行](./fig/line_tracer_td4/test_run.jpg)
どうにか,ライントレースができました.
(動画 約15MB)
LEDの光りかたで,CPUが今何をしているかが解るので結構楽しいです.
たとえば,ROM(DIPスイッチ)の横にある緑のLEDの発光は,
そのメモリを読もうとしていることを示しています.
これを見ていると,
ラインの位置によってプログラムの流れが変わるのがわかったりします.
7.まとめ
TD4を「動かす」ことができました.
8.参考文献
「CPUの創りかた 渡波郁著 毎日コミュニケーションズ」
すばらしい本だと思います.
戻る