Instituto Polit�cnico Nacional
Instituto Politécnico Nacional
"La Técnica al Servicio de la Patria"

 

Boletín No. 99
1o. de noviembre de 2023




MEDIDOR DE TEMPERATURA DS18B20 CON VHDL Y LA NEXYS 2

 

Juan Antonio Jaramillo Gómez Dr.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. .
Mirna Salmerón Guzmán M. en C.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. .
Brahim El Filali Dr.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

UPIITA-IPN

Cómo citar este artículo

 

Resumen

Se presenta la implementación de un medidor digital de temperatura utilizando el sensor serial DS18B20 con visualización en display de 7 segmentos, utilizando la tarjeta de desarrollo Nexys 2, programada con el lenguaje de descripción de hardware VHDL en el programa ISE de Xilinx. Se proporcionan los códigos VHDL y el archivo de restricciones de usuario para la tarjeta mencionada.

 

Abstract

A digital temperature meter is implemented using the DS18B20 serial sensor with a 7-segment display, using the Nexys 2 development board, programmed with the VHDL hardware description language and the Xilinx ISE program. They provide the VHDL codes and the archive of user restrictions for the mentioned card.

Introducción

Los sensores de temperatura se clasifican de distintas formas, por forma, tamaño, rango, material, por su uso, por su fabricación, por el tipo de señal, etc., los cuales permiten medir de forma directa dicha variable, aunque también se pueden medir variables indirectas

Los sensores analógicos más comunes son:

  1. Termopares. La temperatura que reciben la unión de dos metales genera una corriente por efecto Seebeck. Dependiendo de los metales, pueden ser baratos y sencillos de conseguir, con buena precisión.
  2. Termistores. Su valor de resistencia cambia hacia arriba o hacia abajo cuando reciben temperatura. Su modelado es de forma exponencial, son baratos y con una electrónica sencilla cuando se utilizan como termostatos.
  3. Sensores en circuito integrado. Entregan una señal fija de voltaje (i.e. LM35, 10mV/°C) o de corriente (AD590, 1uA/K), son fáciles de conseguir, aunque el rango es más limitado que los predecesores.

Los sensores digitales, entregan un valor digital, por lo general serial con un protocolo establecido, respetando la lógica TTL o LVTTL. En particular, en este trabajo, se utiliza un sensor digital-serial, con las siguientes características:

  1. Sensor Digital.
  2. Resolución de 9 y 12 bits.
  3. Rango de operación de -50 a 125 grados Centígrados.
  4. Precisión +- 0.5 grados.
  5. Protocolo OneWire.

Este sensor contiene tres terminales (Vcc, GND y el pin Data), con una comunicación por protocolo serial digital OneWire, el cual permite enviar y recibir datos con un solo cable. Si se utilizase un dispositivo programable como un Arduino se necesitarían las bibliotecas (librerías: Dallas Temperature y OneWire), pero al emplear un FPGA, se crea todo el protocolo dentro del lenguaje descriptivo de hardware.

El sensor DS18B20 comercial mostrado en la figura 1, se puede encontrar en distintos encapsulados y en distintas presentaciones, pero trabaja bajo el mismo protocolo. El sensor tipo sonda, a diferencia de los otros dos, está recubierto por una vaina o capuchón metálico o de plástico, lo que protege el sensor y le permite ser sumergible.

 

Figura 1. Sensor en placa, en sonda y discreto.

 

Existen dos formas de polarizarlo, de forma parásita y con fuente externa, mostrado en las figuras 2 y 3, respectivamente.

 

Figura 2. . Polarización parásita.

 

 

Figura 3. Polarización con fuente externa.

 

Una de las aplicaciones más utilizadas para los sensores de temperaturas, a parte de un medidor o termómetro, está en el desarrollo de termostatos, que son básicamente un control de temperatura dentro de un rango establecido para encender y apagar algún actuador como ventilador, calefactor, enfriador, etc. Sus usos de estos están en calefacción, pero un uso indirecto de los sensores está en la medición de flujo, el cual mide la diferencia de temperatura entre dos puntos utilizando dos sensores para estimar.

El en desarrollo de este medidor se utiliza un sensor DS18B20 tipo sonda, la tarjeta nexys 2 y se visualza la salida en el display de 7 segmentos de la tarjeta a la tarjeta (ver figuras 4 y 5), que muestran 2 digitos enteros y 2 decimales.

 

Figura 4. Imagen de la tarjeta Nexys 2.

 

 

Figura 5. Conexión de terminales de los componentes básicos.

 

Para la implementación del medidor se utilizaron los códigos de la referencia github y se modificaron para la medición en el display, como se ve en el proyecto del ISE de la figura 6.

 

Figura 6. Proyecto del ISE de la referencia github.

 

Conexiones

El sensor se conecta a un conector de expansión de la tarjeta, pudiéndose elegir uno de los 4 disponibles (JA, JB, JC o JD). El este caso se conecta a los terminales 4 a 6, donde JA3 es la entrada del sensor, como se ve en la figura 7. El sensor se polariza con una resistencia (ver figura 8).

 

Figura 7. Terminales del conector de expansión de la nexys 2.

 

 

Figura 8. Polarización del sensor con una resistencia de 4.7K y conexión en la tarjeta.

 

Código

El código implementado, como ya se mencionó, se basó en la referencia de github, el cual consta de una estructura Top Level, también llamado Estructural o Top Level Design (ver figura 9), que contiene 8 programas, de los cuales uno es para el archivo TL, otro para la asignación de terminales (UCF) y 6 programas para los 6 módulos que realizan lo siguiente:

  1. U1 contiene el programa para comunicarse con el sensor DS18B20.
  2. U2 es un divisor de 1MHz.
  3. U3 realiza la verificación de datos a través del código de redundancia cíclica con un polinomio.
  4. U4 es el programa que convierte el número binario de 16 bits a decimal (BCD).
  5. U5 sirve para el manejo de los displays de 7 segmentos.
  6. U6 se utiliza para la transmisión de datos hacia una PC por USB.

 

Figura 9. Componentes del código en TLD.

 

Pruebas

Después de sintetizar y conectar el sensor, se tomaron las temperaturas ambientes, de la mano y de las ventilas de la computadora, aclarando que no se tiene el comparativo con un medidor patrón, haciendo notar también que el cambio en la lectura es lento y falta realizar más pruebas con el medidor. Dichas lecturas se muestran en la figura 10.

 

Figura 10. Lecturas del medidor de temperatura (ambiente, mano, computadora).

 

V. Conclusiones

Se ha realizado la implementación de un medidor de temperatura con el sensor digital DS18B20 en la tarjeta Nexys 2, con la modificación del código de la referencia citada. Las lecturas realizadas solo muestran el funcionamiento, aunque falta realizar más pruebas con un medidor patrón para conocer más datos del medidor. Se entregan los códigos en VHDL y el UCF de la Nexys 2 para que se utilicen, analicen y modifiquen como cada usuario lo requiera.

 

Dar click aquí  para ver códigos  VHDL y UCF

 

Referencias y Recursos electrónicos

  1. (). Sensor de temperatura DS18B20 – 18S20P con Arduino. Recuperado el 10 de julio de 2023, de: https://www.bolanosdj.com.ar/MOVIL/ARDUINO2/Sensor18S20P.pdf

  2. (). Datasheet DS18B20. Recuperado el 10 de julio de 2023, de: https://www.micro-semiconductor.com/datasheet/6a-DS18B20U-T-R.pdf

  3. (). DS18B20-VHDL-ONEWIRE. Recuperado el 10 de julio de 2023, de: https://github.com/myalfred03/DS18B20-VHDL-ONEWIRE https://github.com/myalfred03/DS18B20-VHDL-ONEWIRE/tree/master/DS18B20Czech

 

Cómo citar este artículo en APA

Jaramillo, J., Salmerón, M. & El Filali, B.(1 de noviembre de 2023). Medidor de temperatura DS18B20 con VHDL y la NEXYS 2 Boletín UPIITA. 18 (99).
https://www.boletin.upiita.ipn.mx/index.php/ciencia/1053-cyt-numero-99/2218-medidor-de-temperatura-ds18b20-con-vhdl-y-la-nexys-2

Regresar al índice