Aprende a controlar un ventilador con Arduino, desde la configuración básica hasta la regulación de velocidad por temperatura y la detección de movimiento. Este tutorial te guiará paso a paso en la creación de un ventilador inteligente y eficiente.

Introducción
¿Imaginas un ventilador que se encienda automáticamente cuando entras a una habitación y ajuste su velocidad según la temperatura? Con Arduino, esto es posible. En este artículo, exploraremos cómo encender un ventilador con Arduino, integrando sensores de temperatura y movimiento para crear un sistema automatizado.
Componentes Necesarios
Hardware
- Arduino UNO (o compatible)
- Ventilador (de PC o similar)
- Sensor de Temperatura LM35
- Sensor de Movimiento PIR
- Transistor (TIP120 o similar)
- Resistencias (220Ω y 10kΩ)
- Protoboard
- Cables de Conexión
- Fuente de Alimentación (5V)
Software
- Arduino IDE
Conceptos Básicos
PWM (Modulación por Ancho de Pulso)
Para controlar la velocidad del ventilador, utilizaremos la técnica PWM. Arduino nos permite generar una señal PWM que varía el ciclo de trabajo, lo que a su vez controla la potencia entregada al ventilador y, por ende, su velocidad.
Sensor de Temperatura LM35
El LM35 es un sensor de temperatura analógico que proporciona una salida de voltaje proporcional a la temperatura. Su rango de medición es de -55°C a 150°C.
Sensor de Movimiento PIR
El sensor PIR detecta movimiento al percibir cambios en la radiación infrarroja emitida por los objetos. Es ideal para activar el ventilador cuando alguien entra en la habitación.
Diagrama del Circuito
Conecta los componentes según el siguiente diagrama:
(Descripción detallada del diagrama del circuito, especificando las conexiones entre Arduino, sensores, transistor y ventilador)
Código Arduino
Copia y pega el siguiente código en tu Arduino IDE:
// Define los pines const int pinVentilador = 9; const int pinSensorTemperatura = A0; const int pinSensorMovimiento = 2; // Variables int temperatura; int velocidadVentilador; void setup() { pinMode(pinVentilador, OUTPUT); pinMode(pinSensorMovimiento, INPUT); Serial.begin(9600); } void loop() { // Lee la temperatura temperatura = leerTemperatura(); // Detecta movimiento if (digitalRead(pinSensorMovimiento) == HIGH) { // Ajusta la velocidad del ventilador según la temperatura velocidadVentilador = map(temperatura, 20, 30, 0, 255); // Limita la velocidad velocidadVentilador = constrain(velocidadVentilador, 0, 255); // Controla el ventilador con PWM analogWrite(pinVentilador, velocidadVentilador); } else { // Apaga el ventilador analogWrite(pinVentilador, 0); } // Imprime la temperatura en el monitor serial Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println(" C"); delay(100); } // Función para leer la temperatura del LM35 int leerTemperatura() { int valorSensor = analogRead(pinSensorTemperatura); float voltaje = valorSensor (0 / 1020); return voltaje 100; }Explicación del Código
El código se divide en las siguientes secciones:
- Definición de Pines: Se asignan los pines digitales y analógicos a los componentes.
- Variables: Se declaran las variables para almacenar la temperatura y la velocidad del ventilador.
- Función setup(): Se configura el pin del ventilador como salida y el pin del sensor de movimiento como entrada. Se inicia la comunicación serial.
- Función loop(): Se lee la temperatura del sensor LM35, se detecta movimiento con el sensor PIR y se ajusta la velocidad del ventilador en función de la temperatura. Si no se detecta movimiento, el ventilador se apaga.
- Función leerTemperatura(): Convierte la lectura analógica del LM35 a grados Celsius.
Ajustes y Personalización
Puedes ajustar el código para adaptarlo a tus necesidades. Por ejemplo:
- Modifica los valores en la función map() para cambiar el rango de temperatura y la velocidad del ventilador.
- Agrega un temporizador para que el ventilador permanezca encendido durante un tiempo determinado después de que no se detecte movimiento.
Consultas Habituales
¿Puedo usar un ventilador de diferente voltaje?
Sí, pero asegúrate de usar un transistor adecuado para el voltaje del ventilador y ajustar la fuente de alimentación en consecuencia.
¿Qué tipo de transistor debo usar?
Un transistor TIP120 es una buena opción para ventiladores de 12V. Para ventiladores de menor voltaje, puedes usar un transistor 2N2222.
¿Puedo usar otro tipo de sensor de temperatura?
Sí, puedes usar otros sensores de temperatura como el DHT11 o el DHT22. Asegúrate de ajustar el código para el sensor que elijas.
Con este tutorial, has aprendido a encender un ventilador con Arduino y a controlarlo con sensores de temperatura y movimiento. Este proyecto te permite crear un sistema de ventilación inteligente y eficiente, ideal para automatizar tu hogar u oficina.
Tabla Comparativa de Sensores de Temperatura
| Sensor | Rango de Temperatura | Precisión | Voltaje de Operación |
|---|---|---|---|
| LM35 | -55°C a 150°C | ±0.5°C | 4V a 30V |
| DHT11 | 0°C a 50°C | ±2°C | 3V a 5V |
| DHT22 | -40°C a 80°C | ±0.5°C | 3V a 5V |
Recuerda que este es solo un punto de partida. Puedes expandir este proyecto con funcionalidades adicionales, como la conexión a internet para controlar el ventilador de forma remota.
