ドローンでは、ブラシレスモータがよく使われます。
今回はドローン用のモータと動作テスト記録。
使用したのは、
- Arduino UNO
- ブラシレスモータ(BR2212)
- ESC(バルク)
- リポバッテリー
- ブレッドボード、ジャンパー線、
- 可変抵抗(アナログレバー替わり)
- オシロスコープ
回路
プログラム
//ピン設定 int pwmPin = 5; // 5ピンにPWM制御線(PWMは「~」のピンのみ可) int analogPin = 0; // アナログピン0に可変抵抗(操作レバー) //設定値 int pwm_ParusuHaba = 2700000; //周期幅の指定μs(マイクロ秒) //1マイクロ秒 =1,000,000㎐。ブラシレスモータの周期は1ミリ秒~2ミリ秒ぐらい。BS2212モータはON+OFF時間2.7ms、ON1~2msで動作。 //ドローンモータは1000μs~2000μs(1ms~2ms)。サーボは、15ms~20ms,on->0.5~2.5ms void setup() { //シリアルモニターの設定 Serial.begin(9600); //入力ピン設定 pinMode(analogPin, INPUT); } void loop() { pwm_control(); } void pwm_control() { //pwmOnは環境に合わせて数値調整(得たアナログ値0~1023⇒1000~2000ミリ秒に変換) int pwmOn = (analogRead(analogPin) - 332) * 255 / 36 + 600; int pwmOff = pwm_ParusuHaba -pwmOn; //offの時間を設定 //シリアルモニターに表示 Serial.print("pwmOn = "); Serial.print(pwmOn); Serial.println("[マイクロ秒]"); Serial.print(" /pwmOff="); Serial.print(pwmOff); Serial.println("[マイクロ秒]"); //HIGH/LOWでパルス生成 digitalWrite(pwmPin, HIGH); delayMicroseconds(pwmOn); digitalWrite(pwmPin, LOW); delayMicroseconds(pwmOff); }
技術メモ
-
ハード面
ブラシレスモータは3相交流
ESCでPWM信号と動力電源を混合 -
ソフト面
ブラシレスモータのパルス幅は1ミリ秒ON=0%⇒2ミリ秒ON=100%
ブラシレスモータの周期(ON+OFF)は約3ミリ秒
デューティ比≠出力% -
プログラム
Arduino のピンは5,6ピンが最も高周波PWM(5,6pin = 980Hz・1ms, 他490Hz・2ms)
delayMicroseconds(pin); でμ秒でプログラムできる。