Arduino - Control de temperatura

En este tutorial, vamos a controlar la temperatura de la habitación para mantenerla dentro de un rango cómodo utilizando un Arduino, un sensor de temperatura DS18B20, un ventilador y un elemento calefactor. Cuando la temperatura sea demasiado alta, encienda el ventilador de enfriamiento para ventilar. Cuando la temperatura sea fría, apague el ventilador de enfriamiento y encienda el elemento calefactor.

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Sensor de Temperatura DS18B20 (con Adaptador)
1×Sensor de Temperatura DS18B20 (sin Adaptador)
1×Relé
1×12V DC Ventilador de Refrigeración
1×(Alternativo) 5V DC Ventilador de Refrigeración
1×12V Heating Element
1×Adaptador de Corriente 12V
1×Conector de Alimentación DC
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Buy Note: Many DS18B20 sensors available in the market are unreliable. We strongly recommend buying the sensor from the DIYables brand using the link provided above. We tested it, and it worked reliably.

Acerca del sistema de control de la temperatura ambiente

En resumen, Arduino encenderá el ventilador cuando la habitación esté caliente y encenderá el elemento calefactor cuando la habitación esté fría. A continuación se detalla cómo funciona un sistema de control de temperatura en una habitación, tomando como ejemplo el control de la temperatura de la habitación de 18 °C a 26 °C:

  • Arduino lee la temperatura del sensor de temperatura
  • Si la temperatura supera los 26 °C, Arduino enciende el ventilador y apaga el elemento calefactor
  • Si la temperatura cae por debajo de los 18 °C, Arduino apaga el ventilador y enciende el elemento calefactor

El proceso anterior se repite infinitamente en el bucle.

El ventilador funciona como un ventilador.

Si no conoces el sensor de temperatura, el elemento calefactor y el ventilador (disposición de pines, cómo funciona y cómo programarlos...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Diagrama de cableado para el control de temperatura con Arduino

This image is created using Fritzing. Click to enlarge image

Tenga en cuenta que, con fines de simplificación, el diagrama anterior muestra dos adaptadores de corriente de 12 V CC, pero en la práctica puede usar un solo adaptador de 12 V CC para el ventilador y el elemento calefactor.

Código de Arduino

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-control-temperature */ #include <OneWire.h> #include <DallasTemperature.h> const int TEMP_THRESHOLD_UPPER = 26; // °C, upper threshold of temperature, change to your desire value const int TEMP_THRESHOLD_LOWER = 18; // °C, lower threshold of temperature, change to your desire value const int SENSOR_PIN = 2; // Arduino pin connected to DS18B20 sensor's DQ pin const int RELAY_FAN_PIN = A5; // Arduino pin connected to relay which connected to fan const int RELAY_HEAT_PIN = A4; // Arduino pin connected to relay which connected to the heating element OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature sensors(&oneWire); // pass oneWire to DallasTemperature library float temperature; // temperature in Celsius void setup() { Serial.begin(9600); // initialize serial sensors.begin(); // initialize the sensor pinMode(RELAY_FAN_PIN, OUTPUT); // initialize digital pin as an output } void loop() { sensors.requestTemperatures(); // send the command to get temperatures temperature = sensors.getTempCByIndex(0); // read temperature in Celsius if(temperature > TEMP_THRESHOLD_UPPER){ Serial.println("HOT! The fan is turned on and the heating element is turned off"); digitalWrite(RELAY_FAN_PIN, HIGH); // turn on the fan digitalWrite(RELAY_HEAT_PIN, LOW); // turn off the heating element } else if(temperature < TEMP_THRESHOLD_LOWER){ Serial.println("COLD! The fan is turned off and the heating element is turned on"); digitalWrite(RELAY_FAN_PIN, LOW); // turn off the fan digitalWrite(RELAY_HEAT_PIN, HIGH); // turn on the heating element } delay(500); }

En el código anterior, el Arduino enciende el ventilador cuando la temperatura supera los 25 °C y lo mantiene encendido hasta que la temperatura esté por debajo de los 20 °C.

Pasos R\u00e1pidos

  • Conecta Arduino a la PC mediante un cable USB
  • Abre el IDE de Arduino y selecciona la placa y el puerto correctos
  • Navega al icono de Librerías en la barra izquierda del IDE de Arduino.
  • Busca “DallasTemperature”, luego encuentra la librería DallasTemperature de Miles Burton.
  • Haz clic en el botón Instalar para instalar la librería DallasTemperature.
Biblioteca Dallas Temperature para Arduino
  • Se le pedirá que instale la dependencia de la biblioteca.
  • Haga clic en el botón Instalar todo para instalar la biblioteca OneWire.
Biblioteca OneWire para Arduino
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código al Arduino
  • Haz que el entorno alrededor del sensor esté más caliente o más frío
  • Observa el estado del ventilador y del elemento calefactor

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!