Arduino DC Motor, aprende a controlarlo con L298

Controla un Motor Arduino con driver L298

En este tutorial, vamos a interconectar diferentes tipos de motores con la placa Arduino UNO y te mostraremos cómo conectar el motor y manejarlo desde tu placa.

Hay tres tipos diferentes de motores.

  • Motor de corriente continua
  • Servomotor
  • Motor paso a paso

Un motor DC, o motor de corriente continua, es el tipo más común de motor. Los motores de corriente continua normalmente tienen sólo dos conductores, uno positivo y otro negativo. Si conectas estos dos cables directamente a una batería, el motor girará. Si cambias los cables, el motor girará en la dirección opuesta. Incluso variar velocidad motor dc arduino.

Es muy importante no accionar el motor directamente desde los pines de la placa Arduino. Esto puede dañar el microcontrolador. Debes utilizar un circuito de controladores o un circuito integrado.

Dividiremos este capítulo en tres partes.

  • Haz solo que tu motor gire
  • Control de la velocidad del motor
  • Controlar la dirección del giro del motor de corriente continua
2pcs L298N Driver Board L298 Stepper Motor Drive Controller...
2pcs L298N Driver Board L298 Stepper Motor Drive Controller...
【L298N】 L298N Driver Board L298 Stepper Motor Drive Controller Module Dual H Bridge; 【Fast delivery】 Fast and high quality delivery of Spain buying in TECNOIOT
Greluma 4 piezas L298N módulo de placa controladora de...
Greluma 4 piezas L298N módulo de placa controladora de...
La señal se muestra en la figura; El método de conexión se muestra en la figura siguiente después de habilitar ENA ENB
HiLetgo 5pcs L298N Motor Driver Controller Board Module Stepper...
HiLetgo 5pcs L298N Motor Driver Controller Board Module Stepper...
Dual-channel H-bridge driver working mode creates higher working efficiency; Large capacity filter capacitance, afterflow protection diode, more stable and reliable

Componentes necesarios

Necesitarás los siguientes componentes para este tutorial

  • 1x placa Arduino UNO
  • 1x transistor PN2222
  • 1x Motor pequeño de 6V DC
  • 1x 1N4001 diodo
  • 1x 270 Ω Resistencia

Sigue el esquema de conexiones y realiza las conexiones tal y como se muestra en la imagen siguiente.

arduino DC motor esquema

Precauciones

Toma las siguientes precauciones al realizar las conexiones.

Primero, asegúrate de que el transistor está conectado de la manera correcta. El lado plano del transistor debe mirar hacia la placa Arduino como se muestra en la disposición.

Segundo, el extremo rayado del diodo debe estar hacia la línea de alimentación de +5V de acuerdo con la disposición mostrada en la imagen.

Spin Control, Código Arduino

int motorPin = 3;

void setup() {

}

void loop() {
digitalWrite(motorPin, HIGH);
}

Código a tener en cuenta

El transistor actúa como un interruptor, controlando la potencia del motor. El pin 3 de Arduino se usa para encender y apagar el transistor y se le da el nombre de ‘motorPin’ en el sketch.

Resultado

El motor girará a toda velocidad cuando el pin 3 de Arduino se ponga alto.

Control de velocidad del motor

A continuación se muestra el diagrama esquemático de un motor de corriente continua, conectado a la placa Arduino.

DC motor conectado Arduino Uno

Código Arduino

int motorPin = 9;

void setup() {
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
while (! Serial);
Serial.println("Speed 0 to 255");
}

void loop() {
if (Serial.available()) {
int speed = Serial.parseInt();
if (speed >= 0 && speed <= 255) {
analogWrite(motorPin, speed);
}
}
}

Cómo hemos apuntado más arriba, el transistor actúa como un interruptor, controlando la potencia del motor. El pin 3 de Arduino se usa para encender y apagar el transistor y se le da el nombre de ‘motorPin’ en el código.

Cuando se inicia el programa, se te pide que indiques los valores para controlar la velocidad del motor. Debes introducir un valor entre 0 y 255 en el Monitor Serial.

DC motor comando

En la función ‘loop’, el comando ‘Serial.parseInt’ se utiliza para leer el número introducido como texto en el Serial Monitor y convertirlo en un ‘int’. Puedes escribir cualquier número aquí. La sentencia `si’ en la siguiente línea simplemente hace una escritura analógica con este número, si el número está entre 0 y 255.

Resultado

El motor de corriente continua girará con diferentes velocidades según el valor (0 a 250) recibido a través del puerto serie.

Control de dirección de giro

Para controlar la dirección del giro del motor de corriente continua, sin intercambiar los cables, puedes utilizar un circuito llamado H-Bridge. Un puente en H es un circuito electrónico que puede accionar el motor en ambas direcciones. Los puentes H se utilizan en muchas aplicaciones diferentes. Una de las aplicaciones más comunes es el control de motores en robots. Se llama puente H porque utiliza cuatro transistores conectados de tal manera que el diagrama esquemático se parece a una «H».

Aquí utilizaremos el L298 H-Bridge IC. El L298 puede controlar la velocidad y la dirección de los motores de corriente continua y de los motores paso a paso, y puede controlar dos motores simultáneamente. Su intensidad nominal es de 2A para cada motor. En estas corrientes, sin embargo, necesitarás usar disipadores de calor.

L298

Componentes necesarios

Necesitarás los siguientes componentes.

  • 1 × L298 puente IC
  • 1 × motor de corriente continua
  • 1 × Arduino UNO
  • 1 × protoboard
  • 10 × cables de puente

A continuación se muestra el diagrama esquemático de la interfaz del motor DC a la placa Arduino Uno.

L298 arduino uno

El diagrama anterior muestra cómo conectar el L298 IC para controlar dos motores. Hay tres pines de entrada para cada motor, Input1 (IN1), Input2 (IN2), y Enable1 (EN1) para el motor1 y Input3, Input4, y Enable2 para el motor2.

Como en este ejemplo sólo controlaremos un motor, conectaremos el Arduino a IN1 (pin 5), IN2 (pin 7), y Enable1 (pin 6) del L298 IC. Las clavijas 5 y 7 son digitales, es decir, entradas ON u OFF, mientras que la clavija 6 necesita una señal de modulación de ancho de pulso (PWM) para controlar la velocidad del motor.

La siguiente tabla muestra el sentido de giro del motor en función de los valores digitales de IN1 y IN2.

 

IN1 IN2 Motor Behavior
BRAKE
1 FORWARD
1 BACKWARD
1 1 BRAKE

 

El pin IN1 del IC L298 está conectado al pin 8 de Arduino mientras que el IN2 está conectado al pin 9. Estos dos pines digitales de Arduino controlan la dirección del motor. El pin EN Un pin de IC está conectado al pin 2 del PWM de Arduino. Esto controlará la velocidad del motor.

Para fijar los valores de los pines 8 y 9 de Arduino, hemos utilizado la función digitalWrite(), y para fijar el valor del pin 2, tenemos que utilizar la función analogWrite().

Pasos de conexión

  • Conecta 5V y la tierra del IC a 5V y la tierra de Arduino, respectivamente.
  • Conecta el motor a los pines 2 y 3 del CI.
  • Conecta IN1 del IC al pin 8 de Arduino.
  • Conecta IN2 del IC al pin 9 de Arduino.
  • Conecta EN1 del IC al pin 2 de Arduino.
  • Conecta el SENS A de la clavija del CI a tierra.
  • Conecta Arduino usando el cable USB de Arduino y sube el programa a Arduino usando el software Arduino IDE.
  • Suministra energía a la placa Arduino usando la fuente de alimentación, la batería o el cable USB.

Código Arduino

const int pwm = 2 ; //initializing pin 2 as pwm
const int in_1 = 8 ;
const int in_2 = 9 ;
//For providing logic to L298 IC to choose the direction of the DC motor
void setup() {
pinMode(pwm,OUTPUT) ; //we have to set PWM pin as output
pinMode(in_1,OUTPUT) ; //Logic pins are also set as output
pinMode(in_2,OUTPUT) ;
}

void loop() {
//For Clock wise motion , in_1 = High , in_2 = Low
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,LOW) ;
analogWrite(pwm,255) ;
/* setting pwm of the motor to 255 we can change the speed of rotation
by changing pwm input but we are only using arduino so we are using highest
value to driver the motor */
//Clockwise for 3 secs
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
//For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH
digitalWrite(in_1,LOW) ;
digitalWrite(in_2,HIGH) ;
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
}

Resultado

El motor funcionará primero en el sentido de las agujas del reloj (CW) durante 3 segundos y luego en sentido contrario (CCW) durante 3 segundos.

Vamos a ver un vídeo de cómo se puede utlizar el DC motor para un robot.

Pin It on Pinterest

Shares