Sistema de Control de Temperatura por Histéresis con Arduino
Componentes y Suministros
| Componente | Descripción | Cantidad |
|---|---|---|
| Arduino 101 | Placa con Intel Curie | 1 |
| Sensor de Temperatura DHT22 | Medición precisa de temperatura y humedad | 1 |
| Cables jumper (genéricos) | Conexiones | 1 |
| LED (genérico) | Indicadores visuales (verde/rojo) | 2 |
| Resistencia 10k ohm | Pull-up para DHT22 | 1 |
| Resistencia 330 ohm | Limitación corriente LEDs | 2 |
| DFRobot LCD Button Shield | Pantalla LCD con botones integrados | 1 |
| Protoboard (genérica) | Montaje del circuito | 1 |
Aplicaciones y Servicios Online
- Arduino IDE - Entorno de desarrollo
Sobre el Proyecto
El Proyecto
Demostración del funcionamiento de un sistema de control de temperatura utilizando histéresis.
Componentes
Control de Temperatura
El sistema modela la siguiente situación:
- El sistema inicia y muestra la temperatura actual.
- Si la temperatura alcanza 25°C, se activa el LED verde (simulando encendido de aire acondicionado) y la habitación comienza a enfriarse.
- Cuando la temperatura desciende a 23°C, se apaga el aire acondicionado (LED rojo) hasta que la temperatura suba nuevamente.
La histéresis evita oscilaciones rápidas del sistema alrededor del punto de consigna, proporcionando un control estable.
Código
/* By Alexis Santiago Allende */ /* Last update: 12/03/2017 */
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 12
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
boolean a=LOW, b=HIGH;
float h=0, t=0;
const int ledPin = 3; // LED verde - aire acondicionado
const int ledPin2 = 2; // LED rojo - apagado
long previousMillis = 0;
long interval = 2000; // Lectura cada 2 segundos
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
dht.begin();
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin, LOW);
lcd.print("Tempera:");
lcd.setCursor(0,1);
lcd.print("Humedad:");
}
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
h = dht.readHumidity();
t = dht.readTemperature();
lcd.setCursor(10,0);
lcd.print(t);
lcd.setCursor(10,1);
lcd.print(h);
// Histéresis: 25°C encender, 23°C apagar
if(t >= 25 && a == LOW) {
digitalWrite(ledPin, HIGH); // Encender A/C
digitalWrite(ledPin2, LOW);
a = HIGH; b = LOW;
} else if(t <= 23 && b == LOW) {
digitalWrite(ledPin2, HIGH); // Apagar A/C
digitalWrite(ledPin, LOW);
a = LOW; b = HIGH;
}
}
}
Esquemáticos
Proceso de manufactura
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Persianas Inteligentes: Control Automático de Luz con Arduino y Energía Solar
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Centro de Control de Potencia Arduino: N-FET, P-FET, Relé y RTC
- Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
- Sensor de obstáculos IR casero con Arduino – Tutorial fácil con LED IR y fotodiodo
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
- Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje