The L298N motor controller solves these 2 things for us, it allows us to power the motor from an external power source, while also allowing us to control the motor speed and directions with low current signals (which the arduino can handle).
Off topic: I bought mine from DealExtreme, which if you dont know I definitely recommend visiting. Its an online store that sells an enormous variety of things, at low prices and with free international shipping.
Lets see the input and outputs that this controller has:
Battery inputs
|
These are 2 of the blue connectors that you can see in the image
above. This requires a battery which will power the 2 motors. The battery’s
voltage should be compatible with the motors that you are going to use. Check the specs of your controller to see
the max allowed voltage .
|
Motor A outputs
|
These are 2 of the blue connectors that you can see in the image
above. This will power the motor A
|
Motor B outputs
|
These are 2 of the blue connectors that you can see in the image
above. This will power the motor B.
|
EN A
|
This signal should be connected to an Arduino’s PWM output pin. It
will determine the speed of the motor A, a value of 0 means stopped and a
value of 255 is max speed.
|
EN B
|
This signal should be connected to an Arduino’s PWM output pin. It
will determine the speed of the motor B, a value of 0 means stopped and a
value of 255 is max speed.
|
IN1 and IN2
|
These are 2 digital signals that will determine Motor’s A behavior
(going forward, going backwards)
|
IN3 and IN4
|
These are 2 digital signals that will determine Motor’s B behavior
(going forward, going backwards)
|
The following values will allow you to set the motors directions from your arduino.
IN1
|
IN2
|
IN3
|
IN4
|
||
Motor A Forward
|
HIGH
|
LOW
|
Motor B Forward
|
HIGH
|
LOW
|
Motor A Backwards
|
LOW
|
HIGH
|
Motor B Backwards
|
LOW
|
HIGH
|
In the next example I'll show how to control 2 independant DC motor.
//Define the speed for the motors, Im just going to use 200 (almost top speed) #define SPEED 200 //Define the signal pins for motor A #define ENA 3 #define MAIN1 8 #define MAIN2 9 //Define the signal pins for motor B #define ENB 5 #define MBIN1 10 #define MBIN2 11 void setup() { pinMode(MAIN1, OUTPUT); pinMode(MAIN2, OUTPUT); pinMode(MBIN1, OUTPUT); pinMode(MBIN2, OUTPUT); } void loop(){ forwardMotorA(SPEED); delay(2000); //let it running for 2 seconds backwardsMotorA(SPEED); delay(2000); stopMotorA(); forwardMotorB(SPEED); delay(2000); //let it running for 2 seconds backwardsMotorB(SPEED); delay(2000); stopMotorB(); } void forwardMotorA(int speedVal){ digitalWrite(MAIN1,HIGH); digitalWrite(MAIN2,LOW); analogWrite(ENA, speedVal); } void backwardsMotorA(int speedVal){ digitalWrite(MAIN1,HIGH); digitalWrite(MAIN2,LOW); analogWrite(ENA, speedVal); } void stopMotorA(){ analogWrite(ENA, 0); } void forwardMotorB(int speedVal){ digitalWrite(MBIN1,HIGH); digitalWrite(MBIN2,LOW); analogWrite(ENB, speedVal); } void backwardsMotorB(int speedVal){ digitalWrite(MBIN1,HIGH); digitalWrite(MBIN2,LOW); analogWrite(ENB, speedVal); } void stopMotorB(){ analogWrite(ENB, 0); }
No hay comentarios:
Publicar un comentario