モーションコントロールにおいて
フィードバックに欠かせないエンコーダについてご紹介します。
大学院では外乱オブザーバやら反力推定オブザーバやら
モーションコントロールの研究をしていました。
モーションコントロールでは現在の位置情報を取得する為に
エンコーダをモータなどに取り付けています。
現在のモータの位置情報から位置だけでなく、
速度や外乱などを推定します。
ここで推定精度に効いてくるのがエンコーダの分解能。
研究では81,000パルス/1回転の高級エンコーダ等を使用していましたが
20万以上するためなかなか自宅でのモノづくりレベルでは値段が高く買えません。
また、そんなエンコーダばかり使用していては研究レベルのままで
一般家庭までモーションコントロールの技術が行き渡ることもありません。
自作で格子を作って光学エンコーダを作ることや
電極を作って静電容量式のエンコーダを作るのもありですが、
自作レベルから抜けることはできません。
そこでおススメなデバイスをご紹介。
AMS社の磁気エンコーダです。
少し特殊な磁石が必要ですが、
小さい磁石をモータ軸に取り付けるだけで
最大14bit、16384/1回転の分解能を得られます(AS5048)。
また高性能にも関わらずワンチップ2千円弱なのでお財布にやさしいです。
ある装置のモータに磁気エンコーダを取り付けた例。
AS5048の場合、静止状態でも±8程度は値が振れるため、
超高性能とは言えませんが
巷の24パルス/1回転の安物エンコーダよりも遥かに性能が高いです。
AMS社のエンコーダを何種類か使用しておりますが、
例えばAS5048A
ジャストピン数ではありませんが、
変換基板として以下のものを使用しています。
端2ピンが余ります。
TSOP18ピン変換基板 AE-TSOP-2
読み取り部の磁石が少し特殊です。
通常の市販されているネオジム磁石は
左図のように円柱の上下がN極とS極になっています。
このエンコーダで使用するのは
右図の径方向で半分がN極、もう半分がS極の磁石です。
なかなか国内では入手が難しく、
AS5048の適合ではありませんが少し大きさの大きい
以下のものを使用しています。
1個から送料無料で届けてくれるので幸を感じられます。
NE099 ネオジム Φ8×2(N35)
AS5048シリーズの中でAS5048AとAS5048Bがありますが、
AがSPI通信、Bがi2cです。
i2cは通信のやりとりが多く時間がかかるため、
アプリケーションとしてサンプリング周期1ms以上のものが良いと思いました。
SPIは通信が早いため、
最高でサンプリング周期80usで読込できました(もっと速められると思います)。
dsPIC33FでのSPI通信によるAS5048A読み取りサンプルコードは以下。
8ビットごとの通常SPI読込にも対応していますが、
以下は16bitを一括で読み取った場合です。
/* AMS社製磁気エンコーダ AS5048読み取り */
unsigned int AS5048_1(void){
unsigned int data;
SPI_CS1=0;
putcSPI1(0xFFFF);
while(SPI1STATbits.SPITBF);
while(!SPI1STATbits.SPIRBF);
data=getcSPI1()&0x3FFF;
SPI_CS1=1;
return data;
}
0xFFFFを書き込むだけです。
読み込んだデータから上位2ビットを捨てたデータが位置情報となります。
絶対位置として値が出力されます。
また、AS5048以外にもABZのインクリ出力対応などたくさん種類があります。
回転だけでなくリニア用などもあります。
AS5048、AS5047やAS5045など使用しています。
アプリケーションに応じて選べるラインアップもおススメの理由です。
残念ながらエンコーダチップ本体の入手も日本国内では難しいのが現状です。
digikeyやmouserから購入するのが一般的だと思います(すぐ品切れですが)。
ただ、英語が分かる方で数個だけ欲しいという場合なら
AMSのサイトからエンジニアリングサンプルを無料で入手する方法もあります。
エンジニアリングサンプルはスーパーの試食販売みたいなもんです。
使用目的など登録して1つの型番のチップに対して3つサンプルが貰えます。
数日でFedex航空便でオーストリアから到着します笑
無料といっても複数種のサンプルを要求すると場合によって
数週間後に関税の請求書が来たりするので
必ず請求書が来たら早く支払いをしましょう。