산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

부품 및 소모품

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각Arduino Nano R3×1
스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각DHT11 온습도 센서 (4핀)×1
5V DC 릴레이 모듈×1

프로젝트 소개

AV 리시버가 너무 뜨거워서 여름 전에 캐비닛 팬을 추가하고 싶었습니다. 리시버 외부에서 전원이 켜질 때만 작동하는 5-12V DC 소스를 찾으려 했으나 내부에서만 몇 군데 찾을 수 있었습니다. 또한 리시버 전원 차단 후에도 팬이 잠시 더 돌게 하고 싶었는데, 콘덴서 크기 계산이 까다로웠습니다.

실온 24℃, 캐비닛 내부 43℃

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

아마존의 온도 제어 팬들은 30달러 이상으로 비쌌습니다. 팬, 온도 프로브, 릴레이 정도만 들어있는데 말이죠. 부품 상자를 보니 이미 다 있더군요.

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각
스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

중국산 2달러 아두이노 나노로 간단한 스케치를 작성했습니다. DHT11 온도 센서와 5V DC 릴레이를 추가하니 완벽하게 작동했습니다.

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

오래된 PC 팬 중 5V에서도 충분히 돌고 200mA 이하인 80mm 2개, 120mm 1개를 찾아 몰렉스 커넥터를 잘라 USB로 배선했습니다. 브레드보드에서 잘 작동해 상태 LED와 과열 경보용 피에조 부저를 추가했고, 작은 프로젝트 박스에 깔끔하게 넣었습니다.

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각
스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각
스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

상태 LED: 좌상=전원(녹색), 좌하=온도 정상(녹색), 중앙=팬 작동(주황), 우측=과열(적색)

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

컨트롤러는 시동 시 POST(자체 진단)를 수행해 모든 팬, LED, 피에조 알람이 작동하는지 확인합니다.

아두이노 스케치:

컨트롤러는 30초간 평균 온도를 측정합니다. 35℉(약 1.7℃) 이상이면 팬이 5분간 켜진 후 다시 체크합니다. 49℃(120℉) 이상이면 알람이 울리며 팬이 계속 돕니다. 알람은 온도가 49℃ 아래로 내려올 때까지 30초마다 울립니다.

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

실제로는 리시버 켠 후 약 2분 뒤 팬이 켜지고 리시버가 켜진 동안 계속 돕니다. 미디어 센터 전원 끄면 팬이 최소 5분간 돌다가 온도가 35℉ 아래로 내려가면 멈춥니다. 아직 과열 알람은 울리지 않았습니다.

다시 한다면 아두이노 나노를 ATtiny85로, 릴레이를 MOSFET로 대체해 더 작게 만들고 PWM으로 팬 속도 제어까지 추가하고 싶습니다.

코드

FanTempController
// A/V 캐비닛 온도 컨트롤러
// 팬은 10A 릴레이로 제어 (12V PC 팬 또는 5V USB 팬)
// 과열 경보용 피에조 알람
int FANTEMP = 95;  // 팬 켜지는 온도 (화씨 95도 ≈ 35℃)
int ALARMTEMP = 120; // 과열 알람 온도 (화씨 120도 ≈ 49℃)
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);
  digitalWrite(FANPIN, HIGH);
  digitalWrite(FANLED, HIGH);
  digitalWrite(ALARMLED, HIGH);
  digitalWrite(TEMPOK, HIGH);
  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);
    Serial.print(f); Serial.print("\t");
    temp = f + temp;
    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; }

  if (avetemp > ALARMTEMP) {
    digitalWrite(ALARMLED, HIGH);
    Serial.print("Temperature is over "); Serial.print(ALARMTEMP); Serial.println(", Alarm is on");
    for (int x = 0; x < 3; x++) {
      tone(ALARMPIN, 660, 1000); delay(500);
      tone(ALARMPIN, 440, 1000); delay(500);
    }
    noTone(ALARMPIN);
    checkdelay = 30000;
  } else {
    digitalWrite(ALARMLED, LOW);
    Serial.print("Temperature is under "); Serial.print(ALARMTEMP); Serial.println(", Alarm is off");
    checkdelay = 300000;
  }

  if (avetemp > FANTEMP) {
    digitalWrite(FANPIN, HIGH);
    digitalWrite(FANLED, HIGH);
    digitalWrite(TEMPOK, LOW);
    Serial.print("Temperature is over "); Serial.print(FANTEMP);
    Serial.print(", Fan is 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 is under "); Serial.print(FANTEMP); Serial.println(", Fan is off");
  }
  Serial.println(); Serial.println();
}

회로도

스마트 AV 캐비닛 팬 컨트롤러 - 아두이노 나노, DHT11, 릴레이로 최적 냉각

제조공정

  1. PWM 전력 컨트롤러: 펄스 폭 변조 램프 드라이버 제작
  2. 파일 캐비닛: 설계, 제조 및 현대적 활용
  3. 온도 제어 팬: 미디어 가구 냉각용 DIY 릴레이 시스템
  4. 팬 진동 제거: 현장 밸런싱 실용 솔루션
  5. 웹 제어 DMX 조명 시스템 - 아두이노 마스터 컨트롤러
  6. 자동 게이밍 어시스턴트: 게이머를 위한 스마트 작업 자동화 장치
  7. DIY 아두이노 USB 게임 컨트롤러 - 나만의 고성능 게임패드 만들기
  8. Unopad: 아두이노 우노로 만드는 에이블턴 라이브용 MIDI 컨트롤러
  9. 아두이노 기반 진공 형광 디스플레이(VFD) 컨트롤러 키트
  10. 알렉사 연동 아두이노 홈 컨트롤러: 음성으로 스마트홈 제어하기