Ventilador inteligente con Arduino

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 (un float) 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 el setup() 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!