¡Hola, creadores de sistemas! Hoy vamos a construir un termostato inteligente. Le daremos a nuestro Arduino la capacidad de medir la temperatura ambiente con precisión usando un sensor analógico, el LM35. Y lo más importante, aprenderemos a controlar un dispositivo de mayor potencia que un simple LED, como un ventilador, usando un transistor como interruptor electrónico.
🧠 Protagonista 1: El Sensor de Temperatura LM35
El LM35 es un sensor de temperatura de precisión. Su magia es que su voltaje de salida es linealmente proporcional a la temperatura en grados Celsius.
- ¿Cómo funciona?: Es muy directo. Por cada grado Celsius de temperatura, el voltaje en su pin de salida aumenta en 10 milivoltios (0.01V). Si mide 0.25V, significa que la temperatura es de 25°C.
- Ventajas: Es más preciso que un termistor, no necesita calibración externa y es muy fácil de usar.
⚙️ Protagonista 2: El Transistor (El Amplificador de Fuerza)
Hasta ahora, hemos encendido LEDs que consumen muy poca corriente. Pero, ¿qué pasa si queremos controlar un motor, un ventilador o una tira de LEDs potente? El pin de Arduino no puede suministrar suficiente "fuerza" (corriente) para esos dispositivos y podríamos quemarlo.
Aquí entra el transistor. Actúa como un interruptor o una llave de paso controlada electrónicamente.
- ¿Cómo funciona?: Tiene 3 patas: Base, Colector y Emisor.
- Enviamos una pequeña señal de control desde Arduino a la Base.
- Esta pequeña señal "abre la compuerta" y permite que una corriente mucho más grande fluya desde el Colector hacia el Emisor, encendiendo nuestro ventilador.
- En resumen: Usamos una señal pequeña y segura de Arduino para controlar una corriente grande y potente de una fuente de alimentación externa.
🔌 El Circuito: Termostato Automático
Construiremos un sistema que lea la temperatura y, si supera un cierto umbral, encienda un ventilador.
Componentes Necesarios:
- 1 Placa Arduino UNO y Protoboard
- 1 Sensor de Temperatura LM35
- 1 Transistor TIP 120
- 1 Resistencia de 1kΩ
- 1 Ventilador PC 12V
- 1 Diodo (1N4007 o similar). ¡MUY IMPORTANTE!
- Fuente de alimentación externa de 12V
📝 Instrucciones de Conexión:
- Conecta el Sensor LM35:
- Pin izquierdo (Vs) ➜ 5V.
- Pin central (Vout) ➜ Pin Analógico A0.
- Pin derecho (GND) ➜ GND.
- Conecta el Circuito del Motor con el Transistor:
- Base del transistor ➜ a través de una resistencia de 1kΩ ➜ Pin Digital 9 de Arduino.
- Emisor del transistor ➜ al GND del Arduino.
- Colector del transistor ➜ al cable negativo (-) del ventilador.
- Cable positivo (+) del ventilador ➜ al Positivo (+) de tu fuente de alimentación de 12V.
- ¡Importante! Conecta el Negativo (-) de la fuente de alimentación de 12V al GND del Arduino (necesitan tierra común).
- ¡EL DIODO PROTECTOR! Conecta el diodo "en paralelo" con el motor, pero al revés. La pata con la raya plateada (cátodo) se conecta al positivo del ventilador, y la otra pata (ánodo) al negativo. Esto protege a tu transistor de picos de voltaje cuando el motor se apaga.
⚡ Diagrama de armado
💡 Conceptos Clave de la Misión
- Tierra Común (GND): Cuando usas dos fuentes de voltaje distintas (como los 5V de Arduino y los 12V externos), es obligatorio unir sus polos negativos (GND) para que compartan la misma referencia eléctrica.
- Tipo de dato
float: A diferencia de los enteros (int), este tipo de variable nos permite almacenar números con puntos decimales, crucial para medir variaciones finas de temperatura.
🧠 El Código: La Lógica del Termostato
El código leerá el voltaje del LM35, lo convertirá a grados Celsius y decidirá si debe encender el ventilador.
/*
* Misión 07: Sistema de Enfriamiento Automático
* Descripción: Mide temperatura con LM35 y activa un ventilador mediante un transistor.
* Por: Profe Campos
* CECyTEM 05 Guacamayas
*/
// --- ZONA DE CONFIGURACIÓN ---
int pinSensor = A0; // Pin analógico donde conectamos el LM35
int pinVentilador = 9;// Pin digital que controla la base del transistor
int lecturaLM35; // Variable para almacenar el valor bruto (0-1023)
float voltaje; // Variable para almacenar el voltaje calculado
float temperatura; // Variable para almacenar la temperatura final en °C
// Umbral de temperatura para activar el ventilador
float UMBRAL_CALOR = 30.0;
void setup() {
Serial.begin(9600); // Iniciamos la comunicación serial
pinMode(pinVentilador, OUTPUT); // Configuramos el pin del transistor como salida
}
void loop() {
// 1. LEER EL SENSOR
lecturaLM35 = analogRead(pinSensor);
// 2. CONVERTIR LECTURA A VOLTAJE (en milivoltios)
// Multiplicamos por 5000 (porque son 5V o 5000mV) y dividimos entre los 1023 pasos del ADC
voltaje = (lecturaLM35 / 1023.0) * 5000.0;
// 3. CALCULAR TEMPERATURA
// Sabiendo que el LM35 da 10mV por cada 1°C, dividimos el voltaje entre 10
temperatura = voltaje / 10.0;
// 4. MOSTRAR DATOS EN MONITOR SERIAL
Serial.print("Lectura ADC: ");
Serial.print(lecturaLM35);
Serial.print(" -> Temperatura: ");
Serial.print(temperatura);
Serial.println(" C");
// 5. TOMAR DECISIÓN (Control On/Off)
if (temperatura >= UMBRAL_CALOR) {
digitalWrite(pinVentilador, HIGH); // Activamos el transistor -> Enciende ventilador
Serial.println("¡Alerta de calor! Ventilador ENCENDIDO.");
} else {
digitalWrite(pinVentilador, LOW); // Desactivamos el transistor -> Apaga ventilador
Serial.println("Temperatura normal. Ventilador APAGADO.");
}
delay(1000); // Esperamos 1 segundo entre lecturas para no saturar la pantalla
}
🚀 ¡Inténtalo Tú Mismo! (Retos)
- Histéresis (Reto Avanzado): Si la temperatura oscila exactamente en 30.0°C, el ventilador se encenderá y apagará muy rápido, lo cual puede dañarlo. Modifica las condiciones para que el ventilador se encienda a los 30.0°C pero sólo se apague cuando la temperatura baje de 28.0°C.
- Control de Velocidad (Avanzado): En lugar de
digitalWrite, usaanalogWrite(pinVentilador, velocidad)en el pin 9. ¿Puedes hacer que la velocidad del ventilador aumente a medida que sube la temperatura? (Necesitarás la funciónmap()de nuevo).
¡Felicidades! Han dado un paso enorme hacia la instrumentación real. Ahora pueden no solo leer el ambiente con precisión, sino también controlar dispositivos de mayor potencia de forma segura. ¡Están listos para automatizar casi cualquier cosa!
¡A seguir construyendo! - Profe Campos