Conectar ds18b20 a wemos d1


Aprenderemos a conectar el sensor de temperatura ds18b20 a la tarjeta wemos d1, veremos un par de ejemplos de cómo obtener la dirección única y leer la temperatura.

oscar Escrito por oscar 04 September 2022 719 0

DS18B20

En el post Sensor de temperatura ds18b20 Se explica a detalle la definición y caracteristicas de este sensor, lo que vamos a mostrar a continuación es un resumen y las imagenes de referencia para poder conectar él sensor a cualquier controlador, en este caso el esp8266 (wemos d1).

CARACTERÍSTICA VALOR
Voltaje de alimentación 3V a 5,5V
VDD voltaje de alimentación
GND Tierra
DQ Datos
Rango de temperaturas -55ºC a 125ºC
Error (-10ºC a 85ºC) ±0,5ºC
Error (-55ºC a 125ºC) ±2ºC
Resolución programable 9-bit, 10-bit, 11-bit o 12-bit (default)

 

DS18B20

 

Elementos utilizados

Circuito

  • Conecta el pin VCC del DS18B20 al pin 3.3V del Wemos D1.
  • Conecta el pin GND del DS18B20 al pin GND del Wemos D1.
  • Conecta el pin DQ (datos) del DS18B20 al pin D5 (o cualquier otro pin digital compatible) del Wemos D1.
  • Coloca una resistencia de 4.7k ohmios entre el pin VCC y el pin DQ del DS18B20 para establecer la conexión pull-up.
Conectar ds18b20 a wemos d1

Resolución del sensor de temperatura DS18B20

Se refiere a la precisión con la que el sensor puede medir y reportar la temperatura. El DS18B20 es un sensor de temperatura digital de 1-Wire fabricado por Maxim Integrated. Tiene la capacidad de ajustar su resolución para adaptarse a diferentes aplicaciones y requisitos de precisión

El DS18B20 ofrece varias opciones de resolución que afectan directamente la precisión de la medición de temperatura y el tiempo necesario para realizar una conversión. Las opciones de resolución incluyen:

  1. Resolución de 9 bits: En esta configuración, el sensor tomará muestras de temperatura con una precisión de 0.5°C. Cada conversión tomará aproximadamente 93.75 milisegundos.

  2. Resolución de 10 bits: En esta configuración, la precisión mejora a 0.25°C, pero cada conversión tomará alrededor de 187.5 milisegundos.

  3. Resolución de 11 bits: Con esta opción, la precisión se establece en 0.125°C y el tiempo de conversión es de aproximadamente 375 milisegundos.

  4. Resolución de 12 bits: Esta es la configuración de mayor resolución, con una precisión de 0.0625°C. Cada conversión requerirá cerca de 750 milisegundos.

Librerías

Código de prueba

Obtener la direccion del sensor

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

// 2
#define ONE_WIRE_BUS D%

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

void setup() {
  // 4
  Serial.begin(9600);
  sensors.begin();

  // 5
  DeviceAddress deviceAddress;
  sensors.getAddress(deviceAddress, 0);
  Serial.print("Dirección del sensor: ");
  for (uint8_t i = 0; i < 8; i++) {
    Serial.print(deviceAddress[i], HEX);
  }
  Serial.println();
}

void loop() {
}
  1. Cargamos las librerías de OneWire y de DallasTemperature.
  2. Definimos en una variable el pin D5 para la comunicación con el sensor.
  3. Procedemos a crear los objetos de OneWire y DallasTemperature para poder acceder a las funciones y métodos de estas librerías.
  4. Inicializamos la comunicación del sensor con el arduino.
  5. Obtenemos la dirección del sensor digital:
    1. DeviceAddress deviceAddress: declara una variable llamada deviceAddress del tipo DeviceAddress. DeviceAddress es un tipo de dato proporcionado por la biblioteca DallasTemperature que se utiliza para almacenar la dirección única de un dispositivo en el bus OneWire.
    2. sensors.getAddress(deviceAddress, 0): Esta línea de código solicita al objeto sensors que obtenga la dirección del dispositivo en la posición 0 (en caso de que tengas varios sensores conectados al mismo bus OneWire). La dirección única se almacena en la variable deviceAddress.
    3. for (uint8_t i = 0; i < 8; i++) { ... }: Este bucle for se utiliza para recorrer cada byte de la dirección del sensor (8 bytes en total). El índice i va desde 0 hasta 7.
    4. Serial.print(deviceAddress[i], HEX);: En cada iteración del bucle, se imprime el valor del byte en la posición i de la dirección del sensor en formato hexadecimal. Esto mostrará un número de dos dígitos que representa el valor del byte en hexadecimal.

Obtener la temperatura

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

#define ONE_WIRE_BUS D5

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

void setup() {
  Serial.begin(9600);
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();
  float temperature = sensors.getTempCByIndex(0);
  Serial.print("Temperatura: ");
  Serial.println(temperature);
  delay(1000);
}
  1. sensors.requestTemperatures();: Esta función solicita a los sensores DS18B20 que realicen una medición de temperatura. Cuando se llama a esta función, los sensores empiezan a medir la temperatura en su entorno. Es importante tener en cuenta que esta función no devuelve directamente la temperatura, sino que prepara a los sensores para medir y leer posteriormente la temperatura.
  2. float temperature = sensors.getTempCByIndex(0);: Después de haber solicitado las mediciones con requestTemperatures(), esta línea de código obtiene la lectura de temperatura en grados Celsius utilizando la función getTempCByIndex(0). En este caso, se está obteniendo la temperatura del primer sensor (índice 0) en caso de que tengas varios sensores conectados en el mismo bus OneWire.
Palabras clave: wemos d1 sensor ds18b20. sensor de temperatura ds18b20 conectado a wemos d1

Comentario

Debe aceptar antes de enviar