¿Rendimiento o Duración LED?

La reciente retirada a la venta de las bombillas de filamento, ha creado una gran demanda de bombillas LED. Esto ha provocado la aparición de nuevos fabricantes, intentando hacerse un hueco en el mercado con sus bajos precios. Por falta de normativa, los fabricantes de lámparas LED no tienen la obligación de informar de la tecnología que emplean para fabricar sus lámparas. Ahora existen muchas bombillas LED con muy buen aspecto exterior, utilizando en su interior el mínimo número de componentes posibles y de muy baja calidad.

Iluminación eléctrica

La iluminación eléctrica está con nosotros desde la época de Edison, hace ya más de 100 años. Desde entonces hemos estado utilizando bombillas de incandescencia.

Tubos fluorescentes

Con el paso del tiempo, los sistemas de iluminación han ido evolucionando poco a poco, y siempre buscando el mejor rendimiento eléctrico. Bombillas halógenas, bombillas y tubos fluorescentes, bombillas de descarga xenón… y desde hace muy pocos años la iluminación LED.

Iluminación LED

Con la tecnología actual es posible fabricar sistemas de iluminación LED de alta potencia a un precio muy competitivo. Las ventajas del LED superan con creces la inversión inicial que se tiene que hacer en su compra.

Retirada a la venta de las bombillas de filamento

Debido al gran ahorro energético que se obtiene con la iluminación LED, la mayoría de los Gobiernos han creado Leyes para que se dejen de fabricar las bombillas de mayor consumo. Se ha empezado por las bombillas de filamento, pero poco a poco sucederá lo mismo con las demás.

La alta demanda de bombillas LED ha provocado la aparición de muchos fabricantes nuevos, y todos ellos compitiendo con el mejor argumento de ventas: bajar los precios. Pero como no existe una normativa acorde a esta nueva tecnología, esa bajada de precio suele ir acompañada con una pérdida en la calidad y ahorro en los diseños, reduciendo así la duración y fiabilidad teórica que podría aportar la iluminación LED.

Comprar hoy una bombilla LED de marca reconocida, a pesar de que sea más cara que otra aparentemente igual, podría ser una buena inversión.

¿Rendimiento o duración?

Los sistemas de iluminación los podemos dividir en dos grupos. Uno de ellos sería el dedicado al alumbrado, dónde lo más importante es obtener un alto rendimiento lumínico, reduciendo al máximo el consumo energético.

Y el otro sería el destinado a la señalización y decoración, dónde lo más importante es la fiabilidad y duración, pasando a un segundo plano el rendimiento y consumo.

Para diseñar una bombilla LED destinada al alumbrado, los fabricantes apuran al máximo las prestaciones de los LED, haciéndolos trabajar en el punto de mayor rendimiento lumínico, a pesar de que esto implique una reducción considerable de su vida útil.  Otro problema es que dentro de la propia lámpara tiene que alojar una pequeña fuente de alimentación para convertir la tensión alterna de la red en continua, controlando a su vez que los LED trabajen en su punto más óptimo

Secretos ocultos en las lámparas LED

¿Por qué duran tan poco tiempo la mayoría de las lámparas LED?. Desde que cambié todas las lámparas de filamento de mi casa por lámparas LED, cada 2 o 3 meses tengo que sustituir alguna. Después de haber reparado unas cuantas lámparas, me he puesto a investigar un poco. Por falta de normativa, los fabricantes de lámparas LED no tienen la obligación de informar de la tecnología que emplean para fabricar sus lámparas. Por ejemplo: tipo de driver, factor de potencia, calidad de los LED, etc.

Durabilidad y seguridad con la iluminación LED

Actualmente los LED de alta eficiencia luminosa, son la alternativa más aconsejable para sustituir las lámparas de iluminación tradicional. Con la iluminación LED se mejora notablemente la eficiencia lumínica, y además es posible modificar su color de forma muy sencilla, pudiendo crear diferentes ambientes y regularlos de forma automática.

Iluminación LED

La vida útil de un diodo LED es muy alta en comparación con una lámpara de filamento. El problema es que existen muchas variables para que esto se cumpla, y ese número tan elevado de horas que indican los fabricantes, por desgracia nunca llega a cumplirse.

Vida útil LED

La iluminación LED es muy directiva, y siempre es necesario agrupar un número de diodos para conseguir mayor rendimiento lumínico. Lo normal en una bombilla LED, es que esté compuesta por un número determinado de diodos y estén todos conectados en serie. En estos casos la probabilidad de fallo aumenta, porque si falla un sólo LED de la serie, la bombilla se apaga. Así la vida útil de una bombilla LED que esté compuesta por muchos LED en serie, será menor que otra que tenga menos diodos (gráfica anterior).

Ventajas e inconvenientes LED

La iluminación LED es más robusta que la iluminación tradicional en cuanto a golpes y vibraciones; pero también es mucho más sensible a la humedad, temperatura y corriente de trabajo. Aparte de esto, las lámparas LED funcionan con baja tensión y corriente continua. Por ese motivo necesitan un circuito electrónico que controle su encendido, y esto añade una complejidad extra al diseño de las lámparas LED.

Tipos de ‘driver’ LED

Los LED se alimentan con baja tensión, y además continua. Para conectarlos a la red eléctrica se necesita un pequeño circuito electrónico que rectifique la tensión alterna de la red (125/220 VAC), y la adapte a la tensión y corriente de trabajo del tipo de LED que contenga cada bombilla.

Cálculo de la resistencia LED

Estos circuitos son conocidos con el nombre ‘driver de alimentación  LED‘. Existen diferentes modelos de driver, pero los podemos agrupar en tres tipos.

Tipos de driver LED

Como no existe una normativa que ‘oblige’ a los fabricantes a cumplir unos mínimos de calidad y seguridad en sus diseños, todos intentan reducir sus costes de fabricación, y la durabilidad de las lámpara es lo primero que se resiente, pudiendo llegar incluso a construir diseños potencialmente peligrosos. Alimentar los LED de un a bombilla con una fuente capacitiva, es la solución más utilizada por los fabricantes que sólo buscan reducir su precio.

Bombilla LED con fuente capacitiva

Estas fuentes alimentan la serie de LED de la bombilla a partir de rectificar la tensión de red. La limitación de corriente la consiguen colocando un condensador en serie, el cuál ofrece una resistencia al paso de la corriente alterna (reactancia capacitiva). El problema es que la tensión de salida varía en función de la carga, y no está estabilizada. Así cualquier fluctuación de la red afecta directamente a los LED, y si alguno diodo de la serie se abre, al no circular corriente la tensión subirá al máximo. Si la alimentación de la red es de 220 VAC, a la salida tendremos 220 x 1,41 = 310 VDC. En algunos casos, el fabricante también ahorra en el precio de los componentes que utiliza, y montan condensadores electrolíticos que no soportan tensiones tan altas, y revientan…Condensador reventado

pudiendo provocar que la carcasa de la bombilla se rompa y caiga al suelo.

FLUX para electrónica

Prueba comparativa de 4 tipos de FLUX en gel, haciendo soldaduras en un circuito impreso. El FLUX en gel evita la formación de carbonilla durante las soldaduras, permitiendo mantener durante más tiempo el soldador y evitando que se produzcan cortocircuitos entre soldaduras muy próximas. El FLUX en gel es casi imprescindible, para soldar circuitos integrados con encapsulado de tipo SMD.

Soldar con Flux

Temperatura de fusión del estaño

Para soldar componentes con encapsulado SMD, es muy importante utilizar un estaño de buena calidad y baja temperatura de fusión. Un exceso de temperatura en el soldador podría dañar los componentes o desprender las pistas del circuito impreso.

Temperatura de fusión del estaño

El estaño para SMD y su temperatura de fusión

Soldar con Flux

El Flux hace la función de decapante en el metal, facilitando el reparto del estaño y la formación de carbonilla. Existe una gran variedad de Flux, pueden encontrarse en forma líquida, en gel o crema. El Flux líquido cumple perfectamente con la función de decapante, se evapora rápidamente y no suele dejar residuos. El flux líquido es muy útil para facilitar el estañado de cables y soldar componentes en un circuito impreso. El Flux en gel facilita mucho las soldaduras de los componentes SMD, recubre la soldadura cuando se funde el estaño, evitando la formación de carbonilla y cortocircuitos cuando se sueldan circuitos integrados con terminales muy próximos. A continuación puedes ver la diferencia de sumergir un cable en estaño líquido sin utilizar flux, o impregnar el cable con flux antes de sumergirlo en el estaño.

Estañado sin Flux

Estañado con Flux

Comparativa con 4 tipos de Flux

Como existen muchos tipos de Flux en gel, decidí hacer una prueba comparativa utilizando 4 compuestos diferentes. Para la muestra he elegido tres compuestos muy utilizados en electrónica y otro empleado en fontanería.

Tipos de Flux

Las pruebas las he realizado con un soldador de punta gorda a 250 ºC. La prueba consiste en realizar una soldadura en un circuito impreso virgen, manteniendo el soldador durante el mismo tiempo en un punto (sin moverlo), aplicando la misma cantidad de estaño y utilizando un Flux de cada tipo.

Resultados

Conductividad del Flux

FP3030: es un flux de fontanería muy válido para estañar cables, pero no es adecuado para su uso en circuitos impresos. Decapante muy rápido que se evapora con rapidez, dejando al descubierto la soldadura… y además no es aislante (10··15 KOhm).

MC-559-ASM: flux adecuado para soldar componentes de tipo SMD, siempre que se retiren los restos de flux después de la soldadura. Este flux no es completamente aislante, antes de calentarlo se puede medir una resistencia de 12··16 MOhm.

M-223: flux adecuado para soldar componentes de tipo SMD, es un poco más denso que el MC 559, pero su decapante es un poco más lento. A cambio, es aislante y podría ser más apropiado para soldar componentes con encapsulado BGA.

Future HF Rework Jelly: flux adecuado para soldar componentes de tipo SMD, con densidad similar al MC-559 y además es aislante… sería el más adecuado para soldar componentes con encapsulado BGA.

 

 

Programar sistema horario 12/24 (assembler)

Programación de un reloj LED, para que pueda mostrar la hora en cualquier formato (12h-24h). Esta modificación se realiza en un ‘Reloj-Fecha-Cronómetro-Temperatura‘ con 4 dígitos de 7 segmentos LED, de control serie. El controlador de este reloj está construido a partir del microprocesaror AT89S52, con encapsulado de 44 pines (SMD).

Sistema horario

El sistema horario de 24 horas es una convención de medición del tiempo, en la que el día se contabiliza de medianoche a medianoche. Con formato de 24 horas, las horas se empiezan a contar a partir de la medianoche, y se presenta con los números comprendidos entre el 0 y 23.

Sistema horario de 12/24 horas

El sistema de 24 horas es el más utilizado en la actualidad, y el sistema de 12 horas se utiliza principalmente para la comunicación oral, porque es más intuitivo. A pesar  de que el sistema de 24 horas es el más usado en comunicaciones escritas, en algunos países lo denominan como horario militar o astronómico, y prefieren realizar la presentación de la hora utilizando el sistema tradicional de 12 horas.

Esta actualización se realiza en el Reloj SMD que mostré anteriormente:

Construye un Reloj SMD

Planteamiento al programar el reloj

Cuando se programa el firmware de un reloj, es importante saber si el display de presentación es multiplexado o no, así como el valor de tiempo mínimo a mostrar.

  • Cuando el display es multiplexado, el microprocesador tiene que enviar la información con una cadencia mucho más rápida,  siempre superior a la persistencia del ojo humano. Si se quiere evitar el efecto de parpadeo, la frecuencia de refresco del display debería ser como mínimo de 50 Hz.
  • La cadencia de lectura de la información horaria debe ser igual o superior al valor del tiempo mínimo que se quiera mostrar en el display. Si el reloj muestra décimas de segundos, el microprocesador tendría que leer la información del chip RTC con una cadencia mínima de 1/10 segundos, cada 100 mSeg.

Funcionamiento del reloj

A pesar de que el Reloj SMD no es multiplexado, porque la presentación se realiza enviando los datos en serie (registro de desplazamiento), lo he programado con una frecuencia de refresco muy alta.

CPU: Reloj SERIE

 

Display: Reloj SERIE

Esto lo hice así, porque utilicé la estructura de programa del reloj de esfera rotante FC-209, el cuál si era multiplexado.

Reloj LED con 2 alarmas

Antes de presentar la hora en el display por primera vez, el microprocesador tiene que leer la información del chip RTC (DS1302). Y si el reloj muestra segundos, la lectura se debería hacer que como mínimo una vez por segundo.

Frecuencia de refresco del display

Aprovechando las prestaciones y velocidad del microprocesador que he utilizado, decidí insertar la rutina de lectura del chip DS1302 (RTC) dentro de la rutina de refresco del display. Como se puede ver en la gráfica anterior,  la lectura se está haciendo con una cadencia de 926 veces por segundo.

Actualización del firmware

La nueva actualización del Reloj SMD, la puedes descargar de forma gratuita desde el siguiente enlace:

J_RPM_v2_RELOJ_SERIE.HEX

Con esta actualización es posible configurar el sistema de presentación horaria en el display, pudiendo elegir el sistema de 12/24 horas.  Para incorporar esta función, he utilizado el método más sencillo de hacerlo: Internamente todo funciona en modo 24 horas, y dependiendo del modo en el que se deba mostrar la hora, el programa pasará o no a través de las rutinas de conversión a formato de 12 horas. Y esto lo hará sólo  antes de enviar la hora al display, porque los menús de configuración siempre mostrarán la hora utilizando el formato de 24 horas. Así no será necesario modificar los menús de configuración, ni cambiar el sistema horario del chip DS1302 (RTC). A continuación os muestro el código que he añadido en esta actualización.

Rutinas de programación en assembler

Funcionamiento de la subrutina: ValAB

Funcionamiento de la rutina Val_AB

Menús de configuración

Los menús de configuración de esta versión (v2), no cambian con respecto a la  versión anterior (v1). En esta versión aparece un nuevo menú, y es para configurar el sistema de presentación horaria (12/24) del reloj.

Menús de configuración del reloj

 

ARDUINO a fondo… no te lo pierdas!!!

Configuración de un ATmega8A para hacerlo funcionar en un Arduino UNO. Si utilizas Arduino, te aconsejo que no te pierdas este artículo, porque encontrarás la información que necesitas para saber cómo funciona y esclarecer algunas dudas.

Programador ISP, con Arduino UNO

Contenido

Descripción comparativa entre el ATmega8A y el ATmega328P (capacidad de memoria, rango de tensiones, frecuencia máxima de trabajo). Configuración del IDE de Arduino (software de programación) y sus diferentes modos de funcionamiento. Convertir un Arduino UNO en programador ISP, cunstruyendo un ‘shield’ con zócalo de 28 pines, para programar cualquier ATmega compatible… y en el video final encontrarás las explicaciones, consejos y algunos trucos.

ATmega328P / ATmega8A

El  microprocesador ATmega8A tiene una arquitectura muy parecida al ATmega328P, ambos son AVR, aunque existen algunas diferencias en cuanto a sus prestaciones.

Esquema de bloques: ATmega8A

Esquema de bloques: ATmega328P

El ATmega8A podría utilizarse en la placa de desarrollo de Arduino UNO en sustitución del ATmega328P, siempre que se tengan en cuenta sus limitaciones.

Comparativa: ATmega328P / ATmega8A

Ambos circuitos integrados son compatibles en cuanto a su encapsulado conexiones y funcionamiento, de hecho el ATmega8A es uno de los primeros microprocesadores que se empezaron a utilizar con Arduino. Antes de montar un ATmega8A en la placa de desarrollo Arduino UNO, habría que programar su Boot Loader, y colocarlo en el lugar adecuado de su memoria Flash.

Boot Loader

El Boot Loader es el mecanismo de auto programación que permite cargar y descargar el código del programa desde el propio micro controlador. Esta característica permite que las actualizaciones del software sean controladas por el propio micro controlador, y esto lo hace  utilizando un pequeño programa de arranque, llamado Boot Loader…  y este ocupa una pequeña parte de la memoria Flash.

El Boot Loader o cargador de arranque, puede utilizar cualquier interfaz de datos y protocolo para leer y escribir el código del programa, tanto el de la memoria Flash como el de la memoria de programa.

Boot-Loader ARDUINO

El código del programa alojado en la sección del Boot Loader tiene la capacidad de escribir en toda la Flash, incluido el propio gestor de arranque de memoria. O dicho de otra manera, el Boot Loader tiene la capacidad de modificarse y borrarse a sí mismo.

El tamaño de la memoria del Boot Loader se puede configurar mediante el estado de unos bits denominados ‘fusibles’, y dispone de dos conjuntos separados, aparte de los bits Boot Lock (bits de bloqueo), los cuales permiten seleccionar los diferentes niveles de protección del micro procesador.

Fusibles en una memoria PROM

Secciones de la memoria FLASH

La memoria flash está organizada en dos secciones principales, la sección de la aplicación y la sección del cargador de arranque. El tamaño de las diferentes secciones está configurado por los fusibles BOOTSZ. Estas dos secciones pueden tener diferentes niveles de protección, ya que tienen diferentes conjuntos de bits de bloqueo.

Sección de la aplicación

La sección de la aplicación se encuentra dentro de la memoria Flash, y es la que se utiliza para almacenar el código principal del programa. Los  niveles de protección para la sección de la aplicación se configuran con los bits del Boot Lock. Dentro de la sección de la aplicación no se puede almacenar ningún código del cargador de arranque, ya que la instrucción SPM quedaría deshabilitada cuando se ejecuta esta sección.

BLS – Sección del cargador de arranque

Si bien la sección de la aplicación se utiliza para almacenar el código de principal del programa, el software del Boot Loader debe almacenarse dentro de la sección de arranque (BLS), ya que la instrucción SPM sólo puede iniciar una programación cuando se ejecuta desde el sector de arranque (BLS). La instrucción SPM puede acceder a todo el contenido de la memoria Flash, incluso al propio  sector de arranque (BLS). El nivel de protección para la sección Boot Loader puede seleccionarse mediante los bits de bloqueo del cargador de arranque.

Secciones de lectura sin escritura y sin lectura mientras se graba

Si la CPU admite la lectura mientras escribe (Read-While-Write) o si la CPU se detiene durante un software Boot Loader, la actualización depende de la dirección que se está programando. Además de las dos secciones, que son configurables mediante los fusibles BOOTSZ, la memoria Flash también se divide en dos secciones fijas: la sección leer mientras se escribe (RWW) y la sección sin lectura mientras se escribe (NRWW). El límite entre las secciones RWW y NRWW depende del modelo de micro controlador que se utilice.

La principal diferencia entre las dos secciones es:

  • Al borrar o escribir dentro de la sección RWW, la sección NRWW puede leerse durante la operación.
  • Al borrar o escribir dentro de la sección NRWW, la CPU se detiene hasta que finalice el proceso.

El software del usuario no puede leer ningún código que se encuentre dentro de la sección RWW durante la ejecución del sector de arranque.

El significado de leer mientras escribe (Read-While-Write) se refiere a cuando se borra o escribe en la memoria, es decir, cuando se está programando. Y esto no es posible hacerlo cuando se está ejecutando el gestor de arranque.

RWW – Sección de lectura mientras se escribe

Cuando se actualiza el programa con el Boot Loader y se está cargando código dentro de la sección RWW, es posible leer código del Flash, pero solo el código que se encuentra en la sección NRWW. Durante un proceso continuo de programación, el software debe garantizar que la sección RWW nunca se lea. Si a través de software se intentara leer dentro de la sección RWW durante la programación, el software podría terminar en un estado desconocido. Para evitar esto, las interrupciones tienen que deshabilitarse o moverse dentro de la sección del Boot Loader,  porque la sección Boot Loader siempre se encuentra en sección NRWW.

NRWW – Sección sin lectura mientras se escribe

El código ubicado en la sección NRWW se puede leer cuando el software Boot Loader está programando la sección RWW. Cuando el código Boot Loader programa la sección NRWW, la CPU se detiene hasta que termine la operación.

Bits de bloqueo del cargador de arranque (Boot Loader)

Cuando no se programa el Boot Loader, toda la capacidad de la memoria el Flash queda disponible para el programa. El cargador de arranque tiene dos conjuntos separados de bits de bloqueo, los cuales se pueden configurar de forma independiente y permiten diferentes niveles de protección.

Modos de protección contra una posible actualización realizada a través del micro procesador

  • Proteger la escritura en toda la memoria Flash
  • Proteger la escritura sólo en la sección del cargador de inicio (Boot Loader)
  • Proteger la escritura sólo en la sección Flash del programa
  • Permitir la actualización del software en toda la memoria Flash

Bits de bloqueo

Los bits de bloqueo o protección (Boot Lock) se pueden configurar en ambos modos de programación, tanto serie como paralelo, pero solo pueden borrarse cuando se borra toda la memoria. El bloqueo de escritura general  no controla la programación de la memoria flash mediante instrucción de auto programación (SPM). Del mismo modo, el bloqueo de lectura / escritura general no controla la lectura ni la escritura por LPM / SPM.

Si necesitas saber las posibles configuraciones de algún micro-controlador AVR, puedes consultar en esta Web: http://www.engbedded.com/fusecalc/

Desde aquí puedes realizar una configuración, calcular los valores en hexadecimal y copiar los argumentos de la cadena que le tendrías que añadir a la aplicación AVRDUDE, para programar los fusibles del micro-controlador.

SPM – Self-Programming Mode

El modo de auto programación (SPM) es una función que permite que un micro controlador programe su propia memoria flash. Usando el SPM, un micro controlador puede programarse con un nuevo código SPM. El modo de auto programación (SPM) se usa comúnmente con los códigos de cargador de arranque del micro controlador que ayudan a su programación en serie. El SPM está disponible solo para el código que se ejecuta en el Boot Loader (BLS) de la memoria flash. Con la ayuda de SPM, un código en el Boot Loader puede reescribir la memoria flash de la aplicación por completo o una parte de ella. Incluso puede reescribir su propio código en la sección BLS.

El modo de auto programación (SPM) es un factor clave del código Boot Loader, ya que su principal función es la de cargar el programa dentro de la sección destinada a la aplicación de la memoria flash. El Boot Loader puede recibir el código binario de otros chips de memoria, tarjetas SD o a través del puerto serie del micro controlador en caso de programación en serie. Es entonces con la ayuda de modo de auto programación (SPM)  que el micro controlador escribe el código binario en la sección flash de la aplicación.

Programador ISP con Arduino UNO

El IDE (Integrated Development Environment) de Arduino dispone de un código en la sección de los ejemplos: Archivo – Ejemplos – 11.ArduinoISP, que permite convertir la placa de desarrollo de Arduino en un programador ISP. Este código puede controlar el encendido de 3 diodos LED, para indicar su estado de funcionamiento durante la programación.

Esquema: Programador ISP

Funcionamiento del programador

Fluctúa la iluminación de uno de sus indicadores LED cuando el programador está disponible (LED azul), muestra otra indicación durante la  escritura (LED amarillo), y  también puede mostrar la indicación de error (LED rojo).

He añadido un cuarto LED al circuito, conectando un diodo LED en la línea SCK (LED verde). Esta señalización nos permite saber si un micro-controlador tiene cargado el Boot-Loader:

…al pulsar el botón RESET del programador, el LED verde (conectado a la línea SCK) debería parpadear durante un instante. 

Autoprogramación

La memoria del programa se actualiza  página por página (64 palabras en ATmega328P / 32 palabras ATmega8A). Antes de programar una página con los datos almacenado en el buffer de página temporal, la página debe borrarse. El buffer de página temporal se llena uno palabra a la vez usando SPM y el buffer se puede llenar antes del comando de borrado de página o entre una página borrada y una operación de escritura de página:

Alternativa 1. Llenar el buffer antes de borrar una página

  • Rellenar el buffer temporal de la página
  • Realizar un borrado de página
  • Realizar una escritura de página

Alternativa 2. Completar el buffer después de borrar la página

  • Realizar un borrado de página
  • Rellenar el buffer temporal de la página
  • Realizar una escritura de página