Arduino Motor Driving
Arduino and L293B
We will make another simple project with Arduino. This project's name is Arduino motor driving! We will learn how to control a motor with Arduino. Firstly we will control the motor's speed by a potentiometer. Then we will learn what is the PWM and how to change the motor's speed by the PWM.We need,
- Potentiometer
- An Arduino board
- L293D Motor Driver
- 9V Battery
The difference between L293D and L293B is the current limit. L293D's current limit is 0.5 A and L293B's current limit is 1A. Now, we can see the code.
void setup() {
//we arrange pins, which we will use, as output
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(11, OUTPUT);
}
//loop function will repeat while Arduino is powered on
void loop() {
/* 8th and 9th pins are input pin to motor driver.
we arrange 8th pin as HIGH to get 5V output and 9th LOW to get 0V.
if we arrange both of them as HIGH or LOW, motor will not work. 11th pin is PWM pin.
we arranged it as HIGH to make it disabled. */
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(11, HIGH);
}
When we load this code to Arduino, we will arrange the speed of the motor with potentiometer.
Now, we will change the motor direction with code. Do not use the potentiometer for this time. Directly connect the motor to the motor driver's output pin. Look at the sketch.
void setup() {
//we arrange pins, which we will use, as output
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(11, OUTPUT);
}
//loop function will repeat while Arduino is powered on
void loop() {
/* 8th and 9th pins are input pin to motor driver.
we arrange 8th pin as HIGH to get 5V output and 9th LOW to get 0V.
if we arrange both of them as HIGH or LOW, motor will not work.
11th pin is PWM pin.
we arranged it as HIGH to make it disabled. */
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(11, HIGH);
// motor will work for 3 seconds
delay(3000);
//we should let the motor to stop
digitalWrite(11, LOW);
delay(1000);
//we will change the 8th and 9th pins' values. then motor will change its direction
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(11,HIGH);
delay(3000);
}
Now, we will change the motor speed by changing the PWM value in the code. We will use a special function for this: " analogWrite() ". Let's see the code
void setup() {
//we arrange pins, which we will use, as output
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(11, OUTPUT);
}
//loop function will repeat while Arduino is powered on
void loop() {
/* 8th and 9th pins are input pin to motor driver.
we arrange 8th pin as HIGH to get 5V output and 9th LOW to get 0V.
if we arrange both of them as HIGH or LOW, motor will not work.
11th pin is PWM pin.
We will use analogWrite() function to arrange the motor's speed. */
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
analogWrite(11, 255); //This function has a range from 0 to 255
}
Let's watch the video to see how it works. We finished that project. As an idea, you can control the motor with a button. We will make an other project in a short time. Keep in touch!
If you liked this post please subscribe it to reach more people! Thank you :)