Nidec 24H BLDCで2輪の倒立振子ロボットを作った

Featured image of the post

目次

はじめに

Kariya Micro Maker Faire 2026 に出展しました。

Nidec 24Hモーターやその使用例、様々なロボットを展示したのですが、その中に2輪の倒立振子ロボットがありました。

キャチロボの時のように一気に仕上げて間に合わせようとしたのですが、間に合いませんでした。

当日朝にハードウェアが完成しましたが、倒立振子を立たせるためのコードを考えておらず、立たせた状態での展示は叶いませんでした。

悔しいので次の日に少しコード書いたら立ちました。

ハードウェア

Nidec 24Hモーター2個を使用しています。📄Arrow icon of a page linkNidec 24H BLDCモーターの仕様まとめ

最初は減速比10の自作QDDギアヘッドで(ぎりぎり)立たせましたが、すぐに外してダイレクトドライブ(DD)にしました。

バッテリーはGreenWorks(互換)バッテリーで24Vです。📄Arrow icon of a page linkずぼら向けロボット用24Vバッテリーの開拓~GreenWorks~

IMUはDAMIAOです。CANから読みます。📄Arrow icon of a page linkDAMIAOのIMUをCAN通信で使う

基板は「Nidec 24Hモーター4個動かす基板」です。

Image in a image block

Raspberry Pi Pico Wが載っています。

Nidec 24Hモーターに繋げるPWMピンは、Pico WのPWMスライス(PWM 数字 AかB)が重複しないように繋げています。他は直結です。https://picow.pinout.xyz ここで確認すると便利です。

Image in a image block

基板単体でロボットとして使えるように、Pch MOS-FETによる電流スイッチ(表面実装したXL-10AH )やCANトランシーバでRP2040PIO_CAN からCAN通信ができるようになっています。Nidec 24Hモーターに限らず、CANから制御するBLDCモーターが簡単に動かせる汎用と専用の中途半端基板です。

制御方法

Arduino IDEで書きます。

展示中に後輩たちと話しながらコードを考えていたのですが、姿勢角と姿勢角速度はIMUから取れるとして、位置制御をどうやって行うのかというのが問題でした。

車輪のエンコーダを読むだけではダメで、姿勢角の分を打ち消して移動量に変換する必要があると気づきました。

図にしました。

Image in a image block
Image in a image block
Image in a image block
Image in a image block

これで、姿勢角と姿勢角速度と本体位置と本体速度にそれぞれゲインを掛けて出力にすればいいことになりました。

ゲインの調整

こちらのページに書かれている手順で行いました。立ちました。

ここで、減速比10のギアボックスのバックラッシが大きく、不感帯が発生して制御に悪影響が出ていたため、出力にローパスフィルタを掛けました。

おまけ

暇だったので起動時にロボマスの音が出るようにしました。

DD(ダイレクトドライブ)化

減速比10のガタありQDDを辞めて、理論上はガタなしのDDにしました。

トルクが1/10になるのが不安でしたが、姿勢がほぼ水平の状態から微小な角度を補正するのであればトルクは殆ど要らないだろうと信じてやってみました。

ちょっとした悲劇も発生しましたが、うまくいきました。

減速比10のときのゲインのままで特にいじらずそのまま立ちました。

最終的にはラジコン化したいと思ってたので、位置制御を消して一番安定しそうなゲインを探しましたが、結局同じくらいのゲインになりました。一旦これでおしまいです。

また時間があるときにラジコン化したいです。

おわりに

あと1日か2日早くできていれば、Kariya Micro Maker Faire 2026 に展示できていたのになぁという後悔が大きいです。

パパっと書いた状態ですがコードを置いておきます。