La placa L9110S está diseñada para que los microcontroladores o circuitos lógicos puedan controlar con sencillez motores de corriente continua.
La tensión de alimentación para los motores puede variar de 2,5 a 12 V.
El circuito tiene dos entradas: una que puesta en ALTO hará que el motor avance, y una que puesta en ALTO hará que retroceda. Si se desea que el motor esté detenido, ambas entradas deben estar en el mismo valor: las dos en estado BAJO (LOW), o ambas en estado alto (HIGH). La placa tiene dos salidas, con bornera, que se conectan directamente al motor.
Las entradas que no se conectan a un circuito son tomadas como nivel BAJO (L, o Low) sin que ingrese ruido. Con un nivel ALTO (H, o HIGH), la corriente en esa entrada será de alrededor de 1 mA. El nivel de tensión para que el chip detecte la entrada en estado lógico BAJO o L es como máximo de 0,7 V.
La corriente del motor se puede mantener constantemente desde 0,75 hasta 0,8 A (750 a 800 mA), y el circuito soporta picos de 1,5 a 2 A.
La hoja de datos ofrece una lista de los valores lógicos de las entradas y salidas.
Esta tabla se puede ampliar para situaciones no típicas. Si sólo hay una entrada en el nivel H y la otra está en nivel L, el motor gira. Pero si ambas entradas están en H, o ambas entradas están en L, las salidas están en un tercer estado, o “flotante” (ningún voltaje), y no ambas en 0 volt, o “L”, como se muestra en la tabla.
Diagrama de conexiones
Ejemplo práctico para controlar un robot
Ejemplo de programa para Arduino: prueba de movimientos
/*
L9110 motor driver controlando 2 motores CC
*/
const int AIA = 6; // (pwm) pin 6 conectado a pin A-IA
const int AIB = 5; // (pwm) pin 5 conectado a pin A-IB
const int BIA = 10; // (pwm) pin 10 conectado a pin B-IA
const int BIB = 9; // (pwm) pin 9 conectado a pin B-IB
byte velocidad = 160;
// cambie este valor (100 a 255) para controlar
// la velocidad de los motores
void setup() {
pinMode(AIA, OUTPUT); // fijar los pines como salidas
pinMode(AIB, OUTPUT);
pinMode(BIA, OUTPUT);
pinMode(BIB, OUTPUT);
}
void loop() {
izquierda();
delay(2000);
derecha();
delay(2000);
avanzar();
delay(500);
retroceder();
delay(1000);
avanzar();
delay(500);
}
void avanzar(){
analogWrite(AIA, 0);
analogWrite(AIB, velocidad);
analogWrite(BIA, 0);
analogWrite(BIB, velocidad);
}
void retroceder(){
analogWrite(AIA, velocidad);
analogWrite(AIB, 0);
analogWrite(BIA, velocidad);
analogWrite(BIB, 0);
}
void izquierda(){
analogWrite(AIA, velocidad);
analogWrite(AIB, 0);
analogWrite(BIA, 0);
analogWrite(BIB, velocidad);
}
void derecha(){
analogWrite(AIA, 0);
analogWrite(AIB, velocidad);
analogWrite(BIA, velocidad);
analogWrite(BIB, 0);
}