磁気エンコーダな日常

Note 2022/05/06:
これは前ブログからの移行記事です。一部表現や文体の調整を行った箇所がありますがご了承ください。

おはようございます。高専では出会いがTwitterやLINEだったりすることも多いので、現実でも「白熊君」と呼ばれることも多かったり…。白熊好きなのでチョットウレシイ

概要

磁気エンコーダをBLDCにくっつけて3秒ぐらいでプログラム書いて動かしただけの動画をTwitterにUPしたら、予想を上回る高評価をいただいたので急遽記事にします。寝ている間にフォロワーが11人も増えていることに朝起きて気づいた時、頭の中が「???」になりました。

What is 磁気エンコーダ?

とりあえず動作をお見せします。

磁気エンコーダとはN極とS極のある磁石を素子の上にかざすことで角度を検出することができるセンサです。その磁石が普段使うような磁石とはちょっと違って、極の向きが違っています。と言われてもわかりにくいですので図にしました。

こういう平べったい方向にNとSがそれぞれあるような磁石によって角度を求めることができます。物理的な接点がないので寿命も長そうな感じです。

調理開始!

設置

今回使う磁気エンコーダはこちらでAS5600ってやつです。スイッチサイエンスさんで1500円ほどで購入しました。

まずは磁気エンコーダを固定します。と言ってもめっちゃ簡単です。

軸の中心から1mm弱ずれてしまっていますが全く問題ありません。

どうでもいいですが暖色系の照明でロボットの部品取るとエモいですよね。

配線

ただのI2Cの接続なので省略させていただきます。SDA同士、SCL同士と電源を繋ぐだけです。今回はマイコン側にNucleoF303K8を使いました。

プログラム

テスト用にこんなプログラムを書きました。サンプルプログラムをちょこっと変えただけのものですが載せときます。

データをシリアルで送るプログラムです。懐かしのProcessingで画面にでっかく表示できるようにしたかったので2バイトに分割して、さらに頭に’H’を送信することで目印にしています。プログラムを全部のっけるわけにはいかないのでこちらのリポジトリに全て載っけておきました。MITライセンスなのでご自由にお使いください。

何に使うの?

BLDCはブラシがない分ソフトウェア的にコイルに流す電流を切り替えないといけないので、回転してる磁石の位置を取得できる必要があります。

一般的にはホールセンサと呼ばれる単純にN極とS極に反応するセンサを磁石周辺に取り付けて検知することが多いですが、磁気エンコーダにしてより正確な角度を求められるようにしたら後々色々と便利かなと思ったからです。

例えば角度を指定してその角度に回転させると言ったようなサーボ的な使い方もできるようになるかもしれません。僕は多分しないと思います。

終わりに

やっつけ感のある記事になってしまいましたが、今後需要があれば加筆するかもしれません。質問などDMなどで待ってます。

ではまた。

Comments