Sensor de temperatura Arduino DS18b20 –

En este tutorial, veré cómo configurar el sensor de temperatura Arduino DS18b20 y cualquier otra cosa que necesite saber al respecto.

Este proyecto es muy bueno si desea configurar un registrador de datos o simplemente algo para monitorear las temperaturas de una habitación determinada. Podrías combinar este tutorial con otro para crear un sensor inteligente bastante bueno.

Por ejemplo, podría usar algo como un zumbador piezoeléctrico para alertarle si la temperatura cae fuera de cierto rango.

A lo largo de este tutorial, le mostraré los conceptos básicos para conectar el DS18B20 al Arduino correctamente. También agregaré algunos LED para demostrar la funcionalidad del circuito y el código.

Si quieres estar al día de todos mis proyectos y mucho más, asegúrate de seguirme en cualquiera de las principales redes sociales.

Equipo

En este tutorial, usaré algunos LED para representar la temperatura actual del sensor de temperatura. Si solo desea seguir con el software, no es necesario que agregue estos.

Puede encontrar la lista completa de equipos a continuación.

Recomendado

Arduino Uno

Sensor de temperatura DS18B20

Resistencia de 4.7k ohmios

Tablero de circuitos

Alambre de tablero

Opcional

3 resistencias de 100 ohmios

LED rojo

LED verde

LED amarillo

Video

El siguiente video explicará todos los pasos que debe seguir para poner en funcionamiento este proyecto de sensor de temperatura fría.

Si prefiere tutoriales escritos, puede encontrarlos justo debajo del video.

¿Adblock bloquea el video? Apóyenos suscribiéndose a nuestro servicio sin publicidad.

El circuito Arduino DS18B20

El circuito para el sensor Arduino DS18B20 es bastante simple y si no desea los LED, simplemente deje esa parte del circuito afuera.

A continuación, describiré rápidamente el sensor de temperatura; sin embargo, el resto del equipo es bastante sencillo y no necesita explicación.

Si ha leído mi guía sobre el DS18B20 con Raspberry Pi, sabrá exactamente qué es este dispositivo. Para cualquiera que no lo haya hecho, el DS18B20 es un sensor de temperatura digital que es capaz de leer temperaturas dentro de 0.05 ° C.

El DS18B20 también tiene soporte para un cable, lo que significa que es capaz de compartir un solo cable con otros dispositivos que también admiten un cable.

En este tutorial, utilizo una versión impermeable del DS18B20, por lo que parece un cable largo y grueso con 3 cables que sobresalen de un extremo. Si obtiene el dispositivo sin extras, simplemente se ve como un transistor normal.

Ahora pasemos a armar el circuito.

1. Primero, conecte el pin 3v3 del Arduino al riel positivo y un pin de tierra al riel de tierra en la placa de pruebas.

2. Ahora coloque el sensor DS18B20 en la placa de pruebas.

3. Coloque una resistencia de 4.7k entre el cable positivo (cable rojo) y el cable de salida (cable blanco) del sensor.

4. A continuación, coloque un cable desde el cable positivo (cable rojo) hasta el riel positivo 3v3.

5. Vuelva a colocar un cable desde el cable de salida hasta el pin n. ° 5 del Arduino. Coloque un cable desde el cable de tierra (cable negro) hasta el riel de tierra.

6. Ahora, los siguientes pasos son opcionales y solo son necesarios si desea los LED.

7. Coloque un cable desde el riel de tierra al riel de tierra en el lado opuesto de la placa de pruebas.

8. Coloque los 3 LED en la placa de pruebas. (Rojo, amarillo y verde)

9. Conecte una resistencia de 100 ohmios a cada LED y haga que vaya al riel de tierra.

10. Ahora haga que un cable provenga de los siguientes pines de Arduino: el pin 2 al LED verde, el pin 3 a un LED amarillo y finalmente el rojo al pin 4.

11. Ahora que está todo configurado el circuito, es el momento de pasar al código. Si encuentra algún problema con el circuito, consulte el diagrama a continuación o deje un comentario en nuestro foro.

Instalación de un soporte de cable

Ahora, de forma predeterminada, Arduino no tiene soporte para un solo cable, por lo que tendremos que descargar e instalar la biblioteca para esto. Si desea obtener información detallada sobre qué es un cable, asegúrese de consultar el sitio web oficial de Arduino.

Ahora bien, este es un proceso bastante sencillo por el que los guiaré ahora.

1. En primer lugar, descargue la última versión de la biblioteca One Wire, puede descargarla aquí. (Espejo)

2. Una vez descargado, abra el boceto.

3. Aquí, suba al boceto, incluya la biblioteca y luego agregue la biblioteca .zip.

4. Ahora debería decir algo como Biblioteca agregada a bibliotecas. Marque el menú «incluir biblioteca».

5. Ahora vuelva al boceto, incluya la biblioteca y luego, debajo de las bibliotecas contribuidas, encontrará un cable, haga clic en él.

6. Este proceso agregará un #include en la parte superior de su archivo y se agregará a su Arduino en la próxima carga.

Instalación de la biblioteca de temperatura de Dallas

Para facilitar las cosas, sugeriré instalar una biblioteca para manejar los datos que provienen del sensor. Esta biblioteca hará que sea mucho más fácil que escribir el código de procesamiento de datos usted mismo.

Si desea hacerlo usted mismo sin una biblioteca adicional, asegúrese de consultar esta página de cable para obtener más información. Alternativamente, puede mirar un sensor analógico como el TMP36 que es muy fácil de poner en marcha en el Arduino.

Si está satisfecho con el uso de la biblioteca de sensores de temperatura de Dallas, simplemente haga lo siguiente.

1. Primero, descargue la biblioteca de sensores de temperatura de Dallas, puede descargarla desde aquí. (Espejo)

2. Ahora, una vez que se haya descargado, ingrese a la aplicación de bocetos y repita los pasos que hicimos antes.

3. Vaya al boceto, incluya la biblioteca y luego agregue la biblioteca .zip.

4. Ahora debería decir algo como Biblioteca agregada a bibliotecas. Marque el menú «incluir biblioteca».

5. Así que ahora vuelva al boceto, incluya la biblioteca y luego, en las bibliotecas contribuidas, encontrará DallasTemperature. Haz click en eso.

6. Esto agregará automáticamente un #include en la parte superior del script. La biblioteca se sincronizará con su Arduino cuando la cargue.

Ahora pasemos a escribir el resto del código para obtener la temperatura del sensor y encender el LED correcto.

Código Arduino DS18B20

En la siguiente parte del tutorial, revisaré el código para leer el sensor. Es bastante sencillo, sin embargo, si eres nuevo en la codificación, puede ser un poco abrumador.

Si desea descargar el código, puede encontrarlo disponible para descargar en GitHub.

Para comenzar, necesitamos incluir los encabezados OneWire y dallasTemperature para que podamos usarlos dentro del código. Estos ya deberían estar allí si siguió los pasos anteriores.

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

A continuación, declaramos todas las variables que necesitaremos usar a lo largo del script. El primero de ellos representa los números de pin a los que están conectados los dispositivos.

La variable de temperatura de flotación es donde almacenaremos nuestro valor de temperatura.

Las variables lowerLimit y upperLimit representan nuestras temperaturas umbral. Cualquier cosa por debajo del límite inferior activará el LED amarillo para que se encienda. Cualquier cosa por encima del límite superior encenderá el LED rojo. Cualquier cosa entre estos encenderá el LED verde.

int greenLedPin = 2; int yellowLedPin = 3; int redLedPin = 4;  int temp_sensor = 5;  float temperature = 0; int lowerLimit = 15; int higherLimit = 35;

A continuación, creamos un objeto OneWire usando nuestro pin que definimos anteriormente (5). Si tiene una gran cantidad de sensores de 1 cable, se sugiere que los divida en varios pines. Para cada sensor, cree un nuevo objeto Onewire, por ejemplo, OneWire oneWirePin2 (temp_sensor2);

Ahora creamos nuestro objeto de sensor de temperatura de Dallas pasando nuestra referencia de OneWire a la clase.

OneWire oneWirePin(temp_sensor); DallasTemperature sensors(&oneWirePin);

En nuestra función de configuración, activamos la interfaz serial de Arduino para que podamos monitorear las líneas de salida en el código. Aquí es también donde debemos configurar nuestros LED para que actúen como salidas. Por último, hacemos una llamada a sensins.begin (), esto configurará nuestro sensor para que podamos comenzar a solicitarle datos.

void setup(void){   Serial.begin(9600);      //Setup the LEDS to act as outputs   pinMode(redLedPin,OUTPUT);   pinMode(greenLedPin,OUTPUT);   pinMode(yellowLedPin,OUTPUT);      sensors.begin(); }

En este segmento, tenemos algunas líneas de salida para avisarnos cuando ha solicitado con éxito todas las temperaturas de los sensores conectados a nuestro pin de un solo cable (5).

A continuación, almacenamos el valor de los sensores.getTempCByIndex (0) en la variable de temperatura. Si desea obtener la temperatura en grados Fahrenheit, simplemente cambie C a F. Por ejemplo sensores.getTempFByIndex (0). Además, el 0 se refiere a qué sensor queremos información. 0 = el primer sensor, si tuvieras un segundo sensor, entonces sería 1.

void loop(){   Serial.print("Requesting Temperatures from sensors: ");   sensors.requestTemperatures();    Serial.println("DONE");      temperature = sensors.getTempCByIndex(0);

Luego, bajamos todos los LED para que solo el LED correcto permanezca encendido cuando ejecutamos el siguiente segmento de código. También imprimimos dos declaraciones, la primera es una cadena simple que dice Temperature is y luego la temperatura misma. Terminamos este texto en el siguiente segmento de código que se describe a continuación.

digitalWrite(redLedPin, LOW);   digitalWrite(greenLedPin, LOW);   digitalWrite(yellowLedPin, LOW);      Serial.print("Temperature is ");   Serial.print(temperature);

Esta última sección compara nuestros valores de temperatura con nuestros valores predefinidos. Dependiendo del resultado, encenderá el LED correspondiente. Por ejemplo, el primero if La declaración dice que si la temperatura es menor o igual al valor límite inferior, haga esto.

Por último, también demoramos 500 ms antes de repetir el proceso nuevamente.

//Setup the LEDS to act as outputs if(temperature <= lowerLimit){      Serial.println(", Yellow LED is Activated");      digitalWrite(yellowLedPin, HIGH); }  else if(temperature > lowerLimit && temperature < higherLimit){      Serial.println(", Green LED is Activated");      digitalWrite(greenLedPin, HIGH); }  else if(temperature >= higherLimit){     Serial.println(", Red LED is Activated");     digitalWrite(redLedPin, HIGH); } delay(500); }

Solución de problemas

Si encuentra algún problema, encontrará que, por lo general, hay algunas cosas que pueden salir mal. Solo enumeraré algunos de los problemas que pueden surgir.

  • Si encuentra que el sensor de temperatura DS18B20 devuelve resultados extraños, es posible que no esté recibiendo suficiente energía o que esté solicitando datos demasiado rápido.
  • Para solucionar el problema de energía, sugeriría reducir la carga en el riel que suministra energía al sensor. Para reducir la cantidad de veces que solicita datos al sensor, aumente el tiempo de retardo a algo un poco más alto.
  • Si el sensor está devolviendo altas temperaturas constantes todo el tiempo, entonces es posible que no esté conectado correctamente a la placa de pruebas. Intente asegurarse de que las conexiones sean seguras antes de reiniciar su Arduino.

Estos problemas no deberían ocurrir con el circuito y el código predeterminados de este tutorial, pero pueden ocurrir si cambia las cosas.

Espero que este tutorial del sensor de temperatura Arduino DS18b20 haya ayudado a configurar todo correctamente. Si me he perdido algo, cometí un error o simplemente quieres dejar un comentario, no dudes en dejar un comentario a continuación.