磁気式エンコーダIC「AS5145」はマイクロマウスで普及しつつある「AS5040」の後継機で、最大12bit分解能(AS5040は10bit)、精度改善などの特徴があるそうで、早速使ってみようとしたのですが、使い勝手がAS5040とは異なることが分かりました。
AS5145はレジスタ書き換え機能をもち、ユーザーに適した用途で使えるようにできるAS5145Hシリーズ、デフォルトでインクリメンタル出力可能に設定されたAS5145A(分解能10bit)、AS5145B(分解能12bit)シリーズがあり、基本的にAかBシリーズを使いたいのですが、DigikeyやMouserで入手可能なのはHシリーズのみという状況で仕方なくHシリーズを購入したのでした。
Hシリーズはデフォルトでインクリメンタル出力不可に設定されており、内部のレジスタを書き換えることでインクリメンタル出力にできます。
書き換えはシリアル同期通信(USART not UART)、、、なのですが、特有の奇妙なスタート、ストップコンディション、同一ポートの送信と受信切り替え、その他バイト単位でないレジスタアクセスなど、難解なIO操作が必要で、とても同期通信モジュールみたいなブラックボックス使ってやっていける状況ではありませんでした。(
助言を求めた方には全く聞く耳持たないことして申し訳ないです)
そういうわけで、仕方なく全操作をSTM32のGPIOのHigh,Low切り替えでこなすことに。昨年作製した開発ボードと変換基板に実装したAS5145をブレッドボードで接続。
面倒でしたがトラブルは起きないのである意味気が楽でした。その時に使ったプログラムをブログの追記に延々と載せておくので何かの参考になればお使いください。
何もしなくてもインクリメンタル出力になるAS5040は優秀だなあ、、、とか思いつつレジスタを書き換え、読みだして目的のレジスタが書き変わったことを確認。インクリメンタル出力の様子をSTM32のタイマで読み取って性能評価しようとしましたが、どういうわけか出力がドリフトしました。カウントするタイマの値が静止時にひたすら減っていったり、増えていったり、、、
探索の速度でも問題ない程度かもしれませんがAS5040ではこのようなことはなく、精度はむしろ悪くなってるんじゃないかという印象を受けました。
まあ、自分がいい加減な(データシートで保証してないサイズの磁石使用と目分量の磁石配置)使い方してるからだと思いますが、それでもAS5040が動いていた以上このやり方でやりたいのでAS5145の使用は断念し、今年の新作もAS5040で作ることにします。