HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

 proyecto: termómetro digital con el sensor DS18B20, usando el sistema EB88, con salida en el LCD. Incluye función para ANSI C que lee la temperatura del sensor.

* hardware y firmware desarrollados por Raúl Rosales Guzmán, con ideas de un proyecto final de Nancy Carolina Gutiérrez Damián.

 

VER VIDEO

EVOLUPIC_Bootloader_16F88_022V.jpg (84273 bytes)

 

DESCRIPCION GENERAL

El proyecto utiliza un novedoso sensor digital de temperatura autocalibrado, fabricado por Dallas Semiconductor (DS1820 y DS18B20), con un encapsulado similar al de un transistor de pequeña señal  y que cuenta con 3 pines, dos de los cuales se conectan a 5v. y tierra respectivamente para alimentarlo. El circuito cuenta con una salida (pin 2) a través del cual se comunica con el microcontrolador 16F628/F88, al bit RA3 del puerto A.

Su rango de temperaturas es de -55 hasta +125 grados centígrados, con una resolución de 0.5 grados para el DS1820 y de 0.25 grados para el DS18B20. La especificación técnica de los circuitos se puede obtener en los siguientes archivos PDF: DS1820.pdf y DS18B20.pdf. Ambos circuitos, si bien son casi idénticos, tienen diferencias en cuanto al formato de transferencia de datos, y la resolución de la lectura, por lo que no son 100% compatibles entre sí.

CONEXION AL EVOLUPIC 16F628 ó al sistema EB88:

La aplicación aquí mostrada está realizada especialmente para los sistemas EVOLUPIC 16F628 y EB88, pero los sensores DS1820 y DS18B20 pueden conectarse directamente a cualquier otro sistema o incluso cualquier microcontrolador de la familia de Microchip, haciendo mínimas modificaciones a los programas aquí mostrados. En estos sistemas, se utiliza el pin RA3 para comunicarse con el sensor DS1820 y el valor de la temperatura se muestra en un display LCD de 16 x 1. El circuito se inserta siguiendo las siguientes conexiones: DS1820 pin 1 a tierra; pin 2 a bit RA3; pin 3 a 5 volts. Vea aquí un video del proyecto.

PROTOCOLO DE COMUNICACIONES:

El sensor DS1820 cuenta con un sofisticado protocolo bidireccional (conocido como "ONEWIRE") para comunicarse con otros dispositivos a través de su pin 2. La temperatura medida en el propio sensor en forma analógica, es convertida a formato serial digital. Cualquier dispositivo en este caso un 16F84/F628/F88, puede solicitar al DS1820 el envío de dicho formato, el cual consta de 9 ó 12 bytes. El protocolo permite incluso el manejo de valores de umbrales de temperatura para aplicaciones de control digital.

Esta tecnología ahorra el uso de los convertidores A/D externos, normalmente usados en estos sistemas, ya que la información es tomada directamente en formato digital. Adicionalmente, el sensor puede ubicarse a una distancia lejana del controlador, sin afectar su desempeño.

PROGRAMAS EN LENGUAJE ENSAMBLADOR: se desarrollaron dos aplicaciones. Una para la conexión con el sensor DS1820 y otra para el DS18B20. Ambos programas se describen enseguida.

Para el sensor DS1820:

termometro.asm  programa principal, llama a  la subrutina "Tempe" para obtener los datos de temperatura del DS1820 y muestra los datos en un LCD 16 x 1.

tempera1.inc  en este archivo está incluída la subrutina "Tempe". La subrutina regresa al programa principal con el valor de temperatura en 4 datos: DIGITO1, DIGITO2, PUNTO, DIGITO3 (ver ejemplo abajo). Todas estos valores están en códigos ASCII, de tal forma que su despliegue en el LCD es directo. El archivo se separó como un ".inc" para permitir su uso como una librería para el manejo del DS1820, pudiéndose emplear para diversas aplicaciones distintas a la aquí propuesta, como por ejemplo el despliegue de la temperatura en módulos de LED 7 segmentos, o en controles digitales de temperatura.

Para el sensor DS18B20:

Los programas desarrollados para este sensor se muestran en la tabla de abajo. La librería que se menciona enseguida puede utilizarse en forma independiente para obtener los datos de temperatura del sensor.

DS18B20.inc en este archivo está incluída la subrutina "Tempe". La subrutina regresa al programa principal con el valor de temperatura en 4 datos: DIGITO1, DIGITO2, PUNTO, DIGITO3 (ver ejemplo abajo). Todas estos valores están en códigos ASCII, de tal forma que su despliegue en el LCD es directo. El archivo se separó como un ".inc" para permitir su uso como una librería para el manejo del DS18B20, pudiéndose emplear para diversas aplicaciones distintas a la aquí propuesta, como por ejemplo el despliegue de la temperatura en módulos de LED 7 segmentos, o en controles digitales de temperatura.

Ejemplo 1 de valor de temperatura: 21.5, en donde DIGITO1=32H, DIGITO2=31H, PUNTO=3EH, DIGITO3=35H

Ejemplo 2 de valor de temperatura: 23.0, en donde DIGITO1=32H, DIGITO2=33H, PUNTO=3EH, DIGITO3=30H

PROGRAMA EN ANSI C: se desarrolló una aplicación en ANSI C (sensor DS18B20), con el compilador CCS, que simplifica enormemente el manejo del sensor, ya que cuenta con una función única la cual regresa un valor de punto flotante con la temperatura en grados centígrados.

El sensor DS18B20 ya se encuentra integrado a la tarjeta en el sistema EB88 como se muestra en las fotos. Para realizar pruebas, debe conectarse un módulo LCD 16 x 1 al puerto correspondiente. Los programas de prueba son:

EDUPIC 16F84 EDUPIC ó EVOLUPIC 16F628 Sistema EB88  
DS18B20.asm DS18B20F628.asm DS18B20F88TINY.asm Termómetro con salida en display LCD 16 x 1
DS18B20.inc DS18B20.inc DS18B20.inc  
DS18B20.hex DS18B20F628.hex DS18B20F88TINY.hex  
  DS18B20F628-3.asm DS18B20F88TINY3.asm Termómetro con salida en módulos display de 7 segmentos
  DS18B20-3.inc DS18B20-3.inc  
    DS18B20F88TINY3.hex  
    ONEWIRE.c Programa fuente en ANSI C
    ONEWIRE.h Librería auxiliar necesaria para el programa anterior
    ONEWIRE.hex Archivo ejecutable, compatible con TINY

 

DS18B20 EN SISTEMA EVOLUPIC 16F628 

VIDEO DS18B20 EN SISTEMA EB88

 

DS18B20EVOLUPIC.jpg (89248 bytes)

 

ds18b20v.jpg (103027 bytes)