【Arduino自作ドローン】No.3 モーター駆動編(PWM)

ドローン製作記のメインページ 【完全自作】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ドローン】No.4 状態推定(姿勢角)

9件のコメント

  1. Arduinoのservo.hでは周波数は50Hzでは?ドローンの制御には遅いような気もします。490HzはPWM信号の周波数でピンごとに違ってたような。。。

    1. コメントありがとうございます.

      結果論からいうと,50Hzもあればドローンの制御には十分です.
      また,自分のドローンはトイドローンと比べて大きめなのもあり,時定数は比較的大きいというのも有利に働いています.

      PWM信号は5,6番は977Hz程度になります.また,他の関数を使えばPWMに競合することもあります.

      50HzのPWMで飛ばした動画が以下になります.
      https://youtu.be/qAB3DA8Kerw

      1. 動画拝見しました。なるほど、確かに50Hzでも十分安定しますね。余計なお世話でしたね・・。

        1. いえいえ,自分も最初は50Hzで動くかどうか心配でした.
          市販の製品は「数ms」などと処理速度を宣伝していたりするので,それがどれほど効果があるのか調べてみたいですね.

          ご指摘,コメントありがとうございます.

          1. Arduino uno を使ってドローン自作をされているようですが、PWMの分解能が8bitで十分なのでしょうか?
            私もブラシレスモーターを扱ったプログラムを書いていますが、256段階のスピード調節では不都合が生じています…..

          2. プログラムでは、より正確な出力をするために、writeMicroseconds関数を使っています。

            機体の慣性モーメントの大きさによって不安定さは変わるかもしれませんが、上記の関数を使うことで改善できると思います。

返信を残す

メールアドレスが公開されることはありません。