como medir las temperaturas con ds18b20 y arduino 5e98bf88d422e - Electrogeek

Cómo medir las temperaturas con DS18B20 y Arduino Deja un comentario

El sensor DS18B20

Una de las formas más fáciles y baratas de añadir la detección de temperatura a tu proyecto Arduino es usar el sensor de temperatura de 1 cable DS18B20. Estos sensores son bastante precisos y no necesitan componentes externos para funcionar. Así que, con sólo unas pocas conexiones y un poco de código de Arduino, estarás detectando la temperatura en poco tiempo.

Pinout del sensor DS18B20

Cómo conectar el sensor de temperatura DS18B20 a Arduino

Las conexiones son bastante simples. Empieza por conectar el VDD a la clavija de salida de 5V de Arduino y la GND a tierra.

A continuación, conecta el pin de señal digital restante DQ al pin digital 2 en el Arduino. También tendrás que añadir la resistencia pull-up de 4.7k entre la señal y la clavija de alimentación para mantener la transferencia de datos estable. (los pull-ups internos en el arduino no funcionan)

Ten cuidado de que el DS18B20 esté en el lugar correcto. Si lo pones al revés, se calentará y luego se romperá.

Instalación de la librería para el DS18B20

El protocolo de Dallas 1-Wire es algo complejo, y requiere un montón de código para analizar la comunicación. Para saltarnos esta complejidad innecesaria instalaremos la librería DallasTemperature.h para poder emitir comandos simples para obtener lecturas de temperatura del sensor.

Para instalar la librería ve al menú Sketch > Include Library > Manage Libraries.. Espera a que el Administrador de la Librería descargue el índice de las librerías y actualice la lista de librerías instaladas.

Filtra tu búsqueda escribiendo “ds18b20”. Debería haber un par de entradas. Busca DallasTemperature de Miles Burton. Haz clic en esa entrada y luego selecciona Instalar.

Código de Arduino

El siguiente esquema te dará una completa comprensión de cómo leer las lecturas de temperatura del sensor de temperatura DS18B20 y puede servir como base para experimentos y proyectos más prácticos.

#include
#include

// 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);
}

Entonces en el monitor serie tendría que aparecerte la temperatura reflejada como lo siguiente:

serial monitor temperaturas DS18B20 - Cómo medir las temperaturas con DS18B20 y Arduino

El programa comienza incluyendo las librerías OneWire.h y DallasTemperature.h y declarando el Pin de Arduino a la que está conectada la clavija de señal del sensor.

#include
#include

#define ONE_WIRE_BUS 2

A continuación creamos un objeto de un solo cable pasando la clavija de señal del sensor a su constructor. Este objeto de un solo cable nos permite comunicarnos con cualquier dispositivo de un solo cable, no sólo con el DS18B20. Para poder comunicarnos con el sensor DS18B20, necesitamos crear un objeto de la biblioteca de DallasTemperature y pasar la referencia del objeto de un solo cable como parámetro.

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

Una vez creado un objeto de DallasTemperature, podemos emitir a continuación simples comandos para interactuar con el sensor.

  • La función begin() busca los sensores conectados en el bus y establece la resolución de bits (12 bits) para cada uno.
  • La función requestTemperatures() envía un comando para que todos los sensores del bus realicen una conversión de temperatura.
  • La función getTempCByIndex(deviceIndex) lee y devuelve la lectura de temperatura del sensor. deviceIndex no es más que la ubicación del sensor en el bus. Si sólo usas un DS18B20 en el autobús, ponlo en 0.

Otras funciones útiles en la biblioteca de DallasTemperature.h

Hay algunas funciones útiles que puedes utilizar con el objeto DallasTemperature. Algunas de ellas se enumeran a continuación:

  • La función setResolution() establece la resolución del convertidor analógico-digital interno del DS18B20 a 9, 10, 11 o 12 bits, que corresponde a incrementos de 0,5°C, 0,25°C, 0,125°C y 0,0625°C, respectivamente.
  • La función bool getWaitForConversion() devuelve el valor de la bandera waitForConversion. Puede ser útil cuando se quiere comprobar si una conversión de temperatura está completa.
  • La función setHighAlarmTemp() & setLowAlarmTemp() establece las alarmas internas de alta y baja temperatura de un dispositivo en grados centígrados. El rango válido es de -55 a 125°C
  • La función “bool hasAlarm()” se activa si el dispositivo tiene una condición de alarma cuando la temperatura excede el ajuste de temperatura de alarma alta y baja.

Última actualización el 2020-04-16 / Enlaces de afiliados / Imágenes de la API para Afiliados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

0
    0
    Tu Carrito
    Tu carrito esta vacíoVolver a la tienda
    Enviar Whatsapp
    Hola 👋
    ¿En qué podemos ayudarte?