ドローン製作記のメインページ 【完全自作】Arduinoを使用した自作ドローンの製作記(完成)
今回のドローンの製作にはDJIのE305というモーターを使用しました.
このドローンのモーターを動作させるために使用した方法を説明します.
-
モーターの入力信号
モーターとフライトコントローラーの間には,ESC(Electric speed controller)というモーターを駆動するためのドライバがあります.このESCにPWMという入力を与えることで,モーターの回転速度を調整することができます.
PWMとはPulse Width Modulation の略で,日本語に訳せばパルス幅変調です.
その名の通り,パルスの幅を変えることで信号を伝達する方式です.簡単に言えば,信号を高速でオンオフし,そのオンとオフの時間の比率で速度を制御する方法です.
-
Arduino Megaからの出力方法
このE305の最適なPWM周波数は30-450[Hz]です.しかし,Arduino側のPWM周波数は490[Hz]とすこしオーバーしています.
ですが,490[Hz]のまま信号を流しても,モーターはしっかり動いてくれました.よって,そのままの周波数で動かすことにしました.
Arduinoの<Servo.h>ライブラリを使用し,出力にはマイクロ秒単位でパルス幅を制御することのできる,writeMicroseconds()を使用しました.
また,ESCの入力は3.3Vと5.0Vの入力が使えるので,Arduinoから直接接続することができました.
-
テスト
最初はこのソースコードでテストしていました.
モーターをテストするときには,ショートに注意して,いつでも電源を切れるようにしましょう.
また,最初はプロペラはつけないでテストしましょう.
Arduinoのservo.hでは周波数は50Hzでは?ドローンの制御には遅いような気もします。490HzはPWM信号の周波数でピンごとに違ってたような。。。
コメントありがとうございます.
結果論からいうと,50Hzもあればドローンの制御には十分です.
また,自分のドローンはトイドローンと比べて大きめなのもあり,時定数は比較的大きいというのも有利に働いています.
PWM信号は5,6番は977Hz程度になります.また,他の関数を使えばPWMに競合することもあります.
50HzのPWMで飛ばした動画が以下になります.
https://youtu.be/qAB3DA8Kerw
動画拝見しました。なるほど、確かに50Hzでも十分安定しますね。余計なお世話でしたね・・。
いえいえ,自分も最初は50Hzで動くかどうか心配でした.
市販の製品は「数ms」などと処理速度を宣伝していたりするので,それがどれほど効果があるのか調べてみたいですね.
ご指摘,コメントありがとうございます.
Arduino uno を使ってドローン自作をされているようですが、PWMの分解能が8bitで十分なのでしょうか?
私もブラシレスモーターを扱ったプログラムを書いていますが、256段階のスピード調節では不都合が生じています…..
プログラムでは、より正確な出力をするために、writeMicroseconds関数を使っています。
機体の慣性モーメントの大きさによって不安定さは変わるかもしれませんが、上記の関数を使うことで改善できると思います。