ようやくアマゾンからエンコーダが届いたので、(3日かかりました)地磁気センサの校正にとりかかります。
モータの制御などに使うエンコーダは高価ですが、IMUの精度校正程度ならダイアル用のエンコーダが安くて手頃でしたので、アマゾンであったエンコーダを入手しました。
コパル RES20D50-201-1 仕様
http://www.marutsu.co.jp/contents/shop/marutsu/datasheet/0000000000140179.pdf
1周50パルスでA,B相ついてるので100パルスとれます。
AB相間の位相誤差は大きいので角度誤差は±3.6度はあります。
5V駆動と書いてありますが、3.3Vでも動作したので、そのままLPC1768に接続して,mbedライブラリのQEI_HelloWorldという
シンプルなサンプルプログラムがあるので、インポートしてカウント値に
3.6度を掛算して出来上がりました。mbed Cookbook QEIのリンクです。
https://developer.mbed.org/cookbook/QEI
IMU全データにエンコーダの角度データも追加して、適当に回転させて
データをTeraTermのログからEXCELへ読み込んでグラフにしてみました。ATAN2(mx,my)でheadingを計算してあります。
飛びがでるのは、角度範囲ごとに修正すればいいのですが
エンコーダが300度くらい回っているのに、地磁気センサheadingは、
振れ幅が小さいです。これは、どういうことか調べてみました。
●地磁気センサの較正が必要です。
センサメーカーが解説してました。
較正ソフトウェアの原理http://www.aichi-mi.com/topics/%E9%9B%BB%E5%AD%90%E3%82%B3%E3%83%B3%E3%83%91%E3%82%B9/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%B9%E3%81%AE%E8%BC%83%E6%AD%A3%E3%82%BD%E3%83%95%E3%83%88%E3%81%AE%E5%8E%9F%E7%90%86/
スマホでやられている方法でした、1周360度回転させてmx,myの最大値、最小値をとって円を描き円の直径が感度、中心が原点となります。この計算方法を勉強してから地磁気センサの校正にとりかかります。