Registrador de datos de temperatura con microcontrolador PIC
Registrador de datos de temperatura con microcontrolador PIC
Este proyecto utiliza un microcontrolador PIC de Microchip, una memoria EEPROM serial y un termistor para crear un registrador de datos de temperatura. La temperatura se mide y almacena a intervalos programables por el usuario, desde 1 segundo hasta 256 segundos. El intervalo de tiempo se configura programándolo, junto con la hora de inicio, en la memoria EEPROM. La mayor parte del tiempo, el microcontrolador PIC permanece en modo de reposo y el circuito integrado de la EEPROM está inactivo. Esto resulta en un consumo de corriente muy bajo, aproximadamente 50 µA, o alrededor de 1 mAh por día.
La memoria EEPROM utilizada es de 32 KB, capaz de almacenar hasta 32 000 mediciones. Por ejemplo, esto permite una medición cada 30 segundos durante un máximo de 11 días. La combinación de un termistor y circuitos analógicos proporciona un rango de temperatura de aproximadamente -40 °C a +100 °C, aunque el rango lineal es de aproximadamente -10 °C a +40 °C.
.png)
En esta imagen, se observa el registrador de temperatura conectado a un termistor externo. El conector final incluye alimentación, líneas de reloj y datos I2C, y una entrada analógica. Las dimensiones totales de la unidad son 40 mm de largo, 26 mm de ancho y 16 mm de alto.
Carcasa con paquete de baterías
En esta imagen, el registrador de temperatura está conectado a un paquete de baterías con cuatro pilas AAA. Esto muestra claramente el tamaño e indica que sería preferible un paquete de baterías más pequeño.
PCB (Versión 1)
La primera versión del circuito se construyó en una placa perforada utilizando circuitos integrados con encapsulado DIL y componentes pasivos tradicionales de orificio pasante. El microcontrolador PIC se encuentra en la parte inferior izquierda de la PCB, mientras que el circuito integrado EEPROM está montado verticalmente en la parte inferior derecha para ahorrar espacio. Los conectores externos incluyen un conector de alimentación de 1,3 mm en la parte inferior izquierda y un conector SIL de 5 pines en la parte derecha. Otros componentes incluyen un conector ICSP (con una resistencia y un diodo) en la esquina superior izquierda, un oscilador de cristal con dos condensadores junto al PIC, dos resistencias pull-up I2C cerca de la EEPROM y un divisor de tensión con termistor en la esquina superior derecha.
PCB (Versión 2)
La segunda versión del circuito se construyó sobre una PCB personalizada de una sola cara, utilizando circuitos integrados con encapsulado SO8 y componentes pasivos de montaje superficial. El paso entre circuitos integrados es de tan solo 1,27 mm (0,05 pulgadas). Los condensadores de desacoplamiento utilizan encapsulados 0805 (2 mm × 1,27 mm), mientras que las resistencias son encapsulados 1206 (3 mm × 1,5 mm). El cristal y sus condensadores se mantienen sin cambios, al igual que los conectores. Las pistas tienen un ancho de 0,5 mm (0,02 pulgadas), aunque son ligeramente más anchas en la versión final de producción.
Software (Firmware PIC)
El software PIC está escrito en lenguaje ensamblador y se basa en proyectos anteriores que utilizan una interfaz I2C. La EEPROM, el PIC y el conector externo comparten el mismo bus I2C, aunque el PIC solo lo utiliza cuando el termistor está conectado. En este caso, la dirección de la EEPROM se incrementa continuamente, lo que permite identificar lagunas en los datos.
Cuando no se realiza ninguna medición de temperatura, el PIC entra en modo de reposo. Se activa una vez por segundo (mediante un oscilador de cristal externo y un contador interno) para comprobar si es el momento de realizar una medición. El intervalo de muestreo se almacena en una ubicación fija de la EEPROM externa y se lee al encender el dispositivo.
El termistor y una resistencia forman un divisor de voltaje, que se mide mediante un canal ADC del PIC. La medición se realiza cuatro veces y se suman. Debido al ruido del circuito, promediar cuatro lecturas proporciona un resultado más preciso que una sola medición.
Los valores del ADC se almacenan directamente en lugar de convertirse primero a temperatura. Para ahorrar espacio y mantener la precisión, los cambios con respecto a la medición anterior se almacenan en un byte siempre que sea posible; de lo contrario, se utilizan dos bytes. Si el cambio de valor está entre -112 y +112, solo se almacena la diferencia. Si supera este rango, se almacenan dos bytes, y el primero contiene un indicador que señala esta condición.
El microcontrolador PIC utilizado es un 12F683 que funciona a 4 MHz con su oscilador interno. La interfaz I2C se implementa mediante E/S controlada por software (bit-banging) a casi 100 kHz, en lugar de utilizar la interfaz de hardware SSP del PIC.
La información completa de este proyecto está disponible para su descarga, incluyendo las funciones de la biblioteca I2C, los esquemas, los diseños de PCB y varios programas en C. El proyecto se incluye en una biblioteca de código PIC descargable.
Software para PC
Para reiniciar el dispositivo, hay disponible un programa que borra toda la EEPROM (hasta 0xFF) y escribe una cabecera de 32 bytes con la hora de inicio y el intervalo de muestreo. El microcontrolador PIC utiliza el intervalo de muestreo para determinar cuándo tomar las mediciones, mientras que el programa de extracción de datos utiliza la hora de inicio.
Para leer los datos del PIC, existe un software que permite volcar todo el contenido de la EEPROM y extraer la hora de inicio, el intervalo y los datos brutos. Posteriormente, los datos se convierten en fecha, hora, valores de medición y temperatura para cada punto de datos almacenado.
Diagrama del circuito
El circuito es muy simple e incluye únicamente una interfaz ADC (una resistencia), una interfaz I2C (dos resistencias), el circuito integrado EEPROM, el ICSP (zócalo, diodo y resistencia) y el oscilador (cristal y dos condensadores).
Diseño del circuito (Versión 1)
Este sencillo diseño de PCB muestra la disposición de los componentes en la placa perforada. La vista es desde la parte superior de la PCB, tal como se muestra en la fotografía.
Diseño del circuito (Versión 2)
Este diseño de PCB muestra los componentes y las pistas en la PCB personalizada. La vista es desde el lado de las pistas, aunque algunos componentes están montados en el lado opuesto.
Componentes
Todos los componentes utilizados en este proyecto son relativamente fáciles de conseguir, aunque los componentes de montaje superficial son menos comunes que los componentes estándar de orificio pasante.
Resultados de ejemplo
La imagen a continuación muestra los resultados de ejemplo obtenidos con este dispositivo. El registrador de temperatura se colocó cerca de un termostato doméstico durante aproximadamente 10 días a principios del invierno de 2007. El gráfico muestra la temperatura medida y los puntos de ajuste del termostato (un termostato inteligente diseñado para alcanzar temperaturas objetivo en momentos específicos). Los datos medidos reflejan claramente la actividad de la calefacción, observándose un rápido descenso de la temperatura durante los periodos de inactividad, como la ausencia diurna o la noche.
.png)
.png)
.png)
.png)
Este proyecto utiliza un microcontrolador PIC de Microchip, una memoria EEPROM serial y un termistor para crear un registrador de datos de temperatura. La temperatura se mide y almacena a intervalos programables por el usuario, desde 1 segundo hasta 256 segundos. El intervalo de tiempo se configura programándolo, junto con la hora de inicio, en la memoria EEPROM. La mayor parte del tiempo, el microcontrolador PIC permanece en modo de reposo y el circuito integrado de la EEPROM está inactivo. Esto resulta en un consumo de corriente muy bajo, aproximadamente 50 µA, o alrededor de 1 mAh por día.
La memoria EEPROM utilizada es de 32 KB, capaz de almacenar hasta 32 000 mediciones. Por ejemplo, esto permite una medición cada 30 segundos durante un máximo de 11 días. La combinación de un termistor y circuitos analógicos proporciona un rango de temperatura de aproximadamente -40 °C a +100 °C, aunque el rango lineal es de aproximadamente -10 °C a +40 °C.
.png)
En esta imagen, se observa el registrador de temperatura conectado a un termistor externo. El conector final incluye alimentación, líneas de reloj y datos I2C, y una entrada analógica. Las dimensiones totales de la unidad son 40 mm de largo, 26 mm de ancho y 16 mm de alto.
Carcasa con paquete de baterías
En esta imagen, el registrador de temperatura está conectado a un paquete de baterías con cuatro pilas AAA. Esto muestra claramente el tamaño e indica que sería preferible un paquete de baterías más pequeño.
PCB (Versión 1)
La primera versión del circuito se construyó en una placa perforada utilizando circuitos integrados con encapsulado DIL y componentes pasivos tradicionales de orificio pasante. El microcontrolador PIC se encuentra en la parte inferior izquierda de la PCB, mientras que el circuito integrado EEPROM está montado verticalmente en la parte inferior derecha para ahorrar espacio. Los conectores externos incluyen un conector de alimentación de 1,3 mm en la parte inferior izquierda y un conector SIL de 5 pines en la parte derecha. Otros componentes incluyen un conector ICSP (con una resistencia y un diodo) en la esquina superior izquierda, un oscilador de cristal con dos condensadores junto al PIC, dos resistencias pull-up I2C cerca de la EEPROM y un divisor de tensión con termistor en la esquina superior derecha.
PCB (Versión 2)
La segunda versión del circuito se construyó sobre una PCB personalizada de una sola cara, utilizando circuitos integrados con encapsulado SO8 y componentes pasivos de montaje superficial. El paso entre circuitos integrados es de tan solo 1,27 mm (0,05 pulgadas). Los condensadores de desacoplamiento utilizan encapsulados 0805 (2 mm × 1,27 mm), mientras que las resistencias son encapsulados 1206 (3 mm × 1,5 mm). El cristal y sus condensadores se mantienen sin cambios, al igual que los conectores. Las pistas tienen un ancho de 0,5 mm (0,02 pulgadas), aunque son ligeramente más anchas en la versión final de producción.
Software (Firmware PIC)
El software PIC está escrito en lenguaje ensamblador y se basa en proyectos anteriores que utilizan una interfaz I2C. La EEPROM, el PIC y el conector externo comparten el mismo bus I2C, aunque el PIC solo lo utiliza cuando el termistor está conectado. En este caso, la dirección de la EEPROM se incrementa continuamente, lo que permite identificar lagunas en los datos.
Cuando no se realiza ninguna medición de temperatura, el PIC entra en modo de reposo. Se activa una vez por segundo (mediante un oscilador de cristal externo y un contador interno) para comprobar si es el momento de realizar una medición. El intervalo de muestreo se almacena en una ubicación fija de la EEPROM externa y se lee al encender el dispositivo.
El termistor y una resistencia forman un divisor de voltaje, que se mide mediante un canal ADC del PIC. La medición se realiza cuatro veces y se suman. Debido al ruido del circuito, promediar cuatro lecturas proporciona un resultado más preciso que una sola medición.
Los valores del ADC se almacenan directamente en lugar de convertirse primero a temperatura. Para ahorrar espacio y mantener la precisión, los cambios con respecto a la medición anterior se almacenan en un byte siempre que sea posible; de lo contrario, se utilizan dos bytes. Si el cambio de valor está entre -112 y +112, solo se almacena la diferencia. Si supera este rango, se almacenan dos bytes, y el primero contiene un indicador que señala esta condición.
El microcontrolador PIC utilizado es un 12F683 que funciona a 4 MHz con su oscilador interno. La interfaz I2C se implementa mediante E/S controlada por software (bit-banging) a casi 100 kHz, en lugar de utilizar la interfaz de hardware SSP del PIC.
La información completa de este proyecto está disponible para su descarga, incluyendo las funciones de la biblioteca I2C, los esquemas, los diseños de PCB y varios programas en C. El proyecto se incluye en una biblioteca de código PIC descargable.
Software para PC
Para reiniciar el dispositivo, hay disponible un programa que borra toda la EEPROM (hasta 0xFF) y escribe una cabecera de 32 bytes con la hora de inicio y el intervalo de muestreo. El microcontrolador PIC utiliza el intervalo de muestreo para determinar cuándo tomar las mediciones, mientras que el programa de extracción de datos utiliza la hora de inicio.
Para leer los datos del PIC, existe un software que permite volcar todo el contenido de la EEPROM y extraer la hora de inicio, el intervalo y los datos brutos. Posteriormente, los datos se convierten en fecha, hora, valores de medición y temperatura para cada punto de datos almacenado.
Diagrama del circuito
El circuito es muy simple e incluye únicamente una interfaz ADC (una resistencia), una interfaz I2C (dos resistencias), el circuito integrado EEPROM, el ICSP (zócalo, diodo y resistencia) y el oscilador (cristal y dos condensadores).
Diseño del circuito (Versión 1)
Este sencillo diseño de PCB muestra la disposición de los componentes en la placa perforada. La vista es desde la parte superior de la PCB, tal como se muestra en la fotografía.
Diseño del circuito (Versión 2)
Este diseño de PCB muestra los componentes y las pistas en la PCB personalizada. La vista es desde el lado de las pistas, aunque algunos componentes están montados en el lado opuesto.
Componentes
Todos los componentes utilizados en este proyecto son relativamente fáciles de conseguir, aunque los componentes de montaje superficial son menos comunes que los componentes estándar de orificio pasante.
Resultados de ejemplo
La imagen a continuación muestra los resultados de ejemplo obtenidos con este dispositivo. El registrador de temperatura se colocó cerca de un termostato doméstico durante aproximadamente 10 días a principios del invierno de 2007. El gráfico muestra la temperatura medida y los puntos de ajuste del termostato (un termostato inteligente diseñado para alcanzar temperaturas objetivo en momentos específicos). Los datos medidos reflejan claramente la actividad de la calefacción, observándose un rápido descenso de la temperatura durante los periodos de inactividad, como la ausencia diurna o la noche.
.png)
.png)
.png)
.png)
10 Jun 2026