エヌがのロボット製作日記

どうも「エヌがの」です。主にマイクロマウスのことばかり書いているぶろぐです。とあるuniqueでexcitingな大学に在学中です。

磁気式エンコーダ その2

こんにちは。エヌがのです。

 前回から引き続き、磁気式エンコーダについて書いていきたいと思います。
 エンコーダから角度を取得しグラフにしたところ、このような結果になったことを前回書きました
左:速度mm/s 右:取得角度(14bit/rot)
f:id:megato:20151129022235p:plain:w300 f:id:megato:20151129022248p:plain:w300
モータに一定のdutyをかけ、空転させたときのデータです
 速度がものすごくブレてます。理想的な状態ならば、速度が一定になるはず。角度から察するに、速度のブレの周期がおよそ磁石が1回転する周期と同等程度なのはわかります。どうしてこんなにぶれているかの原因を推測しますと、

・磁気式ICと磁石の並行がとれていない
・磁気式ICの計測中心と磁石の回転中心があっていない
・磁石の回転が偏心している
・磁石自体の精度が悪い
・SPI通信で値を取得しているため、時間の整合性が合ってない

 様々な原因がありますが、一番の原因は磁気式ICの計測中心と磁石の回転中心がずれていることだと考えました。そこで、再びばらばらにし磁気式エンコーダICを丁寧にはんだづけしましたが、機械的な基準も拘束もなかったため、肉眼で合わせるくらいしかできませんでした。
f:id:megato:20151128184427j:plain:w300 f:id:megato:20151128184417j:plain:w300
肉眼では合っているように見える。
 改善の結果としては、少しマシになった程度で、効果は薄かったです。

 機械的な原因はもう設計時点でのミスであり、どうすることができませんでしたので、次はソフトウェアで対処することにしました
 とりあえず適当にFF制御で動かしたマウスの速度データが以下になります。
f:id:megato:20151129162645p:plain:w400
これでは制御ができないのでなんとか使えるデータにしてみます
 
 方法としては、こちらで紹介されている方法を用いました。
 10,20,30回で平均をとったデータがこちらです
f:id:megato:20151129163623p:plain:w400
 10,20,30と増やしていくに連れて、データが平滑化されているのがわかります。これはローパスフィルタがかかっているものと同義と私は考えていて、ある程度は効果がありますが、平滑化しすぎると応答の遅れから発振しやすくなります。私は、どれくらい平滑化するかは完全に主観で決め、20回と設定しました。

 これでまともに制御できるくらいにはなりました。しかし、まだ振れが大きくゲインをあまり上げられないという問題があり、なんとかならないかと考えました。

 今回はここまでになります。この話題についてはあと1回ほど書こうと思っていますが、ほとんどおまけみたいなものです。
 長文になりましたがここまで読んで下さり、ありがとうございます。