工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却

部品と材料

部品数量
Arduino Nano R31
DHT11 温湿度センサー(4ピン)1
5V DCリレーモジュール1

プロジェクト背景

スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却
室温75°F (24°C) に対しキャビネット内部は109°F (43°C) に到達

AVレシーバーが発熱しすぎるため、夏場に向けてキャビネットファンを自動制御する装置を作りました。レシーバー外部から5-12Vの連動電源を取れず、また電源オフ後も余熱除去のためファンを一定時間回したいと考え、マイコン制御にしました。市販の温度制御ファンコントローラーは30ドル以上しますが、手持ちパーツで10ドル以下で自作できます。

スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却
手持ちパーツで十分対応可能

試作と実装

スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却
ブレッドボードでの動作確認

Arduino Nano + DHT11 + 5Vリレーで基本動作を確認。PCファンを5V駆動できるものを選定(80mm×2、120mm×1、各200mA以下)。Molexコネクタを切ってUSB給電化し、古いスマホ充電器で全体を駆動します。

スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却
小型プロジェクトボックスに収納、ホットグルーで絶縁固定
スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却
AV機器に馴染むコンパクトな仕上がり

ステータスLED表示

スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却
左上: 電源(緑)、左下: 温度正常(緑)、中: ファン動作(橙)、右: 過熱警報(赤)

起動時はPOST(電源投入自己テスト)として全LED、ファン、ピエゾブザーの動作確認を行います。

制御仕様

スマートAVキャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却
シリアルモニタ出力例

実運用結果

レシーバー電源投入後約2分でファンが作動し、電源オン中は回り続けます。電源オフ後は5分以上ファンが回って余熱を排出。これまで過熱アラームは発報していません。

今後の改良案

ソースコード

// A/Vキャビネット用温度コントローラー
// ファンは10Aリレーで制御(12V PCファンまたは5V USBファン対応)
// ピエゾブザーで過熱警報

int FANTEMP = 95;    // ファンON閾値 (°F)
int ALARMTEMP = 120; // 過熱警報閾値 (°F)
int FANLED = 2;      // ファンON LED
int TEMPOK = 3;      // 温度正常 LED
int ALARMLED = 4;    // 過熱警報 LED
int ALARMPIN = 7;    // ブザー
#define DHTPIN 8     // DHT11データピン
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);

  // 初期状態: すべてOFF (リレーはActive LOW想定)
  digitalWrite(FANPIN, HIGH);
  digitalWrite(FANLED, HIGH);
  digitalWrite(ALARMLED, HIGH);
  digitalWrite(TEMPOK, HIGH);

  // POST: ブザーテスト
  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;
    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; // 30秒後に再チェック
  } else {
    digitalWrite(ALARMLED, LOW);
    Serial.print("Temperature is under "); Serial.print(ALARMTEMP);
    Serial.println(", Alarm is off");
    checkdelay = 300000; // 5分後に再チェック
  }

  // ファン制御
  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キャビネットファンコントローラー - Arduino Nano、DHT11、リレーで最適冷却

製造プロセス

  1. ファン振動を現場バランシングで解消:実践的ソリューション
  2. ファイリングキャビネット:設計、製造、現代的活用
  3. 温度制御ファンサーキット:メディア家具冷却用DIYリレーシステム
  4. Web制御DMX照明システム:Arduino Megaマスターコントローラー
  5. ゲーマー向け自動操作デバイス──Arduinoとサーボでコントローラのボタンを自動連打
  6. DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
  7. Unopad: Ableton Live連携シームレスなArduino MIDIコントローラー
  8. Arduinoベースの蛍光表示管(VFD)コントローラーキット
  9. Alexa対応Arduinoホームコントローラー:音声でスマートホーム自動化
  10. MK2 Plusロボットアームコントローラーの自作
  11. PWM電力コントローラ:パルス幅変調ランプドライバの構築