Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controlador inteligente de ventilador para mueble AV con Arduino Nano, DHT11 y relé

Componentes y materiales

ComponenteCantidad
Arduino Nano R31
Sensor temperatura/humedad DHT11 (4 pines)1
Módulo relé 5V DC1
Ventiladores de PC (80mm y 120mm, adaptados a 5V USB)3
Cargador USB viejo (fuente 5V)1
LEDs de estado (verde, naranja, rojo)4
Buzzer piezoeléctrico1
Caja de proyecto pequeña1

Sobre el proyecto

Mi receptor AV se calentaba demasiado (¡109°F dentro del mueble con 75°F ambiente!). Quería un sistema automático que encendiera ventiladores solo cuando fuera necesario, funcionara con 5V USB y tuviera alarma por sobrecalentamiento.

Controlador inteligente de ventilador para mueble AV con Arduino Nano, DHT11 y relé

Los controladores comerciales costaban más de 30€, pero yo ya tenía todos los componentes. Monté un prototipo en protoboard y funcionó a la primera.

Controlador inteligente de ventilador para mueble AV con Arduino Nano, DHT11 y relé

Funcionamiento

Controlador inteligente de ventilador para mueble AV con Arduino Nano, DHT11 y relé
Controlador inteligente de ventilador para mueble AV con Arduino Nano, DHT11 y relé
Controlador inteligente de ventilador para mueble AV con Arduino Nano, DHT11 y relé

LEDs de estado

Código (FanTempController)

// Controlador de temperatura para gabinete A/V
// Ventilador controlado por relé 10A (12V PC o 5V USB)
// Alarma piezo para sobrecalentamiento

int FANTEMP = 95;      // Temp. encendido ventilador (°F)
int ALARMTEMP = 120;   // Temp. alarma (°F)
int FANLED = 2;        // LED ventilador encendido
int TEMPOK = 3;        // LED temp. normal
int ALARMLED = 4;      // LED alarma
int ALARMPIN = 7;      // Buzzer
#define DHTPIN 8
int FANPIN = 9;        // Relé ventilador

#include "DHT.h"
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

const int numReadings = 10;
float avetemp = 0, temp = 0;
unsigned long checkdelay = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("Temp Monitor Started");
  dht.begin();
  pinMode(FANPIN, OUTPUT);
  pinMode(ALARMPIN, OUTPUT);
  pinMode(ALARMLED, OUTPUT);
  pinMode(FANLED, OUTPUT);
  pinMode(TEMPOK, OUTPUT);
  // Apagar todo (relé activo en LOW)
  digitalWrite(FANPIN, HIGH);
  digitalWrite(FANLED, HIGH);
  digitalWrite(ALARMLED, HIGH);
  digitalWrite(TEMPOK, HIGH);

  // Test alarma
  for (int x = 0; x < 5; x++) { tone(ALARMPIN, 220 * x, 75); delay(100); }
  Serial.print("Fan Test Started (5 Seconds) ");
  for (int x = 0; x < 5; x++) { Serial.print("."); delay(1000); }
  Serial.println("Done");

  digitalWrite(FANPIN, LOW); digitalWrite(FANLED, LOW);
  digitalWrite(ALARMLED, LOW); digitalWrite(TEMPOK, LOW);
  noTone(ALARMPIN);
}

void loop() {
  delay(2000);
  temp = 0;
  Serial.print("Realtime Temp: \t");
  for (int x = 0; x < numReadings; x++) {
    float f = dht.readTemperature(true); // °F
    Serial.print(f); Serial.print("\t");
    temp += f;
    delay(3000);
  }
  Serial.println();
  avetemp = temp / numReadings;
  Serial.print("Average Temp is "); Serial.println(avetemp);

  if (isnan(temp)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Alarma sobrecalentamiento
  if (avetemp > ALARMTEMP) {
    digitalWrite(ALARMLED, HIGH);
    Serial.print("Temperature over "); Serial.print(ALARMTEMP); Serial.println(", Alarm ON");
    for (int x = 0; x < 3; x++) {
      tone(ALARMPIN, 660, 1000); delay(500);
      tone(ALARMPIN, 440, 1000); delay(500);
    }
    noTone(ALARMPIN);
    checkdelay = 30000; // Revisar cada 30 seg
  } else {
    digitalWrite(ALARMLED, LOW);
    Serial.print("Temperature under "); Serial.print(ALARMTEMP); Serial.println(", Alarm OFF");
    checkdelay = 300000; // 5 min
  }

  // Control ventilador
  if (avetemp > FANTEMP) {
    digitalWrite(FANPIN, HIGH); digitalWrite(FANLED, HIGH); digitalWrite(TEMPOK, LOW);
    Serial.print("Temperature over "); Serial.print(FANTEMP);
    Serial.print(", Fan ON for "); Serial.print(checkdelay / 60000); Serial.println(" minutes");
    delay(checkdelay);
  } else {
    digitalWrite(FANPIN, LOW); digitalWrite(FANLED, LOW); digitalWrite(TEMPOK, HIGH);
    Serial.print("Temperature under "); Serial.print(FANTEMP); Serial.println(", Fan OFF");
  }
  Serial.println(); Serial.println();
}

Esquemático

Controlador inteligente de ventilador para mueble AV con Arduino Nano, DHT11 y relé

Mejoras futuras

Sustituir Arduino Nano por ATtiny85 y el relé por un MOSFET para reducir tamaño y permitir control PWM de velocidad de ventiladores.

Proceso de manufactura

  1. Eliminación de vibración de ventiladores: Solución práctica de balanceo in situ
  2. Archivador: Diseño, Fabricación y Uso Moderno
  3. Ventilador controlado por temperatura: sistema DIY con relé para refrigeración de muebles multimedia
  4. Sistema de Iluminación DMX Controlado por Web – Controlador Maestro Arduino
  5. Asistente de juego automatizado: Dispositivo inteligente de automatización de tareas para gamers
  6. Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
  7. Unopad: Controlador MIDI Arduino para Ableton Live sin complicaciones
  8. Kit controlador para display fluorescente al vacío (VFD) basado en Arduino
  9. Controlador doméstico Arduino con Alexa: Automatización inteligente simplificada
  10. Construye tu propio controlador de brazo robótico MK2 Plus
  11. Controlador de Potencia PWM: Construye un Driver de Lámpara con Modulación por Ancho de Pulso