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.

14 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?

Jorge Martinez dijo...

Buenos días
Tengo un driver L9110-S y estoy tratando de conectarlo a un par de motores JGA25-370 de 12v

Soy nuevo en esto y he copiado las instrucciones con algunas modificaciones:
Tengo una fuente externa de 12V
He conectado la fuente al VCC y GND del drive.
También he conectado el GND del arduino al GND del drive ...

Pero no se mueven los motores (sólo he usado los cables rojo y negro; los otros 4 que son para el encoder no los uso)
Pero no funciona ....

Me puedes ayudar dándome una idea por favor ?

Gracias

rdhcomput dijo...

Hola, ayer y hoy queme dos L9110,conecte todo como corresponde y se quema cada vez que intenta mi carrito hacer el giro con los motores en contraposicion, es probable que estos driver no cumplan con las exigencias de estos motores que vienen mecanizados para mejor torque. lo use con fuente aparte de 7,2v. En las pruebas con ruedas al aire andaba todo bien, alguien me puede confirmar esto? o que driver es mas recomendable asi no gaste mas en estos driver. Gracias

Ude dijo...

Muy buenas RDComput, primero de todo siento que se hayan quemado.
Lo primero que tienes que saber es que amperaje tienes. Como puse en el post admite hasta 12v pero jamas debes superar el amperio. El motor va a admitir lo que den sus caracteristicas.

Lo siguiente que debes hacer es mirar que admite dicho motor, cada motor es un mundo y partiendo del voltaje y amperaje que admita ese motor, se tienes que propocionar lo que necesite.
No jueges con voltaje de ruptura o sufriran mucho.

Siempre antes de conectar, recomiendo, usar el polimetro, verificar que el voltaje/amperaje es el que tiene que ser y leer cuidadosamente las caracteristicas del motor y de la fuente.

Si tienes mas dudas, no dudes en preguntar.

Un saludo.

Ude dijo...

Buenos dias Jorge Martines, antes de seguir verifica que envias 12v y max 1 amperio!!.

El motor jamas se va a mover tal y como lo tienes, los 4 puertos del encoder son precisamente para que se muevan, ahora mismo el L9110 lo que hace es como una puerta, y manda el voltaje en positivo, negativo o corta corriente. Ahora mismo el entiende que esta en corta corriente, hasta que tu no mandes la señal de ir en una direccion el motor no se va a mover.

Espero que esto te solucione la duda.

Un saludo!

Anónimo dijo...

Buenos dias lo primero disculparme por no contestar antes (soy Javier del 23 de junio de 2020, 19:15), pero hasta hoy no he retomado el tema. Agradezco mucho tu respuesta. No entiendo por qué, pero almentandolo por el arduino y este por el usb a su vez(tambien he probado con un cargador de movil 5v), el L9910 se calienta que quema y huele un poco. Al final he probado alimentandolo solo el L9910 con 3 pilas AA (DC) y ya funciona correctamente y no quema, está el chip a temperatura ambiente funcionando :)
No se mucho del tema y si me lo puedes confirmar te lo agradezco, pero podria ser por el tema de que el arduino al alimentarlo por usb haga como que sea AC (o el cargador del movil a 5v) y de ahi que se caliente tanto?
Muchas Gracias!!

Ude dijo...

Buenos noches Javi, mmm 3 pilas son 4,5v, con 0,5v extras no deberia pasar de quemarse a funcionar, mi pregunta es porque no alimentas el driver con la salida del arduino de 5v? Y usas una fuente externa que dependiendo de como sea de buena te puede llevar picos de voltaje y amperaje.

Piensa que las cargadores de moviles son transformadores no fuentes de alimentacion que te retifican y te controlan picos.

Yo probaría lo siguiente, con un multimetro, verifica que voltaje/amperaje esta saliendo de ese transformador a ver si sale de mas.
Si huele , mal vamos, eso es que esta sobrecargando el driver y puede fastidiarte el motor.

Edgar Bolaño. dijo...

Muy buenas noches, tengo un proyecto de colocarle control remoto a una grúa móvil ( de las que tienen un transportador con llantas), quiero que tenga todos los movimientos de una grúa real, para eso utilizaría 8 motores en el transportador(camión con vigas y gatos de anclaje), y seis u ocho motores en los movimientos de la grúa, haciendo dos circuitos independientes( transportador y grúa) para que al girar el brazo elevador no se enreden los cable. Necesito si por favor me orienta que circuito podría emplear, he pensado en Arduino con motor shield, pero tengo el inconveniente de que el motor shield solo me controla 4 motores, quiero saber si puedo conectar motores DC en las salidas pwm y controlar el giro de estos muchas gracias.

Ude dijo...

Buenas,
Si los motores los quieres para las ruedas, no hay hay problemas, si los motores son para el brazo de la grua no uses este driver ni un motoro dc. Usa servimotores, primero porque tiene muucha mas fuerza, segundo porque los servo motores puedes controlar el angulo con la libreria de arduino de servo de una forma super facil.

Anónimo dijo...

NECESITO EL FRITZING DEL CONTROLADOR DE MOTOR, DONDE LO PUEDO DESCARGAR? MUCHAS GRACIAS!

Ude dijo...

Buenos dias, en su momento lo hice yo, a saber donde estara, puedes hacertelo tu mismo

 

Productos y tecnologias usadas en este blog:

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