Tomo 7: Sintiendo el Calor - Sensor LM35 y Transistores

¡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.

Sensor de temperatura LM35 y sus tres pines

⚙️ 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.

Transistor de potencia TIP 120 mostrando Base, Colector y Emisor

🔌 El Circuito: Termostato Automático

Construiremos un sistema que lea la temperatura y, si supera un cierto umbral, encienda un ventilador.

Componentes Necesarios:

📝 Instrucciones de Conexión:

  1. Conecta el Sensor LM35:
    • Pin izquierdo (Vs) ➜ 5V.
    • Pin central (Vout) ➜ Pin Analógico A0.
    • Pin derecho (GND) ➜ GND.
  2. 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

Diagrama de armado de termostato automático con LM35, TIP120 y fuente de 12V

💡 Conceptos Clave de la Misión

🧠 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.

Código Arduino

/*
 * 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)

¡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