ジョン・リム

マイクロマウスは迷路問題を自律的に解くために迷路解法アルゴリズムを使用するロボットです。 この記事では、私は私のチームと私はいくつかの非常に有用な人々から多くの必要な指導でそれを行うことができた方法を共有します。

カリフォルニア大学バークレー校の秋学期に、私は迷路の問題を自律的に解決するロボットを作るために学生主導のクラスを受講しました。 私の考えは、あなたがUCバークレーにいる場合は、エレクトロニクスプロジェクトに興味があり、素晴らしいインストラクターとの高度にガイド付きプログ 私にとって、このコースは、私がロボット工学、いじり、作りへの旅を始めた場所であり、私が深く楽しんだものであるため、特別なものです。 このコースは私に偉大な基礎を与え、私は新しいプロジェクトに取り始めたとして、私は道に沿ってより多くを学びました。

私と私のチームと私たちのマウス
迷路の中で私たちのマウス
私と私のチームメイトと私のコースのインストラクター

ここでは初心者としてあなたのMicromouseプロジェクトを開始する方法についての指示の大まかなセットです:

  1. 部品リスト
  2. ハードウェア部品をまとめる
    1. Teensyマイクロコントローラのセットアップ&Arduino IDE
    2. Teensyピン配置の紹介
    3. センサーを使用して
    4. 電圧調整
    5. Hブリッジモータコントローラモーターを制御する
    6. ホール効果回転エンコーダを使用して
    7. それをすべて一緒に入れて
  3. コード
    1. コードでハードウェアを制御する方法
    2. センシング
    3. PID制御
    4. 迷路解決アルゴリズム
    5. 微調整
  4. 修理する方法

部品リスト

  • 機械部品
    • シャーシ
    • 車輪
    • 粘着テープの多く、3D印刷の顧客用部品か注文の台紙を買うためにお金を使う
  • 電気部品
    • ブレッドボード、ワイヤー
    • 二つの5ボルトミニDCモーター
    • 小さな7-9ボルト電池
    • 7805電圧レギュレータ
    • ホールセンサー回転エンコーダー
    • H-Bridge
    • Teensy(またはコントローラ。 Arduinoも動作します!)
    • 二つの距離センサー(私は赤外線センサーを使用しました)

ハードウェアをまとめる

2.1Teensyマイクロコントローラのセットアップ&Arduino IDE

TeensyはArduinoのように動作するマイクロコントローラです。 一つの大きな利点は、そのサイズです。 その名前が示すように、Teenstは小さくてコンパクトです、それは素晴らしいです!

まず、Teensyをいくつかのヘッダーピンの上に置き、ヘッダーピンをTeensyにはんだ付けし、ブレッドボードにしっかりと取り付けることから始めます。

ヘッダーピンをパンボードの端に置きます
ピンにTeensyを置いて下さい
ヘッダーピンをTeensyにはんだ付けして下さい
MicroUSBケーブルを介してコンピュータに接続する

まだインストールしていない場合は、Arduino IDEをコンピュータにインストールしてください。 https://www.arduino.cc/en/Main/Software

非常に重要:Teensy3.1を使用している場合は、Teensyと互換性のあるArduinoのバージョンをインストールしていることを確認してください。 あなたのTeensyがArduino IDEで動作できるように、Teensyduinoをインストールするためのリンクは次のとおりです: https://www.pjrc.com/teensy/td_download.html

2.2 回路

2.21)バッテリ電源:電源は7.2V以上である必要があります。 回路規約では、このVcc2と呼ぶことができます。

2.22)5V安定化電源:電子チップ部品は、多くの場合、正常に機能するために安定した電源電圧を必要とします。 問題は、さまざまな量の電流を大量に引き出すことができるモータなどのデバイスでは、電源電圧が低下することです。 これが、安定した5Vを他の電子部品に供給するために電圧レギュレータが必要な理由です。

2.23) マイクロコントローラ:これは、知的思考のいずれかのうわべだけを持っているように見える任意のロボットの脳です。 マイクロコントローラは、最初は複雑に見えるかもしれませんが、始めるためには、その本当に難しいことではありません。 ここに基本原則はある:簡単、しかし非常に重要。

マイクロコントローラ

2.23a)デジタル入力ピン:二進信号を読み、書くことできる。 例えば、Arduinoは5Vのロジックレベルを持つマイクロコントローラで、読み取り時には5V近くの電圧が高くなり、0V近くの電圧が低くなります。

2.23b)パルス幅変調(PWM)ピン:パルス幅変調信号を出力する特別な機能を備えたデジタル入力ピンです。 それは時間の別の割合のための時間と低の一定の割合のために高いデジタル信号です。 これはデューティサイクルと呼ばれます。 デューティサイクルが60%のPWM信号は、ロジックレベルがハイの60%、ロジックレベルがローの40%の時間です。 PWMの詳細はこちらをご覧ください。

2.23C)アナログピン:これらのピンは0からボルトの前記量までのどこでもアナログ電圧を読み取ることができます。 Arduinoの場合、その0–5V.彼らは、デジタルコンバータにアナログが使用されているどのように多くのビットに応じて、解像度の様々な程度でそれを読むこと 8ビットのアナログ-デジタル変換器は、2^8=256の分解能を読み取ることができます。 5Vのロジック・レベルでは、5V/256=19.5mVの精度で読み出すことができます。

2.23d)デジタル割り込み: マイクロコントローラ上の一部のデジタルピンは、割込み信号として設定できます。 割り込みは非常にクールです。 割込みピンとして構成されているピンは、(1)立ち上がり信号エッジ(2)立ち下がり信号エッジまたは(3)ロジックレベルの変化を検出します。 これらのいずれかが、割り込みサービスルーチン(ISR)と呼ばれるものをトリガーします。 ISRは、割り込みが検出されるたびにトリガされるコード内の短い関数です。

2.26)モーター:モーターは電圧を与えられたときに回転するデバイスです。 この場合、ブラシ付きDCモータを使用しています。 電圧が与えられたときにそれが適切に回転するのを助ける整流子DCブラシがその中にあるので、それはそのように命名されます。 モーターは一般に大電流を流し、すべてのモーターは一定の電圧電力定格を持っています。 モータが回転すると、それらは逆起電力を生成する。 これは直感的ではないように聞こえるかもしれませんが、最大速度で回転しているモータは、実際には逆起電力のために最小量の電流を消費します。 逆に、モーターが停止している(つまり、移動したいが外力のために移動できない)と、電流が最も多く消費されます。

2.25)モーター運転者:これは必要マイクロ制御回路を使用してあなたのモーターの速度/方向を制御するためにです。 これは、マイクロコントローラがモータを駆動するのに十分な電圧または電流を供給できないためです。 さらに、モーターが回転すると、生成された逆起電力がマイクロコントローラを容易に損傷する可能性があります。 モータの速度と方向を制御するには、2つの間にインターフェイスが必要です。 使用されたモーター制御装置はSn754410Quadruple Half-hドライバであった。 モータコントローラが行うことは、それがあなたのマイクロコントローラ(通常はパルス幅変調信号)から来る信号を取り、その後、あなたのモーターにお使いのバ それがすることはあなたの電池からのあなたのモーターにデジタルスイッチを非常にすぐにつけることである。 このデジタルスイッチが100%の時間(または100%の使用率)にあれば、モーターはフルパワーで動いています。 デジタルスイッチがオンの時間のわずか50%であれば、モータは50%の電力で動作しています。

motordriver

2.26) エンコーダー:エンコーダーは動きを検出する利発な装置である。 例えば、いくつかのエンコーダは、ホイールが回転した回数を検出し、他の人はロボットアームが回転した角度などを正確に伝えるためにさらに正確です。 マイクロマウスでは、車輪が何回回転したかを検出するエンコーダを使用しています。 ホールエフェクトエンコーダー、または光学エンコーダーがあります。 エンコーダの二つのタイプが、基本的に同じことを行います。 それらは車輪が回った時はいつでもデジタル脈拍を誘発する! ホールエフェクトエンコーダーがどのように機能するかは、モーターシャフトに取り付けられているものの内部に小さな永久磁石があることです。 モーターが回るとき、磁石はまた回ります。 磁石がいつ通過したかを検出するセンサーがあります。 それがするとき、それはマイクロ制御回路によって読むことができる脈拍を送り出します。 通常、その信号をデジタル割込みピンとして構成されたピンに送信します。

2.27) 赤外線距離センサー:赤外線を使用して距離を感知します。 それがすることは、赤外線信号を撃ち出し、その信号が跳ね返るのを待って、オブジェクトがそれからどれくらい離れているかを判断することです。 あなたは実験することができますが、傾斜した表面から信号をそらすと、あなたはあなたのIRセンサーから読書を得ることができないかもしれません。 これはそれほど理想的ではありません。 このIRセンサーにまた間隔を検出できる限られた範囲がある。 赤いワイヤーは5V力、GNDのための黒いワイヤー、信号のための黄色いワイヤーのためです。 この特定のIRセンサーのために、IRセンサーがあなたの目的をどれだけまで感知するかによって、別のアナログの電圧を与える。 あなたができることは、マイクロコントローラを使用してそのアナログ電圧を読み取ることです。 IRセンサーの詳細については、こちらのデータシートをお読みください。

IRsensor

2.3 回路図&配線

ここでは大まかな回路図です。 注配線を接続するピンを正確に指定していないことに注意してください。 これは、使用しているマイクロコントローラによってピン番号が異なるためですが、ここでは包括的な原則を示しています:

wiringdiagram

エンコーダからの信号は、デジタル割込みピンに配線する必要があります。 そうすれば、信号が送信されるたびに、マイクロコントローラは車輪が1ラウンドになったことを知ることができます。

赤外線センサーからの信号はアナログ入力ピンに配線する必要があります。

モータコントローラに供給される信号は、PWMピンから出てくる必要があります。

*回路図を挿入

3.0コード&コントロール:

私はコードを投稿することはありませんが、ここではいくつかの一般的な概念があります:

3.1マウスをまっすぐ 各車輪に2つのモーターが付いている2つの車輪が、あります。 両方の車輪が同じ速度で回転すると、マウスはまっすぐになります。 左のホイールが速度を上げ、右のホイールが減速すると、マウスは右に変わります。 これは差動制御と呼ばれます。

3.2コントロール&エラー訂正

しかし、マウスを制御する方法について考える必要があります。 どのように我々はそれが壁に衝突することなく、迷路の中を移動するために取得するのですか? 私たちは、マウスがまっすぐに行くように伝えるために、左と右のモーターに二つの等しい信号を送信していると思うかもしれません。 だから、マウスはまっすぐ右に行く必要がありますか? 違う! さまざまな理由によりモーターは私達がそれをに言う方法で答えないことができます。 基本的に、各モーターはほぼ同じに構築されていますが、まったく同じではありません。 ハードウェアは完全に構築されることはなく、常に有限の誤差があります。

マウスが実際に指示した方向に動いていることを確認するにはどうすればよいですか? 閉ループ制御と呼ばれるものが必要です。 つまり、センサーを接続して出力を測定し、その結果を入力にフィードバックしてエラー訂正を実行します。 それについては後で詳しく説明します。 PID(比例積分微分)コントローラと呼ばれるものが必要です。

この場合、マウスが壁から厳密な距離を維持するようにしたい場合があります。 右の壁から5cm離れて言ってください。 これをセットポイントと呼びます。 セットポイントからの偏差は、私たちがエラーと呼ぶものです。 エラーが検出されると、マウスは自分自身を修正します。 エラーが大きい場合は、大きな修正アクションが必要です。 誤差が小さい場合は、小さな修正アクションが必要です。

マウスの側面にあるセンサーは、マウスが壁からの距離を決定します。 マウスは、その右側の壁からあまりにも遠く離れていると言います。 左のホイールを速く回転させ、右のホイールを遅くして、エラーを修正するためにマウスを右に向かって移動できるようにします。 マウスが5cmのセットポイントから非常に離れている場合、壁から10cm離れているように、左のホイールを非常に速く回転させ、右のホイールをたくさん減速させたいと考えています。 マウスが壁からわずか6cm離れている場合は、左のホイールの速度を上げ、右のホイールの速度を下げたいのですが、ほんのわずかです。

Leave a Reply

コメントを残す

メールアドレスが公開されることはありません。