Arduino - Sistema de calefacción

En este tutorial, vamos a controlar la temperatura de la habitación utilizando un elemento calefactor y un sensor de temperatura DS18B20. Cuando la temperatura sea demasiado fría, enciende el elemento calefactor. Cuando la temperatura sea cálida, apaga el elemento calefactor. También puedes adaptar el código para otros sensores de temperatura, como DHT11 o DHT22, o LM35 en lugar del sensor DS18B20.

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×4.7 kΩ Resistor
1×Relé
1×Elemento Calefactor
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 elemento calefactor y del sensor de temperatura DS18B20

El elemento calefactor utilizado en este tutorial utiliza una fuente de alimentación de 12 V. Si se suministra energía al elemento calefactor, este emite calor. Para controlar el elemento calefactor con Arduino, es necesario usar un relé intermedio.

Si no sabes nada sobre un sensor de temperatura y un elemento calefactor (disposición de pines, cómo funciona, cómo programarlos...), apréndelos en los siguientes tutoriales:

Diagrama de Cableado

  • Diagrama de cableado con protoboard
Diagrama de cableado del sistema de calefacción con Arduino

This image is created using Fritzing. Click to enlarge image

  • Esquema de cableado con adaptador (recomendado)
Diagrama de cableado para el sistema de calefacción con control de temperatura por Arduino

This image is created using Fritzing. Click to enlarge image

Cómo funciona el sistema

  • Arduino lee la temperatura del sensor de temperatura
  • Si la temperatura cae por debajo de un umbral inferior, Arduino enciende los elementos calefactores
  • Si la temperatura sube por encima de un umbral superior, Arduino apaga el elemento calefactor

El proceso anterior se repite indefinidamente en el bucle.

Código de Arduino para el sistema de enfriamiento con sensor DS18B20

/* * 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-heating-system */ #include <OneWire.h> #include <DallasTemperature.h> #define SENSOR_PIN 2 // Arduino pin connected to DS18B20 sensor's DQ pin #define RELAY_PIN A5 // Arduino pin connected to relay which connected to heating element const int TEMP_THRESHOLD_UPPER = 20; // upper threshold of temperature, change to your desire value const int TEMP_THRESHOLD_LOWER = 15; // lower threshold of temperature, change to your desire value 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_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("The heating element is turned off"); digitalWrite(RELAY_PIN, LOW); // turn off } else if(temperature < TEMP_THRESHOLD_LOWER){ Serial.println("The heating element is turned on"); digitalWrite(RELAY_PIN, HIGH); // turn on } delay(500); }

En el código anterior, el Arduino enciende el elemento calefactor cuando la temperatura cae por debajo de 15 °C, y mantiene encendido el elemento calefactor hasta que la temperatura esté por encima de 20 °C.

Pasos R\u00e1pidos

  • Conecta Arduino al PC mediante un cable USB
  • Abre el IDE de Arduino, selecciona la placa adecuada y el puerto correcto
  • Navega hasta el icono de Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “DallasTemperature”, luego localiza la biblioteca DallasTemperature de Miles Burton.
  • Haz clic en el botón Instalar para instalar la biblioteca DallasTemperature.
Biblioteca de temperatura Dallas 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 de Arduino
  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino
  • Haz que el entorno alrededor del sensor esté más caliente o más frío
  • Verifica la temperatura del elemento calefactor y de tu habitación

Conocimiento Avanzado

El método de control anterior es el controlador de encendido y apagado, también conocido como señalizador o controlador 'bang-bang'. Este método es muy sencillo de implementar.

Existe un método alternativo llamado controlador PID. Con el controlador PID, la temperatura deseada es más estable, pero es muy difícil de entender e implementar. Por lo tanto, el controlador PID no es popular en el control de la temperatura.

※ 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!