Tomo 8: Sintiendo el Calor - Sensor LM35 y Transistores

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.

pinout 2n2222

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

pinout 2n2222

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

Código Arduino

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

Diagrama de conexión de un sensor LM35 y un transistor controlando un motor

💡 Conceptos Clave de la Misión

🚀 ¡Inténtalo Tú Mismo! (Retos)