2016年09月29日

磁気エンコーダAS5311試食

モーションコントロールの要のエンコーダについて、
AMS社製のリニア磁気エンコーダを軽く試食したのでちょっとまとめます。



ProjectionBall含め開発中のデバイスの更なる性能向上や
部品コスト低減に向けて色々実験しています。


ロータリーエンコーダではなく、リニアエンコーダです。

リニアといっても
リニア=浮上ではありません笑

リニア=直線
という意味です。




AS5311は回転の変化を読み取るのでなく、
直線方向の位置の変化を読み取ります。
AS5311は直線だけでなく、
磁石側を曲げることで曲線部や回転部を直線として読み取ることもできます。



AMSからサンプル品の
磁気エンコーダAS5311、回転機構向け磁石直線向け磁石を取り寄せて
試食しました。

IMG_3762_.jpg
 ↑ 回転の磁石は強い力を加えた際にパキッと折れてしまいました・・・


AS5311はTSSOP20ですが、片側2ピンがNCのため、
秋月のTSSOP18を使用して実験しました。

インタフェースとしてはインクリメンタルとSSI、PWMがあります。

AS504X系と異なり、SPIでなくSSIインタフェースとなっています。
データ長が異なるだけで、中身はSPIに近いです。
SSIインタフェースの実装や使い方はこちらのPDFが非常に参考になりました。


実際に使ってみた感想は・・・

○良い点
・2mmで12bitの分解能のため、0.5umくらいの精度が簡単に手に入る
・SSIインタフェースが思った以上に癖がなく使いやすい
・リニア機構だけでなく、磁石を変えれば回転機構にも使える
・回転機能の磁石の直径を変えればいくらでも分解能を上げられる

×悪い点
・磁極長1mmの磁気テープが日本国内では手に入らない
 →100円均一の磁気テープでは変な値が出て使用できなかった
   (2つの磁気テープを貼り合わせて滑らせて調べた磁極長は4~5mm)
   AMSオンラインサイトから購入可能であるが、Digikey等では扱いがなかった
 ※追記 厚み2mmのネオジムを重ねることで代用可なことが分かりました。

・AS5311はフェライト系磁石で磁石とチップの距離を0.5mm程度にする必要がある
 →工業製品ならば0.5mmの距離精度は容易に達成できるが、
   自作ロボットレベルでは磁石とチップの接触は避けられない
  ※追記 厚み2mmのネオジムを重ねること距離5mm程度離れていても安定することがわかりました。

・AS504X系ではネオジム磁石のため、距離がブレても比較的安定した値を得られたが、
 AS5311では少しでも磁石とチップの距離が離れると値がぶれる


結論としては、
安く高性能なリニア磁気エンコーダがAS5311であることは間違いないが、
自作ロボットレベルで使用するには磁石の入手性の悪さと
磁石とチップの距離の精度の敷居が高く、
AS504X系ほど簡単ではない印象です。


******************追記*********************

厚み2mmのネオジムを1つor重ねて検証したところ、
ある程度安定して読込できることを確認しました。
また、距離を5mm程度離してもある程度安定していました。

使用したネオジムはNK039 ネオジム 10×10×2(N40)

ただ、10mmのネオジムの場合、吸着力が強く、
一度どこかにくっつくと離すのに大変なため、
もう少し小さい磁石の方が扱いが楽だと思いました。

磁気エンコーダの使い勝手は磁石の選定が決め手のようです。
磁石を変えるだけでかなり使い勝手が向上したため、
今後はロボットに組込んで検証を進めていきたいと思います。
******************************************


posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2016年09月23日

MashupAwards2016キックオフイベント参加

先日、9/19(月)に東京三田の建築会館で開催されました、
「MashupAwards2016キックオフイベント」に参加してきました。

ProjectionBallについて
ライトニングトークさせて頂きました。

雨にも関わらず、
大勢の方が参加されており、
他の開発者の方と色々交流することができました。

IMG_3754_.jpg

当日の内容について記事になりましたので、
こちらでも共有させて頂きます。

MashupAwardsはWeb系がメインという印象はありますが、
最近はIoTがらみもあり、
必ずしもWebだけではないので、
Makersな方もイベントやAwardsに応募してみては如何でしょうか。





posted by Crescent at 00:00| Comment(0) | TrackBack(0) | イベント | このブログの読者になる | 更新情報をチェックする

2016年09月15日

UART設定とPrintf

STM32で使用可能な開発環境の1つのSW4STM32を使用して、
Nucleoボード版STM32F303K8のUartについて、
戸惑った点含めて備忘録として軽くまとめます。


STM32CubeMXでUART1を有効にして、
ボーレートを9600で自動でコードを生成したコードを使用。
ライブラリはHAL。

ここで注意!
自動生成する際のUart設定のWord Lengthで初期値がなぜか7bit!!

これに気付かず、なぜかUartが文字化けるという不具合に遭遇。
クロック系やボーレートがおかしいのかと色々調査したところ、
オシロスコープで確認するとビットが欠けていることを発見!

結局、Word Lengthを8bitにするとビット欠けずにUARTの送信ができました。
7bitなんて普通では使わないので、なぜデフォルトが7bitなのか不明。
不親切だなあと思いました。


UART送信ができると、
次にやりたいのはPrintf。


メイン関数内で
色々宣言するとUARTに出力できるとかできないとか...
「STM32 printf」で検索するといろいろなやり方が出てきて、
古いやり方だったり、環境が違ったりとうまくできない感じでした。

#ifdef __GNUC__
 /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
    set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
を宣言するとかしないとか。上記のやり方はうまくいかなかった。


当方のSW4STM32とHAL、STM32CubeMXという環境では、
下記の関数をmain関数の手前で宣言することで、
UART1へ出力されることを確認しました。

int _write( int file, char *ptr, int len )
{
   HAL_UART_Transmit(&huart1, ptr, len, 1000);
  return len;
}
他にももっとよいやり方があったら教えてください。


STM32やARM系の場合、開発環境やコンパイラの組み合わせが1種類ではないため、
なかなかGoogle先生に聞いてもジャストな回答を得られないのが難点ですね。

posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2016年09月10日

Lチカできない原因

STM32で使用可能な開発環境の1つのSW4STM32(System Workbench for STM32)を使用して、
Nucleoボード版STM32F303K8のLチカから始めようとしたが...


普通は数時間もかからずにLチカできるはずが、
何時間もLチカに時間がかかってしまいました。


結論から先に言うと
「設定ツールやファームのバージョンは同時期のものを使用する」
ということです。


STM32の設定を簡単に実現する
STM32CubeMXを使用して生成したコードでSW4STM32でコンパイル、
DebugするとLチカも何も起こらず...

Debugを停止するとなぜか「b    Infinite_Loop」という場所で停止し、
This is the code that gets called when the processor receives an unexpected interrupt.
という説明がありました。
つまり、処理しきれない何かが発生した例外のようです。


その例外がなぜ発生するのか、分からず色々試行錯誤。

そして、STM32CubeMXで生成したコードを使用せずに、
SW4STM32で新規作成でLチカすると問題なく、Lチカできることが判明。

原因はSTM32CubeMXにありそうと、
バージョン確認したところ、ファームのバージョンが古いものになっていました。

最新にアップするとSTM32CubeMXでもLチカできました...

IMG_3735.JPG

設定ツールやファームのバージョンは同時期のものを使用するというのは鉄則ですね。
Lチカでここまで苦労したのは初めてです笑


posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする

2016年09月05日

レーザー距離センサ

最近、ばたばたでモノづくりから少しご無沙汰気味です。
これから少しずつモノづくりを再開します!


まずは話題のレーザー距離センサを購入してみました。

IMG_3732_.jpg

Pololuなどからもモジュールとして販売されていますが、
実はST純正の評価用基板の方が2個で2千円でした。
ST純正にもレベル変換IC等がついています。
1パック購入したら2つ入ってたというオチです。
ST純正の方がお得感あります笑


ArduinoのライブラリはPololuから公開されているようですが、
mbedのライブラリは検索で引っかかるもののリンク切れで
STからDLできるコードを書き換えて対応することになりました。


性能の評価はこれから・・・


一旦クラウドファンディングが落ち着いたので、
ProjectionBallの次世代機の開発と、イベント参加、
次のモーションコントロール系のデバイス開発を開始する予定です。


ペリフェラルのリマッパブルピンの一部が入力だけに変更されててるなど
dsPIC33Eの出来にがっかりしてしまったので、
あとPIC系からSTM32系への移行なども少しずつやる予定。
時代は良くも悪くもARMですね。

続きを読む
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする