✅ 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

Analizador acústico con ARDUINO

Construcción de un analizador acústico con Arduino. La información se presenta de forma gráfica, en un display LCD de 16×2 caracteres. Como ecualizador gráfico se puede utilizar el circuito integrado MSGEQ7 o el MSGEQ5, dependiendo del número de bandas de audio que queramos mostrar. Este circuito se puede montar de forma independiente, previamente programando el ATMEGA328P con la placa de desarrollo de Arduino. Una vez programado, mediante la posición de un jumper se puede configurar para que muestre 5 o 7 bandas… montando previamente el circuito integrado ecualizador correspondiente.

Utilidad de un analizador acústico

Este analizador acústico no puede competir con un equipo profesional, pero podría ser muy útil para acondicionar la acústica de un salón de actos o sala de conciertos improvisada. Comprobando la respuesta en frecuencias y volumen de escucha en diferentes puntos, se podrían corregir los defectos reorientando los altavoces/bocinas, ecualizando la respuesta de los amplificadores, etc.   Por otra parte, como este analizador de audio es de bajo costo y no requiere de conocimientos especiales para montarlo, podría ser muy instructivo realizarlo como práctica en escuelas relacionadas con la formación en las ramas de electrónica y tecnología.

Ecualizador gráfico de 5/7 bandas

Este montaje está basado en el circuito integrado MSGEQ5 / MSEGQ7,  ecualizador gráfico de audio  de 5 y 7 bandas respectivamente.  Dentro de un pequeño encapsulado DIL de 8 pines, se encuentra todo lo necesario para obtener a su salida los valores de energía a diferentes frecuencias,  a partir de la señal de audio en su entrada (descomposición espectral).

MSGEQ5 - Analizador de 5 bandas

Como se puede ver en la imagen anterior,  el MSGEQ5  analiza los valores comprendidos entre 100 y 10.000 Hz. Este rango es más que suficiente para conocer la respuesta en frecuencias de cualquier entorno. Pero si queremos analizar con más detalle los extremos de la zona audible, graves más bajos y agudos más altos, sería mejor utilizar el MSGEQ7.

MSGEQ7 - Analizador de 7 bandas

Como se puede comprobar comparando los datos entre ambos componentes,  son compatibles tanto en conexiones como características técnicas. Lo único que cambia es la gestión de los datos,  pero el protocolo es el mismo.  Con el MSGEQ5 tendremos que tomar y asignar los valores leídos de 5 en 5, y con el  MSGEQ7 lo haremos en grupos de 7 (número de bandas). Aprovechando estas características, es muy fácil construir un circuito que permita trabajar con ambos componentes.

Analizador acústico de 5/7 bandas

 

Este montaje lo puedes hacer siguiendo el esquema anterior, o utilizando la placa de desarrollo de Arduino junto con el Shield LCD, desarrollado para Arduino UNO.

Escala gráfica

La escala de las barras gráficas que muestra el display no es logarítmica, como lo harían la mayoría de los analizadores de audio. Con el fin de obtener un efecto visual más pronunciado, la gráfica que muestra el display  traduce los valores de tensión en cada banda de forma lineal.

Escalado lineal de las medidas

Si prefieres cambiar la escala, sólo tienes que modificar los valores de la tabla (resaltadas en color  amarillo), editando el código antes de programar el microprocesador ATMEGA328P con Arduino.

Firmware

El código de programación de este analizador acústico,  se puede descargar desde el siguiente enlace: Analizador acústico

Medir la sensación térmica

Construcción de un medidor de humedad, temperatura real y la sensación térmica. Para este montaje voy a utilizar el sensor de temperatura y humedad DHT11, y como controlador utilizaré Arduino. La sensación térmica describe el grado de incomodidad que el ser humano percibe, como resultado de la combinación de la temperatura, humedad y el viento. La humedad, junto con la velocidad del aire hacen que la sensación de frío sea mayor en invierno, y la sensación de calor más intensa en verano.

Sensor DHT11

La temperatura y la sensación térmica

Es habitual que nos fijemos en la temperatura que muestra un termómetro, y rápidamente asociemos el valor que hemos leído con la sensación de frío o calor que vamos a sentir. Sin embargo, la sensación térmica varía en función de otros factores, como son la humedad relativa del aire y su velocidad.

Regulación térmica

El cuerpo humano intenta mantener su temperatura corporal a un valor constante, alrededor de los 37ºC y la piel es el principal órgano encargado de regular la temperatura:

  • Cuando aumenta la temperatura del cuerpo, se dilatan los vasos sanguíneos y aumenta el flujo de sangre por la piel, y la piel en contacto con el exterior hace de radiador y se reduce la temperatura. Si el calor es excesivo, se abren los poros y se comienza a sudar. El sudor es un método de enfriamiento muy efectivo, porque su evaporación provoca un enfriamiento mucho más rápido.

Sudor y humedad

  • Cuando el cuerpo se enfrí­a, los vasos sanguí­neos se contraen y el flujo sanguíneo se reduce. Los músculos son estimulados para generar más calor, pudiendo llegar a provocar temblores involuntarios. Así  el cuerpo puede aumentar su temperatura rápidamente en caso de necesidad.

En definitiva, la piel humana es el sensor que detecta las diferencias de temperatura entre el cuerpo y el ambiente, para reaccionar en consecuencia. Si tenemos en cuenta que la temperatura de la piel se mantiene alrededor de los 32ºC, la sensación térmica variará de forma más brusca, cuando más nos alejemos de dicho valor y dependerá de la humedad y velocidad del aire exterior.

Sensación térmica: Humedad/Temperatura

La sensación térmica describe el grado de incomodidad que el ser humano percibe, como resultado de la combinación de la temperatura, humedad  y el viento. La humedad, junto con la velocidad del aire hacen que la sensación de frío sea mayor en invierno, y la sensación de calor más intensa en verano.

Gráfica: sensación térmica

 

La humedad en verano y en invierno

  • En verano, con temperaturas altas, un exceso de humedad en el ambiente impide que el sudor se evapore de forma eficiente, provocando una sensación de calor más alta.
  • En invierno, con temperaturas bajas, un exceso de humedad en el ambiente provoca una hidratación mayor de la piel, condensando partículas de agua en la superficie como si fuera sudor, y su evaporación provoca una sensación de frío mayor que la que muestra el termómetro

Si queremos saber el grado de frío o calor, sobre todo en las regiones de climas húmedos, es mucho más útil conocer la sensación térmica que la temperatura. La humedad relativa del aire, representada con las siglas HR o la letra griega Φ (fi), es la concentración de vapor de agua en el aire.

Una vez corregido el valor de temperatura con la sensación térmica debido a la humedad, si además hay viento con una velocidad superior a 12,5 km/h, habría que aplicar al valor obtenido una nueva corrección.

Sensación térmica con viento

La corrección con el viento es mucho menor que la provocada por la humedad. Como se puede ver en la gráfica anterior,  la sensación de calor aumenta a partir de 34ºC  y también disminuye a partir de ese mismo valor.

Medir la sensación térmica

La construcción de un medidor que muestre el valor de la sensación térmica, es sencilla y de bajo costo. Con Arduino el código de programación es muy corto, y además las fórmulas de corrección ya están incluidas dentro de las librerías del sensor DHTxx. Para este montaje utilicé el sensor DHT11, pero si se requiere una mayor precisión, es mejor utilizar el DHT22. El controlador de este medidor está hecho con Arduino, y la presentación de los valores se muestra en un display LCD de 2×16 caracteres. Todo el conjunto se podría fabricar sin tener que soldar ningún componente, utilizando un Arduino UNO junto con su ‘Shield LCD‘. El sensor de temperatura/humedad se puede conectar con terminales de conexión en la tarjeta Arduino, porque el sensor DHT11 se puede comprar montado en una pequeña placa PCB, en la que lleva montada una resistencia Pull-Up y el condensador de desacoplo para la alimentación. La alimentación de todo el conjunto es de 5 VDC, por lo que se podría utilizar cualquier cargador USB que tengamos en casa.

También puedes optar por hacer un montaje independiente, sin la placa de desarrollo de Arduino.  Así  te saldrá todo más barato y su tamaño será menor:

Esquema del medidor de temperatura, humedad y sensación térmica

Firmware (v1)

El código de programación de este medidor, junto con la librería de control necesaria para el sensor DHTxx, se puede descargar desde el siguiente enlace: Temperatura y humedad

Descargar fichero .stl

Thermometer showing the thermal sensation

El medidor de temperatura y humedad lo puedes montar dentro de en una pequeña caja de plástico  (100 x 60 x 25 mm), incluyendo dentro su propia fuente conmutada de 5VDC. Los detalles de este montaje, los puedes ver en el siguiente video:

Sensación y conductividad térmica

¿Por qué tiene tan mala respuesta a la temperatura el sensor DHT11?. El problema es que el sensor de temperatura DHT11 está encerrado dentro de una jaula de plástico, por lo que su conductividad térmica entre el exterior y el sensor es mala, y esto provoca que su tiempo de respuesta sea lento. Para corregir este fallo, he montado un segundo sensor de temperatura en el termómetro. He utilizado el sensor DS18B20 con encapsulado metálico para medir la temperatura, dejando el sensor DHT11 para medir la humedad y calcular la sensación térmica.

Tiempo de respuesta de un sensor

La respuesta en el tiempo de un sensor de temperatura depende de la conductividad térmica del material utilizado entre el elemento a medir (aire, líquido) y el sensor de temperatura. Como norma general, los materiales mas conductivos eléctricamente, también lo son térmicamente.

Conductividad térmica de algunos materiales

Utilizar un sensor de temperatura con encapsulado metálico, es una buena elección cuando se necesita obtener una respuesta rápida en la medida.

Tabla: Conductividad eléctrica y térmica

Aunque esto no siempre es imprescindible y hay veces que es mejor utilizar un sensor de respuesta más lenta, con el fin de mostrar la temperatura ambiente y evitar que se muestren cambios bruscos debido a una corriente de aire frío o caliente  ocasional.

Conductividad térmica

El sensor de temperatura y humedad DHT11 es de respuesta lenta y muy válido para mostrar la temperatura en zonas abiertas, pero no es el más adecuado para medir valores en recintos pequeños (sauna, cámara frigorífica, caldera).

¿Es útil el montaje anterior?

Dependiendo del uso que le quieres dar al medidor de temperatura ambiente, tendrás que elegir el sensor de temperatura que mejor se adapte al entorno. Si quieres mostrar la temperatura en un espacio abierto, el montaje anterior te podría servir. Pero si lo quieres para hacer medidas rápidas, o para mostrar los valores dentro de en un recinto pequeño, es aconsejable añadir al esquema anterior un segundo sensor de temperatura con encapsulado metálico.

Temperatura, humedad y sensación térmica con dos sensores.

Firmware (v2)

El código de programación del medidor con doble sensor, se puede descargar desde el siguiente enlace: Temperatura y humedad (v2)

 

 

Ecualizador de audio – ICStation

Ganancia y respuesta en frecuencias del módulo XH-M164 de ICStation. Este módulo es un preamplificador ecualizado estéreo, y está basado en el circuito integrado NE5532. Las medidas se realizan utilizando un equipamiento que está al alcance de cualquier aficionado a la electrónica. Se utiliza un teléfono móvil con una APP, que lo convierte en un generador de frecuencias. Para medir los niveles de salida se podría utilizar cualquier polímetro convencional, ya que las señales a medir son de baja frecuencia y sinusoidales. Si se utiliza un osciloscopio, es importante convertir las señales de pico a RMS. Si el osciloscopio permite mostrar la medidas RMS en pantalla, las medidas serán más rápidas, pero el resultado será el mismo que si se hicieran con un polímetro.

Preamplificador ecualizado estéreo XH-M164

El módulo XH-M164 es un preamplificador de audio estéreo, con 3 controles de tono (graves, medios, agudos) y otro más para regular el nivel de salida. Este preamplificador utiliza 2 circuitos integrados NE5532 (operacionales) y se alimenta con una tensión simétrica de 12 VDC.

Ecualizador de audio XH-M164

El módulo dispone de su propio rectificador y de los dos reguladores de tensión, necesarios para obtener las dos tensiones estabilizadas de +12 y -12 VDC.  De esta forma, el módulo XH-M164 puede alimentarse con un simple transformador de alterna que disponga de dos devanados, con una tensión de salida comprendida entre 9 y 15 VAC. En la imagen anterior, el fabricante apunta una tensión comprendida entre 12 y 24 VAC, pero no conviene subir de 15V.

Con tensiones más altas, se produce una mayor disipación (calor) en los reguladores de tensión… y a partir de 9 VAC el módulo ya funciona.

Sistema de medidas

No siempre es imprescindible disponer de un equipamiento costoso, para realizar medidas en equipos electrónicos. El sistema de medidas que he utilizado para comprobar la respuesta en frecuencias de este módulo ecualizador de audio es muy simple.

Sistema de medidas Amplitud/Frecuencia

Como medidor se puede utilizar un osciloscopio o un polímetro, y como generador de audio un Smartphone (teléfono móvil)… convertido en un generador de señales de audio, mediante la instalación de una APP.

Respuesta Amplitud/Frecuencia

Para obtener la curva de respuesta de cada filtro (control de tono), es necesario tomar varias medidas, modificando la frecuencia y la posición de cada control de tono. Una vez tomadas las medidas, ya se pueden representar en modo gráfico. El proceso es ir anotando los valores de las frecuencias a las que hemos hecho las medidas en uno de los ejes, lo normal es utilizar  el eje X para las frecuencias, y asociar los valores de tensión RMS medidos en el otro eje (Y) para marcar el punto de cruce entre ambos ejes. Cuanto mayor sea el número de muestras que hayamos tomado, mejor resolución obtendremos al unir los puntos para obtener la curva de respuesta.

XH-M164: Amplitud/Frecuencia

Una vez obtenidos los valores en tensión RMS en cada punto, podemos convertir la escala de ganancia lineal, a otra logarítmica y más acorde con la sensación acústica que apreciamos cuando cambia el nivel.

HH-M164: Ganancia

La representación de las curvas de respuesta se suelen mostrar utilizando valores logarítmicos (decibelios), ya que se asemejan más esos cambios de nivel sonoro a la respuesta del oído humano. Para convertir los voltios RMS a decibelios, aplicamos la siguiente fórmula:

dB = 20 x log (V2/V1)

  • V1: voltios RMS de salida, con todos los controles de tono al mínimo (referencia)
  • V2: voltios RMS de salida, con el control de tono que medimos al máximo
  • dB: ganancia o atenuación en decibelios

 

Filtro de RED & Armónicos

Respuesta de un filtro de RED, frente a las principales frecuencias armónicas que se producen al conectar cargas no lineales a la red eléctrica. Análisis del funcionamiento de un filtro de RED y medidas de su respuesta en frecuencias utilizando métodos muy sencillos.

Armónicos en la RED eléctrica

Los armónicos en la corriente se propagan por las redes eléctricas y crean distorsiones en la forma de onda de tensión, senoidal de origen,  modificando las impedancias de las líneas, y pudiendo provocar el mal funcionamiento de algunos equipos eléctricos.

Disparo del diferencial sin motivo aparente

Salta el diferencial sin motivo aparente (causa y solución)

Las corrientes armónicas son componentes de la corriente eléctrica, descompuesta en la serie de Fourier. Los armónicos tienen una frecuencia que es múltiplo  de la frecuencia fundamental, múltiplos de 50 ó 60 Hz en las redes eléctricas. El número múltiplo (n) de la frecuencia fundamental,  determina el rango de la componente armónica. Por ejemplo, el tercer armónico de una red eléctrica de 50 Hz será 50 x 3 = 150 Hz.

Armónicos en la red eléctrica

Los armónicos se clasifican según su amplitud, indicada en % con respecto a la fundamental, y su paridad par o impar. Los armónicos de rango par no tienen relevancia en los entornos industriales, porque se anulan gracias a la simetría de la señal alterna. En líneas trifásicas, las corrientes de armónicos de rango 3 y sus múltiplos están en fase (ver imagen anterior) y se suman de forma vectorial en el hilo del neutro, pudiendo provocar un excesivo calentamiento en dicho conductor.

Filtros de red

En la mayoría de los dispositivos modernos que van conectados a la red eléctrica, lo primero que se encuentra después del cable de alimentación es un filtro de red. Los filtros de red son filtros ‘paso-bajo’, y normalmente son circuitos pasivos compuestos por una serie de bobinas y condensadores.

Filtro de red standard

Un filtro de red podría ir alojado dentro del propio conector de alimentación, intercalado entre el cable y la alimentación al equipo (electrodomésticos), o formando parte de la propia fuente de alimentación del equipo (fuentes conmutadas).

Filtro de red

El objetivo principal de un filtro de red, es la de minimizar el nivel de radiaciones electromagnéticas (EMI) producidas por los equipos. La mayoría de las  fuentes de alimentación conmutadas que incorporan los dispositivos modernos, incorporan un filtro de red en su entrada.

¿Se eliminan los armónicos con un filtro de red?

Es posible que esta pregunta te la hayas hecho alguna vez, porque los fabricantes no lo dejan muy claro, ni muestran la respuesta en frecuencias de un filtro de red. Para salir de dudas, he realizado estas medidas de respuesta en frecuencia, utilizando un equipamiento muy simple. El equipo de medida es un osciloscopio o polímetro, y el generador de frecuencias un teléfono móvil… convertido en un generador de señales de audio, mediante la instalación de una APP.

Te adelanto que el filtro de red que medí no filtra ni atenúa las señales armónicas. Puedes ver todo el proceso de medida y los resultados en el siguiente video:

 

Calidad del agua & Ósmosis Inversa

Purificación del agua mediante Ósmosis inversa. Calidad del agua según la Organización Mundial de la Salud (OMS). Valores TDS del agua potable en diferentes capitales de Europa. Funcionamiento de un sistema de filtración doméstico por Ósmosis inversa de 5 etapas. Medidas comparativas del valor TDS (proporción de partículas disueltas en el agua) antes y después del filtrado.

¿Qué es la Ósmosis?

La ósmosis está basada en el equilibrio de dos fluidos con diferentes concentraciones de sólidos disueltos (TDS). Cuando se juntan dos fluidos diferentes, con el tiempo tienden a mezclarse. Si ambos líquidos son del mismo volumen pero están separados por una membrana permeable, el fluido de menor concentración es el que atravesará la membrana para mezclarse con el de mayor concentración.

Presión osmótica

Al cabo de un tiempo se establecerá el equilibrio, quedando el fluido de mayor concentración con más volumen que el de menor concentración. La distancia entre ambas alturas se denomina Presión Osmótica.

Ósmosis Inversa

Si ponemos agua sucia y agua limpia en dos columnas separadas por una membrana permeable, y se aplica una presión superior a la presión osmótica en el fluido del agua sucia, que es el de mayor concentración de sólidos, se producirá el efecto inverso. Pasará por la membrana el líquido del agua sucia, y no sus sólidos disueltos, y subirá el nivel de agua limpia. Este proceso es  conocido como Ósmosis Inversa y se utiliza para depurar agua.

Ósmosis inversa

Dependiendo del tipo de membrana y concentración de sólidos disueltos, será necesaria una presión mayor o menor para obtener agua potable. Por ejemplo, la presión necesaria para potabilizar el agua de mar es de 60 bar.

Calidad del agua

La Organización Mundial de la Salud (OMS) y otras instituciones que regulan la calidad del agua consideran valores hasta los 500 mg/l como completamente seguros, y hasta 2.000 mg/l como suficientemente seguros para consumir de manera temporal, si no hay otra fuente de agua fácilmente disponible.

Calificación del agua según OMS

ÓSMOSIS INVERSA

Los sistemas de ósmosis inversa requieren de una corriente de agua que lave la membrana de forma tangencial mientras se realiza la filtración. Este lavado evita que la membrana se colapse a causa de los pequeños diámetros que tienen tanto las partículas filtradas como el poro de la membrana.

Interior filtro de ósmosis inversa

A la parte descartada se le llama ‘agua de rechazo‘ y puede ser reutilizada por el usuario para otros fines si así lo dispone en su instalación. El usuario de una ósmosis inversa doméstica puede reciclar esta parte de rechazo, conectando a un depósito adicional el tubo que normalmente va al desagüe. La proporción de agua de rechazo frente a la filtrada está determinada por el limitador de caudal (restrictor) que lleva el equipo justo antes de la conexión que va al desagüe. Una proporción aproximada de 4:1 es establecida por el fabricante.

Ósmosis Inversa para el agua potable

El agua que recibimos en nuestro hogar es potable, pero contiene mucha cal y otros elementos nocivos como: cloro, plomo, flúor, herbicidas, calcio, magnesio, mercurio, nitratos… y en algunos casos hasta cianuro. Aunque todos ellos lleguen en bajas concentraciones, no son nada aconsejables para la salud.

Ósmosis Inversa de 5 Etapas

Montar un sistema de ósmosis inversa partiendo del agua potable, es la solución más barata para asegurar la calidad del agua que bebemos y mejorar su sabor. Partiendo de agua potable, la presión que se necesita para que el sistema funcione correctamente está comprendida entre 3 y 5 Kg/cm2, dependiendo de la dureza del agua a tratar.

ÓsmosisEste tipo de agua es muy ligera y se elimina con más rapidez que otro tipo de aguas minerales, ayudando así a depurar el organismo, y además facilita el trabajo de filtrado que tienen que hacer los riñones.

Restrictor de desagüe

El control de caudal de agua que va al desagüe lo regula el restrictor, que funciona como una llave de paso medio abierta. La numeración que muestra el restrictor indica los mili litros de caudal de agua por minuto. El valor más bajo que se comercializa es de 300 mili litros por minuto. Dependiendo de la dureza del agua de suministro, se debería elegir un restircor  de caudal mayor o menor.

Restrictor

Cuando el valor TDS del agua es alto (aguas duras), es mejor utilizar un restrictor alto. Se perderá más agua, pero la salida del agua osmotizada será más pura y la membrana sufrirá menos. Con aguas más blandas es mejor un restrictor pequeño, porque así desperdicia menos agua. Si el rechazo es insuficiente, la membrana se dañará prematuramente, si es mayor, el desperdicio de agua puede ser excesivo. Se trata de encontrar un equilibrio entre la duración de la membrana y el desperdicio. La proporción citada puede variar en función de la salinidad, la temperatura, el desgaste de la membrana y la presión.

Filtro de ósmosis inversa

Los filtros de membrana de ósmosis inversa se catalogan por la cantidad de Galones de agua que pueden suministrar en un día (Galones por día = GPD). El valor que se suele instalar de origen en los equipos de ósmosis inversa, es de 50 GPD.

Filtros de ósmosis inversa

1 Galón = 3,78541 litros

Dependiendo de la calidad del agua de suministro, la calidad que queremos obtener a la salida y de los litros de producción, tendremos que elegir el tipo de membrana a instalar.

Manómetro

El manómetro se instala a la entrada del filtro de ósmosis inversa, después de la válvula de cierre. Cuando la válvula está abierta el equipo está funcionando, y el manómetro indica la presión de trabajo.

Manómetro

Si el depósito está lleno, la válvula se cierra y el manómetro se debe poner a cero. Si el manómetro nunca se pusiera a cero. nos indicaría que existe una fuga en el circuito. Estas indicaciones convierten al manómetro como imprescindible, pues nos da a conocer cómo está funcionando equipo.

Tabla de presión mínima para cada TDS

En las zonas donde el agua es blanda, con la presión del suministro que llega a las casas es suficiente para que funcione un equipo de Ósmosis inversa. Con aguas duras, o cuando la presión del suministro sea baja, intercalando una pequeña bomba de presión se soluciona el problema.

Depósito de agua

Los sistemas de ósmosis inversa producen agua con un caudal muy reducido. Por ese motivo es necesario intercalar un pequeño depósito de agua en la instalación, con el fin de disponer de una cierta cantidad de agua cada vez que abrimos el grifo. Cuando el equipo de ósmosis inversa no dispone de una pequeña bomba eléctrica para extraer el agua del depósito, se tiene que utilizar un depósito presurizado.

Depósito de agua presurizado

Estos depósitos en su interior disponen de 2 cámaras, separadas por una membrana elástica. En la parte superior es donde se almacenará el agua, y la cámara inferior tiene aire a presión. La presión del aire con el depósito vacío (sin agua en el tanque) es de alrededor de 0,5 bar. Esta presión irá subiendo a medida que se llene el depósito de agua. Cuando el depósito está lleno, la presión en la cámara de aire debería ser la misma que la del agua de suministro.

¿Programar con interrupciones?

Elegir el modo de programar un microprocesador: consultando de forma cíclica el estado de cada periférico (Polling), o creando una interrupción por cada periférico a controlar. Métodos a seguir para programar el microprocesador AT89S52 con 2 interrupciones y una consulta cíclica. Posibles efectos indeseados cuando se programa con interrupciones.

Interrupciones AT89S52

Cuando se programa un microprocesador con la finalidad de tomar decisiones, dependiendo del estado de alguno o varios dispositivos periféricos, como podrían ser: pulsadores, un reloj en tiempo real (RTC), termómetros, alarmas, etc… existen dos formas posibles de hacerlo:

-> La forma más sencilla y clásica sería consultar de forma cíclica el estado de cada periférico.

-> Lo ideal sería habilitar una interrupción en el procesador por cada periférico a controlar.

Consulta secuencial y periódica

En este proceso de consulta, también conocido como polling en inglés, es el propio procesador el que determina el momento en el que realiza la consulta.

Consulta secuencial

Este método tiene el inconveniente de ser poco eficiente, porque el procesador consume muchos recursos realizando las instrucciones de sondeo… y además en algunas aplicaciones, una pequeña demora de tiempo afecta a la precisión de la medida o produce efectos indeseados. Por ejemplo, un error en la precisión cuando se utiliza un temporizador del procesador como patrón de tiempo de un reloj o cronómetro. Efectos indeseados, como podrían ser parpadeos, cuando se genera una señal PWM para el control de brillo de un display… o inestabilidad  si se utiliza esta misma señal PWM para  regular la velocidad de un motor.

Programar con interrupciones

Una interrupción sirve para detectar en tiempo real el momento en el que se debe realizar la consulta a cada periférico. Con la interrupción, es el periférico quien se encarga de avisar al procesador, y mientras tanto el procesador puede realizar otras tareas.

Habilitación de las interrupciones

El orden de prioridad de todas las interrupciones se pueden programar en el procesador. Así el procesador decidirá si un proceso se debe interrumpir o no, en caso de que se produzca una interrupción mientras se está atendiendo a otra, o cuando se produzcan dos o más interrupciones de forma simultánea. Un mal uso de la prioridad en las interrupciones, también podría provocar efectos indeseados.

Prioridad de las interrupciones

En la imagen anterior, al no tener la prioridad de interrupción el Timer que genera la señal PWM, se producen fluctuaciones en el ancho de impulso generado.

 

 

Shift Register (Registro de desplazamiento)

Funcionamiento de un Shift Register o Registro de desplazamiento, muy útil cuando se necesita controlar una gran cantidad de dispositivos de forma simultánea, utilizando un microprocesador con un número limitado de terminales. Este componente electrónico –Shift Register– es muy usado en centrales de control destinados a la domótica, paneles electrónicos de tipo LED, etc.

8-Bit Shift Register

En los circuitos digitales, un registro de desplazamiento es una cascada de Flip-Flops que comparten el mismo reloj, en el que la salida de cada Flip-Flop está conectada a la entrada de datos del siguiente Flip-Flop de la cadena, dando lugar a un circuito que desplaza por una posición la matriz de bits almacenada en ella, desplazando los datos presentes en su entrada y desplazando el último bit en la matriz, en cada transición de la entrada de reloj.

Esquema interno del 74HC595

Los registros de desplazamiento –Shift Register– pueden tener entradas y salidas tanto en paralelo como en serie. Normalmente se configuran a menudo como Serial-In, Parallel-Out (SIPO) o como Parallel-In, Serial-Out (PISO). También hay modelos que tienen entrada en serie y paralelo y otros con salida en serie y en paralelo. También hay registros de desplazamiento bidireccionales que permiten el desplazamiento en ambas direcciones (L → R o R → L). La entrada en serie y la última salida de un registro de desplazamiento, también se pueden conectar para crear un registro de desplazamiento circular.

Funcionamiento (Shift Register)

Para comprender mejor el funcionamiento de un registro de desplazamiento, se puede montar en una placa de pruebas (Protoboard) el siguiente circuito:

Display de 7 segmentos con 74HC595

El hilo de entrada de datos (SER/DATA) se puede conectar a la línea de +5 o GND, dependiendo del estado lógico (1/0) que queramos introducir al registro. A continuación se pulsa el botón SRCLK/CLOCK, para que el primer dato entre en el registro, desplazando todos sus estados una posición en orden creciente. Si queremos visualizar el estado de los registros en el display, a continuación pulsaremos el botón RCLK/STROBE.

Pruebas del 74HC595

Para que funcione el registro de desplazamiento, el hilo SRCLR/RESET tiene que estar conectado a nivel alto (+5V), si lo conectamos a GND se inicializarán todos los registros poniéndose a cero (Reset).

LUZ ELECTROLUMINISCENTE

La electroluminiscencia es un fenómeno óptico y eléctrico, en el cual se genera luz a partir de una corriente eléctrica. Los materiales electroluminiscentes son aquellos que contienen una cierta cantidad de fósforo y emiten una luz al paso de una corriente eléctrica. Se analiza el funcionamiento de un panel gráfico, con control de sonido y también se realizan pruebas con hilos electroluminiscentes de diferentes colores.

Funcionamiento

Capas EL

Los iones activadores actúan como emisores o centros luminiscentes y poseen niveles energéticos que pueden ser activados por excitación directa o indirecta, por transferencia de energía a través de algún lugar de la estructura del material portador para que la emisión de luz ocurra. Un fósforo adecuado debe absorber la energía de excitación, y después emitir luz rápida y tan eficiente como sea posible. El tiempo que transcurre entre la excitación y la emisión debe ser lo suficientemente pequeño para evitar destellos. La excitación de los fósforos se consigue mediante la aplicación de campos eléctricos intensos a altas frecuencias.

Luz electroluminiscente

Ventajas

  •  Bajo consumo de corriente
  • Vida larga, hasta de 50,000 horas
  • Regulación propia, por lo que no se requiere un circuito de control
  • Emisión de luz omnidireccional
  • Opera en un rango de temperatura amplio, desde -60°C hasta 90°C
  • Pueden usarse en exteriores

Consumo de la placa EL

Inconvenientes

  • Emisión de luz limitada.
  • No hay una gran variedad de colores.
  • Poca eficiencia, alrededor de 2..6 Lm/W
  • Se requieren altos voltajes, desde 60 V hasta 600 V

Alimentación placa EL

Hilo electroluminiscente (Wire EL)

Luminosidad del hilo EL

La estructura del hilo EL (Wire) consiste en un núcleo conductor de cobre que funciona como electrodo, el cuál está cubierto con un material fósforo y a su vez está cubierta por un forro de plástico transparente. Unos hilo muy fino en espiral se encuentra alrededor del forro de plástico transparente. Este cable funciona como un segundo electrodo. Finalmente, ese forro de plástico transparente puede estar cubierto por otro forro de color. Cuando se aplica una diferencia de potencial, la capa fósforo emite luz entre los espacios de los cables al crearse un campo eléctrico.

Hilo electroluminiscente

Circuito inversor

El inversor que se usa en el hilo EL sirve para proporcionar la frecuencia necesaria para que brille. Cuanto más alta sea la frecuencia, mayor brillo proporcionará el hilo y su vida útil se reducirá; en cambio, si la frecuencia es menor, el brillo se reduce pero su vida útil aumenta.

Alimentación del hilo EL

Por supuesto, deberá escogerse el inversor dependiendo de la longitud del cable y de la frecuencia que quiera emplearse.