Ya sabemos medir luz y movimiento. Hoy aprenderemos a medir temperatura con el sensor de precisión LM35. Pero no nos detendremos ahí. ¿Qué pasa si la señal de Arduino no es suficiente para activar un componente más grande, como un motor? Introduciremos al Transistor, el componente fundamental de la electrónica moderna, que actuará como un "amplificador" o interruptor electrónico para controlar cargas de mayor potencia.
🧠 Protagonista 1: El Sensor de Temperatura LM35
El LM35 es un sensor analógico muy preciso. Su magia reside en que su voltaje de salida es linealmente proporcional a la temperatura en grados Celsius. Específicamente, por cada grado Celsius, el voltaje en su pin de salida aumenta en 10 milivoltios (0.01V). Esto hace que calcular la temperatura sea una simple operación matemática.
⚙️ Protagonista 2: El Transistor NPN (2N2222)
Un transistor es un interruptor controlado por electricidad. Tiene tres patas: Base, Colector y Emisor. Piensa en él como una llave de agua: al aplicar una pequeña corriente al pin de la Base (la perilla de la llave), permitimos que una corriente mucho más grande fluya desde el Colector hacia el Emisor (el tubo principal). Esto nos permite usar un pin de 5V de Arduino, que solo da unos 40mA, para controlar un motor que podría necesitar 200mA o más.
🧠 El Código: Un Termostato Automático
El código leerá el voltaje del LM35, lo convertirá a grados Celsius, y si la temperatura supera un umbral, activará el pin de la Base del transistor para encender un ventilador.
/*
* Misión 08: Sintiendo el Calor
* Descripción: Activa un ventilador con un transistor si la temperatura del LM35 supera un umbral.
* Por: Profe Campos
* CECyTEM 05 Guacamayas
*/
const int pinSensor = A0; // Pin para leer el LM35.
const int pinVentilador = 9; // Pin para controlar la base del transistor.
float voltaje; // Para guardar el voltaje leído.
float temperaturaC; // Para guardar la temperatura calculada.
const float umbralTemp = 28.0; // Umbral de temperatura en Celsius.
void setup() {
pinMode(pinVentilador, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 1. Leemos el valor analógico (0-1023) y lo convertimos a voltaje (0-5V).
voltaje = (analogRead(pinSensor) / 1023.0) * 5.0;
// 2. Convertimos el voltaje a grados Celsius (10mV por grado -> V * 100).
temperaturaC = voltaje * 100;
Serial.print("Temperatura: ");
Serial.print(temperaturaC);
Serial.println(" C");
// 3. Tomamos la decisión.
if (temperaturaC > umbralTemp) {
digitalWrite(pinVentilador, HIGH); // Activamos el transistor.
} else {
digitalWrite(pinVentilador, LOW); // Lo desactivamos.
}
delay(1000); // Leemos la temperatura cada segundo.
}
🔌 Manos a la Obra: El Circuito
Construiremos un termostato automático. Es crucial incluir un diodo en "paralelo inverso" con el motor. Este diodo protege al transistor de picos de voltaje que el motor genera al apagarse (fuerza contraelectromotriz).
Diagrama del Circuito 8
💡 Conceptos Clave de la Misión
- Transistor como Interruptor: Usar una pequeña corriente en la 'Base' para controlar un flujo grande de corriente entre el 'Colector' y el 'Emisor'.
- Diodo de Protección (Flyback): Absorbe la energía que un motor genera al apagarse, protegiendo los componentes del circuito.
🚀 ¡Inténtalo Tú Mismo! (Retos)
- Modo Frío: Modifica el código para que en lugar de un ventilador, active un foco (simulado con un LED) si la temperatura baja de cierto punto (como un calentador).
- Control de Velocidad: Usa `analogWrite()` en el pin 9. ¿Puedes hacer que la velocidad del ventilador aumente a medida que sube la temperatura?
- Termostato con Histéresis: Para evitar que el ventilador se encienda y apague constantemente, crea una "zona muerta": que se encienda a los 28°C pero no se apague hasta que baje de 26°C.