Capacidad real de una batería con ARDUINO

Medir la capacidad real de una batería con ARDUINO. Para que este sistema pueda funcionar de forma autónoma (sin PC), se utiliza el módulo ‘LCD Keypad Shield’ para mostrar la información en su display. Midiendo la capacidad real de una batería nueva, podremos saber la fiabilidad del fabricante y además calcular el tiempo de funcionamiento que tendrá cualquier dispositivo que utilicemos con dicha batería.

LCD Keypad Shield - Esquema
LCD Keypad Shield – Esquema

El módulo ‘LCD Keypad Shield’ está diseñado para poder insertarlo encima del módulo ARDUINO, sin la necesidad de realizar ninguna conexión adicional. Como podemos ver en el esquema anterior, este módulo LCD  transfiere las entradas/salidas de ARDUINO que no utiliza (incluso el conector ICSP y el pulsador RESET) hacia su circuito impreso, permitiendo la inserción de conectores para poder utilizar estas conexiones sin tener que soldar cables en el módulo ARDUINO. LCD Keypad Shield dispone de 6 pulsadores, el pulsador Reset y 5 más para realizar maniobras, así como un diodo Led para indicar cuando está alimentada la placa. Los 5 pulsadores de maniobras están conectados a una red de resistencias alimentadas con 5V, y la salida va conectada a la entrada analógica ‘0’ de ARDUINO. Dependiendo del pulsador que se accione, aparecerá una tensión diferente en esta entrada analógica. Si leemos el valor desde ARDUINO utilizando la sentencia: analogRead(0), obtendremos un valor diferente con cada pulsación. Añadiendo una simple rutina en el código, podremos detectar la posición de cualquier botón. En la imagen anterior se muestran los valores que he medido en mi ARDUINO -tus medidas pueden variar ligeramente-, así como la rutina que podrías utilizar para detectar la pulsación de los botones.

LCD Keypad Shield & ARDUINO
LCD Keypad Shield & ARDUINO

El módulo LCD utiliza su propia tabla de caracteres (ROM), pero también dispone de 8 caracteres programables (RAM). Los caracteres programables los podemos utilizar para generar cualquier carácter o símbolo que necesitemos mostrar en la pantalla y no se encuentre en la tabla de caracteres (ROM) del display. En la imagen anterior se muestran los detalles para programar estos caracteres, así como las sentencias que se deben utilizar con la librería: LiquidCrystal.h en ARDUINO.

Sistema de medida: Capacidad real de una batería
Sistema de medida: Capacidad real de una batería

Para medir la autonomía de la batería, vamos a utilizar ARDUINO como cronómetro de precisión. La conexión/desconexión del cronómetro se realiza de forma automática, utilizando una entrada digital como control. El sistema de detección del estado de la batería será el incluido dentro del módulo TP4056 (módulo de carga para 3,7V con protección). El módulo TP4056  además controlar la carga de la batería, mostrando su estado mediante dos indicadores LED, desconecta la batería de cualquier dispositivo que conectemos a su salida cuando la batería llega a umbral mínimo de tensión (<2,5V).  Entre la salida de tensión del módulo TP4056 y ARDUINO conectaremos un pequeño interface, consistente en un transistor NPN, 2 resistencias y un condensador (ver esquema). Para facilitar el cálculo y obtener precisión en la medida, utilizaremos una carga electrónica para conseguir que la corriente permanezca constante, independientemente de la tensión que tenga la batería.

El cronómetro incrementará el contador de tiempo, siempre que tengamos tensión a la salida del módulo TP5056. Cuando el cronómetro se detenga podremos calcular la capacidad real de la batería, convirtiendo el valor de tiempo medido en horas y multiplicándolo por la corriente que hayamos seleccionado en la carga (la corriente en amperios para Ah). Es importante destacar que al final del ciclo de descarga, cuando el cronómetro se detenga, la carga se desconectará de la batería… y esta empezará a recuperarse más rápido o despacio dependiendo de la carga que le hayamos desconectado. Al subir de nuevo la tensión de la batería, llegará un momento en el que se supere el umbral de reposición del módulo TP4056, se conectará de nuevo y el cronómetro seguirá incrementando el tiempo. Cuando esto suceda, se producirán ciclos intermitentes de cadencia cada vez más larga, y al final se detendrá por completo. Si queremos conocer la capacidad de la batería con bajo consumo, podemos esperar hasta el final. Pero si necesitamos comprobar la autonomía con el consumo que hemos seleccionado en la carga (porque es el consumo de nuestro dispositivo), tendremos que hacer el cálculo cuando se desconecte el cronómetro por primera vez.

En la siguiente imagen se muestran las medidas comparativas que he realizado con dos baterías de origen chino, rotuladas con una capacidad de 9800 mAh. Las dos baterías son nuevas y pertenecen al mismo lote. Las medidas las he realizado con una corriente constante de 500 mA, y el tiempo que se muestra es el de la primera desconexión. Al medir la capacidad de dos baterías iguales, nos aseguramos que la batería que hemos utilizado no está defectuosa (ambas medidas son parecidas). Al realizar dos medidas utilizando la misma batería, comprobamos la precisión del sistema de medida que estamos utilizando (valores casi idénticos).

Resumen de las medidas
Resumen de las medidas

En la última línea se muestra la capacidad que he medido en otra batería de tipo TR 14500, de una ‘supuesta’ capacidad de 1200 mAh.

Medidas con umbral de tensión ajustable

Si queremos medir la capacidad de otros tipos de batería, con tensiones diferentes, o simplemente necesitamos comprobar el tiempo de funcionamiento de cualquier batería hasta llegar a una tensión umbral determinada, podríamos montar el circuito que se muestra a continuación.

Sistema de medida opcional, con umbral de tensión ajustable
Sistema de medida opcional, con umbral de tensión ajustable

Como podemos ver, sólo tendremos que sustituir el módulo de carga TP4056 por el circuito de control que se muestra en la imagen. Mediante el potenciómetro de ajuste (22K), fijaremos el umbral mínimo de tensión a la que se debe desconectar de la carga electrónica,  y detener la cuenta del tiempo (cronómetro).

Descargar el código de ARDUINO : Crono_Battery

Baliza LED #2 – MEJORAS

Mejoras en la Baliza LED, para poder utilizarla como linterna. Con el fin de darle un uso más habitual a la baliza, porque ahora sólo sería útil en casos excepcionales, le vamos a añadir la función de ponerla en modo linterna. Para realizar este cambio de funcionamiento, sólo necesitaremos añadir un ‘jumper’ adicional y disponer de un segundo tapón con el frontal transparente.

Video anterior: Baliza LED para el Automóvil-Moto 

Modo linterna

Modo linterna

Como podemos ver en el esquema, si en el transistor de la derecha del multivibrador ponemos su base a ‘masa’, el circuito dejará de oscilar y quedará encendido el diodo LED de forma permanente. Si comprobamos las tensiones, vemos que los condensadores electrolíticos están polarizados correctamente y no existe ningún inconveniente para realizar esta maniobra.

Baliza LED #2 - Esquema
Baliza LED #2 – Esquema

Como podemos ver en el nuevo esquema, sólo tenemos que añadir un par de hilos más al circuito anterior y sustituir el selector de conexiones de 3 terminales por otro de 5 (jumper).

Baliza LED: Posición de los puentes
Baliza LED: Posición de los puentes

La conexión central de los puentes la podemos utilizar como ‘comodín’ para poder sujetar los dos puentes en el interior, y así evitar que se pierdan. Si posicionamos los puentes en modo ‘linterna’, teniendo en cuenta que la linterna tiene imanes en su interior, podremos sujetarla fácilmente en caso de tener que manipular dentro del vano motor cuando sea de noche… sólo tenemos que apoyar la base de la linterna en cualquier objeto metálico (magnético).

Baliza LED para el Automóvil-Moto

Construcción de una pequeña baliza luminosa alimentada con su propia batería, recargable en el coche, de gran potencia luminosa y para el uso en intemperie. Al ser de tamaño reducido, también podría utilizarse en bicicletas o llevándola en la mano, cuando se transita en las proximidades de una carretera o camino de tierra.

Hace un año, mostraba en un video cómo hacer un flash nocturno con diodos led: Construcción de un Flash nocturno (LED)

En aquella ocasión el circuito consistía en un anillo de 8 diodos LED que se alimentaba con un cargador de tipo USB, incluido dentro del propio flash. Aunque la finalidad de este proyecto es casi la misma, en este caso vamos a hacer un circuito con un solo diodo LED de alta potencia y alimentado con baterías. La necesidad de disponer de algo así me vino hace unos días, cuando tuve un problema con el claxon del coche y tuve que desconectar la batería mientras buscaba una solución. Este problema me surgió en medio de la carretera, en un día lluvioso y sin apenas luz. En aquella ocasión, lo único que tenía a mano para señalizar el coche fue una linterna con las pilas semi-agotadas.

Barras luminosasLa idea es la de construir una pequeña baliza luminosa alimentada con su propia batería, recargable en el coche, de gran potencia luminosa y al ser posible para el uso en intemperie (que no le afecte el agua de lluvia), algo muy parecido a las barras luminosas que se utilizan en los aeropuertos, para hacer señales a los pilotos cuando tienen que hacer maniobras.

Aunque el tamaño de la baliza no debería ser muy importante, pensando en la posibilidad de poder utilizarla en bicicletas o motos… incluso para peatones cuando se circula en las proximidades de una carretera, su tamaño es reducido.

Baliza LED para el automóvil
Baliza LED para el automóvil

A continuación se muestra el esquema de montaje de esta pequeña baliza luminosa.

Baliza LED - Esquema
Baliza LED – Esquema

Creo que el diseño de este circuito es sencillo de entender, y lo podría construir cualquier aficionado a la electrónica.

Si quieres dar una segunda utilidad a esta baliza, para poder utilizarla como una linterna: Baliza LED #2 – MEJORAS

Firmware Reloj LED #3 (Brillo nocturno)

En la versión 3 del firmware del Reloj LED, se incluye la posibilidad de reducir el brillo del display de forma automática. Este cambio se realiza dentro de un horario programable, no mediante un sensor de luz. La hora de inicio y fin de esta reducción de brillo, está asociada a las horas de inicio y fin de la activación acústica de las señales horarias. Con esta reducción de brillo se evita la molestia que podría ocasionar un exceso de luz, cuando se utiliza el reloj como despertador en una habitación oscura, y además se mejora la autonomía de la batería (se reduce el consumo).

La versión 3 del firmware, se puede descargar de forma gratuita desde el siguiente enlace:

J_RPM_v3_EC1204B.HEX

Configuración del Reloj LED (v3)
Configuración del Reloj LED (v3)

Este es el nuevo diagrama para la programación del Reloj LED, utilizando la versión 3 del firmware.

Construye una carga electrónica

Construcción de una carga electrónica, muy útil para comprobar el estado de carga de pilas-baterías, así como el correcto funcionamiento de cargadores y fuentes de alimentación. Los amplificadores operacionales, teoría y sus diferentes modos de funcionamiento: comparador, amplificador, filtro, oscilador, buffer. La carga electrónica se alimenta con una fuente de alimentación estabilizada de 5 VDC, pudiendo utilizar un cargador convencional de tipo USB. Esta carga electrónica incluye un voltímetro y un amperímetro. Con el amperímetro comprobaremos la corriente de carga, a la vez que medimos la tensión que está entregando el dispositivo bajo prueba.

Esquema: Carga electrónica
Esquema: Carga electrónica

Los primeros circuitos operacionales se comenzaron a fabricar en la década de los ‘60, por la empresa Fairchild. Se utilizaban estos circuitos para construir unidades encargadas de sumar, restar, dividir, derivar, integrar, etc. De ahí viene el origen de su nombre: Amplificador Operacional.

El amplificador operacional consta de dos entradas V1 V2 y una sola salida Vout. En la salida se obtiene la diferencia entre las dos entradas, multiplicada por un factor de ganancia G.  Un amplificador operacional ideal tiene una ganancia G infinita, una impedancia de entrada infinita, un ancho de banda (rangos de frecuencias a los cuales puede operar) también infinito, una impedancia de salida igual a cero, y ningún ruido. Como consecuencia, si tiene una impedancia de entrada infinita, sus corrientes de entrada serán nulas. En la práctica, un amplificador operacional tiene un ancho de banda del orden de MHz, con impedancias de entrada de algunos MOhm y una ganancia típica de 100.000. Aún así, con una diferencia de tensión de 50uV en sus entradas, se pueden obtener 5 voltios en la salida.

Esquema por bloques de un amplificador operacional
Esquema por bloques de un amplificador operacional

Todos los amplificadores operacionales comparten una misma estructura interna:

  • Amplificador diferencial: es la etapa de entrada que proporciona una baja amplificación del ruido y alta impedancia de entrada.
  • Amplificador de tensión: proporciona una ganancia de tensión.
  • Amplificador de salida: proporciona la capacidad de suministrar la corriente necesaria, con una baja impedancia de salida, y normalmente protegida frente a cortocircuitos.
Ganancia de los amplificadores operacionales
Ganancia de los amplificadores operacionales

OPERACIONAL COMO AMPLIFICADOR

En circuitos con ganancias superiores a 100.000, es muy fácil que la tensión de salida (teórica) llegara a superar a la tensión de alimentación. Llegado a este punto, se dice que el amplificador está saturado.

Cuando la tensión aplicada a la entrada V+ comienza a subir, la tensión en la salida Vout también sube, ya que es función de la diferencia de tensión entre sus entradas. Si conectamos una realimentación (R) entre la salida y V, la tensión en la entrada V también subirá, de manera que la diferencia de tensión entre las dos entradas se reduce y disminuye la tensión de salida (ganancia). Así es como podemos definir y limitar la ganancia de un amplificador operacional.

Filtro y oscilador, con amplificador operacional
Filtro y oscilador, con amplificador operacional

OPERACIONAL COMO COMPARADOR

Un amplificador operacional se puede utilizar como comparador. Esta característica hace que un amplificador operacional sea útil como elemento para adaptar niveles lógicos, o pudiendo generar la señal de error de un comparador de fases en un circuito PLL.

Comparador de fases con operacional
Comparador de fases con operacional

OPERACIONAL COMO BUFFER-SEGUIDOR

Operacional seguidor
Operacional seguidor

Si conectamos un amplificador operacional de la manera que nos muestra la figura, obtenemos lo que se conoce como circuito seguidor o buffer. Con esta configuración se eliminan los efectos de cargas importantes en salidas y se adaptan las impedancias, al conectar un dispositivo con una gran impedancia a otro con una impedancia pequeña o viceversa. En este caso, la tensión de salida será igual a la tensión de la entrada y la impedancia de entrada, teórica, sería infinita.

Inversor de 150 W para el automóvil

Análisis de funcionamiento de un inversor de 150 W, diseñado para el uso en el automóvil.

Inverter 150 W
Inverter 150 W

Modificaciones necesarias para aumentar la corriente de salida en del conector USB (5 VDC), y que pueda funcionar con los dispositivos de Apple (iPhone, iPad). Medidas de tensión en la salida alterna (en vacío y con carga), forma de onda y rendimiento del inversor.

Detección iPhone
Detección iPhone

FUNCIONAMIENTO DE UN INVERSOR

Un inversor permite cambiar un voltaje de entrada en corriente continua, a otro voltaje de corriente alterna.  Al igual que sucede con cualquier dispositivo electrónico, el rendimiento de un inversor siempre será inferior a 1. Tanto el rendimiento como la estabilidad de sus parámetros más importantes (frecuencia, tensión de salida), dependerán del diseño del inversor. Los inversores se utilizan principalmente para convertir la energía de fuentes alternativas (paneles solares, baterías) en corriente alterna, para poder utilizarla en instalaciones domésticas.

TIPOS DE INVERSOR

Los inversores pueden ser monofásicos o trifásicos, pero los de uso doméstico suelen ser monofásicos. Existen multitud de fabricantes con sus diferentes modelos y potencias. Dependiendo de su forma de onda a la salida, podemos diferenciarlos en 2 categorías: onda senoidal modificada y onda senoidal pura.

Formas de onda (inverter)
Formas de onda (inverter)

1 – Onda senoidal modificada

Los inversores de onda senoidal modificada funcionan como una fuente de alimentación conmutada, partiendo de una señal cuadrada PWM. Modificando la fase de esta señal cuadrada, se pueden alimentar 4 transistores de potencia (MOSFET) para obtener a la salida una forma de onda parecida a la envolvente de la onda senoidal pura.

Onda senoidal modificada
Onda senoidal modificada

Como todos los transistores trabajan en conmutación,  el rendimiento de este tipo de inversores es muy alto. Los inversores de onda senoidal modificada pueden utilizarse con la mayoría de dispositivos que funcionan con la red eléctrica. No son aconsejables para alimentar los equipos que contengan motores o transformadores de tensión por inducción (transformadores convencionales), porque podrían recalentarse y su rendimiento es peor. Sin embargo, pueden utilizarse con la mayoría de dispositivos electrónicos modernos, ya que estos utilizan fuentes conmutadas.  También son compatibles con todos los sistemas de iluminación modernos (lámparas de bajo consumo, iluminación Led).

2 – Onda senoidal pura

Este tipo de inversor es totalmente compatible con todos los dispositivos que funcionan con la red eléctrica (lavadoras, frigoríficos, ventiladores, iluminación, etc.). Los inversores de onda senoidal pura disponen de más electrónica y fiabilidad que los de onda senoidal modificada, pero a cambio su rendimiento es peor.  La principal desventaja de este tipo de inversores, es su precio.

Claxon Laguna II… extraño comportamiento

Extraño comportamiento del claxon, en un Renault Laguna II. En un día lluvioso, sin causa aparente el claxon comenzó a sonar… y seguía sonando después de quitar su fusible de protección. La solución provisional fue soltar la conexión del claxon.

El claxon del Renault Laguna II es multifunción y se activa mediante una placa electrónica que incorpora las propias bocinas. Su conexión lleva 3 hilos:

Esquema del claxon (Laguna II)
Esquema del claxon (Laguna II)
  1. Alimentación directa de 12V, protegida mediante el fusible F11 de 30A (vano del motor).
  2. Conexión con el chasis, polo negativo de la batería.
  3. Hilo de activación, procedente de la UCH (Unidad Central del Habitáculo), protegido mediante el fusible F14 de 15A (habitáculo)
Fusibles del habitáculo (Laguna II)
Fusibles del habitáculo (Laguna II)

En la imagen anterior, se puede ver la situación de la UCH y fusibles, localizada en el lateral izquierdo del habitáculo.

Fusibles y relés del vano motor (Laguna II)
Fusibles y relés del vano motor (Laguna II)

En la imagen anterior se puede ver la situación de la caja de fusibles y relés, localizada en el  compartimento del motor.

Si tienes un Renault Laguna y quieres resolver tus dudas o compartir tus experiencias con el coche, te aconsejo que visites el foro: Club Laguna

Firmware Reloj LED #2 (Temperatura, Hora de Verano)

Detalles de funcionamiento del chip de temperatura (DS18B20) del Reloj Led EC1204B. Sustitución del sensor de temperatura DS18B20 por el DS18S20, de mayor precisión, mostrando las diferencias entre ambos sensores. Comprobación de las alarmas de temperatura con el reloj y la presentación límite con temperaturas positivas y negativas.

Los cambios de hora invierno/verano que se realizan en algunos países desde el año 1973. Actualización del firmware del reloj, para permitir el cambio de hora invierno/verano de forma automática. Forma de implementar el ajuste automático de la hora empleando tablas. Almacenaje de datos para que funcione el cambio horario con el reloj apagado, y comprobación de su funcionamiento.

La versión 2 del firmware, se puede descargar de forma gratuita desde el siguiente enlace:

J_RPM_v2_EC1204B.HEX

La versión 3 del firmware incluye la posibilidad de reducir el brillo del display en horario nocturno. Puedes descargarla desde el siguiente enlace:

J_RPM_v3_EC1204B.HEX

Sensor de temperatura DS18B20

El chip DS18B20 es su sensor temperatura digital de resolución configurable entre 9 y 12 bits. Por defecto, de fábrica está configurado con 12 bits. A máxima resolución, sus últimos 4 bits se corresponden con las lecturas decimales de: 0,5°/ 0,25° / 0,125° / 0,0625°.

Sensor de temperatura: DS1820
Sensor de temperatura: DS1820

Para tomar la temperatura se debe transmitir el comando Convertir [44H]. Este comando realiza una conversión de la temperatura a formato digital, y posteriormente la almacena en la memoria del chip con un formato de 16 bits. Los 5 bits MSB se corresponden al signo, siendo todos ‘0’ cuando la temperatura es positiva y ‘1’ cuando es negativa.

La información puede ser recuperada mediante su interfaz de 1 hilo, enviando el comando Lectura [BEH]. Los datos se transfieren a través del bus, empezando por el bit menos significativo (LSB).

DETECCIÓN DE ALARMAS

Después de realizar la conversión de la temperatura, el valor se compara con los valores de referencia, previamente almacenados en las memorias TH y TL del chip. Como estos registros son de 8 bits, los bits 9-12 se ignoran en la comparación. El bit más significativo de TH / TL se corresponde con el bit de signo. Si el resultado de una medición de temperatura es mayor que TH o inferior TL, se almacena un indicador de alarma en el interior del chip. El estado de alarma se actualiza con cada medición de temperatura. Esto permitiría conectar varios DS1820 en paralelo,  y realizar una lectura rápida para detectar si algún sensor tiene alarma, y posteriormente leer su temperatura de forma inmediata.

En la figura siguiente podemos ver la diferencia que existe en el formato de datos de temperatura, entre los sensores DS18B20 y DS18S20.

Estructura de datos DS1820
Estructura de datos DS1820

A pesar de que sus encapsulados, interface de comunicaciones y comandos son idénticos… la estructura de sus datos los hace incompatibles entre si, y es necesario modificar el firmware del reloj para que pueda mostrar la temperatura.

Memoria DS1820
Memoria DS1820

MEMORIA ROM

El sensor de temperatura DS1820 tiene una memoria ROM, que contiene un código único de 64 bits. Los primeros 8 bits identifican a la familia (DS18B20 = 28H / DS18C20 = 10H). Los siguientes 48 bits almacenan un número de serie único. Los últimos 8 bits son el CRC de los primeros 56 bits. Estos 64 bits permiten la gestión de varios dispositivos conectados en el mismo bus, pudiendo realizar las siguientes operaciones:

(33H) Leer la memoria ROM

(55H) Comunicar con un solo dispositivo

(F0H) Buscar una dirección ROM

(CCH) Saltar la dirección ROM, para acceder a los datos (sensor único)

(ECH) Búsqueda de alarmas

Leer ROM [33H]

Este comando permite que el maestro del Bus pueda leer el código de la familia de 8 bits del DS1820, su número de serie de 48 bits, y los 8 bits del CRC. Este comando sólo se puede utilizar si hay un solo DS1820 en el Bus. Si existe más de un dispositivo en el Bus, se producirá una colisión de datos cuando todos los esclavos intenten transmitir en el mismo tiempo.

Comunicación con un dispositivo ROM [55H]

El comando 55H, seguido de una secuencia ROM de 64 bits, permite que el maestro del bus pueda comunicar con un solo dispositivo DS1820 dentro del mismo Bus. Sólo responderá el DS1820 que coincida exactamente con la secuencia ROM de 64 bits recibida. Todos los esclavos que no coincidan con la memoria ROM de 64 bits, esperarán la recepción de un impulso de reposición. Este comando se puede utilizar con uno o varios dispositivos conectados en el mismo Bus.

Buscar ROM [F0H]

Mediante el comando F0H, el maestro puede conocer el número de dispositivos (esclavos) que tiene conectados en el mismo Bus, o sus códigos ROM de 64 bits.

Saltar ROM [CCH]

Este comando permite ahorrar tiempo al maestro del Bus, para acceder a la funciones de la memoria sin proporcionar el código ROM de 64 bits. Este comando no se debe utilizar cuando existe más de un dispositivo conectado en el mismo Bus.

Búsqueda de alarmas [ECH]

Mediante el comando ECH, el maestro puede acceder a las alarmas de todos los dispositivos (esclavos) que tiene conectados en el Bus. La condición de alarma se define como una temperatura mayor que TH o inferior TL. La condición de alarma permanecerá activada hasta que otra medida de temperatura deje de superar los umbrales de alarma (TH/TL).

MEMORIA RAM

Escribir RAM [4EH]

El comando 4EH habilita la escritura en la memoria RAM del DS18B20, empezando por el registro TH. Estos 3 Bytes (2 Bytes con DS18S20) se almacenan en las posiciones 2, 3 y 4 de la memoria. Los 3 Bytes se deben enviar seguidos, antes de enviar un reinicio.

Leer RAM [BEH]

El comando BEH permite leer todo el contenido de la memoria RAM. La lectura comenzará en el Byte 0 y continuará a través de la memoria hasta el noveno Byte (Byte 8, CRC). Si no se quieren leer a todos los registros, el maestro podría enviar un reinicio para interrumpir la lectura en cualquier momento.

Copiar RAM [48H]

Con el comando 48H se copian los 2/3 Bytes (DS18B20: TH, TL y Config) desde la memoria RAM a la memoria EEPROM (no volátil) del DS1820. Mientras dure el proceso de copia, el DS1820 cargará la línea del Bus, midiendo un valor ‘0’, y se medirá un nivel alto ‘1’ (pull-up) cuando el proceso de copia termine.

Convertir Temperatura [44H]

El comando 44H inicia la conversión de la temperatura, y no se requieren más datos. Mientras dure el proceso de conversión y copia de datos en la RAM, el DS1820 cargará la línea del Bus, midiendo un valor ‘0’, y se medirá un nivel alto ‘1’ (pull-up) cuando el proceso termine.

Leer EEPROM [B8H]

Este comando copia los valores de referencia de temperatura  (TH/TL) y la configuración (Config sólo con DS18B20) almacenada desde la EEPROM a la memoria RAM. Esta operación de recuperación se realiza automáticamente cada vez que se alimenta el DS1820. Mientras dure el proceso de la copia de datos en la RAM, el DS1820 cargará la línea del Bus, midiendo un valor ‘0’, y se medirá un nivel alto ‘1’ (pull-up) cuando el proceso termine.

Leer la fuente de alimentación [B4H]

Después del envío del comando B4H, el DS1820 indicará dentro de su intervalo de datos con un estado:

0 = DS1820 alimentado por el Bus

1 = DS1820 con fuente de alimentación externa.

Comunicaciones con DS1820
Comunicaciones con DS1820

En la imagen anterior, podemos ver un ejemplo del diálogo entre el micro-controlador (maestro) y el sensor de temperatura (esclavo), para obtener el valor de la temperatura y almacenar los valores de alarma máxima y mínima en su memoria.

HORARIO DE VERANO

En algunos países, existen dos tipos de horarios:

  1. Horario estándar, el que corresponde con el huso horario (Horario de invierno).
  2. Horario de verano

El cambio de hora se aplica una vez al año, haciendo que del horario estándar (o de invierno) se pase al horario de verano. Aunque la primera vez que se aplicó este cambio de hora fue durante la Primera Guerra Mundial, dejo de aplicarse hasta la crisis del petróleo de 1973. El objetivo es el de aprovechar mejor la luz solar, consumiendo menos electricidad.

Cambios horarios (Invierno/Verano)
Cambios horarios (Invierno/Verano)

La mayoría de los países que realizan este cambio horario, lo realizan en las siguientes fechas:

HORARIO DE VERANO

Último domingo de MARZO:  A las 2:00 AM  se adelanta a las 3:00 AM

… se adelante 1 hora el reloj

HORARIO DE INVIERNO

 Último domingo de OCTUBRE: A las 3:00 AM  se atrasa a las 2:00 AM

… se atrasa 1 hora el reloj

Configuración del Reloj LED (v2)
Configuración del Reloj LED (v2)

Este es el nuevo diagrama para la programación del Reloj LED, utilizando la versión 2 del firmware.

Firmware para el Reloj LED: EC1204B

Desarrollo de un nuevo firmware para el kit EC1204B, reloj LED con esfera rotante. Estructura interna del chip de reloj en tiempo real DS1302. Gestión de datos entre el micro-controlador y el DS1302. Direcciones y estructura de los registros del reloj y memoria RAM, envío simple o ráfaga (burst), etc. Gestión del registro para control de carga de la batería de almacenamiento (TRICKLE-CHARGE REGISTER). Modificaciones realizadas sobre el diseño original, con el fin de mejorar las prestaciones y aumentar el brillo del display. Descripción del modo de programar la hora y modificar sus ajustes con el nuevo firmware.

Este firmware se puede descargar de forma gratuita desde el siguiente enlace:
J_RPM_v1_EC1204B.HEX

Esquema del reloj: EC1204B
Esquema del reloj: EC1204B

Antes de comenzar a realizar un nuevo firmware, es importante analizar el esquema y anotar los pines de entrada/salida de todos los dispositivos que se tienen que controlar. Como en este caso, tanto el control del display de 4 dígitos como los 60 diodos led están multiplexados, es conveniente utilizar la frecuencia más alta que permita el micro-procesador. Dado que este procesador (AT89S52) podría funcionar con una frecuencia máxima de 33 MHz, podemos sustituir sin problemas su cristal de cuarzo original de 12 MHz, por otro de 22,118 MHz. Con este cambio conseguiremos un aumento de 1,8 veces en la velocidad de proceso, podremos aumentar la luminosidad del reloj y reducir su parpadeo. Es importante destacar que si cambiamos el cristal de cuarzo y utilizamos el firmware original, el reloj no funcionará.

Firmware original con el cristal de 22,118 MHz.
Firmware original con el cristal de 22,118 MHz.

El problema está en las comunicaciones entre el chip sensor de temperatura (DS18B20) y el micro-procesador. Como las comunicaciones entre ambos dispositivos se hace con un sólo hilo (1-Wire interface), sus comunicaciones son asíncronas y los tiempos deben ser muy precisos. Aunque el resto del reloj podría funcionar sin problemas, debido a que el DS1302 lleva su propio cristal de cuarzo, con el firmware original se muestra un error en el display…  y el reloj no llega a funcionar.

Las comunicaciones entre el micro-controlador y el chip de reloj DS1302 se realizan mediante 3 hilos:

  1. Reloj (SCLK)
  2. Entrada/Salida de datos (I/O)
  3. Habilitación (CE)
Comunicaciones con DS1302
Comunicaciones con DS1302

Como podemos observar en la imagen anterior, las comunicaciones entre el micro-controlador y el DS1302 pueden realizarse en modo simple (un sólo registro) o en modo burst/ráfaga (todos los registros del sector apuntado). Es importante destacar que los datos se transmiten con el flanco de subida de la señal de reloj, y se reciben con el flanco de bajada. Observar el diagrama de lectura en la imagen anterior, que entre el byte de dirección del registro (TX) y el byte de datos (RX) cambia el punto de muestreo.

Registro de carga del DS1302
Registro de carga del DS1302

El chip DS1302 incorpora un circuito para permitir la carga de su batería de almacenamiento. En caso de utilizar una pila no recargable, no se debería activar el circuito de carga. Como podemos observar en la imagen anterior, es posible conectar el circuito de carga y limitar su corriente máxima, mediante la conexión de un diodo o dos en serie y el valor de la resistencia.

Cable ISP (In-system programming)
Cable ISP (In-system programming)

Para programar el micro-controlador de este kit de reloj, podemos utilizar un interface serie (ISP: In-system programming / ICSP : In-Circuit Serial Programming) . En la imagen anterior podemos ver el conexionado que se debería utilizar entre el programador TL866A y el reloj.

Configuración del Reloj LED
Configuración del Reloj LED

En la imagen anterior se muestra la secuencia de programación del reloj  con el nuevo firmware.