in

Iluminación LED con Android (II)

En la entrega anterior, comenzamos a ver la posibilidad de controlar luminarias a distancia, mediante los beneficios que nos brindan los dispositivos que disponen de enlace inalámbrico, como es el Bluetooth y vimos los elementos iniciales para comenzar a desarrollar aplicaciones de mayor tamaño. Hoy, en la aplicación creada para nuestro móvil con App Inventor, utilizaremos un objeto móvil diferente que podrá llevar consigo una imagen: un Sprite. Aprovecharemos elementos ya conocidos en montajes anteriores y disfrutaremos de otra posibilidad que Android y los microcontroladores suman a nuestras vidas: el control de la iluminación LED utilizando técnicas de PWM.

En la anterior entrega de Android, además de celebrar el retorno de App Inventor a la web, aprovechamos a retomar nuestros trabajos disfrutando los beneficios que nos brinda la conectividad Bluetooth sobre estas plataformas. Allí aprendimos a crear un control deslizante, que fuera capaz de devolver el valor de una variable BYTE (entre 0 y 255), para luego utilizarla en la operación de uno de los módulos CCP (Capture/Compare/PWM) del PIC 18F25K20. Este módulo, finalmente, sería el encargado de generar un PWM útil para muchas aplicaciones, entre ellas la que veremos en este artículo: la de comandar una luminaria LED. Por otra parte, en el artículo anterior con App Inventor, utilizamos un control deslizante basado en un objeto móvil llamado “Ball”. Hoy, lo reemplazaremos por otro objeto móvil llamado “Sprite” dentro de App Inventor. Del mismo modo que el anterior, este objeto podrá desplazarse dentro del espacio reservado para esa acción llamado “Canvas”.

Una de las diferencias entre este nuevo objeto y su predecesor, es que un Sprite puede llevar consigo una imagen. Esto nos permitirá, por ejemplo, colocar como cursor, el logo de nuestra web NeoTeo. Vale aclarar que en esta oportunidad, seguiremos utilizando el mismo programa dentro del PIC y sólo cambiaremos el que utilizaremos en el dispositivo móvil, que encontrarás como siempre, al final de este artículo. En la primera parte de esta entrega veremos a nuestra aplicación controlar el ya conocido Dimmer para diodos LED, MAX16805 mediante la salida PWM del 18F25K20. La primera vez que utilizamos el MAX16805 lo hicimos mediante un potenciómetro y los beneficios de operación analógica que nos ofrece este IC, sin embargo, también mencionamos la posibilidad de trabajarlo con un PWM externo. Este es el momento y la oportunidad para hacerlo. Para esto, necesitamos montar y preparar los siguientes elementos, tal como vemos en este video:

Una vez que todos los componentes están organizados dentro del protoboard, tendremos la conexión del MAX16805 con el ingreso de la señal PWM en el pin denominado DIM y llegaremos allí desde el módulo CCP1 del 18F25K20. Vale aclarar que para esto, no es necesario hacer ninguna reforma en el programa del PIC utilizado en el artículo de la entrega anterior y que la apropiada combinación de R1 – R2 – C3 nos permitirá obtener un margen de ajuste aceptable, dentro del rango bajo de valores de la variable PWM. Como mencionamos en el artículo anterior, si tenemos la oportunidad de utilizar otro lenguaje de programación que nos permita hacer funcionar el PIC a una frecuencia de reloj menor, la frecuencia del oscilador donde aplicaremos PWM podrá ser también menor. En el caso de usar los 64Mhz que nos ofrece Amicus estaremos obligados a usar 4Khz de frecuencia de oscilación. Si utilizamos otro lenguaje de programación, tal como Proton o C18, podemos usar cristales y frecuencias de reloj de 4Mhz (por ejemplo) y de ese modo, generar una oscilación, a la salida de CCP1, de 244 ciclos por segundo. Esto, nos permitirá manejar de mejor manera el rango de acción del PWM al  mover el cursor dentro de “Canvas”. Para 64Mhz de reloj y una oscilación de 4Khz, el resultado del ajuste del PWM es el siguiente:

Para aquellos que no lo recuerden, la cantidad de diodos LED que podemos manejar con el MAX16805 es variable y todos los parámetros de funcionamiento de este IC se regulan manipulando los registros internos del mismo, a través de su bus serie I2C. En nuestro caso, al utilizar 36 LEDs y una corriente de salida de 240mA, la resistenciaR Sense” resulta en un valor práctico de 1 Ohm. Por su parte, la entrada de activación del circuito utiliza una simple red R-C (tal como indican las hojas de datos del MAX16805) y la alimentación de 12Volts proviene de una simple batería Lead – Acid de 12Volts – 7Amper. El resto del circuito que involucra al PIC18F25K20 se mantiene igual que en el artículo anterior, hasta si se desea, con el LED de indicación de actividad (el de color amarillo que se puede observar en los videos). Por supuesto, el sector del módulo Bluetooth, permanece sin alteración alguna. Este sería el circuito para el MAX16805.

Como en NeoTeo somos conscientes que “no todo el mundo puede tener acceso a un circuito integrado como es el MAX16805”, creímos conveniente ofrecerte otra solución posible y real, con componentes accesibles a cualquier bolsillo y que sea fácil de implementar con componentes discretos. Para esto utilizaremos el clásico circuito de PWM que empleamos en forma habitual y que utiliza un transistor NPN y dos PNP más el MOSFET de salida de conmutación que puede ser un IRFZ44N o cualquier otro transistor de canal N que tenga la suficiente capacidad de corriente para trabajar en forma cómoda con la carga utilizada.

En este caso son LEDs, pero quizás quieras utilizar este sistema con un motor CC al que desees regular la velocidad. Nosotros utilizamos transistores del tipo C1815 y A1015, pero recuerda que los puedes reemplazar por BC548/BC558 o 2N3904/2N3906.  Transistores MOSFET populares más pequeños pueden ser el 2N60, el MLP1N06CL o el  MMFT3055V que rondan los 60Volts de aislación y pueden trabajar con corrientes de hasta 1Amper en el último caso. El circuito propuesto entonces, es el que ya conoces de los artículos donde utilizamos el IRFZ44N. La red de salida del PIC hacia el primer transistor NPN, apenas lleva una resistencia en serie de 1K y un capacitor de 47nF a GND para mejorar la respuesta en la parte baja del rango de trabajo.

Como mencionamos antes, con este control de PWM podemos controlar luminarias LED, motores CC y también podemos expandirlo a cualquier tipo de aplicación que requiera control de trabajo mediante PWM.

Reportar

¿Qué te pareció?

Escrito por Mario

9 Comments

Leave a Reply
  1. Que eres genial Mario, yo también te sigo en secreto desde hace mucho tiempo, pero hoy no me podía aguantar y tengo que decírtelo.
    Gracias maestro por la manera tan clarita de exponer los proyectos, que se hacen comprensibles hasta para los mas ignorantes pero apasionados aficionados como yo.
    Un abrazo.

  2. Muchas gracias Mario!
    la verdad muy bueno me gusto la posibilidad de controlarlos IRFZ ya que no posee el MAX 🙂
    ademas te molesto un ratito los led se conectan (serie paralelo) como el circuito del max?
    la verdad esta muy bueno te felicito amigo!

  3. saludos

    cuando hice mi aplicativo de un dimer controlado por android el problema que tuve fue que con el mismo pic no pude activar dispositivos y pwm a la vez por tanto use dos pic, uno era el que recibía y otro hacia el PWM así como Mario usa el MAX que es una mejor idea, el otro problema que tuve fue el controlar la potencia osea un bombillo, y a mi me sucedió lo mismo que con los transistores, el efecto era difícil de calibrar.

    lo que todavía me intriga y me gustaría saber es que software usa para hacer los schematics.

    gracias

  4. Hola Mario, muy bueno el articulo, una consulta. Mediste alguna vez el retardo entre la orden en el soft y la acción a ejecutar?. Ya que cada vez me esta gustando mas la idea de usar los sensores del telefono para hacer andar por ejemplo un autito RC y me gustaria saber el retardo o minimamente el orden del retraso por bluetooth. Y una ultima consulta, con el appinventor se puede controlar el puerto usb de alguna forma, ya que no lo vi en las herramientas comunes pero capaz hay algun truco.
    Saludos y gracias!!

  5. saludos

    ya encontré como hace Mario los schematic, ha sido proteus la única diferencia es que anexa las librerias de integrados que no hay, y descompone la libreria para indicar el VDD y VSS,jajaja

    pero excelentes tutoriales en general

  6. Saludos Mario, muy buenos todos tus artículos, sabes, he visto en varias partes robots que son controlados por wifi a través de un celular o ipad y me gustaria saber si puedes hacer un artículo sobre eso ya que estaría muy interesante.

  7. Hola:
    Desde que vi tus artículos sobre control desde un terminal android mediante los módulos bluetooth HC-06, me interesó el tema por la cantidad de posibilidades que ofrece. He estado haciendo pruebas y consigo enviar datos desde el ordenador utilizando el puerto serie bluetooth pero no hay forma de recibir nada. ¿Alguien tiene alguna idea de por que puede ocurrir esto?. El módulo HC-06 se empareja sin problemas con el ordenador. Configuro el puerto serie a 9600 sin paridad y 1 bit de stop. Conecto el Módulo HC-06 a un microcontrolador programado para recibir un dato, mostrarlo en las salidas y volver a enviarlo vía serie. El dato llega correctamente, pero no vuelve nuevamente al ordenador. Supongo que el módulo bluetooth es de entrada y salida por el mismo puerto ¿no?. Las patillas rx del pic la conecto al tx del HC-06 y la tx del pic al Rx del HC-06. Ya no se que mirar.
    Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Grabación ultrarrápida en discos duros: 1 TB/s

Un sistema es capaz de analizar 36 millones de rostros por segundo