みなさんこんにちは15情報工学科、アシスト研代表の野元です。
これは rogy Advent Calendar 2016 6日目の記事です。

自作の光学式ロータリーエンコーダの製作について記事を書きます。

○きっかけ
前期の研究報告会で少し話しましたが、小さいロボットをたくさん作って群ロボットのようなものを作りたいな、と思っていましたが、それにあったっての大きな問題はお金です。
ものづくりにはお金がかかる。特に小型のエンコーダはとても高い(一個○千円)!しかも群をつくるので大量に必要になる。

こういう時にはロ技研のモットーを思い出してみよう。
『ないものは作る!』 
そう!エンコーダが買えないのならば作ってしまえばいいのです。

○ロータリーエンコーダとは
ロータリーエンコーダ(以下エンコーダ)とは、モーターやタイヤなどの回転数を知るためのセンサーです、エンコーダーは大きく分けて磁気式と光学式の2通りに分けられます。今回作るのは光学式のほうです。
詳しくはggって。

○製作

自作のために下のフォトインタラプタというセンサを使います。
LG220D


くぼみの部分に赤外線が通っていて、赤外線が遮断されるとわかる仕組みです。
これを使って回転を測るために部室に導入された3Dプリンターで下のようなスリットが入った円盤を作ります。
suri

一回転で30個のスリットが入っているので、赤外線が通るか通らないかの2通りで検知して、一回転を60分割で検知できます。専門的な用語でいうと60ppr(パルス/ラウンド)です。
回転を読んでみたときの動画はこれです。

動画でもわかる通り、今のままでは順方向と逆方向との区別がつかず、どっちに回転してもカウントアップしてしまいます。
本来のエンコーダは2相式になっていてどっちに回転しているかが分かるようになっています。
sm_201204avago_encoder-6
(http://ednjapan.com/edn/articles/1203/16/news012_2.html より引用)

しかし2相式にするには構造が複雑になり、3dプリンターで2相式のスリットを作り2相のパルスを読むのは大変です。
今回はモーターの回転を読むので、モーターの回転方向によってカウントアップかカウントダウンを変えることにします。
これを作るのに必要なコストはフォトインタラプタと3dプリンタ代+その他でなんと100円程度で作れます。

○実装
小型ロボットの足回りのモーターにこの自作のエンコーダを実装してみます。
モーターについた歯車にスリットを入れてモーターの回転数を読みます。


このように回転数が読めました。

○使ってみる

このエンコーダを搭載した小型ロボットを作ったので、自作のエンコーダを使って自己位置推定してみます。


あんと01 youtube

あんと02 youtube
あんと03 youtube
完成したロボット「あんと」
TakashiNomoto2

工大祭にも展示しました小型ロボット「あんと」です。自作エンコーダのほかにレーダーのように回転する測距モジュールがついていて周りの状況を取得することができます。これをたくさん作って制御したいな、と思っていますがお金がなくて実現は遠そうです。

○まとめ
自作の光学式エンコーダは自作にしては結構制度も出て、しかも100円程度という低コストで作ることができたので成功といってもいいと思います。お金がないけどエンコーダが欲しいな、というときは自作してみてください。

○今後

今回は一相式の光学式エンコーダを作りましたが、モーターが入力とは逆回転してしまった場合や、モーター以外の物の正転逆転も読めるように、余裕があるときに二相式の光学式エンコーダも作ってみたいと思います。

次はmahato_straguleさんです。よろしくお願いします。