第 13 回 ライントレーサー

本日の内容


このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。

13-1. ライントレーサー

マイコンの応用として、よく作られるライントレーサの設計をします。 本章で設計する回路は、今まで配布した部品だけでは作れず、新たに部品を 購入する必要があります。

学習用に何らかのデバイスを動作させることと、実際に動くものを作る時で は、考え方などが大きく違います。 本章では、具体的なライントレーサーの設計よりも、他の動くシステムと共 通に考えなければならない点について多く述べたいと思います。

システム仕様

ライントレーサは床に書かれた線をなぞって動く模型自動車です。 「床の線をなぞる」には色々解釈があります。

  1. まず、ラインの境界、つまり左が白、右が黒という線の境界をなぞる単純なア ルゴリズムが考えられます。 つまり、光センサーにおいて、黒が検出されたら左へ白を探し、白が検出さ れたら右へ黒を探すようにします。
  2. 一方、ラインの中に居続けるように動作させる考え方もあります。 つまり、センサーを2個用意して、黒黒と白白は直進とし、白黒は左に逸れ ていると検知し、右に回り、黒白は右に逸れていると検知して左に回るよう に設計することもできます。 この設計では、ラインの太さが一定以上必要で、しかもセンサーを2個使い ますが、十字路を直進することができたり、多少線が乱れていても直進して 速く動作できるなどの利点があります。

回路

マイコンに接続するのは1,2個の光センサーと、左右に動けるような仕様の 自動車模型です。 通常は、左右で独立したモータにより動く車輪がついていることが多いです。 モータドライバーは正転のみの制御で良いので、FET二個でも、一般的なモー タドライバーでもどちらでもよいです。

なお、明るさセンサーは環境により動作領域を変更する必要があるので、例 えば、可変抵抗器とフォトトランジスタの直列にするなど、調整可能にしてお きます。 また、ソフトウェア側でセンサーで白黒の判定が表示されるようにしておく と、調整が楽です。

ソフトウェア

13-2. Arduinoの電池駆動

模型自動車にarduinoを載せるのに、PCからUSBケーブルで接続した状態では 自走しているようには見えません。 そのため、マイコンまわりも電池で動作するようにする必要があります。

Arduino UNO の電源の検討

Arduino はUSB接続で動作させる前提でしたが、模型に載せる場合は、電源 を独立させる必要があります。 しかし、Arduino UNO をUSBの給電以外で動作させる場合、電源ICを駆動さ せるために、制約として 7から12V の動作が 規定されています。 https://store.arduino.cc/usa/arduino-uno-rev3 Tech SPECS

一方で、模型のモータを動かす場合、3Vで動作させることを考えます。 この場合、多くの電力が必要なのは3Vの電源の方です。 ですので、主電源を3Vとし、副電源を考えることとします。

例えば、悪い設計として、9Vの積層電池を主電源としてArduino に供給し、 モータの電源は3端子レギュレーターなどの簡単な回路の降圧回路で 9Vから 3Vを作るパターンがあります。 この設計でも動きます。 但し、積層電池の持つ電力量は小さいので数十分で電池を使い切ってしまい ます。

ですので、電力を多く使う方を主電源とします。

電池6本を直列にする電池ボックスもありますので、副電源を電池ボックスに することもできます。 しかし、動く模型を作る上で、重量物である電池を大量に積むのは不利な設計 です。

次に考えるうるのは、3Vから7V以上を作って給電することになります。 これは、昇圧電源ユニットを使えば実現できます。 但し、昇圧電源ユニットはIC一個に周辺部品数点で実現できるとは言え、数百円 かかります。 また、電源周りの製作ミスはエネルギーの制御ミスになるので、部品 破損を含む事故につながります。 ですので、この選択には利便性がある一方で、コストと若干のリスクがあります。

振り返って考えると、Arduino のマイコンチップの諸元を見ると、電源電圧 は 1.8〜5.5Vまで使えますので、3Vでも動作できます。 ですので、主電源直結で使うことを考えます。 但し、Arduino は 16MHz で動作してますが、2.7V以上、4.5V未満では最大 10MHz でしか動作しません。 ですので、ハードウェア、ソフトウェアとも若干の互換性を失うことは避け られません。

最小ハードウェア

Arduinoのファームウェアはそのままとして、AT mega-328pのチップだけで、 動作させる試みがあります Arduino Without External Clock Crystal on ATmega328 これを実現し、

13-3. 開発の実際

一切ミスをしない開発を想定するのは無理があります。 そのため、チェック、テストを行えるような開発を行う必要があります。 基本的にシステムを構築するには全てを完璧にする必要があります。 そのような開発を行う手法として、分割統治法があります。 つまり、システムを分割し、各分割部分を完璧にし、さらに、分割の結合が 完璧にします。

マイコンシステムにおいて、まず分割可能なのは、回路設計、ソフトウェア、 実機製作などになります。 そのため、つぎのような設計手順を行います。

  1. システムの仕様を決定する
  2. ハードウェアの回路を設計する
  3. ブレッドボードなどで回路を製作する
  4. 作成した回路が動作するかどうかをチェックできるプログラムを作成す る(順番に電源を入れるプログラムなど)
  5. ブレッドボードで動作するようにソフトウェアを開発する
  6. ブレッドボードに作成した回路と同等の実機用の回路を製作する
  7. 実機が完成したら、ソフトウェアを入れてテストを行う

これを実現するには、テスト用と実機用で同じ回路が必要なので、 部品は2台分入手する必要がある。

13-4. 実験

実験

最小ハードウェアを実現し、PB5(19番ピン)からLED、330Ω、GNDと直 列につなぎ、Arduino の Built-in LED と同じ構成とする。

  1. Arduino Uno を利用して、ファームウェアを書き込む
  2. Arduino Uno を改造して、書き込み機とする
  3. Arduino のソフトウェアの Blink を書き込み、LEDの点滅を確認す る
  4. 書き込み機を外して、3Vの電池をつなぎ、LEDが点滅することを確認する

実験

ライントレーサーの回路を設計し、アルゴリズムのテストを行う

  1. システム仕様をまとめる
  2. ブレッドボードに回路を製作する。 なお、ライントレーサにおいては、モータドライバとその入力の部分が分 割可能なので、モータドライバへの入力信号を可視化するためLEDを付加 すると良い。
  3. 光センサーを想定される状態にし、モータへの信号が適切かどうか確認し、 ソフトウェアが仕様通りに動作しているか確認する

実験

ライントレーサを製作する

  1. 実機用の回路を設計する。但し、電圧測定や、信号の可視化ができるよ うな設定をする
  2. ライントレースのラインのパターンの仕様を何パターンも用意する
  3. ライントレーサを作成して、テストを行う

坂本直志 <sakamoto@c.dendai.ac.jp>
東京電機大学工学部情報通信工学科