Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Контроль температуры с помощью ПИД-регулятора на Arduino и вентиляторов с ШИМ для самостоятельного охлаждения серверов / сетевых стоек
Несколько недель назад мне нужно было установить стойку с сетевыми устройствами и несколькими серверами.
Стеллаж размещен в закрытом гараже, поэтому диапазон температур между зимой и летом довольно высок, а также пыль может быть проблемой.
Просматривая в Интернете решения по охлаждению, я обнаружил, что они довольно дорогие, по крайней мере, на моем месте:> 100 евро за 4 потолочных вентилятора 230 В с контролем термостата. Мне не понравился привод термостата, потому что он всасывает много пыли при включении из-за того, что вентиляторы работают на полную мощность, и не дает никакой вентиляции, когда он отключен.
Поэтому, не удовлетворенный этими продуктами, я решил пойти по пути DIY, создав что-то, что может плавно поддерживать определенную температуру.
Шаг 1. Как это работает
Чтобы упростить задачу, я выбрал поклонников DC: они намного менее шумны, чем вентиляторы переменного тока, хотя и менее мощные, но для меня их все же более чем достаточно.
Система использует датчик температуры для управления четырьмя вентиляторами, которые управляются контроллером Arduino. Arduino регулирует вентиляторы с помощью логики PID и управляет ими с помощью PWM.
Температура и скорость вращения вентилятора отображаются на 8-значном 7-сегментном дисплее, установленном на алюминиевой планке, установленной в стойке. Помимо дисплея есть две кнопки для настройки целевой температуры.
Шаг 2: что я использовал
Примечание: я пытался реализовать этот проект с помощью вещей, которые лежали у меня в доме, поэтому не все может быть идеально. Бюджет был проблемой.
Вот компоненты, которые я использовал:
-
Аппаратное обеспечение
- Одна акриловая панель: используется в качестве основы (1,50 евро);
- Четыре L-образных ПВХ профиля размером 3,6x1 см (4,00 евро);
- Одна алюминиевая панель: ширина 19 дюймов (3,00 евро);
-
Электроника
- Четыре 120-мм вентилятора PWM: я выбрал Arctic F12 PWM PST из-за возможности устанавливать их параллельно (4x 8,00 евро);
- One Pro Micro: любая плата с питанием от ATMega 32u4 должна нормально работать с моим кодом (4,00 евро);
- Одна релейная плата: для отключения вентиляторов, когда они не нужны (1,50 евро);
- Один 8-значный 7-сегментный дисплейный модуль MAX7219 (2,00 евро);
- Три кнопки мгновенного действия, 1 для сброса (2,00 евро);
- Один выключатель на 3 А (1,50 евро);
- Один соединитель кабеля LAN: для легкого отсоединения основного блока от панели дисплея (2,50 евро);
- Один источник питания с двумя выходами 5 В и 12 В: вы можете использовать 2 отдельных блока питания или источник питания 12 В с понижающим преобразователем до 5 В (15,00 евро);
- Кабели, винты и другие мелкие детали (5,00 евро);
Общая стоимость: 74,00 евро (если бы мне пришлось покупать все компоненты на Ebay / Amazon).
Шаг 3: Дело
Корпус изготовлен из 4-х тонких пластиковых L-образных профилей, приклеенных и приклепанных к акриловой доске.
Все компоненты коробки проклеены эпоксидной смолой.
В акриле вырезаны четыре отверстия диаметром 120 мм для вентиляторов. Делается дополнительное отверстие для пропуска кабелей термометра.
На передней панели есть выключатель питания со световым индикатором. Слева через два отверстия выходят кабель передней панели и кабель USB. Для упрощения программирования добавлена дополнительная кнопка сброса (у Pro Micro нет кнопки сброса, и иногда это полезно для загрузки на него программы).
Коробка удерживается 4 винтами, проходящими через отверстия в акриловой основе.
Передняя панель сделана из матовой алюминиевой панели, шириной 19 дюймов и высотой ~ 4 см. Отверстие для дисплея было проделано с помощью Dremel, а остальные 4 отверстия для винтов и кнопок - с помощью дрели.
Шаг 4: Электроника
Плата управления довольно проста и компактна. Во время создания проекта я обнаружил, что когда я выставляю вентиляторам 0% PWM, они будут работать на полной скорости. Чтобы полностью остановить вращение вентиляторов, я добавил реле, которое отключает вентиляторы, когда они не нужны.
Передняя панель подключается к плате с помощью сетевого кабеля, который с помощью кабельного соединителя легко отсоединяется от основного корпуса. Задняя часть панели сделана из кабелепровода 2,5x2,5 и прикреплена к панели двусторонним скотчем. Дисплей также крепится к панели скотчем.
Как вы можете видеть на схемах, я использовал несколько внешних подтягивающих резисторов. Они обеспечивают более сильное подтягивание, чем у Arduino.
Схемы Fritzing можно найти в моем репозитории GitHub.
Шаг 5: Код
Спецификация Intel для 4-контактных вентиляторов предполагает целевую частоту ШИМ 25 кГц и приемлемый диапазон от 21 кГц до 28 кГц. Проблема в том, что частота Arduino по умолчанию составляет 488 Гц или 976 Гц, но ATMega 32u4 вполне может передавать более высокие частоты, поэтому нам нужно только правильно настроить его. Я сослался на эту статью о ШИМ Леонардо, чтобы синхронизировать четвертый таймер до 23437 Гц, что является наиболее близким к 25 кГц.
Я использовал различные библиотеки для дисплея, датчика температуры и логики ПИД.
Полный обновленный код можно найти в моем репозитории GitHub.
Шаг 6: Заключение
Итак, вот оно! Мне нужно подождать до лета, чтобы увидеть его в действии, но я почти уверен, что он сработает нормально.
Я планирую создать программу, которая будет видеть температуру с USB-порта, который я подключил к Raspberry Pi.
Надеюсь, что все было понятно, если нет, дайте мне знать, и я объясню лучше.
Спасибо!