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 resistencia “R 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.