Termómetro digital con display hw-069 y sensor ds18b20


Introducción

En este proyecto, aprenderás a crear un medidor de temperatura utilizando un sensor DS18B20 y un display de 7 segmentos TM1637, controlados por una placa Arduino. El display mostrará la temperatura en grados Celsius, incluyendo la precisión decimal y el signo negativo si la temperatura baja de cero.

Materiales Necesarios

  • 1x Arduino mini pro (o cualquier placa compatible)
  • 1x Sensor de temperatura DS18B20
  • 1x Display TM1637
  • 1x Resistencia de 4.7kΩ (para el sensor DS18B20)
  • Cables jumper
  • Protoboard

Componentes electrónicos

Arduino mini pro

El Arduino Pro Mini es una placa de microcontrolador basada en el  ATmega328 .
Tiene 14 pines de entrada / salida digital (de los cuales 6 se pueden usar como salidas PWM), 6 entradas analógicas, un resonador integrado, un botón de reinicio y orificios para montar encabezados de pines. Se puede conectar un encabezado de seis pines a un cable FTDI o una placa de conexión Sparkfun para proporcionar alimentación USB y comunicación a la placa.
El Arduino Pro Mini está diseñado para su instalación semipermanente en objetos o exposiciones. La placa viene sin encabezados pre montados, lo que permite el uso de varios tipos de conectores o la soldadura directa de cables. El diseño del pin es compatible con el Arduino Mini.
Hay dos versiones del Pro Mini. Uno corre a 3.3V y 8 MHz, el otro a 5V y 16 MHz.

Microcontrolador ATmega328 *
Fuente de alimentación de la placa 3,35-12 V (modelo de 3,3 V) o 5-12 V (modelo de 5 V)
Voltaje de funcionamiento del circuito 3.3V o 5V (dependiendo del modelo)
Pines de E / S digitales 14
Pines PWM 6 6
UART 1
SPI 1
I2C 1
Pines de entrada analógica 6 6
Interrupciones externas 2
Corriente CC por pin de E / S 40 mA
Memoria flash 32 KB de los cuales 2 KB utilizados por el gestor de arranque *
SRAM 2 KB *
EEPROM 1 KB *
Velocidad de reloj 8 MHz (versiones de 3.3V) o 16 MHz (versiones de 5V)

Pines hembra


Zócalo para arduino nano


Sensor ds18b20

Resultado de imagen para ds18B20

El sensor DS18B20 es un sensor de temperatura digital muy popular, que ofrece una alta precisión y una sencilla interfaz de comunicación. A continuación te detallo sus características más importantes:

Características del Sensor DS18B20

  1. Rango de Temperatura:
    • Puede medir temperaturas en un rango amplio:
      • -55°C a +125°C.
    • Precisión:
      • ±0.5°C en el rango de -10°C a +85°C.
  2. Resolución Programable:
    • La resolución de la temperatura es ajustable y puede configurarse en:
      • 9, 10, 11 o 12 bits, siendo la más común 12 bits, que ofrece una precisión de 0.0625°C por paso.
  3. Interfaz OneWire:
    • Se comunica con el microcontrolador mediante el bus OneWire, lo que significa que solo requiere un pin de datos para la comunicación (además de VCC y GND).
    • Permite conectar múltiples sensores en el mismo bus, cada uno con una dirección única de 64 bits.
  4. Alimentación:
    • Puede alimentarse de dos maneras:
      • Modo parasitario: Solo requiere dos cables (GND y Data) para operar, tomando energía directamente del pin de datos.
      • Modo estándar: Requiere tres cables (VCC, GND y Data).
    • Voltaje de operación:
      • 3.0V a 5.5V.
  5. Tiempos de Conversión:
    • El tiempo de conversión de la temperatura depende de la resolución seleccionada:
      • 9 bits: 93.75 ms.
      • 10 bits: 187.5 ms.
      • 11 bits: 375 ms.
      • 12 bits: 750 ms.
  6. Calibración Interna:
    • El sensor no necesita ser calibrado, ya que viene pre-calibrado de fábrica.
  7. Encapsulado:
    • Está disponible en diferentes formatos, incluyendo:
      • TO-92 (similar a un transistor).
      • Versión impermeable para aplicaciones en líquidos.
  8. ID Único:
    • Cada sensor tiene una dirección de 64 bits única que lo identifica en el bus OneWire, lo que permite la conexión de varios sensores en paralelo.
  9. Consumo de Energía:
    • Bajo consumo de energía en modo inactivo, ideal para proyectos con baterías.
  10. Uso Común:
    • Aplicaciones comunes incluyen sistemas de monitoreo ambiental, control de temperatura en HVAC, y medición de temperatura en sistemas embebidos.

Ventajas del DS18B20

  • Fácil de usar: Solo requiere un pin para comunicación.
  • Alta precisión: Resolución de hasta 12 bits con pasos de 0.0625°C.
  • Amplitud de medición: Ideal para una variedad de entornos con rangos de temperatura amplios.
  • ID único: Puedes conectar múltiples sensores en un mismo bus de datos.
  • No requiere calibración.

Limitaciones

  • Velocidad de conversión: Para la máxima resolución de 12 bits, el tiempo de conversión es de 750 ms, lo que puede ser lento para algunas aplicaciones.
  • Rango de precisión: Fuera del rango de -10°C a 85°C, la precisión puede verse reducida.

Estas características hacen del DS18B20 una excelente opción para proyectos de medición de temperatura, ya sea en aplicaciones domésticas, industriales o experimentales.


Display TM1637

El TM1637 es un controlador de display de 7 segmentos de uso común, que permite controlar hasta 4 dígitos con facilidad utilizando solo 2 pines de un microcontrolador (comunicación tipo I2C-like). Está integrado en muchos módulos de displays de 7 segmentos y es ideal para proyectos de Arduino y otras plataformas. A continuación te doy una lista de sus características principales:

Características del Display TM1637

  1. Controlador de 4 dígitos:
    • El chip TM1637 puede controlar hasta 4 dígitos en un display de 7 segmentos.
    • Cada dígito puede mostrar números del 0 al 9 y algunas letras y símbolos (como A, b, C, d, E, F).
  2. Conexión simplificada:
    • Utiliza solo 2 pines para la comunicación con el microcontrolador:
      • CLK (Reloj).
      • DIO (Datos).
    • Aunque no usa el protocolo I2C estándar, sigue un patrón similar.
  3. Brillo ajustable:
    • El brillo del display es programable en 8 niveles diferentes, lo que permite ajustarlo según las condiciones de iluminación.
  4. Voltaje de operación:
    • Funciona con un voltaje de 3.3V a 5V, lo que lo hace compatible con la mayoría de microcontroladores como Arduino, ESP32, y Raspberry Pi.
  5. Bajo consumo de energía:
    • El controlador TM1637 tiene un bajo consumo de energía, lo que lo hace adecuado para proyectos alimentados por baterías.
  6. Pantalla de punto decimal:
    • Cada dígito tiene un punto decimal (DP) que puede ser encendido o apagado de manera independiente, lo que permite la visualización de números decimales o para indicar algún estado.
  7. Facilidad de uso:
    • Existe una amplia gama de librerías disponibles para controlar el TM1637 en diferentes plataformas de hardware, lo que simplifica su programación.
    • En Arduino, la librería TM1637Display proporciona métodos sencillos para mostrar números, encender/apagar puntos decimales, ajustar el brillo, etc.
  8. Multiplexado interno:
    • El chip TM1637 se encarga del multiplexado de los dígitos, por lo que no es necesario que el microcontrolador gestione el refresco de la pantalla.
  9. Almacenamiento en buffer:
    • El controlador tiene un buffer de datos interno para almacenar los dígitos y símbolos que se mostrarán, permitiendo que el microcontrolador envíe los datos y luego se dedique a otras tareas.
  10. Comunicación rápida:
    • El protocolo de comunicación pseudo-I2C es rápido y eficiente, permitiendo la actualización de la pantalla en tiempo real.

Ventajas del TM1637

  • Simplicidad en la conexión: Solo requiere 2 pines para controlar hasta 4 dígitos, liberando pines en el microcontrolador.
  • Fácil control: Existen librerías que simplifican el uso del controlador, especialmente en Arduino.
  • Brillo ajustable: Puedes modificar la intensidad de la pantalla para adaptarse a diferentes condiciones de iluminación.
  • Punto decimal: Ideal para mostrar valores con decimales.

Aplicaciones comunes:

  • Relojes digitales.
  • Termómetros digitales.
  • Contadores de tiempo o eventos.
  • Visualización de estados o lecturas de sensores.

Limitaciones

  • Capacidad limitada: Solo controla 4 dígitos, lo que puede no ser suficiente para proyectos que requieren la visualización de más datos.
  • Simbolismo limitado: Los displays de 7 segmentos tienen una capacidad limitada para mostrar caracteres alfanuméricos más complejos.

El TM1637 es una solución de bajo costo, fácil de usar y eficiente para agregar pantallas de 7 segmentos a tus proyectos de electrónica.


Un resistor de 4.7 Kohm


PCB

Descargar archivo gerber –> pcb alarma ir


Circuito


Diagrama de Conexión

  1. Conexión del Display TM1637:
    • CLK (Clock) → Pin 3 de Arduino.
    • DIO (Data) → Pin 4 de Arduino.
    • VCC → 5V.
    • GND → GND.
  2. Conexión del Sensor DS18B20:
    • VCC → 5V.
    • GND → GND.
    • DQ (Data) → Pin 2 de Arduino, con una resistencia de 4.7kΩ entre DQ y VCC.

Código Fuente

A continuación, te dejo el código completo para este proyecto. El código lee la temperatura del sensor DS18B20, la muestra en el display TM1637 y maneja el signo negativo.

Este código fuente es un programa en Arduino que utiliza un sensor de temperatura DS18B20 para leer la temperatura ambiente y luego la muestra en un display de 7 segmentos TM1637. A continuación te explico el código en detalle:

Librerías

  • TM1637Display.h: Proporciona las funciones necesarias para controlar el display de 7 segmentos TM1637.
  • OneWire.h: Permite la comunicación con dispositivos que usan el protocolo OneWire, como el DS18B20.
  • DallasTemperature.h: Facilita la interacción con sensores de temperatura como el DS18B20.

Definición de pines

  • RELOJ (pin 3) y DATOS (pin 4): Estos son los pines a los que conectas el display TM1637.
  • BUS_UNICO (pin 2): Este es el pin donde se conecta el sensor de temperatura DS18B20 para transmitir los datos.
  • Las instancias pantalla, unAlambre y sensores permiten el control del display y la comunicación con el sensor DS18B20.

Función setup()

  • pantalla.setBrightness(0x0a): Ajusta el brillo del display TM1637. El valor 0x0a establece un brillo medio.
  • pantalla.showNumberDec(0): Muestra el número 0 en el display al iniciar.
  • sensores.begin(): Inicializa la comunicación con el sensor de temperatura DS18B20.
  • Serial.begin(9600): Configura la velocidad de transmisión de datos por el puerto serial a 9600 baudios, lo que permite monitorear las lecturas de temperatura en el Monitor Serial de Arduino.

Función loop()

sensores.requestTemperatures()

  • Esta función le pide al sensor que realice una lectura de temperatura.

float temperaturaC = sensores.getTempCByIndex(0)

  • Esta línea obtiene la temperatura en grados Celsius desde el sensor DS18B20. La función getTempCByIndex(0) obtiene la temperatura del sensor que está conectado en la posición 0 (si hay varios sensores en el bus OneWire).

Error de lectura (-127)

  • Si la lectura de la temperatura es -127, significa que hay un error (el sensor no está conectado correctamente o está dañado).
  • Si esto ocurre, se muestra -99 en el display y se imprime un mensaje de error en el Monitor Serial.

Mostrar la temperatura

  • Si no hay error, el valor de la temperatura se convierte en un número entero y se muestra en el display.
  • La temperatura también se imprime en el Monitor Serial, permitiendo visualizarla en grados Celsius con una precisión decimal.

delay(1000)

  • Esta línea inserta una pausa de 1 segundo entre las lecturas de temperatura.

Este código permite leer la temperatura ambiente utilizando el sensor DS18B20 y mostrarla en un display TM1637. Además, se verifican errores en la conexión del sensor y se maneja ese error mostrando -99 en el display. La temperatura también se puede monitorear a través del Monitor Serial.


No te pierdas ningún video más suscríbete a nuestro canal de telegram https://t.me/carlosvolt_electronica_robotica



PROYECTO RECOMENDADO

Un comentario en “Termómetro digital con display hw-069 y sensor ds18b20

Deja una respuesta