All Articles

Arduinoでモーター制御やってみた

今回は初めてArduinoでのモーター制御をやってみたのでそれのメモです。

モーターの制御に必要なもの

モーターを扱うのは意外と大変です。なぜならモーターは比較的大きめの電源を必要とするからです。

Arduinoからの電気だけでも動きますが、Arduinoを壊す原因となってしまいます。

今回はこんな感じの構成で組んでみました。

DSC 1586

モーター一つ回すのに結構な数のコードを使っているのが分かると思います。

必要なパーツは以前紹介したキットに全てありました。

Arduino初心者完全セットの内容物を紹介!【The Most Complete Starter Kit MEGA 2560 Project】

Arduinoとモーターとは別に二つのモジュールを使いました。

一つは最初の写真左側の電源モジュールです。モータを動かすための電気を供給しています。

もう一つはL293Dというモーターを制御するための便利なチップです。写真中央にあります。

これは最大2つのモーターを独立して制御できます。

実装

コードでの実装です。

今回は基本的にこちらからダウンロードできるのElegooのチュートリアルを参考にやりました。

https://www.elegoo.com/download/

[highlight_c]

#define ENABLE 5
#define DIRA 3
#define DIRB 4

int i;

void setup() {
//—set pin direction
pinMode(ENABLE,OUTPUT);
pinMode(DIRA,OUTPUT);
pinMode(DIRB,OUTPUT);
Serial.begin(9600);
}

void loop() {
//—back and forth example
Serial.println(“One way, then reverse”);
digitalWrite(ENABLE,HIGH);
for (i=0;i<5;i++) {
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,LOW);
delay(500);
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,HIGH);
delay(500);
}
digitalWrite(ENABLE,LOW);
delay(2000)}

[/highlight_c]

アウトプットのピンを3つ用意する。一つは電源管理、後の二つは時計回りに力を与えるか、反時計回りに力を与えるかを指定する。

上の例だとdigitalWriteなのでHIGHかLOWだけだが、analogWriteを使って二つ目の引数に回転の速度を与えることもできる。

終わりに

モーターを軽く制御するだけでも結構大変でした。小さくて複雑な回路を組まなくても制御できるモジュールとかあったら、そっちを使うようにしたいところではあります。