Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

En este artículo, te mostraremos cómo conectar el sensor de temperatura digital de 1 cable DS18B20 a tu placa de Arduino. Con tan solo un cable, podrás obtener lecturas precisas de temperatura y llevar a cabo interesantes proyectos de domótica, control de clima o monitoreo ambiental. ¡Sigue leyendo para descubrir cómo realizar esta conexión de forma sencilla y eficiente!

Una de las formas más fáciles y rentables de integrar sensores de temperatura en su proyecto Arduino es utilizar un sensor de temperatura de 1 cable DS18B20. Estos sensores son bastante precisos y no requieren ningún componente externo para funcionar. Entonces, con solo unas pocas conexiones y algo de código Arduino, ¡puedes medir la temperatura en poco tiempo!

Sensor de temperatura de 1 cable DS18B20

El DS18B20 es un 1-Cable® Sensor de temperatura fabricado por Dallas Semiconductor (adquirido por Maxim Integrated). Dado que es un dispositivo de 1 cable, solo necesita un pin digital para comunicarse con el microcontrolador.

El sensor suele estar disponible en dos factores de forma. Uno viene en un paquete TO-92 que se asemeja a un simple transistor. La otra variante es una sonda impermeable, que resulta más útil cuando se mide algo lejano, bajo el agua o bajo tierra.

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino
Tipos de sensores de temperatura DS18B20

El sensor de temperatura DS18B20 es bastante preciso y no requiere ningún componente externo para funcionar. Tiene un rango de temperatura de -55°C a +125°C y una precisión de ±0,5°C.

La resolución del sensor de temperatura se puede configurar en 9, 10, 11 o 12 bits. Sin embargo, la resolución de encendido predeterminada es de 12 bits (es decir, precisión de 0,0625 °C).

El sensor funciona con una fuente de alimentación de 3 V a 5,5 V y consume solo 1 mA durante las conversiones de temperatura activas.

Aquí están las especificaciones:

Fuente de alimentación 3V a 5,5V
Consumo actual 1mA
Rango de temperatura -55 a 125°C
exactitud ±0,5 °C
resolución 9 a 12 bits (seleccionable)
tiempo de conversión < 750 ms

Múltiples DS18B20 en un solo bus

Una de las características del DS18B20 es que pueden coexistir varios DS18B20 en el mismo bus 1-Wire. Debido a que cada DS18B20 está preprogramado con un código de serie único de 64 bits, se pueden distinguir entre sí.

Esta función puede resultar extremadamente útil si necesita controlar varios DS18B20 repartidos en un área grande.

Consulte este tutorial para aprender a leer varios sensores de temperatura DS18B20.

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino
Conexión de múltiples sensores de temperatura digitales DS18B20 a Arduino
Una de las características del DS18B20 es que pueden coexistir varios DS18B20 en el mismo bus 1-Wire. Dado que cada DS18B20 está preprogramado con una versión única de 64 bits…

Distribución de pines del sensor DS18B20

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

Tierra es el pin de tierra.

DQ Es un bus de datos de 1 cable que debe conectarse a un pin digital en el microcontrolador.

VDD El pin suministra energía al sensor, que puede estar entre 3,3V y 5V.

Cableado de un sensor de temperatura DS18B20 a un Arduino

Conectemos el DS18B20 al Arduino.

Las conexiones son sencillas. Comience conectando VDD al pin de 5V del Arduino y GND a tierra.

Conecte el pin de señal DQ al pin digital 2 del Arduino. Para mantener estable la transferencia de datos, también necesita conectar la resistencia pull-up de 4,7 kOhm entre los pines de señal y alimentación (nota: los pull-ups internos del Arduino no hacen esto). Trabaja aquí).

Para evitar sobrecalentamiento y daños, asegúrese de que el DS18B20 esté conectado correctamente.

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino
Cableado del sensor de temperatura DS18B20 al Arduino

Si está utilizando la versión resistente al agua del DS18B20, conecte el cable rojo a 5 V, el cable negro a tierra y el cable amarillo al pin digital 2 del Arduino. Aún necesitas conectar una resistencia pullup de 4.7K entre los datos y los 5V.

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino
Cableado del sensor de temperatura impermeable DS18B20 al Arduino

Instalar biblioteca para DS18B20

El protocolo 1-Wire es un poco complicado y requiere mucho código para que funcione. DallasTemperatura.h fue escrito para abstraer esta complejidad innecesaria y permitirnos emitir comandos simples para obtener lecturas de temperatura del sensor.

Para instalar la biblioteca, navegue hasta Bosquejo > Incluir biblioteca > Administrar bibliotecas… Espere a que el administrador de la biblioteca descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

Filtra tu búsqueda escribiendo 'ds18b20'. Debería haber algunas entradas. Buscar Dallastemperatura de Miles Burton. Haga clic en esta entrada y luego seleccione «Instalar».

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

Dallas Temperature es una biblioteca específica de hardware que maneja funciones de nivel inferior. Hay que combinarlo con eso. Biblioteca de un solo cable para comunicarse con cualquier dispositivo de un solo cable, no solo el DS18B20. Instale esta biblioteca también.

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

código de ejemplo de arduino

El siguiente esquema le brindará una comprensión integral de la lectura de lecturas de temperatura de un sensor de temperatura DS18B20 y puede servir como base para futuros experimentos y proyectos prácticos.

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into digital pin 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);	

// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);

void setup(void)
{
  sensors.begin();	// Start up the library
  Serial.begin(9600);
}

void loop(void)
{ 
  // Send the command to get temperatures
  sensors.requestTemperatures(); 

  //print the temperature in Celsius
  Serial.print("Temperature: ");
  Serial.print(sensors.getTempCByIndex(0));
  Serial.print((char)176);//shows degrees character
  Serial.print("C  |  ");
  
  //print the temperature in Fahrenheit
  Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
  Serial.print((char)176);//shows degrees character
  Serial.println("F");
  
  delay(500);
}

Así es como se ve la salida en el monitor serie.

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

Explicación del código:

El boceto comienza con la inclusión del OneWire.h Y DallasTemperature.h Bibliotecas y declaración del pin Arduino al que está conectado el pin de señal del sensor.

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

Para comunicarnos con el sensor DS18B20 hacemos dos cosas. Primero, creamos un objeto de un solo cable y pasamos el pin de señal del sensor como parámetro. En segundo lugar, creamos un objeto de biblioteca DallasTemperature y pasamos la referencia del objeto One-Wire (que acabamos de crear) como parámetro.

OneWire oneWire(ONE_WIRE_BUS);	
DallasTemperature sensors(&oneWire);

En el área de configuración establecemos comunicación serie con el PC y lo llamamos begin() Función. El begin() La función busca en el bus sensores DS18B20 conectados y establece la resolución de bits (12 bits) para cada uno.

void setup(void) {
  sensors.begin();	// Start up the library
  Serial.begin(9600);
}

En la sección de bucle llamamos al requestTemperatures() Función que indica a todos los sensores del bus que realicen una conversión de temperatura.

Entonces llamaremos getTempCByIndex(deviceIndex) función, donde deviceIndex es la posición del sensor en el autobús. Esta función lee y devuelve la lectura de temperatura del sensor correspondiente.

Si solo tiene un DS18B20 en el autobús, ajuste deviceIndex a 0.

void loop(void) { 
  // Send the command to get temperatures
  sensors.requestTemperatures(); 

  //print the temperature in Celsius
  Serial.print("Temperature: ");
  Serial.print(sensors.getTempCByIndex(0));
  Serial.print((char)176);//shows degrees character
  Serial.print("C  |  ");
  
  //print the temperature in Fahrenheit
  Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
  Serial.print((char)176);//shows degrees character
  Serial.println("F");
  
  delay(500);
}

Funciones más útiles en la biblioteca DallasTemperature.h

Hay muchas funciones útiles que puede utilizar con el objeto DallasTemperature. Algunos de ellos se enumeran a continuación:

  • setResolution() La función establece la resolución del ADC interno del DS18B20 en 9, 10, 11 o 12 bits, correspondientes a 0,5 °C, 0,25 °C, 0,125 °C y 0,0625 °C, respectivamente.
  • bool getWaitForConversion() La función devuelve el valor. waitForConversion Marca útil para determinar si una conversión de temperatura se ha completado o no.
  • setHighAlarmTemp() Y setLowAlarmTemp() Las funciones configuran las alarmas internas de temperatura alta y baja de un dispositivo en grados Celsius. El rango de temperatura aceptable está entre -55 y 125°C.
  • bool hasAlarm() La función devuelve verdadero si la temperatura excede el punto de ajuste de alarma alto o bajo.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded




Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino

Una de las formas más simples y económicas de incorporar la detección de temperatura en tu proyecto de Arduino es utilizando un Sensor de Temperatura DS18B20 de 1 cable. Estos sensores son bastante precisos y no requieren componentes externos para funcionar. Con solo algunas conexiones y algo de código de Arduino, ¡podrás detectar la temperatura en poco tiempo!

Sensor de Temperatura DS18B20 de 1 cable

El DS18B20 es un sensor de temperatura 1-Wire® fabricado por Dallas Semiconductor (adquirido por Maxim Integrated). Al ser un dispositivo de 1 cable, solo necesita un pin digital para comunicarse con el microcontrolador.

Tipos de Sensor de Temperatura DS18B20

El sensor de temperatura DS18B20 es bastante preciso y no requiere componentes externos para funcionar. Tiene un rango de temperatura de -55°C a +125°C y una precisión de ±0.5°C.

Varios DS18B20 en un solo Bus

Una de las características del DS18B20 es que múltiples sensores DS18B20 pueden coexistir en el mismo bus 1-Wire. Dado que cada DS18B20 está preprogramado con un código serial único de 64 bits, pueden distinguirse entre sí.

Conexión del Sensor DS18B20 a Arduino

Las conexiones son sencillas. Comienza conectando VDD al pin 5V de Arduino y GND a tierra. Conecta el pin de señal DQ al pin digital 2 de Arduino. Para mantener estable la transferencia de datos, también necesitas conectar una resistencia pull-up de 4.7k entre el pin de señal y los pines de poder.

Instalación de Biblioteca para DS18B20

El protocolo 1-Wire es un poco complicado, y se necesita mucho código para hacerlo funcionar. La biblioteca DallasTemperature.h fue escrita para abstraer esta complejidad innecesaria, lo que nos permite emitir comandos simples para obtener lecturas de temperatura del sensor.

Código de Ejemplo de Arduino

El siguiente sketch te proporcionará una comprensión detallada de cómo leer las lecturas de temperatura de un Sensor de Temperatura DS18B20 y puede servir como base para experimentos y proyectos más prácticos.

Aquí tienes cómo se ve la salida en el monitor serie.

Explicación del Código

El sketch comienza incluyendo las bibliotecas OneWire.h y DallasTemperature.h. En la sección de configuración, establecemos la comunicación serial con la PC y llamamos a la función begin(). En la sección del loop, solicitamos las temperaturas a los sensores y mostramos las lecturas de temperatura en grados Celsius y Fahrenheit.

Otras Funciones Útiles en la biblioteca DallasTemperature.h

Hay muchas funciones útiles que puedes utilizar con el objeto DallasTemperature. Algunas de ellas son establecer la resolución del ADC interno del DS18B20, configurar alarmas de temperatura alta y baja, y verificar si la temperatura supera los puntos de alarma.


5 comentarios en «Conexión del sensor de temperatura digital de 1 cable DS18B20 a Arduino»

Deja un comentario