Introducción
Este proyecto te permite construir un ventilador inteligente que se activa automáticamente. Utilizaremos un sensor de temperatura conectado a una placa Arduino para traducir la temperatura ambiente en acciones de control (encender o apagar un motor). Es una forma innovadora de climatizar tu espacio personal y aprender sobre sensores ambientales y el control de actuadores de potencia (motores).
Materiales Necesarios
Placa Arduino (como Arduino Uno, Nano, o similar)
Sensor de Temperatura (por ejemplo, el DHT11 o DHT22)
Motor DC (que usas como tu ventilador, con cables blanco y negro)
Transistor NPN (en tu caso, el BD137)
Resistencia (de 1kΩ para la base del transistor)
Protoboard
Cables Jumper (macho-macho)
Cable USB (adecuado para tu placa Arduino)
Esquema de Montaje
El Sensor (Entrada): Conectar el sensor de temperatura (DHT11) al Arduino (VCC a 5V, GND a GND, y el pin de Datos al pin digital 2).
El Actuador (Salida): Conectar el motor DC. Dado que el motor consume demasiada corriente, no se conecta directo al Arduino. Se usa el transistor BD137 como un interruptor electrónico, controlado por un pin digital del Arduino (pin 9), para gestionar la potencia del motor de forma segura.
Conexiones:
1. Sensor de Temperatura (DHT11):
VCC (o ‘+’) $\rightarrow$ Pin 5V del Arduino.
GND (o ‘-‘) $\rightarrow$ Pin GND del Arduino.
DATA (o ‘out’) $\rightarrow$ Pin digital 2 del Arduino.
2. Circuito del Motor (Transistor BD137):
- Pin 9 del Arduino $\rightarrow$ Un extremo de la Resistencia de 1k$\Omega$.
- El otro extremo de la Resistencia de 1k$\Omega$ $\rightarrow$ Pata 3 (Base) del BD137.
- Pin GND del Arduino $\rightarrow$ Pata 1 (Emisor) del BD137.
- Cable NEGRO del motor $\rightarrow$ Pata 2 (Colector) del BD137.
- Cable BLANCO del motor $\rightarrow$ Pin 5V del Arduino.
- Código de Arduino
Código de arduino
#include <DHT.h> // Define el pin donde conectaste el sensor #define DHTPIN 2 // Define el tipo de sensor #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // Define el pin que controla el transistor del ventilador const int fanPin = 9; // Define la temperatura (en °C) a la que se encenderá const int tempUmbral = 30; void setup() { // Inicia el sensor dht.begin(); // Configura el pin del ventilador como SALIDA pinMode(fanPin, OUTPUT); // Asegúrate de que el ventilador empieza apagado digitalWrite(fanPin, LOW); } void loop() { // Espera 2 segundos entre lecturas para estabilizar delay(2000); // Lee la temperatura float t = dht.readTemperature(); // Comprueba si la lectura falló (por si el sensor está mal conectado) if (isnan(t)) { return; // Si falló, no hagas nada y sal } // --- La Lógica de Control --- if (t > tempUmbral) { // Si la temperatura es MAYOR que el umbral, enciende el ventilador digitalWrite(fanPin, HIGH); } else { // Si es menor o igual, apágalo digitalWrite(fanPin, LOW); } }
Explicación del Código
1. Biblioteca del Sensor de Temperatura (DHT.h):
Esta biblioteca es necesaria para comunicarse con los sensores de temperatura y humedad de la familia DHT (como tu DHT11).
Simplifica enormemente el proceso.
dht.begin()inicializa el sensor.La función
dht.readTemperature()maneja toda la comunicación compleja y nos devuelve un número simple (unfloat) que representa la temperatura en grados Celsius.
2. Control de Salida Digital (pinMode / digitalWrite):
Estas son funciones estándar de Arduino que usamos para controlar el transistor.
pinMode(fanPin, OUTPUT): Esta línea en elsetup()le dice al Arduino que el pin 9 se usará como una salida (para enviar una señal), no como una entrada (para leer un sensor).digitalWrite(fanPin, HIGH): Esta es la orden que enciende el ventilador. Envía 5V al pin 9, lo que activa la base de tu transistor BD137 y permite que la corriente fluya a través del motor.digitalWrite(fanPin, LOW): Esta es la orden que apaga el ventilador. Envía 0V al pin 9, lo que «cierra» el transistor e interrumpe la corriente del motor.
3. Lógica del loop():
El
loop()se ejecuta continuamente.Lectura: Primero, lee la temperatura con
t = dht.readTemperature().Error: Comprueba si la lectura falló (quizás el sensor está desconectado) con
if (isnan(t)). Si falla, simplemente se detiene y espera al siguiente ciclo.Decisión (if/else): Esta es la «inteligencia» del proyecto.
El
if (t > tempUmbral)compara la temperatura leída (t) con el límite que definiste (tempUmbral, o sea, 30).Si la temperatura es mayor que el umbral, ejecuta la acción
digitalWrite(fanPin, HIGH).Si no es mayor (es decir, es menor o igual), ejecuta la acción
digitalWrite(fanPin, LOW).
Retardo: El
delay(2000)al principio del loop no es para evitar rebotes, sino para dar tiempo entre lecturas. El sensor DHT11 es lento y no se debe leer más de una vez cada 2 segundos.
Este proyecto es una excelente demostración de cómo combinar un sensor ambiental (entrada) con un actuador (salida) para crear un sistema de control automático.
Material
Aquí os dejamos los materiales que nosotros compramos cuando empezamos. Si quieres darnos una pequeña ayuda puedes comprar desde este link. Gracias por leernos!
- Placa arduino: https://amzn.to/43LM4k4
- Protoboard: https://amzn.to/3LZaZdM
- Cables: https://amzn.to/3K5N3ox
- Leds: https://amzn.to/4iryuse
- Buzzer: https://amzn.to/4ilPlfX
- Básicos: https://amzn.to/3Kkl1FT
- Motor DC: https://amzn.to/48jMLT9
- Pack de lo necesario para empezar: https://amzn.to/3MmuDAs
