Saltar al contenido

Diseño de una lámpara LED PWM de múltiples nodos

julio 10, 2021
F0PPSLEFUI0X1FV

Este instructivo mostrará cómo diseñé un controlador de lámpara LED PWM. Se pueden unir varias lámparas para formar grandes cadenas de luz.

Crear algunas luces LED parpadeantes para Navidad siempre ha estado en mi lista de deseos. La temporada pasada de Navidad realmente comencé a pensar en construir algo. Mi primer pensamiento fue que cada lámpara LED podría simplemente conectarse a un par de cables. La potencia de las lámparas LED podría ser una señal de CA que pasaría de una frecuencia baja a una frecuencia alta. Un filtro de paso de banda integrado en cada lámpara encendería el LED cuando la frecuencia coincidiera con la frecuencia central del filtro de paso de banda. Si los filtros de paso de banda se configuraron correctamente, se podría realizar una secuencia de persecución de LED. Realmente, al saltar a diferentes frecuencias en lugar de barrer, cualquiera de los LED podría encenderse. Usando un chip controlador H-Bridge, conducir la frecuencia deseada por los cables no debería ser demasiado difícil.

Bueno, apesto en el diseño analógico, soy más un tipo de software. Después de un par de pruebas de banco, rápidamente dejé de usar analógico.

Lo que realmente quería era una lámpara LED que pudiera controlarse por completo para mostrar cualquier color que quisiera. Ah, y debería ser capaz de usar PWM (modulación de ancho de pulso) para que los LED puedan encenderse o apagarse en patrones realmente geniales.

Lo que sigue en este instructivo es una descripción de un diseño realmente genial basado en un microprocesador Microchip que se cayó de mi deseo de luces para árboles de Navidad.

Eche un vistazo rápido al video a continuación para ver rápidamente lo que el controlador de lámpara LED PWM de Kemper es capaz de mostrar.

Tenga en cuenta que es difícil obtener un buen video de los LED en acción que utilizan PWM para el control de intensidad. Es el mismo problema cuando intenta grabar un monitor de computadora. Los 60Hz de los LED entran en una lucha de frecuencia de ritmo con los 30Hz de la videocámara. Por lo tanto, si bien hay ocasiones en las que el video de los LED tiene un poco de “fallas”, este no es realmente el caso. Los LED no parecen tener fallos cuando los ve el ojo humano. Consulte el paso del software a continuación para obtener más información sobre la grabación de LED en video.

Paso 1: Objetivos de diseño

Objetivos de diseño

Después de pasar las vacaciones de Navidad pensando en este proyecto, se me ocurrió una lista de deseos.

Estas son algunas de las características (ordenadas en orden) que quería con mi controlador LED:
1) Cada lámpara LED debe ser lo más económica posible. Una cadena de 100 lámparas costará mucho si cada lámpara cuesta mucho. El costo, por lo tanto, es un factor importante.
2) Cada lámpara tendrá un pequeño micro a bordo que activará los LED. El pequeño micro generará señales PWM para que los LED se puedan atenuar o atenuar. Los LED pueden parecer duros cuando simplemente se encienden y apagan. Usando señales PWM, los LED se pueden atenuar hacia arriba y hacia abajo sin los bordes duros normales a los LED.
3) Para simplificar el cableado, cada lámpara aceptará comandos mediante una interfaz de dos cables. La energía y las comunicaciones compartirán los mismos dos cables. Los comandos de las lámparas le dirán al micro a bordo cuál de los LED debe conducir con PWM.
4) ¡Debe lucir genial! Supongo que esto debería volver a numerarse para que sea el número uno.

Estos son algunos de los objetivos de diseño menores (sin ningún orden en particular):
1) Para el desarrollo, debe ser fácil de actualizar / reprogramar en el circuito.
2) Una PC debería poder generar los comandos para las lámparas. Esto hace que desarrollar patrones sea mucho más fácil que usar otro micro integrado.
3) Cada lámpara debe tener una dirección única. Cada LED, dentro de una lámpara, también debe ser direccionable de forma única.
4) El protocolo de comando debe admitir MUCHAS lámparas en una cadena de cables. El diseño actual admite 128 lámparas en una cuerda. ¡Con 4 LED por lámpara que funcionan hasta 512 LED en una cadena de dos cables! También tenga en cuenta que cada uno de esos 512 LED tiene un PWM completo que lo impulsa.
5) El protocolo debe tener un comando que diga, “Comience a atenuar el LED de este nivel a ese nivel”. Una vez que comienza el desvanecimiento, también se pueden configurar otros LED y configurarlos en la misma lámpara. En otras palabras, configure un LED en un patrón de desvanecimiento y luego olvídelo sabiendo que el LED ejecutará el comando. ¡Esto implica software multitarea en el micro!
6) Debe haber comandos globales que afecten a todas las lámparas a la vez. Por lo tanto, todos los LED se pueden controlar con un solo comando.

Aquí hay algunos objetivos de diseño realmente menores (nuevamente, sin un orden en particular):
1) Necesita una forma de que una lámpara informe cuando se produce un error de comunicación. Esto permitiría reenviar el comando.
2) El protocolo de comando necesita una forma de tener un patrón de coincidencia global elegante. Esto permitiría seleccionar cada x número de lámparas con un comando. Esto facilitaría la creación de patrones de persecución con un gran número de lámparas. Por ejemplo, esto permitiría enviar un comando a una de cada tres lámparas en una cadena de lámparas. Luego, el siguiente comando podría enviarse al siguiente grupo de tres.
3) Un sistema lógico de detección de polaridad de comunicación automática también sería excelente. Entonces, la polaridad de los dos cables de alimentación a las lámparas LED deja de ser importante. Consulte la sección de hardware para obtener más información sobre esta función.

Paso 2: creación de prototipos:

Prototipos:Prototipos:Prototipos:Prototipos:Prototipos:Prototipos:

Ahora es principios de enero y me voy. ¡Encontré el 10F206 en Digikey y es realmente barato! Entonces, hago girar una placa proto para sostener un micro 10F206 de Microchip. Diseñé una placa rápida porque el 10F2xx no está disponible en un paquete DIP. En pocas palabras, no quería molestarme con el chip pequeño. (Tenía tanta confianza en enero)

También me fui y compré un nuevo compilador CSS C dirigido a los micros 10F2xx. ¡La familia de chips 10F2xx es realmente barata! Con grandes esperanzas, me sumergí y comencé a escribir mucho código.

El 10F206 tiene la friolera de 24 bytes de RAM; el chip también tiene 512 bytes de flash y un temporizador de ocho bits. Si bien los recursos son escasos, el precio es bueno a 41 centavos en grandes cantidades. ¡Dios mío, un millón de instrucciones por segundo (1 MIPS) por 41 centavos! Me encanta la ley de Moore. Evan a precios únicos, el 10F206 de Digikey se cotiza a 66 centavos.

Pasé mucho tiempo trabajando con el 10F206. Mientras trabajaba con el 10F206 descubrí que la multitarea es absolutamente necesaria. Las señales de salida PWM DEBEN mantenerse actualizadas incluso mientras se reciben nuevos mensajes de comunicación. Cualquier interrupción en la actualización de las señales PWM se verá como fallas en los LED. El ojo humano es realmente bueno para detectar fallas.

Hay un par de problemas fundamentales con el chip 10F206. Al menos problemas fundamentales para mi aplicación. ¡El primer problema es que no hay interrupciones! Detectar el inicio de nuevas comunicaciones mediante un bucle de sondeo genera errores de temporización. Un segundo problema es que solo hay un temporizador. Simplemente no pude encontrar una manera de recibir comandos mientras mantenía las salidas PWM. Los LED fallaban cada vez que se recibía un nuevo comando. Compartir el temporizador entre la recepción de comandos y la activación de las salidas PWM también fue un problema de software importante. No pude restablecer el temporizador mientras recibía un nuevo carácter porque el temporizador también se usaba para controlar las señales PWM.

Mientras trabajaba con el 10F206, vi un artículo en Circuit Cellar sobre el nuevo y diminuto micro MC9RS08KA1 de Freescale. Me encantan los chips Freescale; soy un gran admirador de su depuración BDM. Usé mucho los chips Star12 en el pasado (escribí todo el software para el sistema ultrasónico GM Cadillac & Lacern en un Star12; mi software ultrasónico está en producción ahora en estos dos autos). Por lo tanto, tenía muchas esperanzas de que sus nuevos chips diminutos fueran buenos. El precio también es correcto, Digikey tiene estos chips a 38 centavos en grandes cantidades.

Freescale fue bueno y me envió algunas muestras gratis. Sin embargo, el chip Freescale 9RS08 parecía realmente ridículo; no pude avanzar mucho con él. El chip también sufre falta de interrupciones y solo un temporizador. Oh, bueno, al menos me di cuenta de todo eso sin gastar dinero en hacer girar otra tabla proto. Vea las fotos a continuación.

Ahora lo sé, para mi aplicación debo tener interrupciones y más de un temporizador.

Volviendo a Microchip, encontré el chip 12F609. Tiene interrupciones y dos temporizadores. También tiene 1K de flash y 64 bytes de RAM. La desventaja es el precio; Digikey enumera estos chips a 76 centavos en grandes cantidades. Bueno, la Ley de Moore se encargará de eso muy pronto. En el lado positivo, el 12F609 también se puede pedir en paquetes DIP. En el lado negativo, tuve que comprar el siguiente compilador de nivel superior, eso quemó un poco mi @ # $%&.

Ahora es abril y he aprendido mucho sobre lo que no funcionará. He hecho girar una placa y desperdiciado dinero en un compilador que no necesito. Aún así, las pruebas hasta ahora son alentadoras.

Con el nuevo compilador y los chips 12F209 en los paquetes DIP, las pruebas a nivel de banco se realizaron rápidamente. Las pruebas confirmaron que tenía el chip correcto. ¡Es hora de hacer girar otro protoboard! En este punto, estoy decidido.

Paso 3: placa de desarrollo 12F609

Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609Placa de desarrollo 12F609

Bien, recién salido de las pruebas de banco, estoy listo para probar otra vuelta de tabla.

En este diseño de placa, realmente quería probar la idea de enviar energía y comunicación a través de los mismos dos cables. Si se ignoraran los errores de comunicación, solo se necesitarían dos cables. ¡Eso es simplemente genial! Si bien el envío de comunicaciones a través de los cables de alimentación es genial, no es necesario. Todas las lámparas se pueden conectar juntas en un solo cable de comunicación si se desea. Esto significaría que cada lámpara requeriría tres cables con un cuarto cable de estado de retroalimentación opcional. Vea el diagrama a continuación.

La energía y la comunicación se pueden combinar usando un simple H-Bridge. El H-Bridge puede impulsar grandes corrientes sin ningún problema. Muchos LED de alta corriente se pueden unir en solo dos cables. La polaridad de la alimentación de CC a las lámparas se puede cambiar muy rápidamente con el H-Bridge. Por lo tanto, cada lámpara utiliza un puente de onda completa para rectificar la conmutación de CC a potencia de CC normal. Uno de los micro pines se conecta a la alimentación de CC de conmutación entrante sin procesar para que se pueda detectar la señal de comunicación. Una resistencia limitadora de corriente protege la entrada digital del micro. Dentro del pin de entrada del micro, el voltaje de CC de conmutación sin procesar se fija mediante los diodos de campo internos del micro; estos diodos bloquean la CC de conmutación (de cero a Vcc voltios).

El puente de onda completa que está rectificando la energía entrante genera dos caídas de diodos. Las dos caídas de diodos del puente se superan simplemente ajustando el voltaje de suministro del puente H. Un voltaje de puente en H de seis voltios proporciona un buen suministro de cinco voltios en el micro. Luego, se utilizan resistencias limitadoras individuales para recortar la corriente a través de cada LED. Este esquema de alimentación / comunicaciones parece funcionar muy bien.

También quería intentar agregar salidas de transistor entre el micro y los LED. Durante la prueba de banco, si el 12F609 se empuja al máximo (demasiada corriente en su ruta de salida), parpadeará en todas las salidas. La corriente máxima para todo el chip de acuerdo con la hoja de datos que el 12F609 puede admitir es 90 mA, en total. ¡Bueno, eso no va a funcionar! Puede que necesite mucho más actual que eso. Agregar transistores me da una capacidad de 100 mA por LED. El puente de diodos tiene una potencia nominal de 400 mA, por lo que la capacidad de 100 mA por LED solo se ajusta. Hay una desventaja; los transistores cuestan 10 centavos cada uno. Al menos los transistores que elegí tienen resistencias integradas: el número de pieza de Digikey es MMUN2211LT1OSCT-ND. Con los transistores en su lugar, NO hay parpadeo de los LED. Para las lámparas de producción, creo que los transistores no serán necesarios si se utilizan LED “normales” de 20 mA.

La placa de desarrollo diseñada en este paso es solo para pruebas y desarrollo. La placa podría ser mucho más pequeña si se usaran resistencias más pequeñas. La eliminación de los transistores también ahorraría mucho espacio en la placa. El puerto de programación en circuito también se puede quitar para placas de producción. El punto principal del desarrollo …

close