Привет, друзья!
Сегодня я хочу рассказать вам об одной интересной разработке электронной системы управления кондиционерами.
Современный интернет, облачные вычисления или просто обработку больших объемов данных невозможно представить без такого понятия как сервер. Ориентировочно до 50% потребляемой серверами энергии уходит в тепло, которое нужно тем или иным способом из серверных помещений или центров обработки данных отводить.
Как правило, для этих целей используются кондиционеры, количество и мощность которых рассчитываются в зависимости от объемов помещений, тепловыделения серверов и прочих параметров. В действительно больших центрах обработки данных используются дорогостоящие сплит-системы кондиционирования, обладающие встроенными системами управления, однако сегодня мы рассмотрим систему управления для довольно распространенных на сегодняшний день небольших серверных, охлаждением которых занимаются всего несколько, обычно простых бытовых кондиционеров — по статистике чаще это 2, реже 3 кондиционера.
Забегая вперед хочу сразу показать схему работы разработанной системы, кого заинтересовало — прошу под кат.
Рассматриваемая система управления или блок ротации кондиционеров — не новинка в мире климатической техники, однако на момент окончания разработки (середина 2013 года) она обладала набором расширенных функций (в основном коммуникационных), которые резко выделяли ее из всего того, что мог на тот момент предложить рынок.
Логичный вопрос — зачем все это нужно? Применение отдельной системы управления кондиционерами в серверном помещении дает:
— поддержание заданного уровня температуры в помещении путем автоматического управления
установленными кондиционерами;
— попеременная ротация — переключение кондиционеров через равномерные промежутки времени (от нескольких часов до суток) обеспечивает их равномерный износ, чем повышает надежность охлаждающей системы;
— при превышении критической температуры автоматически включаются резервные кондиционеры и работают до тех пор, пока температура в серверной не опустится до заданного уровня;
— контролируя перепад температуры между входами и выходами кондиционеров, система может автоматически распознавать их неисправность и сигнализировать об этом замыканием аварийных контактов, передачей данных на веб-сервер, отсылкой sms или email сообщений ответственному лицу и так далее;
— возможность удаленного наблюдения за состоянием и управления кондиционерами через веб-сервер.
Ядром описываемой системы является центральный контроллер, основанный на микроконтроллере STM32F107 + система на кристалле CC2530 (Texas Instruments), содержащая в себе вычислительное ядро 8051 и радио приемо-передатчик стандарта IEEE 802.15.4 (2.4 гГц).
Фотография первого прототипа
Схематический вид контроллера
Контроллер имеет небольшой черно-белый жидкокристаллический экран 128*64 пикселей, энкодер-кнопку («крутилку») управления, вход питания 220 В, внешнюю антенну, Ethernet разъем, выход сигнала «авария» и ИК-приемник для записи управляющих команд для кондиционеров с оригинальных пультов управления.
Непосредственное управление кондиционерами осуществляют беспроводные модули (RF), устанавливаемые по одному на каждый кондиционер. Обмен информацией между каждым RF модулем и центральным блоком управления осуществляется по беспроводному 2.4 гГц каналу по собственному протоколу, MAC уровень которого идентичен MAC уровню протокола Zigbee. Модули управляют кондиционерами по инфракрасному каналу при помощи ИК-диодов, то есть кондиционеры каждый раз «думают», что ими управляет человек посредством родного пульта управления. При инсталляции системы для каждого кондиционера записываются 3 команды: включение на охлаждение, включение на вентиляцию и выключение.
Первые прототипы RF модулей, белые провода — питание
Схематический вид RF модуля
В главном меню центрального контроллера отображается усредненная температура помещения (среднее значение по датчикам температуры модулей на входе всех кондиционеров), список привязанных модулей с иконками состояния, установленная температура, а также время, синхронизированное с удаленным веб-сервером:
Из меню можно привязать новый модуль к контроллеру:
Можно записать с родного пульта управления различные инфракрасные команды:
Можно установить требуемую для поддержания температуру в помещении и время ротации кондиционеров:
А также настроить большое число дополнительных параметров.
В ходе работы системы в случае достаточной мощности установленных в управляемом помещении кондиционеров, контроллер поддерживает среднюю температуру в помещении не выше температуры, назначенной при настройке параметров + 3 градуса.
В случае повышения средней температуры помещения выше установленной, контроллер последовательно включает на охлаждение кондиционеры, первыми включаются кондиционеры с меньшей наработкой.
Кондиционер считается работающим на охлаждение, если после посылки ИК светодиодом RF модуля команды охлаждения кондиционеру установится указанная в настройках системы разность температур между входящим и исходящим из кондиционера воздухом.
Если после подачи ИК команды кондиционеру указанная выше разность температур не установится в течение 5 минут, то у данного модуля появится ошибка компрессора.
Однако, если разница температур не достигнет установленной в течение 5 минут после первой попытки включения, контроллер попытается включить его на охлаждение ещё 2 раза с интервалом в 5 минут. Если разница температур через 5 минут после посылки последней команды включения на охлаждение все ещё останется меньше пороговой, то во избежание поломки кондиционер выключается, и работа с ним прекращается до снятия ошибки компрессора.
Число включенных кондиционеров в каждый конкретный момент зависит от величины превышения средней температуры над установленной. При превышении установленной температуры на 3 градуса и более на охлаждение включаются все кондиционеры.
В алгоритм автоматического поддержания температуры заложена функция ротации, которая задействуется при установлении баланса между теплом, выделяемым находящимся в помещении оборудованием, и теплом, забираемым системой кондиционирования — в данном случае длительное время в состоянии охлаждения будет находиться определенное число кондиционеров.
Если при этом данное число находящихся в состоянии охлаждения кондиционеров меньше числа всех безаварийных кондиционеров, то состояние охлаждения по истечении установленного времени ротации будет передаваться от кондиционера с большей ротационной наработкой (из числа включенных на данный момент кондиционеров) кондиционеру с меньшей общей наработкой (из числа выключенных на данный момент кондиционеров).
Если число включенных на охлаждение кондиционеров достигло числа всех доступных кондиционеров, то они продолжают работать на охлаждение независимо от ротационной наработки.
Ротационной наработкой считается время работы кондиционера на охлаждение с момента последнего включения.
Если к контроллеру подключен Ethernet кабель, имеющий соединение с сетью Интернет, то с периодичностью раз в минуту контроллер обменивается данными с удаленным веб-сервером. Пользователь имеет возможность удаленно наблюдать как общее состояние системы (средняя температура в помещении, время непрерывной работы контроллера), так и состояние каждого установленного кондиционера.
В случае необходимости пользователь имеет возможность вручную включить любой из доступных кондиционеров на охлаждение, вентиляцию или выключить его.
Ниже приведу скрины тестового веб-сервера, при помощи которого можно мониторить состояние контролируемых серверных и управлять установленными в них кондиционерами:
Экран общего состояния серверного помещения
История работы отдельного кондиционера
А теперь главный бонус: весь исходный код для прошивок главного контроллера, а также CC2530 вы можете скачать по ссылке на github.com
Для сбора статистики, желающие получить схемы и разводки всех плат системы в формате Altium Designer — пишите, пожалуйста, на frimen3 at gmail.com.
Всем спасибо за внимание, жду ваших комментариев!
Автор: Frimen3