En este breve tutorial aprenderemos a conectar y controlar un motor DC mediante la placa Arduino Uno.
Módulo de control
En mi proyecto estoy usando el circuito integrado TDA7073A que es un driver BTL que permite controlar hasta dos motores y admite la posibilidad de usar señales PWM para el control de la velocidad. Posee protección térmica y contra cortocircuitos, además se puede alimentar con un rango de tensiones que va desde los 3V hasta los 18V.
El circuito del módulo es muy sencillo de montar ya que prácticamente no requiere de componentes externos:
Conexionado con el Arduino
Voy a realizar las primeras pruebas manejando un solo motor. A continuación las conexiones necesarios para la puesta en marcha:
Programación
El código fuente a continuación contiene las funciones necesarias para hacer girar el motor en ambos sentidos y frenarlo. Es necesario especificar la velocidad mediante un rango de valores de 0 a 255.
/*
CONTROL DE MOTORES
CON TDA7073A
*/
// definición de constantes
const int M1A = 5;
const int M1B = 6;
const int M2A = 9;
const int M2B = 10;
void setup() {
}
void loop() {
// rutina para probar las diferentes funciones del motor
avanzar(100);
delay(1000);
freno();
delay(1000);
retroceder(100);
delay(1000);
freno();
delay(1000);
}
// función para frenar el motor
void freno() {
analogWrite(M1A, 0);
analogWrite(M1B, 0);
}
// función para girar en sentido horario
// la velocidad puede variar entre 0 y 255
void avanzar(int velocidad) {
analogWrite(M1A, velocidad);
analogWrite(M1B, 0);
}
// función para girar en sentido anti horario
// la velocidad puede variar entre 0 y 255
void retroceder(int velocidad) {
analogWrite(M1A, 0);
analogWrite(M1B, velocidad);
}