ブラシレスモーターをArduinoとESCを使って回してみよう!
- 2021.06.05
- 電子工作
ブラシレスモーターとは?
今回はブラシレスモーターを回してみたいと思います。
ブラシレスモーターとは名前の通りブラシ(電極)とコミュテータ(整流子)が無く機械的接点が無いモーターです。
機械的接点が無いおかげで寿命が長く、メンテナンスも不要となります。
ただ、ドライバが必要となりブラシモーターと比べて複雑となります。
ブラシモーターとの違いは下記の表に書いておきます。
ブラシレスモーター | ブラシ付きモーター |
メンテナンス不要 | 安価 |
長寿命 | 回すだけなら簡単 |
静音性が高い | |
安定した制御が可能 | |
小型 |
上の表をみての通り、ブラシレスモーターの利点が多くなっており、
ブラシ付きモーターからブラシレスモーターに替わっていったりしています。
その為、ブラシレスモーターを扱えるようになると今後の製品作成にも役立ちます。
ブラシレスモーターを動かそう!
今回使用するもの
※当サイトの情報の正確性について
可能な限り正確な情報を掲載するよう努めています。しかし、誤情報が入り込んだり、情報が古くなったりすることもあります。必ずしも正確性を保証するものではありません。また合法性や安全性なども保証しません。
今回用意する物は下記となります。
・ブラシレスモーター
アマゾンで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 nano | D6 | ↔ | ESC | 信号線(黄色の線) |
Arduino nano | A7 | ↔ | 可変抵抗 | 真ん中 |
Arduino nano | 5V | ↔ | 可変抵抗 | 向かって左側 |
Arduino nano | GND | ↔ | 可変抵抗 | 向かって右側 |
Arduino nano | GND | ↔ | ESC | 信号線(黒色の線) |
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);
}
最後に。
いかがでしたでしょうか?
わたしは、起動させるのに苦戦し、起動したりしなかったりで模索したのですが、
何回か試していくうちにわかってきました。
今回は、可変抵抗で調整しましたが、今後はセンサーの値によって回転を変えてたりしたいとかんがえております。
-
前の記事
超簡単!Raspberry pi imager を使って簡単にRaspberry Pi OSを入をいれよう! 2021.05.25
-
次の記事
AWSについて簡単に説明! 2021.06.06