¡Lo lograron, equipo! Bienvenidos a la misión final del segundo parcial. Aquí es donde todo lo aprendido cobra sentido. Dejarán de ser estudiantes que siguen tutoriales para convertirse en integradores de sistemas. Vamos a diseñar y construir un dispositivo completamente funcional y automático que podría usarse en un invernadero, un terrario o una incubadora.
🎯 El Reto: Construir una estación de control de clima que:
- Mida la temperatura de forma continua y precisa con el sensor
LM35. - Muestre la temperatura actual y el estado del sistema en una pantalla
LCD. - Si la temperatura supera un primer umbral (30°C), debe activar un ventilador de
12V(controlado por el transistor de potenciaTIP120) para enfriar el ambiente. - Si la temperatura supera un segundo umbral de PELIGRO (38°C), debe activar una alarma de alto poder (un foco de
120V ACcontrolado por el módulo deRelé) y mostrar un mensaje de alerta en laLCD.
🧠 La Lógica del Proyecto: Control por Niveles
Este sistema no tiene una sola decisión, sino una jerarquía. Usaremos la estructura if / else if / else para crear diferentes niveles de acción en base a los umbrales del código:
- Nivel 1 (Normal):
if (temperatura < 30.0)➜ Todo apagado. - Nivel 2 (Alerta):
else if (temperatura >= 30.0 && temperatura < 38.0)➜ Ventilador encendido, foco apagado. - Nivel 3 (Peligro):
else➜ Ventilador Y Foco encendidos al mismo tiempo, mostrando mensaje de peligro.
🔌 El Circuito: La Integración Maestra
Vamos a combinar de forma maestra el circuito de potencia por transistor visto en el Tomo 7 (LM35 + Transistor TIP120) con el circuito de control industrial digital analizado en el Tomo 8 (Pantalla LCD I2C + Módulo de Relé).
Componentes Necesarios:
- Todos los de las prácticas anteriores: Placa Arduino UNO, Protoboard y cables Jumper.
- 1 Sensor de Temperatura
LM35. - 1 Transistor de potencia
TIP120con su resistencia de1kΩ. - 1 Ventilador de PC de
12Vjunto a su diodo protector1N4007. - 1 Módulo de
Reléde 1 canal. - 1 Foco de
120V ACcon socket, clavija e interruptor de pared. - 1 Módulo Reductor de Voltaje Buck (
LM2596) regulado exactamente a 5V. - 1 Pantalla
LCD 16x2con adaptadorI2Cintegrado. - 1 Fuente de alimentación externa de
12V DC(Plug de pared).
📝 Instrucciones Exactas de Conexión (Según el Diagrama):
- Sistema de Alimentación y Tierra Común (Los Rieles de Energía):
- Fuente de Poder (Plug DC 12V): El positivo (
+) va a la entradaIN+del reductor y se extiende (cable rojo largo) al positivo del ventilador de 12V. El negativo (-) va a la entradaIN-del reductor. - Módulo Reductor (LM2596): Asegúrate de que esté regulado a 5V. Conecta su salida positiva (
OUT+) al riel positivo superior de la protoboard, y su salida negativa (OUT-) al riel negativo superior. - Alimentación Arduino: Conecta el pin
5Vde Arduino al riel positivo inferior y el pinGNDal riel negativo inferior. - ¡Tierra Común! Une el riel negativo superior con el riel negativo inferior usando un cable negro. Nota: Los rieles positivos superior e inferior NUNCA deben unirse entre sí, ya que manejan fuentes independientes.
- Fuente de Poder (Plug DC 12V): El positivo (
- Pantalla LCD 16x2 con I2C:
GND➜ Al riel negativo superior (GND común).VCC➜ Al riel positivo superior (5V externos del reductor).SDA➜ Al pin analógicoA4de Arduino (cable naranja).SCL➜ Al pin analógicoA5de Arduino (cable gris).
- Sensor de Temperatura LM35:
- Pin izquierdo (Vs) ➜ Al riel positivo inferior (5V estables y limpios de Arduino).
- Pin central (Vout) ➜ Al pin analógico
A0de Arduino (cable azul). - Pin derecho (GND) ➜ Al riel negativo inferior (GND de Arduino).
- Módulo de Relé de 1 Canal (Control del Foco):
VCC➜ Al riel positivo superior (5V del reductor).GND➜ Al riel negativo superior (GND común).IN(Señal) ➜ Al Pin Digital7de Arduino (cable amarillo).- Lado de Potencia (120V AC): La FASE de la toma de corriente va al tornillo central (
COM). El cable de retorno que va al foco se conecta al tornillo superior (NO). El NEUTRO va directo de la pared hacia el foco.
- Etapa de Potencia con Transistor TIP120 (Control del Ventilador):
- Base (Pin 1, izquierdo): Va a la resistencia de
1kΩ, y el otro extremo de esta va al Pin Digital9de Arduino (cable rosa). - Colector (Pin 2, central): Se une al cable negativo (negro) del ventilador de 12V y al ánodo (lado completamente negro) del diodo
1N4007. - Emisor (Pin 3, derecho): Conecta un cable negro directo al riel negativo superior (GND común).
- Línea de Fuerza (12V): El cable positivo (rojo) del ventilador y el cátodo (lado con franja plateada) del diodo
1N4007van conectados al positivo directo de 12V que viene del Plug DC.
- Base (Pin 1, izquierdo): Va a la resistencia de
⚡ Diagrama de armado
💡 Conceptos Clave de la Misión
- Estructura Condicional Anidada: Al usar
else ifcreamos caminos excluyentes; el programa evalúa las condiciones de arriba hacia abajo y en cuanto una es verdadera, ejecuta ese bloque e ignora los demás, optimizando el procesador. - Módulo Regulador de Voltaje (Buck Converter): Permite bajar de forma eficiente voltajes altos (como los 12V) a voltajes menores de forma estable (como los 5V), ideales para alimentar periféricos robustos sin sobrecargar el regulador de la placa Arduino.
🧠 El Código: El Sistema Operativo del Clima
/*
* PROYECTO INTEGRADOR 2: Estación de Control Térmico
* Descripción: Controla un ventilador de 12V y una alarma de foco según la temperatura.
* Por: Profe Campos
* CECyTEM 05 Guacamayas
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// --- PINES ---
const int pinSensor = A0;
const int pinVentilador = 9; // Controla la base del transistor TIP120
const int pinFoco = 7; // Controla la señal del módulo de relé
// --- UMBRALES ---
const float UMBRAL_VENTILADOR = 30.0;
const float UMBRAL_PELIGRO = 38.0;
// --- OBJETOS ---
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(pinVentilador, OUTPUT);
pinMode(pinFoco, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Control de Clima");
lcd.setCursor(0, 1);
lcd.print(" V 1.0");
delay(2000);
lcd.clear();
}
void loop() {
// --- LECTURA Y CÁLCULO DE TEMPERATURA (LM35) ---
int valorSensor = analogRead(pinSensor);
float voltaje = (valorSensor / 1023.0) * 5.0;
float temperatura = voltaje * 100.0;
// --- LÓGICA DE CONTROL POR NIVELES ---
if (temperatura < UMBRAL_VENTILADOR) {
// Nivel 1: Normal
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura, 1); // Muestra 1 decimal para estabilidad visual
lcd.print(" C ");
lcd.setCursor(0, 1);
lcd.print("Estado: Normal ");
digitalWrite(pinVentilador, LOW); // Ventilador OFF
digitalWrite(pinFoco, LOW); // Foco OFF
} else if (temperatura >= UMBRAL_VENTILADOR && temperatura < UMBRAL_PELIGRO) {
// Nivel 2: Enfriando
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura, 1);
lcd.print(" C ");
lcd.setCursor(0, 1);
lcd.print("Estado: Ventila ");
digitalWrite(pinVentilador, HIGH); // Ventilador ON (TIP120 activo)
digitalWrite(pinFoco, LOW); // Foco OFF
} else {
// Nivel 3: Peligro
lcd.setCursor(0, 0);
lcd.print("!!! ALERTA !!! ");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperatura, 1);
lcd.print(" C Danger");
digitalWrite(pinVentilador, HIGH); // Ventilador ON
digitalWrite(pinFoco, HIGH); // Foco ON (Alarma de potencia activa)
}
delay(1000); // Muestreo cada segundo
}
🚀 ¡Inténtalo Tú Mismo! (Retos)
- Control de Humedad: Modifica la lógica para que el relé se active si la humedad supera el 70%, simulando un deshumidificador.
- Doble Condición: Cambia el código para que el relé solo se active si la temperatura es alta Y la humedad también es alta. (Pista: necesitarás el operador
&&). - Mensajes en LCD: Haz que en la pantalla LCD aparezca un mensaje como "Ventilador ON" o "Ventilador OFF" según el estado del relé.
¡Felicidades, Integradores! Han completado el segundo parcial y han demostrado un dominio impresionante. Pasaron de encender un simple LED a construir un sistema de control autónomo, robusto y con múltiples niveles de acción. Han manejado señales analógicas, digitales, comunicación I2C y control de alta potencia.
Lo que tienen en sus manos es un prototipo real, la base de la automatización industrial. ¡Están perfectamente preparados para los desafíos del último parcial!
¡El límite es su imaginación! - Profe Campos