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.
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.
Distribución de pines del sensor DS18B20
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.
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.
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.
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».
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.
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.
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()
YsetLowAlarmTemp()
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.
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.
Interesante tutorial, me ayudó mucho con mi proyecto de Arduino. ¡Gracias por compartir!
¡Gracias por este tutorial! Me gustó lo sencillo que explicaron la conexión del sensor DS18B20 a Arduino, ¡ahora puedo implementarlo en mi proyecto sin problemas! ¡Excelente trabajo!
¡Este tutorial es justo lo que necesitaba para poder conectar mi sensor de temperatura DS18B20 a mi Arduino! ¡Gracias por la explicación clara y sencilla! ¡Excelente trabajo!
¡Qué buena explicación! Me encantó lo fácil que hicieron parecer la conexión del sensor DS18B20 a Arduino. ¡Gracias por este tutorial!
¡Qué útil y claro! Con este tutorial, pude conectar el sensor DS18B20 a mi Arduino sin complicaciones. ¡Gracias por la ayuda!