ArduinoとESCを使ってセンサーレスBLDCモーターを駆動-その2
◆まえがき
前の記事をちょっと改良しました。内容としてはモーターの回転(正確にはコイル電圧変化)を検出していたオペアンプを削除し、その動作をCPUに内蔵されているコンパレーターで行うようにしました。
また、モーターの極数をジャンパーピンで選択できるように機能を追加しました。
◆回路
オペアンプが無くなったのでちょっとすっきりしました。D2, 3, 4 のジャンパーがモーターの極数選択で、表に示すように2極から16極のモーターが選択可能になりました。
(極数の値の1/2がモーターの軸が一回転するのに必要な磁気的な回転数になります)
・外観
◆プログラム
20230705_BLDCmoterDrive-4.txt (UTF-B BOM付き)
CPUのコンパレーターの使い方は、Arduino UNO (ATmega328P) のアナログコンパレーターの使い方-2の記事の割り込みを使った方法で行っています。なお、高速なコンパレーターをノイズの多い環境で使っているので、誤検知が大量に発生するのですが、ソフトで無視するようにしました。(同じことをハードでやるとどえらく大変になります)
◆極数の表示
ESCとの初期化処理中(4秒間)にジャンパーで設定した極数を表示するようにしました。上記は設定が12極になっていることを示します。
◆まとめ
これでセンサーレスのBLDCモーターを動かすための回路とソフトは完成しました。光学ドライブなどのスピンドルモーターを廻して遊ぶと面白いです。また、この仕掛けはドローンなどのモーターの運転テストに使うと便利だと思います。
この回路を使ってHDDのスピンドルを使ったグラインダーを廻すことで従来より強力な物が作れるはずです。時間のある時に仕上げて行きたいと思います。ちなみに、HDDのスピンドルを、ArduinoからパワーFETを5V駆動した場合はだと4100rpmで廻りましたが、この記事のようにESCを使って12Vで駆動すると9200rpmで廻りました。
- 関連記事
-
- ミニグラインダー(DCブラシモーター)の速度制御コントローラー
- HDDのスピンドルモーターで小さなグラインダーを作る
- ArduinoとESCを使ってセンサーレスBLDCモーターを駆動-その2
- ArduinoとESCを使ってセンサーレスBLDCモーターを駆動-その1
- ArduinoでセンサーレスDCモーターを廻す-その2