第2回目の記事です。
今回から、層の各内容について説明していきたいと思います。
今後は、下の黄色いモータードライバ周りから上に向かって順に説明していきたいと思います。
今回はモータの回転数を読み取るエンコーダから説明します。
本記事の目的
エンコーダとは何かを理解する
「エンコーダはもうわかってるよ。わざわざ説明しなくてもいいよ!」
という賢いみなさんは、第3回の記事をお待ちください。
高専1,2年生でも可能な限りついてこれるように説明していくのが目的なので。
Contents
本題に入る前に、本ブログで説明するロボットの定義をみなさまと合わせていきたいと思います。
本ブログで説明するロボットは「差動二輪ロボット」というものです。
下写真のように、モータで回転する二つのタイヤを持ち、1つ以上の補助輪で接地することで常に安定するロボットです。
オムニ、メカナムによる4つ以上の駆動輪を持つロボットや、前輪のステアリング機構により旋回するロボットは、本ブログでは説明しません。
どうしても使いたい人は各自で調べてね。資料や論文はどこかにあるよ。
こんな感じのやつ。大きさは違うけどロボコンでみんな作ってるよね?
https://www.marutsu.co.jp/pc/i/856622/
マルツエレック株式会社より
自律移動ロボットを確実に走行させるためには、ロボットの速度、旋回量を把握する必要があります。
そのために一番簡単かつ基本なのは、タイヤの回転量を計測して移動量や速度を計算する方法です。
これをオドメトリと言います。
タイヤの回転量を計測するために、エンコーダを取り付ける必要があるわけですね。
という見出しをつけましたが、本ブログではエンコーダの詳細な説明はしません。
エンコーダを調べるために、どのようなことに気をつければいいか、を説明します。
一応、エンコーダについて簡単に説明しているサイトを列挙します。
下のリンクより、「インクリメンタル方式ロータリエンコーダ」の項を呼んでください。
https://ja.wikipedia.org/wiki/ロータリエンコーダ
https://www.fa.omron.co.jp/guide/technicalguide/34/24/
https://www.mtl.co.jp/manufacture/encoder.html
バレルシフタ氏より、エンコーダの資料をいただきました。
スリットの有無で、どういう出力が出るかを図示してくれています。
読んできましたか?
それじゃ補足や用語解説でもしましょうかね。
位相が90度ずれたパルスを出す2つの出力名のこと。
どちらが先に変化するかを読み取ると、回転方向がわかります。つまりこういうこと。
上の赤い矢印の回転方向では、A層が先に1に立ち上がっています。
逆に、青い矢印の回転方向では、B層が先に1に立ち上がっています。
この2つを読み取ることで、エンコーダがどちらに回転しているかを読み取ることができます。
わかりにくいって声が聞こえるので、一つにまとめるとこうなります。
つまり上の図ではA,B各3パルス出力するだけ回転させたあと、逆に回転させると全く逆のパルスを出力する、というワケ。
補足の補足
上の図では出力が先に1になる出力って書いたけど、両方1になってる瞬間もあるよね?
それをすべて場合分けするとこのような状態遷移票になる。でも、エンコーダの種類によって回転方向が違うから都度確認してね。
CW:clockwise CCW:counterclockwise
A層、B層それぞれのパルスの立ち上がり、立ち下がりのエッジをカウントしていく方式のことです。基本的に、ロボコンでタイヤの回転を検出したいときは4遍倍を使用します。じゃないと回転方向がわかりません。逆に、1方向のみの回転量がわかればいいというときはこの限りではありません。
例えば、1回転12パルスを出力するロータリエンコーダを4遍倍で計測した場合、カウント数は「48」になります。
簡単にいうと、回転を検出するセンサ方式の種類です。
参考資料 多摩川精機より
https://www.tamagawa-seiki.co.jp/products/rotaryencoder/incremental.html
スリットをたくさん空けた金属版を回転軸に固定し、フォトインタラプタ等でスリットの有無を検出し、回転を検出します。
スリットの微細化、小型フォトインタラプタを使用することで非常に高分解能(数百パルス/回転)ですが、非常に高価です。maxonモータのRE40などに取り付けられる高いエンコーダはこれです。
回転軸に磁石を固定し、磁力を検出するホール素子を隣に取り付け、磁力の変化から回転を検出します。
安いですが、回転分解能は小さい(数十パルス/回転)です。朱雀技研さんで売っているモータなどはこれです。
ここまで読んだ電気や情報を少し知ってる高専生なら、きっとこう思うでしょう。
「よくわかったよ。つまり光学式エンコーダ付きのモータを買ってきて、出力のA,B層のパルスをマイコンで読み込んで、状態遷移票の通りに分類して回転量、方向を計算すればいいんだね!」
それはやめてください!!!!
エンコーダのパルス取得漏れが発生します!!!!
それはなぜかということを、下記マイコン、モータを使用して、実機を用いて解説していきます。
エンコーダの値を取得するmbed向けソースコード、回路図は公開予定です。
http://akizukidenshi.com/catalog/g/gM-07723/
https://store.shopping.yahoo.co.jp/suzakulab/pololu-2826.html