はじめに
バイラテラル制御、ハプティクスの学習を目的として制作しました。その過程を記録します。
開発環境
- macOS Sonoma 14.5 (Intel & Apple silicon)
- PlatformIO Core 6.1.15
- PlatformIO Home 3.4.4
- Simple FOC 2.3.3
- Visual Studio Code 1.90.2
パーツリスト
- Arduino Uno R4 Minima
- MARSPOWER Brushless Gimbal Motor 2208 80T
- SimpleFOCMini V1.0 (DRV8313) (公式のものではなくAliexpressで売っている製品)
- 磁気エンコーダ AS5600
- YAHATA スペーサー 5x15 ニッケルめっき
- バッテリー LiPo 3Cell 800mAh 65C
接続図
BLDCへ磁気エンコーダを固定
磁気エンコーダ用の磁石をジンバルモーターに接続します。
磁石はこんな感じだと思います。同じ形の磁石でも磁化方向はいろいろあるようですので、付属の磁石を使うか仕様をよく確認します。
- ジンバルモーターの下側、シャフトが1mmほど出っ張っています。ここがローターと一緒に回ります。回転するローターのことをベルと言うこともあります。
- シャフトの終端に磁気エンコーダが読み取るための磁石を固定します。
- シャフトと磁石を固定するジョイントを設置します。
- 外側に防磁のために鉄のリングで囲ってあげます。
防磁はホームセンターでスペーサーを買ってきて、2mmの高さになるように金鋸で切り出しました。
当初、防磁しないでモーターを動かしたところ、磁気エンコーダが値を読み取らなくなりました。
ジョイントは3Dプリンタで作りました。こんな感じで接続しました。磁石と防磁リングはちょっと緩かったのですが、磁力でくっついてくれました。回転速度によっては接着したほうがいいかもしれません。
モーターに台座をネジ止めします。磁石と磁気エンコーダを1mm弱くらいの距離で設置しました。できれば、AS5600をI2Cでステータス・レジスタ(0x0B)を読んで確認します。磁力が強すぎ(BIT3)・弱すぎ(BIT4)だとビットが立ちます。Bit5が立っていれば正常です。(詳細はマニュアルを参照してください。)
横から見るとこんな感じになります。 ネジが邪魔で磁石がちょっとしかみえませんね… ネジを非表示にして、チップを追加した画像に差し替えました。
組付け
CGだとこんな感じになります。
動きがわかるようにステーをつけてます。
サイドビュー
SimpleFOCMiniにピンヘッダーをつけ、それぞれケーブルで接続したところです。
失敗談
当初、ドローン用ブラシレスモーターで動かそうとしていました。しかし、全く動きませんでした。
なぜ動かないか。ドローン用ブラシレスモーターは高速回転のためにホルマル線のターン数(巻数)を10〜20回くらいにしているようです。ターン数が少ないと高回転・低トルク・高電流になるそうです。SimpleFOCMiniはジンバルモーターを動かす目的なので、最大電流は3Aということで動かなかったわけです。
なおドローン用のESCは、高電流に耐えられるMOSFETが使われています。
そのあと購入した、今回使っているブラシレスモーターは、80ターンの低速・高トルクタイプです。
おわりに
モジュールをつなぐところまでいきました。
次回、コーディングしていきます。