Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Contrôleur Intelligent de Ventilation pour Meuble AV – Arduino Nano, DHT11 et Relais

Composants et Fournitures

Arduino Nano R3×1
Capteur Température/Humidité DHT11 (4 broches)×1
Module Relais 5V DC×1

À Propos du Projet

Mon récepteur AV surchauffait (température armoire 43°C / 109°F contre 24°C / 75°F ambiante). Je voulais ajouter une ventilation pilotée par température, avec temporisation après extinction, sans source 5-12V accessible à l'extérieur de l'appareil.

Les contrôleurs commerciaux coûtaient 30€+ pour juste un ventilateur, une sonde et un relais. J'avais tout en stock : Arduino Nano 2€, DHT11, relais 5V.

Prototype et Évolution

Premier prototype sur breadboard fonctionnel. Ajout de LEDs d'état et buzzer pour alarme surchauffe. Intégration dans un petit boîtier projet, alimenté par chargeur USB téléphone (5V). Deux ventilateurs 80mm et un 120mm récupérés, fonctionnant en 5V (<200mA chacun), câblés en USB.

Indicateurs Visuels

Au démarrage : auto-test (POST) de tous les ventilateurs, LEDs et buzzer.

Logique de Contrôle

Améliorations Futures

Remplacer Nano par ATtiny85 et relais par MOSFET pour format plus compact et contrôle PWM de la vitesse des ventilateurs.

Code Arduino

// Contrôleur température pour armoire A/V
// Ventilateur piloté par relais 10A sur ventilateur 12V (PC) ou 5V (USB)
// Alarme piezo pour surchauffe

int FANTEMP = 95;    // Seuil déclenchement ventilateur (°F)
int ALARMTEMP = 120; // Seuil alarme surchauffe (°F)
int FANLED = 2;      // LED ventilateur ON
int TEMPOK = 3;      // LED température OK
int ALARMLED = 4;    // LED alarme
int ALARMPIN = 7;    // Buzzer alarme
#define DHTPIN 8     // Capteur DHT
int FANPIN = 9;      // Relais ventilateur

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

const int numReadings = 10;
float avetemp = 0;
float temp = 0;
float 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);
  
  // État initial : tout éteint (relais actif LOW)
  digitalWrite(FANPIN, HIGH);
  digitalWrite(FANLED, HIGH);
  digitalWrite(ALARMLED, HIGH);
  digitalWrite(TEMPOK, HIGH);
  
  // Test alarme au démarrage
  for (int x = 0; x < 5; x++) {
    tone(ALARMPIN, 220 * x, 75);
    delay(100);
  }
  
  // Test ventilateur 5s
  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");
  
  // 10 lectures sur 30s
  for (int x = 0; x < numReadings; x++) {
    float f = dht.readTemperature(true); // Fahrenheit
    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;
  }
  
  // Gestion alarme surchauffe
  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; // 30s avant prochaine boucle
  } else {
    digitalWrite(ALARMLED, LOW);
    Serial.print("Temperature under "); Serial.print(ALARMTEMP); Serial.println(", Alarm OFF");
    checkdelay = 300000; // 5 min
  }
  
  // Contrôle ventilateur
  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 / 1000 / 60); 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();
}

Schéma de Câblage

Contrôleur Intelligent de Ventilation pour Meuble AV – Arduino Nano, DHT11 et Relais

Processus de fabrication

  1. Contrôleur de puissance PWM : construction d'un driver de lampe à modulation de largeur d'impulsion
  2. Armoire de Classement : Design, Fabrication et Usage Moderne
  3. Ventilateur à contrôle de température : système relais DIY pour refroidissement meuble multimédia
  4. Éliminer les vibrations de ventilateur : Solution pratique d'équilibrage sur site
  5. Système d'éclairage DMX piloté par web – Contrôleur maître Arduino
  6. Assistant de jeu automatisé : Dispositif intelligent d'automatisation de tâches pour gamers
  7. Manette de jeu USB Arduino DIY – Construisez votre propre gamepad haute performance
  8. Unopad : contrôleur MIDI Arduino fluide pour Ableton Live
  9. Kit contrôleur d'affichage VFD (afficheur fluorescent sous vide) basé sur Arduino