Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Slimme AV Kast Ventilator Controller – Arduino Nano, DHT11 en Relais voor Optimale Koeling

Onderdelen en Benodigdheden

Arduino Nano R3×1
DHT11 Temperatuur & Vochtigheid Sensor (4 pinnen)×1
5V DC Relais Module×1

Over dit Project

Mijn AV-versterker liep erg heet, dus wilde ik een kastventilator toevoegen voor de zomerhitte. Ik kon geen 5-12V DC bron vinden die alleen actief is wanneer de versterker aanstaat, en condensators voor uittraag waren lastig. Kant-en-klare temperatuurgecontroleerde ventilatoren waren duur ($30+), terwijl ik alle onderdelen al had.

Ik schreef een sketch voor een $2 Arduino Nano, voegde een DHT11 sensor en 5V relais toe – het werkte perfect. Vervolgens zochte ik oude PC-ventilatoren die op 5V (via USB-lader) voldoende lucht verplaatsen. Twee 80mm en een 120mm voldeden. Ik voegde status LEDs en een piezo buzzer toe voor oververhitting alarm. Alles past in een klein projectdoosje.

LED Status: Linksboven = voeding (groen); Linksonder = temp OK (groen); Midden = ventilatoren aan (oranje); Rechts = oververhitting (rood).

De controller doet een Power-On Self Test (POST) bij opstart.

Werking

De controller neemt het gemiddelde van 10 metingen over 30 seconden. Boven 35°C (95°F) gaan de ventilatoren 5 minuten aan. Boven 49°C (120°F) activeert het alarm (elke 30 seconden herhalen tot temperatuur daalt). In de praktijk starten de ventilatoren ~2 minuten na aanzetten versterker en draaien zolang deze aanstaat. Na uitschakelen lopen ze nog minimaal 5 minuten na.

Verbeterpunt: Vervang Nano door ATtiny85 en relais door MOSFET voor kleinere vormfactor en PWM-snelheidsregeling.

Code

// Temperatuurcontroller voor A/V Kast
// Ventilator via 10A relais (12V PC of 5V USB ventilator)
// Piezo alarm voor oververhitting

int FANTEMP = 95;      // In °F (35°C)
int ALARMTEMP = 120;   // In °F (49°C)
int FANLED = 2;
int TEMPOK = 3;
int ALARMLED = 4;
int ALARMPIN = 7;
#define DHTPIN 8
int FANPIN = 9;

#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);
  
  // Alle outputs HIGH = uit (relais is active-low)
  digitalWrite(FANPIN, HIGH);
  digitalWrite(FANLED, HIGH);
  digitalWrite(ALARMLED, HIGH);
  digitalWrite(TEMPOK, HIGH);
  
  // POST: Alarm test
  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); // 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;
  }
  
  // Alarm controle
  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; // 30 seconden bij alarm
  } else {
    digitalWrite(ALARMLED, LOW);
    Serial.print("Temperature under "); Serial.print(ALARMTEMP); Serial.println(", Alarm OFF");
    checkdelay = 300000; // 5 minuten normaal
  }
  
  // Ventilator controle
  if (avetemp > FANTEMP) {
    digitalWrite(FANPIN, HIGH);
    digitalWrite(FANLED, HIGH);
    digitalWrite(TEMPOK, LOW);
    Serial.print("Temp over "); Serial.print(FANTEMP);
    Serial.print(", Fan ON voor "); Serial.print(checkdelay / 1000 / 60); Serial.println(" minuten");
    delay(checkdelay);
  } else {
    digitalWrite(FANPIN, LOW);
    digitalWrite(FANLED, LOW);
    digitalWrite(TEMPOK, HIGH);
    Serial.print("Temp under "); Serial.print(FANTEMP); Serial.println(", Fan OFF");
  }
  Serial.println(); Serial.println();
}

Schema

Schema-afbeelding beschikbaar in de originele projectdocumentatie.

Productieproces

  1. Ventilatortrilling Elimineren: Praktische On-Site Wichtoplossing
  2. Archiefkast: Ontwerp, Productie en Modern Gebruik
  3. Temperatuur-gecontroleerde Ventilator: DIY Relais Systeem Voor Media Kast Koeling
  4. Web-gestuurd DMX-verlichtingssysteem – Arduino Master Controller
  5. Geautomatiseerde Gaming Assistant: Slimme taak-automatisering voor gamers
  6. DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad
  7. Unopad: Naadloze Arduino MIDI-controller voor Ableton Live
  8. Arduino-gebaseerde Vacuum Fluorescent Display (VFD) Controller Kit
  9. Alexa-ingeschakelde Arduino Thuiscontroller: Slimme Automatisering Made Simple
  10. Bouw Je Eigen MK2 Plus Robotarm Controller
  11. PWM Vermogenscontroller: Bouw een Pulsbreedte Gemoduleerde Lampstuur