Como projetar um monitor de temperatura da água baseado em Arduino usando o sensor de temperatura DS18B20 de 1 fio

Cómo diseñar un monitor de temperatura del agua basado en Arduino utilizando el sensor de temperatura de 1 cable DS18B20

Los sensores ambientales son de gran importancia en aplicaciones integradas. Muchos sensores de temperatura miden la temperatura ambiente o la temperatura de una superficie. Para medir la temperatura del agua y otros fluidos, se requieren sensores de temperatura impermeables. Uno de estos sensores de temperatura es el DS18B20. Este sensor puede medir la temperatura del aire, líquidos como el agua y el suelo. El sensor se presenta en dos formatos, uno de los cuales es un módulo resistente al agua. Se puede utilizar para detectar la temperatura en aplicaciones como estufas de vapor eléctricas, hervidores eléctricos y almacenamiento de agua con temperatura controlada.

En este proyecto, demostramos cómo funciona el DS18B20 interactuando con Arduino. El sensor no requiere que ningún componente externo interactúe con un controlador/computadora. Utiliza una interfaz de un solo cable para la comunicación de datos bidireccional con un controlador, lo que hace que su interfaz sea sencilla. El sensor viene en un paquete TO-92. Está disponible en dos formatos: en uno viene en un paquete simple similar a un transistor y en el otro está encerrado en una sonda impermeable.

Termómetro digital de 1 hilo DS18B20

Ejemplos de termómetro digital de 1 cable DS18B20

Para una demostración en una placa de pruebas, en este proyecto utilizamos el factor de forma similar a un transistor. Arduino lee las lecturas de temperatura del sensor y se muestran en la pantalla OLED SSD1306.

Componentes necesarios

  1. Arduino UNO x1
  2. Sensor de temperatura 1 hilo DS18B20 x1
  3. Pantalla OLED SSD1306 x1
  4. Resistencia de 4,7 K x 1
  5. tablero de prueba
  6. Cables de conexión/cables de puente

Sensor de temperatura de 1 cable DS18B20
DS18B20 es un termómetro digital de 1 cable de Dallas Semiconductor Corp. Se basa en una interfaz de 1 cable que requiere solo un pin para las conexiones del circuito. El sensor tiene un código de serie único de 64 bits para direccionar una interfaz de 1 cable. Tiene capacidad multipunto, lo que permite la interfaz de muchos sensores DS18B20 en una sola línea de datos como una red distribuida. También es posible alimentar el sensor desde la propia línea de datos.

El sensor produce una medición de temperatura con escalas de resolución de 9 a 12 bits. El rango de temperatura de funcionamiento del DS18B20 es de -55 ˚C a 125 ˚C con una precisión de +/-0,5 ˚C. La resolución predeterminada del sensor es de 12 bits, lo que le permite medir la temperatura con una precisión de 0,0625˚C. Este sensor de temperatura tarda menos de 750 ms en convertir una lectura. Por lo tanto, es fácilmente posible obtener mediciones de temperatura a intervalos de 1 segundo desde la red de sensores.

El voltaje de funcionamiento del DS18B20 es de 3,3~5 V y el consumo de corriente es de aproximadamente 1 mA. Por lo tanto, se puede conectar fácilmente a cualquier microcontrolador o microcomputadora siempre que esté disponible una biblioteca de software para interfaz de 1 cable para esa plataforma. Con un consumo de corriente mínimo y una interfaz sencilla de 1 cable, incluso es posible conectar el DS18B20 con microcomputadoras de bajo consumo como la Raspberry Pi.

DS18B20 tiene el siguiente diagrama de pines:

Diagrama de pines del sensor de temperatura de 1 cable DS18B20

Diagrama de pines del sensor de temperatura de 1 cable DS18B20

En la versión resistente al agua del sensor, los pines se identifican mediante un código de colores. Las líneas GND, Datos y VDD se identifican mediante cables negros, amarillos y rojos. Cabe señalar que también hay disponibles algunos modelos chinos del sensor. En estos modelos la configuración de pines es invertida, es decir, en la vista frontal el pin izquierdo es VDD, luego Datos y el pin más a la derecha es GND.

Conexiones de circuito
En este proyecto conectamos un OLED DS18B20 y un SSD1306 con Arduino UNO. Para interconectar el DS18B20, conecte los pines GND y VDD del sensor a tierra y los pines de salida de 5 V del Arduino, respectivamente. El pin de datos del sensor se puede conectar a cualquier GPIO. En este proyecto, el pin de datos está conectado al D2 de Arduino. Para estabilizar la línea de datos, se recomienda una resistencia pull-up de 4,7 K para la comunicación entre el pin de datos y el pin de alimentación. Las resistencias pull-up incorporadas en Arduino son insuficientes para implementar un protocolo de 1 cable. Si no se conecta una resistencia externa al interactuar con Arduino, es posible que la placa no lea correctamente el sensor. También es importante garantizar las conexiones correctas para el suministro de tensión. Un voltaje inverso aplicado al sensor puede calentarlo fácilmente hasta una ruptura permanente.

La pantalla OLED está conectada para mostrar lecturas de temperatura. El SSD1306 interactúa con Arduino utilizando el puerto SPI físico de Arduino. Para interconectar el SSD1306 OLED a través del puerto SPI físico, conecte los pines D0/SCK y D1/MOSI del SSD1306 OLED a los pines D13 y D11 del Arduino, respectivamente. Conecte los pines DC, RESET y CS del SSD1306 a los pines D9, D10 y D8 del Arduino respectivamente.

Diagrama de circuito del monitor de temperatura del agua DS18B20 basado en Arduino

Diagrama de circuito del monitor de temperatura del agua DS18B20 basado en Arduino

Bibliotecas Arduino para DS18B20

En primer lugar, para trabajar con DS18B20, se requiere una biblioteca de cables. Se puede encontrar en el administrador de bibliotecas Arduino IDE. También se puede descargar manualmente como ZIP desde este enlace. La biblioteca de un cable se utiliza para gestionar la comunicación de datos a través de una interfaz de un cable. La otra biblioteca requerida para DS18B20 es una biblioteca específica de hardware para implementar el protocolo Dallas de 1 cable. Se puede encontrar en el administrador de la biblioteca como DallasTemperature o descargarlo como un archivo ZIP desde este enlace.

Bosquejo de Arduino

Como funciona
El sensor tiene su protocolo de 1 cable específico de hardware, implementado por la biblioteca de temperatura de Dallas. El Arduino se comunica con el DS18B20 mediante un protocolo de 1 cable. El protocolo se puede implementar en cualquier GPIO. Arduino lee la temperatura del sensor detectando las señales específicas del protocolo en su pin de datos y almacenando el valor en una variable. La medición de temperatura leída luego se muestra en el SSD1306 OLED.

Guía de programación
El boceto comienza importando las bibliotecas OneWire y DallasTemperature para trabajar con el sensor de temperatura DS18B20. Luego, se importan las bibliotecas SPI, Wire, Adafruit_GFX y Adafruit_SSD1306 para que funcionen con la pantalla OLED. Se define una constante para indicar la línea de datos del sensor de temperatura. Se crea una instancia de un objeto de la clase OneWire y se utiliza el mismo objeto para crear una instancia de un objeto de la clase DallasTemperature. Se definen constantes para la resolución de la pantalla y las conexiones de los pines de la pantalla OLED. Se crea una instancia de un objeto de clase Adafruit_SSD1306 con SPI especificado explícitamente como protocolo de interfaz. Se declara una variable global 'temp' para almacenar valores de temperatura. Se almacena un mapa de bits en PROGMEM para el registro del sitio y se define una matriz para el mismo.

En la función de configuración, el DS18B20 se inicializa llamando al método sensors.begin. La velocidad en baudios para la comunicación de datos es de 9600 bps llamando al método Serial.begin. La pantalla OLED se inicializa llamando al método display.begin y el logotipo del sitio web se muestra en la pantalla OLED llamando al método display.drawBitmap.

En la función de bucle, la lectura de temperatura del DS18B20 se realiza llamando al método Sensors.requestTemperatures y se accede al valor buscado en una variable a través del método Sensors.getTempCByIndex(0). La medición de temperatura leída se transfiere al puerto serie y se muestra en la pantalla OLED.

Resultado

Circuito de monitoreo de temperatura del agua DS18B20 basado en Arduino

Circuito de monitoreo de temperatura del agua DS18B20 basado en Arduino.

Vídeo de demostración

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.