domingo, 16 de agosto de 2015

Tutorial: Aprender a usar el driver para motores DC (L9110) con Arduino


Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a analizar el driver para controlar motores DC (L9110 Dual-Chanel H-Bridge).


INTRODUCCIÓN

Este componente será muy útil para controlar 2 motores DC de bajo amperaje (máximo 1A) y con un par relativamente bajo, pero que para proyectos de robótica sencillos nos funcionara a la mil maravillas.

El L9110 es un circuito impreso compuesto por 2 chipset modelo L9110S, que trabajan entre 2,5v y 12v (recomendamos de 5 a 12 voltios) y con un amperaje de 800mA. Las dimensiones de este driver son de 3.1 cm x 2.2 cm x 1.2 cm y un peso de 7 g.

El coste de driver es de 3,53€, así que no hay escusa de comprarlo :P, podréis encontrar donde comprarlo en el desglose de componentes que vendrán a continuación.

Para este tutorial, se requerirá
Dificultad:

           Tiempo:  15 minutos (montarlo y programarlo)


MATERIAL NECESARIO

A continuación os describo el material necesario para realizar el tutorial y donde conseguirlo:

Imagen
Nombre producto
Donde comprarlo
Motor DC (para agua)
L9110 Dual-Channel H-Bridge Motor Driver
Arduino Uno
Conectores universales


MONTAJE

Bien una vez que disponemos de todos los componentes, vamos a ponernos manos a la obra. Para ello os dejo a continuación un esquematico de como debéis interconectar los diferentes componentes para que esto funcione.


Es importante mencionar, que actualmente estamos alimentando nuestro motor a 5v a través de nuestro driver. Este driver como hemos explicado arriba puede trabajar hasta 12v (pero nunca a más de 1 amperio), o lo quemaremos. Para poder conseguir llegar hasta 12v tendremos que suministrar este voltaje a través de un fuente externa (Esto lo haré en futuros tutoriales), pero básicamente seria alimentar el driver con la fuente externa en vez de con el Arduino.

PROGRAMACIÓN

Una vez montado todo correctamente (verificar las conexiones que eso trae mucho de cabeza). Conectamos nuestro Arduino a el ordenador y añadimos el código que os pongo a continuación:


int M1_Izq = 12; //Direccion
int M1_Derecha = 11; //Direccion

void setup()
{
  pinMode(M1_Izq, OUTPUT);
  pinMode(M1_Derecha, OUTPUT);
}

void loop(){
  girar (1);
  delay(1000); //1 sg
 
  stop();
  delay(250); //250ms

  girar (2);
  delay(1000); //1 sg
 
  stop();
  delay(250); //250ms
}


void girar(int direccion)
{
  boolean inPin1 = LOW;
  boolean inPin2 = HIGH;

  if(direccion == 1){
    inPin1 = HIGH;
    inPin2 = LOW;
  }
    digitalWrite(M1_Izq, inPin1);
    digitalWrite(M1_Derecha, inPin2);
}

void stop(){
    digitalWrite(M1_Izq, LOW);
    digitalWrite(M1_Derecha, LOW);
}


Como podemos observar en el código, trabaja en 2 direcciones a través de un booleano que debéis definirle en los 2 datos que le enviáis a través de la salida digital " digitalWrite(M1_Izq, inPin1); digitalWrite(M1_Derecha, inPin2);".


PUNTUACIÓN

Calidad Componentes
2
Montaje
4
Precio
4'5
Características
2'5
Puntuación Global
2


La valoración de este producto es de un 2 sobre 5. Lo que más penaliza a este producto, son la calidad de los componentes, ya que cuando llevas un rato usándolo, se calienta en exceso y empieza a perder eficiencia (llegando incluso a pararse).
Es una pena porque por lo demás cumple su cometido, ya que es un driver para 2 motores, muy pequeño, muy barato y muy sencillo de usar.



Tags: ,

Ude

Eduardo Parada Pardo

Soy desarrollador e investigador en robótica, me gusta aprender nuevas tecnologías y todo lo relacionado con el mundo de la robótica. Si te gusta este blog, no dudes en preguntar cualquier duda.

4 comentarios:

Unknown dijo...

Buen artículo Eduardo,

tengo en mente un proyecto para controlar los 4 motores de un dron.
Me gustaría usar el componen L9110S para el control.

Te quería preguntar si es posible controlar estos motores. Aquí las características:
http://artofcircuits.com/product/coreless-motor-7mmx20mm-cw-and-ccw-pair-for-syma-x5-x5c-x5c-1.

La batería sería una 3.7V 720mAh.

¿Podría servir el módulo L9110S para mi proyecto? Si no ¿Que tengo que mirar? ¿Que otro módulo lowcost podría emplear?

Estuve leyendo un artículo de Microchip explicando como elegir un driver MOSFET
(http://ww1.microchip.com/downloads/en/AppNotes/00898a.pdf), pero no entendí muy bien.

Ude dijo...

Muy buenas,
primero de todo, que tamaño quieres que sea el dron?, te lo digo por que por lo general se usan motores Bushless y el driver para manejar con alta precision estos motores se usan variadores Bushless. Estos son capace de dar una potenica constante de hasta 20A.

En este link, abajo del todo hay un pdf descargable del quadcopter que construi.
http://www.lunegate.net/2012/12/construir-quadcopter-autonomo-proyecto.html

A ver si te sirve de ayuda.

Javier dijo...

Hola!! Soy nuevo con esto. Compre un L9110, le he puesto un motor de tecnología (4cm largo x 2cm de diámetro), con una fuente de 5v 800mah (cargador de un móvil) y a los 15 segundos esta q quema(mucho mucho de no poderlo tocar) el chip l9110. Sólo le pongo un motor. Esto es normal?? No se estropeará rápido así?. Algún consejo x si estuviera haciendo algo mal? Muchas gracias por la web. Saludos.

Ude dijo...

Buenos dias,
no, no es nada normal que se queme, normalmente yo uso la salida del propio arduino para alimentar este tipo de drivers.
A 5v no deberias tener problemas y no se deberia quemar.

Especificaciones del driver:
Puede manejar dos motores DC o un motor paso apaso de 4 hilos y 2 fases
Voltaje de entrada: 3 a 12V
Corriente: 800mA un solo motor, 1600 mA manejando dos motores o un stepper de 2 fases.

¿Te ha pasado con mas de uno? Igual estaba estropeado.
¿Tienes un multimetro para ver que corriente le esta llegando y que voltaje?

 

Productos y tecnologias usadas en este blog:

  • No te pierdas ninguna entrada

    Subscribete aquí en nuestro newsletter y ¡no te pierdas nada!

    Copyright © LuneGate™ is a registered trademark.
    Designed by Templateism. Hosted on Blogger Platform.