ブラシレスモーターをArduinoとESCを使って回してみよう!

ブラシレスモーターをArduinoとESCを使って回してみよう!

ブラシレスモーターとは?

今回はブラシレスモーターを回してみたいと思います。
ブラシレスモーターとは名前の通りブラシ(電極)とコミュテータ(整流子)が無く機械的接点が無いモーターです。
機械的接点が無いおかげで寿命が長く、メンテナンスも不要となります。
ただ、ドライバが必要となりブラシモーターと比べて複雑となります。
ブラシモーターとの違いは下記の表に書いておきます。

ブラシレスモーターブラシ付きモーター
メンテナンス不要安価
長寿命回すだけなら簡単
静音性が高い
安定した制御が可能
小型

上の表をみての通り、ブラシレスモーターの利点が多くなっており、
ブラシ付きモーターからブラシレスモーターに替わっていったりしています。
その為、ブラシレスモーターを扱えるようになると今後の製品作成にも役立ちます。

ブラシレスモーターを動かそう!

今回使用するもの

※当サイトの情報の正確性について
可能な限り正確な情報を掲載するよう努めています。しかし、誤情報が入り込んだり、情報が古くなったりすることもあります。必ずしも正確性を保証するものではありません。また合法性や安全性なども保証しません。


今回用意する物は下記となります。

購入先はアマゾン秋月電子で購入しました。

ブラシレスモーター
 アマゾンで4個5000円程で売られてました。
 デザインもカッコよく気に入ってます。


ESC
 アマゾンで4個3000円程で売られてました。
 ESCはブラシレスモーターを簡単に制御するために必要な部品です。


・Arduino Nano(互換機
 アマゾンで1個700円程で売られてました。


・可変抵抗
 秋月電子で1個40円程で売られてました。
 今回はこれを使ってブラシレスモーターの速度を調整できるようにします。


・バッテリー(12v)
 アマゾンで1個2000円程で売られてました。
 今回使用するブラシレスモーターの必要電圧は3-4セルなので12vのバッテリーを使用します。


・ブレッドボード
 アマゾンで6個700円程で売られてました。


・ケーブル(ワニ口タイプ、オスピンタイプ)
 秋月電子で10本400円程で売られてました。


・USBケーブル(USB A オス to miniB オス)
 Arduinoとパソコンをつなぐ為に使います。


各部品を接続しよう。

下記の通りに配線していきます。
モーターに繋ぐ3本の線はとりあえず適当で大丈夫です。
後で動かして回転方向が合っているか確認します。

また、モーターが回転すると暴れるのでしっかりと固定することをお勧めします。

Arduino nanoD6ESC信号線(黄色の線)
Arduino nanoA7可変抵抗真ん中
Arduino nano5V可変抵抗向かって左側
Arduino nanoGND可変抵抗向かって右側
Arduino nanoGNDESC信号線(黒色の線)
ESC出力側3本モーター組み合わせは自由(後で調整)
ESC電源+バッテリー+
ESC電源-バッテリー

プログラム作成

Arduinoにプログラムを書き込みます。

Arduino IDEのダウンロードがまだの方は過去の記事画像付きで分かりやすく解説!ESP32を始める際に必要な設定を覚えよう!に書いてありますのでダウンロードのみ参考にしてください。

int motor = 6;//ESCに送る信号ピン
int volume = 0;//可変抵抗の値を入れる変数

void setup() {
  // put your setup code here, to run once:
  pinMode(motor, OUTPUT);
}

void loop() {
int motor = 6;//ESCに送る信号ピン
int volume = 0;//可変抵抗の値を入れる変数

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(motor, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  volume = analogRead(A7);//可変抵抗の値を変数volumeに入れる
  Serial.println(volume);//可変抵抗の値をシリアルモニタに表示
  analogWrite(motor, volume);//モータを動かす
  delay(100);
}

シリアルモニターの値を見てみると、最大約1020ですので、約200になるようにプログラムを修正します。


int motor = 6;//ESCに送る信号ピン
int volume = 0;//可変抵抗の値を入れる変数

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(motor, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  volume = analogRead(A7) * 0.2;//可変抵抗の値を0.2で掛けて変数volumeに入れる
  Serial.println(volume);//可変抵抗の値をシリアルモニタに表示
  analogWrite(motor, volume);//モータを動かす
  delay(100);
}

これで、最大約200となりました。

モーターを回す。

ブラシレスモーターを起動させるには、キャリブレーションを行います。
方法は、可変抵抗を最大まで回し音が出たら、可変抵抗を下げ、また音が出たら少しずつ上げていき、
起動する箇所と最大の箇所を調べます。
その際、回せる範囲を調べる為、シリアルモニタで確認します。
今回使用した、ESCは最大60で最小が30でした。
もし、回転方向が違ったり動かない場合は、モーターの3本線を入れ替えて再度試してみてください。


プログラムを調整

今回、私が使ったESCは最大60でしたので最大が60になるように変数volumeの箇所を変更します。

int motor = 6;//ESCに送る信号ピン
int volume = 0;//可変抵抗の値を入れる変数

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(motor, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  volume = analogRead(A7)* 0.06;//可変抵抗の値を0.06で掛けて変数volumeに入れる
  Serial.println(volume);//可変抵抗の値をシリアルモニタに表示
  analogWrite(motor, volume);//モータを動かす
  delay(100);
}

最後に。

いかがでしたでしょうか?
わたしは、起動させるのに苦戦し、起動したりしなかったりで模索したのですが、
何回か試していくうちにわかってきました。
今回は、可変抵抗で調整しましたが、今後はセンサーの値によって回転を変えてたりしたいとかんがえております。