Puente H: Placa controladora de motores L9110S

La placa L9110S está diseñada para que los microcontroladores o circuitos lógicos puedan controlar con sencillez motores de corriente continua.

Driver de motores L9110S

El circuito está diseñado en base al chip controlador L9110, fabricado en la clásica cápsula DIP8 o en un diseño SOP8 SMD y basado en transistores MOSFET.

Circuito integrado L9110S

La tensión de alimentación para los motores puede variar de 2,5 a 12 V.

Diagrama de conexión

Como se observa en el siguiente diagrama, el control con el cableado típico no requiere componentes adicionales.

Conexión básica

Las entradas se pueden conectar directamente al microcontrolador. Si se conectan a un circuito que tiene salidas OC (Open Colector, o Colector Abierto) se requiere una resistencia pull-up conectada a la alimentación de 5V. Si bien en la hoja de datos del chip indica que el valor adecuado es ?1 k?, el módulo en sí incluye en su circuito resistores de 10 k? conectados al voltaje de alimentación de la lógica, o Vcc.

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.

Típicamente, para el nivel ALTO o H, la tensión en el pin de entrada debe ser de alrededor de la mitad del valor de alimentación o más (hasta, como máximo, el valor de la tensión de alimentación).

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.

nuevo-5

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.

Las salidas están conectadas internamente a diodos que protegen al circuito de los pulsos de contracorriente.

El L9110 gestiona dinámicamente frecuencias de hasta 40 kHz, mientras que el tiempo de conmutación más breve para la regulación por ancho de pulso (PWM) es de alrededor de 15 uS.


Diagrama de conexiones

Conexiones

Diagrama eléctrico

Circuito Eléctrico

Ejemplo práctico para controlar un robot

Ejemplo práctico - Control de un Robot

Ejemplo de programa para Arduino: prueba de movimientos

L9110S como amplificador de sonido para su robot

El control de un motor no es la única aplicación posible. El circuito también se puede utilizar como un sustituto de amplificador de potencia para una salida de audio digital de un microcontrolador.

En lugar de conmutar corriente a través del parlante como se realiza habitualmente, con un transistor, este circuito proporciona una doble amplitud de los impulsos de salida y, por lo tanto, aporta una potencia significativamente mayor.

Para una fuente de alimentación de 5 V es conveniente conectar un altavoz con una impedancia de 8 ? (o superior), mientras que con una entrada de 3 voltios puede utilizarse un altavoz adaptado a un voltaje menor. Para controlar el altavoz es necesario utilizar dos salidas en las que el nivel H alternará en cada media onda de la frecuencia del sonido.

En la siguiente figura hay una conexión que es normal con una salida, y funciona bien de 5 Hz a aproximadamente 30 kHz. Es importante mantener la condición de salida del microcontrolador en un nivel H cuando no se emite sonido, de lo contrario circulará corriente constante por el parlante.

Amplificador

Guía rápida de placas de control de motores

1. DRV8835: Controlador de dos motores. Plaqueta de 18 mm x 10 mm para control bidireccional de dos motores de CC con voltajes de 0 V a 11 V. Tecnología MOSFET. Puede manejar hasta 1,2 A continuos por canal y puede soportar picos de corriente de hasta 1,5 A por canal por unos segundos. Protección incorporada contra voltaje inverso, bajo voltaje, sobrecorriente y sobrecalentamiento.

DRV8835



2. Shield L293D: Placa montable sobre Arduino UNO. Dos interfaces para servos. Maneja 4 motores de CC o 2 motores paso a paso. Controla la velocidad y sentido de marcha de los motores de CC con una selección de velocidad de 8 bit. Provee 0,6 A por salida (con picos de corriente de hasta 1,2 A) con protección térmica, con voltajes desde 4,5V a 36V.

Shield Arduino L293D



3. PCA9685: Placa de control de 16 servos o LEDs controlada por I2C. Con sólo 2 pines se controlan 16 salidas de ancho de pulso regulado. Resolución: 12 bit. VoltaJe: CC 5-10V. Tamaño: 60 x 25 mm.

Control de Servos



4. A3967: Controlador de microstepping compatible con motores paso a paso de 4, 6 y 8 cables, con rangos de tensión de 7 V a 30 V. Cuanto mayor sea el voltaje, mayor será el par en altas velocidades. Dispone además de un potenciómetro para ajustar el control de corriente de 150 a 750 mA por fase.

EasyDriver v4.4



5. A4988: Modulo de manejo para impresoras 3D, CNC y control de motores paso a paso. Con DISIPADOR. Permite controlar el giro de 1 motor paso a paso bipolar controlando micropasos. Protección por sobre-temperatura, bajo voltaje y cortocircuito. Voltaje de operación 8 a 35 volts. Máxima corriente por bobina: 2 A.

A4988



6. HG7881: controla 4 motores de corriente continua, o dos motor paso a paso de 2 fases, 4 hilos. Basado en integrados de tecnología MOSFET. Voltaje: 2,5 a 12V. Máxima corriente de funcionamiento: 0,8 A. Tamaño: 49 mm x 36 mm

HG7881



7. L9110S dual: Doble puente H para control bidireccional de 2 motores de CC. Basado en integrados de tecnología MOSFET. Corriente: 800 mA por cada salida. Rango de voltaje: 2,5 a 12V. Medidas: 29 mm x 23 mm.

L9110S dual



8. L298N: Módulo doble puente H para manejo de motores CC, con disipador. Tecnología con transistores NPN/PNP. Voltaje 5 a 35 V. Corriente máxima hasta 2A por salida.

L298N


Arduino UNO R3 – Conectándolo al mundo exterior

Arduino es una buena elección para comenzar a trabajar con microcontroladores y aprender a programarlo y a diseñar sistemas en base a él. Mucho de esto, básicamente, resulta así porque fue creado para enseñar. Su software y documentación están disponibles en formato de código abierto. La manera de crear y cargar programas dentro del microcontrolador es el entorno Arduino IDE, también de uso libre. Esta plataforma se puede utilizar en forma doméstica, en el mundo del arte, y hasta en aplicaciones industriales, pero se utiliza sobre todo dentro del campo educativo. Hay una gran variedad de modelos de placas, pero la ideal para comenzar es la UNO, por razones de precio y por la amplitud de la información disponible.

ARDUINO UNO R3

ARDUINO UNO R3

ALIMENTACIÓN EN EL ARDUINO UNO R3

PINOUT DE ALIMENTACIÓN

El Arduino Uno se puede alimentar por tres vías:

1 – Conector cilíndrico (llamado “Barrel Jack” en inglés)

Es un conector hembra del tipo utilizado para la fuente de alimentación de las laptop. Las fuentes comerciales de 9V 1A CC que se proveen para Arduino tienen un cable terminado en el conector macho que se inserta en esta entrada. También tienen este conector macho los adaptadores “clip” que se venden en el mercado para Arduino para conectar a una batería de 9V. Los límites extremos de voltaje de alimentación que se puede introducir en este conector son, por especificaciones oficiales en el sitio de Arduino, de entre 6 y 20 voltios, pero el fabricante recomienda mantener los valores entre 7 y 12 voltios. El valor de 12 voltios, o aún mayor, podría recalentar los reguladores en el interior de la placa. Por el otro extremo, un valor de 6V producirá una alta sensibilidad a cualquier disminución en este voltaje, lo que motivaría el reinicio de la placa.

2 – Pin VIN

Este pin, ubicado en una de las hileras laterales de conectores hembra en el área de alimentación, está unido al pin central del conector cilíndrico, por lo cual para él valen las mismas especificaciones y precauciones.

3 – Cable USB

Cuando se conecta el Arduino con el cable USB a la computadora, el puerto USB proporciona como valor estándar 5 voltios a 500 mA (aunque hay equipos más recientes que pueden entregar más, 1A o 2A; por eso es conveniente leer las especificaciones de la computadora).

Otros pines referidos a la alimentación:

– GND = Referencia cero, tierra o “ground”

Entre los conectores laterales hembra del Arduino Uno y los cabezales con pines macho ICSP existen 5 pines GND, todos ellos interconectados entre sí y que son la referencia cero para todo voltaje.

– IOREF

Este pin es una referencia que nos indica el valor de voltaje para el funcionamiento correcto de los pines de entrada/salida. Esta referencia de tensión está relacionada con el voltaje de alimentación al que funciona el microcontrolador. En el Arduino UNO R3 ese valor es de 5V.

ENTRADAS ANALÓGICAS EN EL ARDUINO UNO R3

PINOUT ANALOGICO

La placa Arduino Uno tiene 6 pines de entrada analógica, que utilizan un ADC (Analog-Digital Converter = Convertidor de Analógico a Digital) para ingresar valores analógicos al microcontrolador en una codificación que éste puede manejar, que es puramente digital. Estos pines que sirven como entradas analógicas también pueden funcionar como entradas o salidas digitales.

Debe tenerse en cuenta que sólo hay un módulo ADC dentro de este microcontrolador, de modo que sólo se puede “leer” una entrada analógica a la vez. También se debe saber que la conversión analógica lleva un tiempo, bastante superior a la velocidad a que se ejecutan las instrucciones en el microprocesador. El tiempo para completar una conversión en el Arduino UNO R3 es de entre 13 y 260µs.

Convertidor de Analógico a Digital

El ADC, convertidor de analógico a digital, es un circuito electrónico que se utiliza para convertir señales analógicas en señales digitales. La representación digital de las señales analógicas es necesaria porque el procesador -un dispositivo digital- necesita, durante su procesamiento, un valor digital para utilizar los valores que se presentan en estas entradas. Los pines del Arduino A0-A5 tienen la capacidad de leer tensiones analógicas llegadas desde el exterior. En Arduino UNO, el ADC tiene una resolución de 10 bits, lo que significa que puede representar el valor de una tensión analógica en 1.024 valores digitales. En el Arduino UNO R3 el voltaje mayor que puede ingresar a una entrada analógica es de 5V, por lo cual si es necesario medir valores con otros rangos de voltaje deben introducirse o amplificadores, si el rango de voltaje es pequeño, o reductores por divisor resistivo o con un amplificador de amplificación menor que 1 si el voltaje máximo a medir es mayor a 5V.

¿Qué es I2C?

I2C es un protocolo de comunicación comúnmente conocido como bus I2C, y también -en el ambiente de Arduino- se nombra como Interfaz de dos líneas (Two Wire Interface – TWI). El protocolo I2C fue diseñado para permitir la comunicación entre componentes dentro de una tarjeta de circuito. En el bus I2C hay 2 cables, denominados SCL y SDA. SCL es la línea de reloj, cuya función es sincronizar las transferencias de datos. SDA es la línea utilizada para transmitir datos. Cada dispositivo del bus I2C tiene una dirección única. Es posible conectar hasta 255 dispositivos en el mismo bus. La sigla I2C viene de las palabras en inglés Inter Integrated Circuit.

CABEZAL ICSP

ICSP son las siglas de In-Circuit Serial Programming, en español Programación Serie en Circuito. Estos pines permiten al usuario ingresar programas de inicio (bootloader, por ejemplo) en las placas Arduino.

ICSP

Hay seis pines ICSP disponibles en la placa Arduino UNO. Un punto en el circuito impreso indica el pin 1 del cabezal ICSP.

Las señales en este cabezal son:

– Pin 1 del microcontrolador ATMEGA328A – RESET
– Pin 17 del microcontrolador ATMEGA328A – MOSI
– Pin 18 del microcontrolador ATMEGA328A – MISO
– Pin 19 del microcontrolador ATMEGA328A – SCK
– Pin 7 del microcontrolador ATMEGA328A – VCC / 5V
– Pin 8 del microcontrolador ATMEGA328A – GND / TIERRA

Se pueden conectar a un dispositivo programador mediante un cable adaptado al cabezal.

CONEXIÓN ICSP


PINES DIGITALES

Los pines 0 a 13 del Arduino UNO cumplen la función de entrada/salida digital. El pin 13 del Arduino UNO está conectado a un LED incorporado en la placa. En el Arduino UNO los pines 3, 5, 6, 9, 10 y 11 tienen capacidad de salida de pulsos digitales con ancho modulado (PWM).

Es importante tener en cuenta que cada pin puede proporcionar corrientes de hasta 40 mA máximo, pero se recomienda que esta corriente se mantenga limitada a 20 mA. La corriente máxima absoluta que pueden entregar todos los pines de un chip juntos es de 200 mA, en total.

Cuando se habla de digital en circuitos se refiere a la forma de representar datos al trabajar con códigos binarios. Un dígito puede ser 0 (BAJO: LOW en inglés) o 1 (ALTO: HIGH en inglés). Llevado a valores eléctricos, 0 es cero voltios (tierra: ground en inglés), o 1 un valor igual o cercano (pero no superior) al voltaje de alimentación. En el Arduino UNO este valor es de 5V.

PINES DIGITALES

Los pines digitales del Arduino se pueden configurar como entradas o salidas según las necesidades del usuario. También existen funciones adicionales para muchos de estos pines, relativas a funcionalidades de los módulos lógicos internos. Estas funciones se conectan con el pin por medio de bits internos (modificados por programa) en registros de configuración. En la programación que realiza el usuario a través del IDE del Arduino no verá (por lo general) esta configuración: de esto se ocupan las funciones incluidas en las librerías o bibliotecas.

En el Arduino UNO, cuando los pines digitales están configurados como salida, estarán en valores de 0 o 5 voltios. Si los pines digitales se configuran como entrada, la tensión se suministra desde un dispositivo externo. Este voltaje puede variar entre 0 a 5 voltios como máximo. Un valor BAJO ingresará al programa como binario 0, o un valor ALTO como binario 1.

Dado que los componentes del mundo externo pueden proporcionar voltajes variados según sea su diseño, siempre se debe tener la precaución de que esas señales sean de un máximo de 5V, y nunca alcancen valores negativos. Las entradas poseen dos umbrales que definen si se lee un 0 o se lee un 1. Todo voltaje menor o igual a 0,8 voltios es considerado como un 0. Todo voltaje superior a 2V es considerado como un 1. Los valores intermedios (por ejemplo, 1,3V) quedan dentro de una banda llamada zona gris. En toda entrada a un dispositivo digital es imposible saber qué valor leerá esa entrada cuando el voltaje se encuentre en la zona gris. Incluso es posible que la lectura no se mantenga consistente en el tiempo, de manera que esa entrada leerá una señal pulsante, o “ruido”. Lo mismo ocurre si una entrada digital se deja sin conexión: es muy posible que lea pulsos erráticos.

Todo componente que se conecte a un pin digital debe asegurar los niveles adecuados, ya que -como he dicho- si la tensión se encuentra entre los umbrales -o sea en la banda gris- el valor que ingrese será indefinido.

A continuación, describo con la mayor simpleza posible las funciones PWM, diversos tipos de comunicación serie, interrupciones, y pines especiales, aunque en próximas publicaciones explicaré mejor cada función por medio de artículos con ejemplos concretos de circuito y programas.

Modulación de Ancho de Pulso (del inglés Pulse Width Modulation, abreviado PWM)

La modulación de ancho de pulso es una técnica utilizada para regular potencia con una señal pulsante cuyo valor ALTO tiene un ancho variable. Hay que considerar dos componentes clave: la frecuencia o separación entre pulsos, y el ancho del pulso. La frecuencia define el tiempo que transcurre entre el inicio de un pulso y el inicio del otro (en ambos casos, el flanco de subida de BAJO a ALTO). El ancho de pulso es el tiempo que permanece en ALTO cada pulso de la señal dentro del período total. El ciclo de trabajo se representa como el porcentaje del tiempo en que la señal está en ALTO durante el ciclo. En Arduino, los pines habilitados para PWM entregan una frecuencia de aproximadamente 500 Hz. El ancho de pulso, y en consecuencia el porcentaje de tiempo en valor ALTO, cambia de acuerdo al parámetro establecido por el usuario (en general, con un valor de 0 a 255, siendo el valor 0 equivalente a 0% y el valor 255 a 100%).

Comunicación Serie a niveles TTL (de 0 a 5V en el Arduino UNO)

Los pines del área de conectores hembra de borde marcados como digitales en el Arduino UNO y numerados 0 y 1 son los pines RX y TX, y conectan con el módulo serie (módulo USART: Universal Serial Sinchronous and Asinchronous Receiver and Transmiter, Receptor y Transmisor Universal Síncrono -o sincrónico- y Asíncrono -o Asincrónico-) del Arduino UNO. Internamente son utilizados, también, por el chip que maneja la comunicación USB. Como esta comunicación es la que se utiliza mientras se graba un programa al Arduino, los pines de borde 0 y 1 deben estar desconectados durante esta programación, o se debe prever un circuito que aísle las señales (se encuentran ejemplos en las hojas de datos de diversos microcontroladores y en artículos diversos en internet).

Comunicación Serie: La comunicación serie se utiliza para intercambiar datos entre la placa Arduino y otro dispositivo con puerto serie, como computadoras, pantallas, sensores, memorias, otros microcontroladores, y más. La placa Arduino UNO tiene un puerto serie de niveles TTL (0 a 5V) en los pines RX y TX, y un puerto serie universal, o USB, manejado por un chip que se ocupa de esta comunicación en especial. Arduino puede comunicarse en serie a través de otros pines digitales, utilizando la biblioteca (o librería = Library) SoftwareSerial. Esto permite conectar dispositivos adicionales habilitados para comunicación serie, y también dejar el puerto serie principal disponible para el USB.

Comunicación Serie por Hardware y por Software: La mayoría de los microcontroladores tienen hardware diseñado para comunicarse con otros dispositivos. Los puertos serie de software utilizan un sistema de interrupción de cambio de nivel en los pines para implementar la comunicación. Existe una biblioteca incorporada para la comunicación serie de software. El software serial es utilizado por el procesador para simular puertos serie adicionales. La única desventaja del software serial es que requiere más procesamiento, y no puede soportar velocidades altas, como el hardware serie.

SPI: SS/SCK/MISO/MOSI son los pines dedicados para la comunicación SPI. Se pueden encontrar en los pines digitales 10-13 del Arduino Uno y en las cabeceras del ICSP. La Interfaz Periférica Serial (SPI) es un protocolo de datos en serie utilizado por los microcontroladores para comunicarse con uno o más dispositivos externos en una conexión tipo bus (se conectan varios dispositivos sobre las mismas líneas). El SPI también se puede utilizar para conectar dos microcontroladores. En el bus SPI siempre hay un dispositivo que se denomina Maestro = Master en inglés, y todos los demás Esclavos = Slaves en inglés. Lo normal es que el microcontrolador sea el dispositivo maestro. El pin SS (Slave Select) determina con qué dispositivo esclavo se está comunicando el Maestro. Los dispositivos habilitados para SPI siempre tienen los siguientes pines: MISO (Master In Slave Out): una línea para enviar datos al dispositivo Maestro. MOSI (Master Out Slave In): la línea para que el Maestro envíe datos a los dispositivos periféricos. SCK (Serial Clock): Una señal de reloj generada por el dispositivo Master para sincronizar la transmisión de datos.

I2C: SCL/SDA son los pines dedicados para la comunicación I2C. En el Arduino Uno se encuentran en los pines analógicos marcados A4 y A5. I2C es un protocolo de comunicación entre componentes ubicados en una sola tarjeta de circuito. El bus I2C se compone de dos líneas: SCL y SDA. SCL es la línea de reloj, que está diseñada para sincronizar las transferencias de datos. SDA es la línea utilizada para transmitir datos en ambos sentidos. Cada dispositivo del bus I2C tiene una dirección única, y se pueden conectar hasta 255 dispositivos en el mismo bus.

Aref: Tensión de referencia para las entradas analógicas.

Interrupción: INT0 e INT1 son dos pines de interrupción externa que posee el Arduino UNO. Una interrupción externa es una interrupción del sistema que ocurre cuando hay necesidad de anunciar un suceso urgente desde el exterior al microcontrolador. Este anuncio de urgencia puede provenir de un conmutador accionado por el usuario, o de otros dispositivos del sistema. Estas interrupciones en Arduino se utilizan cuando no se puede perder una señal, o tomarla con atraso. Por ejemplo la lectura de la onda cuadrada generada por uno o dos encoders, o “despertar” al procesador por un evento externo cuando por programa se lo ha dejado en modo “dormido”. Arduino tiene dos mecanismos de interrupción externa, por cambio de una señal en los pines habilitados al efecto. Son dos pines de interrupción externos en el ATmega168/328 llamados INT0 e INT1. Tanto INT0 como INT1 están asignados a los pines 2 y 3. Las interrupciones de cambio de señal en los pines digitales programados como entrada se pueden activar en cualquiera de éstos, aunque no existe una función dedicada para estos sucesos.

Comparación entre placas Arduino

Comparación entre modelos de Arduino

Especificaciones de placas Arduino retiradas del mercado


Advertencia sobre los motores con reducción en el Mercado

Atención a los que compran, sea en Argentina o afuera, motores con reducción como el de la foto.

Motor chino con rueda de gomaMotor con reductor de velocidad

Hay una tanda más barata -y posiblemente sean los que más están llegando ahora a Argentina- de motores que consumen UNA ENORMIDAD de corriente. Más o menos el TRIPLE que los que se vienen en Kit junto con las bases robóticas de acrílico. Se ven idénticos a los otros, pero se nota la diferencia al mover la rueda con la mano

Pero el problema mayor es que el engranaje reductor de estos nuevos motores es mucho más pesado que el los otros, de modo que al arrancar los motores producen un pico de corriente de 800 mA mínimo.

Algunos circuitos simples de robots con salida a transistores que utilizan, por ejemplo, PN2222A o su equivalente 2N2222A, no soportan esta corriente. (Solamente los transistores de este tipo marca Fairchild indican en su hoja de datos que soportan 1A; las otras marcas indican 600 mA a 800 mA los mejores.)

Busquen siempre que el vendedor ponga en su publicación una hoja de datos que liste CLARAMENTE el consumo de corriente a los distintos voltajes: 3V, 6V, etc. como la que pongo en la imagen.

Hoja de datos de un motorHoja de datos de un motor

O al menos lleven un tester para medir corriente y un portapilas de 4 pilas con pilas cargadas y cableen para probar el consumo del motor antes de comprar. Es muy útil llevar ya preparado un circuito ya armado con pincitas/clips de prueba ya preparadas para conectar al motor y al tester (si son pinzas “cocodrilo” que sean pequeñas: los contactos del motor son muy débiles).

Distintos clips y pinzas para pruebas electrónicasClips y pinzaas