Cómo conectar un Motor de Corriente Directa a Arduino

En este pequeño tutorial veremos cómo conectar un motor de corriente directa a una tarjeta Arduino, también encontrarás un código de programación para tus primeras pruebas.

Los motores de corriente directa son dispositivos que transforman energía eléctrica en energía mecánica en forma de movimiento angular de su eje. Como su nombre lo indica se alimentan con corriente directa, el motor que utilizaremos en este ejemplo se puede alimentar desde 3V hasta 5V. De ésta manera para que el eje del motor comience a girar solo es necesario aplicar alimentación(diferencia de potencial entre sus terminales), si las terminales de la fuente de alimentación se invierten, el motor gira en sentido contrario.

Para controlar un motor de corriente directa es muy común utilizar un puente H, es decir, un circuito que recibe 3 señales digitales de control y según los valores de dichas señales entrega energía necesaria al motor, por medio de sus pines de salida, para que el motor gire en un sentido, en el otro o no gire. Las 3 señales digitales de control de un puente H son:

  • Input1: Señal 1 de control de giro
  • Input2: Señal 2 de control de giro
  • Enable: Señal para habilitar el puente H

Para que el motor gire, las señales digitales de control INPUT1 e INPUT2 deben tener valores contrarios y la Señal ENABLE debe estar en valor lógico Alto. El puente H que seleccionamos para este ejemplo es el circuito integrado L293D, cuenta con 2 puentes H y nosotros haremos uso solo de uno, en específico, utilizaremos las señales de control INPUT1, INPUT2 y ENANLE1 y conectaremos el motor a OUTPUT1 y OUTPUT2.

Puente H L293D

Componentes Necesarios

  • Motor CD 3V- 5V
  • Puente H L293D
  • Arduino Uno
  • Potenciómetro 10 kohms
  • Protoboard chica
  • Cables de conexión M-M
  • Jack de 2.1mm Terminal de Barril a Terminal de Tornillo
  • Eliminador 5V, mínimo 1A – Terminal de Barril 2.1mm

Diagrama de Conexiones

Arduino Uno – Protoboard – Puente H L293D – Motor CD

Código de Arduino

Cargamos el siguiente código y observamos como la velocidad del eje del motor se modifica al girar la perilla del potenciómetro y como el sentido de giro cambia cuando cruzamos por el punto medio del rango del potenciómetro aproximadamente.


const int pinInput1 = 8; //Constante que contiene el npumero de pin al cual conectamos la señal IN1 del punte H L293D
const int pinInput2 = 7; //Constante que contiene el npumero de pin al cual conectamos la señal IN2 del punte H L293D
const int pinEnable = 6; //Constante que contiene el npumero de pin al cual conectamos la señal EN1 del punte H L293D

int valPot = 0;//Variable que contendrá el valor leido en el pin Analógico ( 0 a 1023 ) al cual se conectó la señal del potenciómetro 
int valPWM = 0;//Variable que contendrá el valor de PWM ( -255 a 255) que escribirá al pin PWM al cual conectamos la señal EN1 del del punte H L293D

void setup() {

  //Configuramos los pines digitales
  pinMode(pinInput1, OUTPUT);
  pinMode(pinInput2, OUTPUT);
  
}

void loop() {
  
  valPot = analogRead(0); //Realizamos la lectura del potenciómetro    
          
   //Convertimos el valor leido para poder utilizarlo como segundo argumento de "analogRead()"
   //El signo lo utilizaremos para definir el sentido de giro del motor   
  valPWM = map(valPot, 0, 1023, -255, 255);
  
  digitalWrite(pinInput1, valPWM>0); //Establecemos la dirección del giro según el signo de valPWM
  digitalWrite(pinInput2, !valPWM>0); //Establecemos la dirección del giro según el signo de valPWM
  analogWrite(pinEnable, abs(valPWM));//Establecemos la velocidad del giro según el valor absoluto de valPWM
         
  delay(10);                           
  
}

¡Sigue explorando!