“制御に使える分解能”の安価なエンコーダAS5600・AS5601
今回はams社の磁気式ロータリエンコーダAS5600とAS5601を紹介します。
はじめに
モーションコントロールを実現するためには、モータの位置、速度、加速度(回転運動系では角度、角速度、角加速度)を精度良く計測することが重要です。
特に、外乱オブザーバ等に代表される加速度制御を実現したい場合は加速度を高周波帯域まで計測する必要があります。
モーションコントロールにロータリエンコーダを使う場合、エンコーダから得られるのは角度のみであるため、角速度や角加速度に関しては主にデジタルフィルタを用いて推定する必要があります。
しかし、得られた角度をそのまま微分しようとすると量子化ノイズや標本化(サンプリング)によるノイズの影響を受けるため、通常は微分器とローパスフィルタを組み合わせた疑似微分器を通して角速度および角加速度を推定します。
したがって、エンコーダには量子化誤差を小さくするため「高い分解能」と、
標本化ノイズを小さくするため「短いサンプリングタイム」の2点が求められます。
これはあくまで経験則になりますが、モータ軸に直接エンコーダを付けた場合、
- 分解能:1000 [位置/回転] 以上
- サンプリングタイム:1 [ms] 以下
であれば、外乱オブザーバを用いた加速度制御系を実装できます。
そこで、オススメのロータリエンコーダがAS5600/AS5601です。
AS5600/AS5601の特徴
-
12bit分解能
AS5600/AS5601は12bit(4096点/回転)の分解能、つまり360°÷4096≒0.0879°の微小な角度の違いまで読み取ることができます。
また、モータが静止した状態で、多くても1程度しか値が変動しないことから、有効分解能も11~12bit程度あると思われます。
-
150usのサンプリングタイム
サンプリングタイムが150usと短いため、モータの機械系の制御ループの制御周波数を最大6kHz程度まで上げることができます。
-
安価
AS5600(Digikey):400円弱
AS5601(Digikey):600円弱
と非常に安価です。
この分解能と価格は、例えば秋月の機械式ロータリエンコーダが24パルス/回転で4逓倍して96点/回転で200円、千石の光学式ロータリエンコーダが100パルス/回転で4逓倍して400点/回転で3500円であることを考えると、4096点/回転で上記の価格のAS5600/AS5601のコスパは非常に優れています。
-
磁気式
AS5600/AS5601は4つのホール素子を円状に並べた磁気式エンコーダであり、以下の図に示すように径方向に着磁した円柱型の磁石を回転させることでその磁力のバランスをホール素子で検出・演算し角度を求めます。
この図からわかるように、磁気式のエンコーダはモータ軸に非接触で角度計測が可能です。
したがって、光学式や機械式のエンコーダのようにエンコーダの中心とモータの軸中心を精度良く軸合わせをする必要がありません。
具体的には、データシートでは直径6mmの磁石を使ったときは軸中心のズレを0.25mmまで許容すると書かれており、実測してみると1mmくらいまでなら軸中心がズレても問題なく値を読み取ることができました。
また、エンコーダと磁石間の間隔も0.5mm~3mm離すようデータシート上に書かれており、光学式と比べてだいぶラフな付け方をしても問題ないという点は大きなメリットです。
また、高精度な光学式エンコーダは精密機械であるためホコリ等の異物に弱いという欠点ありますが、磁気式エンコーダはそうした異物の影響を受けにくいため、過酷な環境で動作するような屋外型のロボット等に適しています。
さらに、非接触ゆえにエンコーダ自体のイナーシャ(慣性モーメント)成分とダンパ成分が増加しないというメリットもあります。
つまり、接触式のエンコーダを付けるとその分だけモータ軸が重くなるため、(制御の安定性は上がるものの)追従速度が遅くなり制御性能が落ちます。
-
3.3V or 5V対応・低消費電力
光学式エンコーダは動作原理上LEDを駆動する必要があるため、通常5V以上の電圧が必要となり、それに加え数10mAの電流を消費します。
一方、AS5600/AS5601は3.3V・5Vのどちらかを供給すればよいため、従来の5V系と昨今の3.3V系のマイコンのいずれとも相性が良いです。
また、AS5600/AS5601は通常動作で最大6.5mAしか電流を食わない点もメリットです。
-
多様なインターフェイス
- AS5600:I2C、アナログ/PWM出力
- AS5601:I2C、A/B相インクリメンタル出力
AS5600/AS5601共にI2Cでは各種設定レジスタにアクセス可能であり、角度の読み取りや動作設定が可能です。
まず言えるのが、 使用するマイコンにI2C機能があるならI2Cで角度を読み取った方がいい ということです。
というのも、生の角度が格納されているレジスタの値をI2Cで直接読み取ることで、角度の絶対値を高分解能かつ連続的に読み取ることができるからです。
しかし、既存のエンコーダや可変抵抗の置き換えや、I2Cがない場合、AS5600/AS5601にI2Cを専有させたくない場合は他のインターフェースを使うこともできます。
AS5600ではI2Cの他にアナログ出力とPWM出力のどちらかを選択できます。アナログ出力では角度に比例したアナログ電圧(内蔵DACは12bit分解能)を出力し、PWM出力では角度に対応したデューティ比のPWM信号を出力します。 アナログ出力を使った用途としてはアナログサーボや可変抵抗の置き換え等があり、PWM出力を使った用途としてはDMA機能のないマイコンを用いた角度計測等が考えられます。 アナログ/PWM出力では角度の絶対値を直接読み取れる一方、出力値が最大値から最小値に(もしくは最小値から最大値に)移る時に値を連続的に読み取るのが困難であるため、制御などに用いる場合は動作範囲は単回転以内に留めておくべきでしょう。
AS5601ではI2Cの他にA/B相インクリメンタル出力ピンがあります。 A/B相の分解能は設定レジスタにより変更可能で、8ppr~2048pprの範囲で設定が可能です。 インクリメンタル出力を使った用途としては、インクリメンタル出力の読み取り機能があるマイコンを用いた角度計測等が考えられます。 インクリメンタル出力では多回転であっても値を連続的に読み取ることができる一方、角度の絶対値を直接読み取ることができないという欠点があります。
Breakout Board
AS5600/AS5601はSOIC-8の表面実装用のパッケージのため、手軽にデバイスを使うことが難しいと思います。 そこで、AS5600・AS5601のピンを2.54mmピッチに変換する基板を作りました。
変換基板はいつものようにELecrow PCBAを利用して基板製造・部品実装を委託し
(参考:Elecrow PCBAの使い方)、
スイッチサイエンスで委託販売しています
(参考:委託販売の方法)。
なお、表面実装部品は全て実装済みで、動作確認済みのネオジム磁石も同梱しています。
12bit (4096P/R) 磁気式エンコーダAS5600 Breakout Board (税込1,400円)
12bit (4096P/R) 磁気式エンコーダAS5601 Breakout Board (税込1,600円)
基板のCADデータ(KiCad)やサンプルプログラム等はGitHubに上げています。
AS5600 Breakout Board (GitHub)
AS5601 Breakout Board (GitHub)
サンプルプログラムでは、I2C、アナログ出力(AS5600)、インクリメンタル出力(AS5601)のそれぞれについてArduino UNOを用いたミニマムコードを用意しています。
ちなみに、 DCモータ制御シールドではAS5600 Breakout Boardを使っており、そのサンプルプログラムではSTM32マイコンのタイマ・I2C+DMA機能を使い、200us周期で角度レジスタから角度を読み取っています。