未分類

ブラシレスモータとESCのArduino制御(実験)

ドローンでは、ブラシレスモータがよく使われます。
今回はドローン用のモータと動作テスト記録。
使用したのは、

  • 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); でμ秒でプログラムできる。

-未分類

© 2021 技術科・情報科のサイト Powered by AFFINGER5