Pic
shadow

Los motores de corriente continua (CC para abreviar) se utilizan en muchas de las maquinas que nos rodean son baratos, fáciles de manejar y pueden dar velocidad o fuerza si empleamos una caja reductora.

El problema que tienen es que tienen un consumo alto, y su velocidad depende de la alimentación que les demos, más voltios, más velocidad. Esto hace que los 5V y 20mA que puede entregar Arduino sea insuficiente para lograr que el motor se mueva, por ello necesitamos algo que reciba las ordenes de Arduino y haga llegar a los motores la potencia que necesiten.

A estos intermediarios se les llama driver y existen varios modelos, cada uno con unas características y precios distintos. Para este circuito usaremos el TA8050P, que es capaz de controlar un motor de continua, tanto su puesta en marcha cómo el sentido de giro utilizando sólo dos pines de Arduino. Si quieres saber más sobre el TA8050P existe un completo tutorial en Trastejant llamado Controlando Motores de CC con TA8050P .

El montaje es el siguiente:

  • Protoboard Ampliar
    Esquema Ampliar

Este el chip por dentro, veamos para que se usa cada patilla y donde debe ir conectada:

montaje
Pin Función
1 Entrada de control
2 Entrada de control
3 Conectado a un polo del motor
4 GND
5 Conectado al otro polo del motor
6 No se conecta
7 Vcc (entre 6V - 16V)

Colocaremos la señales de control en dos pines PWM de Arduino para poder controlar la velocidad a la giran os motores.

La reacción de los motores dependerá de las ordenes que mandemos con nuestro Arduino a las entradas de control, estas son todas las posibilidades:

Entradas Salida
DI1 DI2 Motor
1 1 Parado
0 1 Movimiento
1 0 Movimiento Inverso
0 0 Parado

Este es un pequeño ejemplo de programa para controlarlo, simplemente avanza hacia delante, para, va hacia atras y vuelve a pararse.

		//Declaramos el nombre de los pines
		int dl1 = 11;
		int dl2 = 10;
		
		void Setup(){
			//declaramos que el pin 10 y 11 son salidas
			pinMode(dl1,OUTPUT);
			pinMode(dl2,OUTPUT);
		}
		
		void loop{
			//avanza 3 segundos
			digitalWrite(dl1, HIGH);  
			digitalWrite(dl2, LOW);  
			delay (3000);
			
			//Se para 3 segundos
			digitalWrite(dl1, HIGH);  
			digitalWrite(dl2, HIGH);  
			delay(3000);
			
			//retrocede 3 segundos
			digitalWrite(dl1, LOW);  
			digitalWrite(dl2, HIGH);  
			delay(3000);
			
			//Se para 6 segundos
			digitalWrite(dl1, LOW);  
			digitalWrite(dl2, LOW);  
			delay(6000);
		}