Motores DC con Arduino. Varios ejemplos

En este proyecto, aprenderemos a utilizar motores DC con Arduino, para regular tanto su velocidad como su dirección de giro. Todo esto se hará utilizando el integrado L293D.



Los motores de corriente continua tienen muchas aplicaciones en la vida cotidiana, como por ejemplo, carros a control remoto, ventiladores, reproductores de CD/DVD, entre otras.

Estos motores internamente poseen dos partes fundamentales: el estátor, que es la parte inmóvil conformada por imanes, y el rotor el cual es el componente que gira gracias a los campos magnéticos que surgen en el estátor.

La mayoría de motores DC consumen más de 100 mA y el Arduino Mega, por ejemplo, sólo es capaz de suministrar hasta 40 mA. No es recomendable alimentar estos motores directamente con el Arduino ya que le estaríamos pidiendo más corriente de la que es capaz de dar y podría quemarse. Se debe utilizar una fuente externa más potente para ello, en nuestro caso utilizaremos una batería de 9V. La fuente debe ser escogida de acuerdo al voltaje de funcionamiento de los motores, para evitar quemarlos.

En cuanto al funcionamiento, los motores DC son capaces de girar en dos sentidos. Para ello es necesario cambiar la polaridad de la fuente. Esto no es práctico ya que constantemente requiere la intervención del usuario. La solución es utilizar un circuito llamado Puente H


Como se puede observar, el Puente H consta de 4 switches para modificar el giro del motor. Existe un integrado cuya referencia es L293D y consiste en un puente H. Este integrado nos permite controlar el giro e incluso la velocidad de un motor DC al usarlo con Arduino. Podemos ver sus especificaciones completas en esta página: http://www.ti.com/lit/ds/symlink/l293.pdf



Su diagrama de pines es el siguiente:


El esquema anterior, muestra al integrado L293D con las conexiones para poder utilizar dos motores simultáneamente. Explicando brevemente los pines, tenemos:
  • Enable motor 1 / Enable motor 2: Los pines "Enable" que en español significa habilitar, permiten habilitar o deshabilitar un motor. Son entradas digitales (HIGH / LOW)
  • Control motor 1 / Control motor 2: Estos pines son utilizados para controlar el giro del motor, ya sea hacia la izquierda o hacia la derecha
  • Los pines de GND (4, 5, 12 y 13) van al GND del Arduino
  • El pin 16 se utiliza únicamente para alimentar el integrado. Va al pin de 5V del Arduino
  • En el pin 8 va el positivo de la fuente externa (batería) para alimentar los motores. El negativo de la fuente va al GND del Arduino
  • Los pines 3 y 6 se utilizan para conectar el motor 1
  • Los pines 11 y 14 se utilizan para conectar el motor 2

La siguiente tabla nos muestra el comportamiento del motor 1 de acuerdo a cómo se controlen los pines del L293D desde el Arduino. También aplica para el motor 2

Enable motor 1
Control motor 1 (Input 1)
Control motor 1 (Input 2)
Estado del motor
LOW
HIGH o LOW
HIGH o LOW
Motor deshabilitado
(no avanza)
HIGH
HIGH
LOW
Avance
HIGH
LOW
HIGH
Retroceso
HIGH
HIGH
HIGH
Motor frenado
HIGH
LOW
LOW
Motor frenado

Poniendo todo lo anterior en práctica, aquí están varios ejemplos en donde se controlan dos motores al mismo tiempo y de diferentes maneras.

El primer ejemplo, consiste en activar los motores para que giren en una dirección, se detengan, vuelvan a girar pero en la dirección contraria y finalmente se detengan.
El esquemático que corresponde a este ejemplo es el siguiente:




El código correspondiente a este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1Zbkd0UXB1TlRKMnM

El segundo ejemplo es parecido al anterior, la diferencia es que en este caso logramos hacer que los motores varíen su velocidad. Esto se logra enviando una señal de tipo PWM.
El diagrama para este ejemplo es el mismo del anterior, pues no se realizaron cambios a nivel de hardware sino en el software



El código correspondiente a este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZRmRfVlJTTWdZSEU


El tercer ejemplo, consiste en utilizar un potenciómetro para variar la velocidad de los motores de acuerdo a su posición.
El esquemático que corresponde a este ejemplo es el siguiente:



El código correspondiente a este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZR3FpYjd0enFmT2c


El cuarto y último ejemplo, consiste en utilizar un par de pulsadores para variar la velocidad de los motores. Hay un pulsador que aumenta su velocidad y otro que la disminuye.
El esquemático para este ejemplo es el siguiente:



El código correspondiente a este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZZzZvZG9iY1pKTk0


Comentarios

  1. Genial. Pasé dos días buscando algo como esto (estoy jubilado jeje). No se nada de electrónica pero esto empezó a gustarme.
    Tengo tres dudas:
    1- ¿con un motor de 5v se puede hacer con el arduino UNO?
    2- ¿donde debería conectar los cables violetas?
    3- ¿que habría que modificar en el código?

    Muchas gracias de antemano por vuestra generosidad!

    ResponderBorrar

Publicar un comentario