こんにちは。koraです。
今回は、少し遡ってエンコーダの読み取りについてです。
エンコーダの動作確認
前々回、エンコーダ用の磁石を取り付けるところまでやりました。
また、SPIの設定は以前のSTM32マイコンでSPI通信で済ませています。というわけで、さっそくエンコーダの値を読みこんでいます。
エンコーダ用のモジュール
エンコーダのモジュールを作ります。以前作成したジャイロ用のモジュールと似たような感じで、Srcフォルダにencoder.cを、Incフォルダにencoder.hを作ります。なお、MA702は絶対角度を出力しますので、回転速度を計算する際には0から最大値に跨いだときと、最大値から0に跨いだときの処理が必要です。
エンコーダ動作確認プログラムの実行
作ったプログラムをCubeProgrammerでマウスに書き込みます。エンコーダの値がTeraTermに表示されれば成功です。
サイドシャフトマウントの設定
モータの出力を一定にして、エンコーダで読み取った回転速度と角度の関係を表示すると、以下のようにsin波状になっています。
MA702はセンサを横切る磁力線の方向から角度を出力しますが、このマウスでは軸構成をサイドシャフトマウントにしたため、磁力線の方向とエンコーダの角度が線形になりません。そのためこのように特定の角度でエンコーダの値が変動してしまいます。
MA702にはこれを調整するBCT(Bias Current Trimming)という機能があります。エンコーダ初期化の際にBCTを設定すると、次のように出力をある程度一定にすることができます。
次回
エンコーダの設定ができましたので、次は光センサの設定に移りたいと思います。