読者です 読者をやめる 読者になる 読者になる

ドローンのモータをArduinoから制御

なぜ?

be-ars.colopl.co.jp

VRハッカソンに参加しました.

その様子は後でまとめようと思います.

その中で,VR映像に合わせて,を人に送る必要が出てきました.

そこで考えたのが,「扇風機をハック」,「ダクテッドファン」,「ドローンのモータを使う」この3つでした.

まず一番風が強そうなダクテッドファンですが,国内ではどれも品切れかつ海外だと届くのに時間がかかり,ハッカソンに間に合わなくなるのでやめました.

扇風機はちょっと見た目がカッコ悪い...ということで.

ドローンのモータを使うことにしました.

映像

こんな感じになりました.

さすがドローンのモータです.

かなりの風量が出ています.

制御

回路はとても簡単で,以下の写真のReceiverのところをArduinoに変えればOKです.

f:id:McG:20160320104457p:plain

※この図は,http://www.hobbyking.com/hobbyking/store/uploads/1042506394X869309X12.pdfこちらから引用しました.

プログラム

#include <Servo.h>
#define FAN 9

Servo fan;


void setup() {
  Serial.begin(9600);
  fan.attach(FAN); 
  pinMode(FAN, OUTPUT);
}

int val = 1500;

void loop() {
  delay(5000);
  fan.writeMicroseconds(2000);
  Serial.println("init max");
  delay(1000);
  fan.writeMicroseconds(1000);
  Serial.println("init min");
  delay(5000);
  while(1){
    fan.writeMicroseconds(1800);
    delay(300);
    
  }
}

プログラムはこのようになります.

PWMを送るので,AnalogWrite関数で送ることを考えると思うのですが,それだとうまくいきません.

以下のArduino公式リファレンスのAnalogWrite関数の説明をみてください.

Arduino 日本語リファレンス

PWM信号の周波数は約490Hz

と書かれています.

ブラシレスモータはだいたい50Hz程度のPWM周波数でコントロールするので,AnalogWrite関数は使えません.

そこで,サーボモータを制御するライブラリの<Servo.h>をインクルードして,PWM幅を指定する必要があります.

ドローンのモータやダクテッドファンのモータはキャリブレーションが必要です.

最大パルス幅を出力したあとに最小パルス幅を出力すると,キャリブレーションが完了します.

今回は2000μsが最大,1000μsが最小としているので,1000〜2000μsのパルスを与えると,パルスの幅に応じてモータの回転速度が変わります.

結構危ない

ドローンのモータ,結構危ないので怪我しないように気をつけて下さい!

© 2016 Yuki Sako.