Introducción
Los sensores de temperatura son muy comunes en proyectos de electrónica, desde estaciones meteorológicas hasta sistemas de control de climatización. En este tutorial, usaremos el sensor analógico LM35, que es muy popular por su sencillez y precisión. Leeremos el voltaje que nos entrega y lo convertiremos a grados Celsius para mostrarlo en el Monitor Serie del IDE de Arduino.
Materiales Necesarios
- Placa Arduino UNO
- Sensor de Temperatura LM35
- Protoboard
- Cables Jumper
Esquema de Montaje
El LM35 tiene 3 pines. Mirándolo de frente (la parte plana), los pines son: 1 (VCC), 2 (Vout), 3 (GND). La conexión es directa.
Conexiones:
- Pin 1 (VCC) del LM35 → 5V del Arduino.
- Pin 2 (Vout) del LM35 → Pin analógico A0 del Arduino.
- Pin 3 (GND) del LM35 → GND del Arduino.
Código Arduino
// Pin donde conectamos la salida del sensor LM35 const int sensorPin = A0; void setup() { // Iniciamos la comunicación serial para ver los resultados en el ordenador Serial.begin(9600); } void loop() { // 1. Leer el valor del sensor (devuelve un número entre 0 y 1023) int lectura = analogRead(sensorPin); // 2. Convertir la lectura a voltaje (0-1023 -> 0-5V) // La fórmula es: (lectura * 5.0) / 1023.0 float voltaje = lectura * (5.0 / 1023.0); // 3. Convertir el voltaje a grados Celsius // El sensor LM35 entrega 10mV (0.01V) por cada grado Celsius float temperaturaC = voltaje * 100.0; // 4. Mostrar la temperatura en el Monitor Serie Serial.print("Temperatura: "); Serial.print(temperaturaC); Serial.println(" °C"); // Esperamos un segundo antes de la siguiente lectura delay(1000); }
Cómo Funciona el Montaje
El funcionamiento de este circuito se basa en la interacción entre el sensor LM35 y el conversor analógico-digital (ADC) del Arduino.
1. El Sensor LM35: Voltaje por Temperatura
El LM35 es un sensor de temperatura de precisión. Su característica clave es que su voltaje de salida (en el pin Vout) es linealmente proporcional a la temperatura en grados Celsius.
La relación específica es: $10 \text{ milivoltios (mV)} \text{ por cada } 1 \text{ grado Celsius } (^\circ\text{C})$.
Si la temperatura es $0^\circ\text{C}$, el LM35 saca $0 \text{ mV}$.
Si la temperatura es $25^\circ\text{C}$, el LM35 saca $25 \times 10 \text{ mV} = 250 \text{ mV} \text{ (o } 0.25 \text{ V)}$.
Si la temperatura es $100^\circ\text{C}$, el LM35 saca $100 \times 10 \text{ mV} = 1000 \text{ mV} \text{ (o } 1.0 \text{ V)}$.
2. El Arduino: Lectura y Conversión
El pin Vout del sensor está conectado al pin A0 del Arduino. El Arduino no puede «entender» $0.25 \text{ V}$ directamente; necesita convertir ese voltaje analógico en un número digital que pueda procesar.
Aquí es donde entra el Conversor Analógico-Digital (ADC) del Arduino UNO:
Lectura: El ADC mide el voltaje que llega al pin A0.
Resolución: El ADC del UNO es de 10 bits. Esto significa que puede representar el voltaje de entrada como un número entero entre 0 y 1023.
Mapeo: Por defecto, el Arduino mide voltajes en un rango de $0\text{V}$ a $5\text{V}$.
Una lectura de $0\text{V}$ corresponde a un valor digital de 0.
Una lectura de $5\text{V}$ corresponde a un valor digital de 1023.
3. El Código: La «Traducción»
El trabajo del sketch (el código que cargas al Arduino) es «traducir» ese número digital (0-1023) de nuevo a la temperatura original. El proceso en el código es el siguiente:
Leer el valor del ADC: Se usa la función
analogRead(A0). Esto devuelve un valor entre 0 y 1023.Ejemplo: Si la temperatura es $25^\circ\text{C}$, el LM35 saca $0.25\text{V}$. El ADC leerá un valor de
(0.25V / 5.0V) * 1023 \approx 51.
Convertir el valor a Voltaje: El código debe revertir el proceso del ADC para saber qué voltaje representa ese número 51.
voltaje = (valorLeido / 1023.0) * 5.0;Ejemplo: `voltaje = (51 / 1023.0) * 5.0 \approx 0.249\text{V}$ (cercano a los $0.25\text{V}$ originales).
Convertir el Voltaje a Temperatura: Ahora que el código «sabe» el voltaje, aplica la regla del LM35 ($10 \text{ mV} / ^\circ\text{C}$, o $0.01 \text{ V} / ^\circ\text{C}$).
temperaturaC = voltaje / 0.01;(o lo que es lo mismo:temperaturaC = voltaje * 100;)Ejemplo: `temperaturaC = 0.249 * 100 \approx 24.9^\circ\text{C}$.
Mostrar en Monitor Serie: Finalmente, se usa
Serial.println(temperaturaC)para enviar el resultado al ordenador y que podamos verlo en el Monitor Serie.
