Controlar un motor DC con Arduino

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);
}

Más tutoriales de Arduino

  1. Leer un LDR con Arduino
  2. Controlar un motor DC con Arduino
  3. Usar un teclado PS/2 con Arduino
  4. Emular un dispositivo HID con Arduino
  5. Detección de sonido en Arduino