ホイールエンコーダの分解能を改善する
ロボット作ろう:シェーキー製作記
今回は駆動輪の分解能を改善する話です。Shakey先輩の性能に少しでも近づこうということで、チャレンジしました。
シェーキーの駆動輪にはこことここの投稿にあるように1回転100パルスのエンコーダがついています。これは反射型のインタラプタ1個で構成されていますが、これを90度ほど位相のずれたところにもう1個追加し、分解能を倍にします。新しいセンサ基板はこうなりました。
左側にあるのが今までのセンサ、取り付けてあるのが新しいセンサ基板です。見てわかるようにインタラプタが2個になっています。このインタラプタはシャープのインタラプタにプラスチックのレンズを被せたもので、5〜6年も前に秋月で買ったものです。今はもうありません。普通のインタラプタに比べて検出領域が狭いようで、細いパターンでも感度よくとらえます。普通のものだと信号の振幅がもっと小さくなります。本機では信号をADで読んでいるのでどちらでも使えますが、在庫整理のつもりで使っています。
ホイール裏側のエンコーダパターンとの関係はこんな感じ、インタラプタの一つが黒、もう一つが白の上に(なるべく!)乗るようになっています。(わかりにくいですが)
新しいセンサの信号はこんな感じです。
位相は90度ほどずれています。チャンネル1のインタラプタの方の信号が少し小さいみたいですね。負荷抵抗を調整してレベルをそろえておいた方がいいでしょう。
この信号をADで読み込んで二値化したのがこれです。マイコンの空きポートに出力してオシロで確認しました。基板は2mmピッチのユニバーサルなのでインタラプタ間の距離の微調整が出来ません。これが精一杯です。きれいな2相クロックとはいえませんが、実用上は問題ないでしょう。
これで分解能は200カウント/回転になりました。さらに、回転方向も識別することができます。もっとも、このモーターとギアボックスでは1カウント単位で厳密に制御するのは困難ですが、計測精度は間違いなくよくなっているので、オドメトリの総合的な性能はあがると思います。
もちろんドライブサーバのソフトも直しました。昔のインターフェイスを引っ張りだして、体内シリアルバスをパソコンに接続、Teratermでテストと調整を行いました。手打ちコマンドで動かしてみた感じでは、改造前より確かに精度が出ているようです。小さな旋回を何回も繰り返したのちオドメトリ上の原点に戻すと、今まではそれと見てとれるほどのずれが出がちでしたが、それがあまり感じられなくなりました。
« 元祖Shakeyの性能チェック | トップページ | 細々した部品を作る »
「ロボット作ろう」カテゴリの記事
- Raspberry Pi3でturtlebotを動かしたいのだけど(2016.06.11)
- STM32F4のAD変換トラブル(その2)(2013.03.29)
- TrueSTUDIOからEclipseへ乗り換える(拾遺)(2012.07.14)
- TrueSTUDIOからEclipseへ乗り換える(その3)(2012.07.13)
- TrueSTUDIOからEclipseへ乗り換える(その2)(2012.07.07)
コメント