見出し画像

Arduinoでブラシレスモーター回してみた

こんにちは、Rcatです。
今回は次の工作に向けてブラシレスモーターの稼働実験を行いましたので、まとめてみました。

ブラシレスモーターについて

今回は通常のブラシモーターと異なり、電子制御で回転するブラシレスモーターを使用することにしました。
ただ、ブラシレスモーターは普通のモーターと仕様の表現が異なるようで、電圧や電流の仕様はよくわかりませんでした。
調べたとこによると電圧 x KV値が回転数になるようです。それ以外の適正電圧や電流についての情報がありませんでした。
さて、通常のモーターを使うと低電圧の割には大電流を持っていかれますが、ブラシレスモーターの場合はどうなんでしょうね…。

スピードコントローラーについて(ESC)

ブラシレスモーターは線が3本あり、普通のモーターのようにつなげば回るわけではありません
それを制御するための専用のコントローラーがありますので、そちらも用意しました。よくわからないので、適当に安いのを買ってみました。
制御の方法としてはArduinoのサーボライブラリを使ってサーボのパルスと同様の方法で制御できるみたいです。

配線図

配線図はこちら。
モーターとコントローラーの3本線を接続します。コントローラー側の線に色はついていないので、適当に接続します。回らない場合は順番を入れ替えるといいらしいです。
次にサーボモーターと同じコネクターがついた線が出ていますので、これを制御回路と接続します。なお、電源の端子は繋がなくても動作させることができました。サーボの信号線はプログラムで定義したところにつないでください。
なお、今回の制御回路にはそこら辺に転がっていたESP32-C3を使用しています。
最後に太い線を5ボルト以上の電源に接続すれば完了です。
どこまで電圧を下げられるかやってみましたが、5ボルト以下にすると回りませんでした。

プログラム

今回動作させているプログラムは下記のようになっています。
なお、自作のESP32 WEB工作テンプレートを改造しているため、下記をコピーしただけでは動作しません。テンプレートの方に関しては、下記をご覧ください。

ブラシレスモーターを回す手順は、まずキャリブレートの後に回転数の情報を送信するという順番です。
下記で言うと、ServoSetup関数が一番最初に呼び出され、その中でピンのアタッチとキャリブレーションが行われます。
キャリブレーションとはこれから送信するパルス幅の最大値と最小値をESCに送信し、覚えてもらう行為です。
調べてもなぜ2秒待つのかという情報にまではたどり着くことができませんでしたが、このように上限2秒、下限2秒以上を送ることで初期化ができるらしいです。
そして実際に動かしているのが39行目です。
最小パルス幅が1000最高が2000なので、その範囲内にパーセンテージを変換し動かしています。
周辺のプログラムが複雑なのはパソコンやスマートフォンから制御できるテンプレートを使用しているからです。
実際に動作映像でスピードが変化しているのはパソコンから数字を入力してるからです。

動作映像

実際の動作がこちら
パレスの幅を変更することで、回転速度も制御できていることがわかります。

まとめ

今回はブラシレスモーターのテストをしました。
コントローラーの部分を今回適当に選んでいましたが、公式の説明書がないのがちょっと痛かったです。商品レビューでも具体的な使い方を書いてくれているような人はいなかったので、ちょっと苦労しました。
それではこれを使った工作でまたお会いしましょう

情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。