Arduino - Motor DC
En este capítulo, conectaremos diferentes tipos de motores con la placa Arduino (UNO) y le mostraremos cómo conectar el motor y conducirlo desde su placa.
Hay tres tipos diferentes de motores:
- motor de corriente continua
- Servo motor
- Motor paso a paso
Un motor de CC (motor de corriente continua) es el tipo de motor más común. Los motores de CC normalmente tienen solo dos conductores, uno positivo y otro negativo. Si conecta estos dos cables directamente a una batería, el motor girará. Si cambia los cables, el motor girará en la dirección opuesta.
Warning- No conduzca el motor directamente desde los pines de la placa Arduino. Esto puede dañar la placa. Utilice un circuito de controlador o un IC.
Dividiremos este capítulo en tres partes:
- Solo haz girar tu motor
- Control de velocidad del motor
- Controla la dirección del giro del motor de CC.
Componentes requeridos
Necesitará los siguientes componentes:
- 1x placa Arduino UNO
- 1x transistor PN2222
- 1x motor pequeño de 6 V CC
- 1x diodo 1N4001
- 1x resistencia de 270 Ω
Procedimiento
Siga el diagrama del circuito y realice las conexiones como se muestra en la imagen que se muestra a continuación.
Precauciones
Tome las siguientes precauciones al realizar las conexiones.
Primero, asegúrese 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.
En segundo lugar, el extremo rayado del diodo debe estar hacia la línea de alimentación de + 5V de acuerdo con la disposición que se muestra en la imagen.
Control de giro 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 'motorPin' en el boceto.
Resultado
El motor girará a toda velocidad cuando el pin número 3 de Arduino suba.
Control de velocidad del motor
A continuación se muestra el diagrama esquemático de un motor de CC, conectado a la placa Arduino.
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ó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 'motorPin' en el boceto.
Cuando se inicia el programa, le solicita que proporcione los valores para controlar la velocidad del motor. Debe ingresar un valor entre 0 y 255 en el Monitor serial.
En la función 'loop', el comando 'Serial.parseInt' se usa para leer el número ingresado como texto en el Serial Monitor y convertirlo en un 'int'. Puede escribir cualquier número aquí. La instrucción 'if' en la siguiente línea simplemente realiza una escritura analógica con este número, si el número está entre 0 y 255.
Resultado
El motor de CC girará a 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 CC, sin intercambiar los cables, puede utilizar un circuito llamado H-Bridge. Un puente en H es un circuito electrónico que puede impulsar el motor en ambas direcciones. Los puentes en H se utilizan en muchas aplicaciones diferentes. Una de las aplicaciones más comunes es controlar motores en robots. Se llama puente H porque usa cuatro transistores conectados de tal manera que el diagrama esquemático parece una "H".
Usaremos el L298 H-Bridge IC aquí. El L298 puede controlar la velocidad y la dirección de motores de CC y motores paso a paso, y puede controlar dos motores simultáneamente. Su corriente nominal es de 2 A para cada motor. Sin embargo, con estas corrientes, deberá utilizar disipadores de calor.
Componentes requeridos
Necesitará los siguientes componentes:
- 1 × L298 puente IC
- 1 × motor de CC
- 1 × Arduino UNO
- 1 × tablero
- 10 × cables de puente
Procedimiento
A continuación se muestra el diagrama esquemático de la interfaz del motor de CC a la placa 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 Motor1 y Input3, Input4 y Enable2 para Motor2.
Dado que controlaremos solo un motor en este ejemplo, conectaremos el Arduino a IN1 (pin 5), IN2 (pin 7) y Enable1 (pin 6) del L298 IC. Los pines 5 y 7 son digitales, es decir, entradas ON u OFF, mientras que el pin 6 necesita una señal modulada por ancho de pulso (PWM) para controlar la velocidad del motor.
La siguiente tabla muestra en qué dirección girará el motor según los valores digitales de IN1 e IN2.
EN 1 | EN 2 | Comportamiento motor |
---|---|---|
FRENO | ||
1 | ADELANTE | |
1 | HACIA ATRÁS | |
1 | 1 | FRENO |
El pin IN1 del IC L298 está conectado al pin 8 de Arduino mientras que IN2 está conectado al pin 9. Estos dos pines digitales de Arduino controlan la dirección del motor. El pin EN A de IC está conectado al pin 2 de PWM de Arduino. Esto controlará la velocidad del motor.
Para configurar los valores de los pines 8 y 9 de Arduino, hemos usado la función digitalWrite (), y para configurar el valor del pin 2, tenemos que usar la función analogWrite ().
Pasos de conexión
- Conecte 5V y la tierra del IC a 5V y la tierra de Arduino, respectivamente.
- Conecte el motor a los pines 2 y 3 del IC.
- Conecte IN1 del IC al pin 8 de Arduino.
- Conecte IN2 del IC al pin 9 de Arduino.
- Conecte EN1 de IC al pin 2 de Arduino.
- Conecte el pin SENS A de IC al suelo.
- Conecte Arduino usando el cable USB Arduino y cargue el programa en Arduino usando el software IDE de Arduino.
- Proporcione energía a la placa Arduino mediante una fuente de alimentación, batería o 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 el sentido contrario a las agujas del reloj (CCW) durante 3 segundos.