Контроль температуры в серверных шкафах и управление работой вентиляторов

Серверная на станции где я работаю, как и положено находится в отдельном помещении. Для охлаждения серверов там установлено два кондиционера. К сожалению это обычные бытовые модели, так что регулярно то один, то другой находятся в ремонте. Руководство отдела, зная о моей работе над проектом FLProg, предложило создать систему мониторинга температуры в серверных шкафах, и управления работой их вентиляторов. Информация о текущей температуре должна отображаться на табло в помещении дежурных инженеров, и в случае повышения температуры свыше определенного порога выдавать звуковую сигнализацию. Я взялся за эту работу, и вот что получилось…

Ситуация осложнялась тем что мы находимся где то в 200 километров от ближайшей цивилизации, и собирать систему пришлось из тех запасов что у меня были с собой, плюс что то из старого хлама из кладовок. В наличии у меня были:

1. Arduino Nano

2. Датчик температуры DS18B20

3. Два датчика температуры и влажности DHT-22

4. Четырехстрочный дисплей на 20 символов в строке с платой I2C

Была разработана схема устройства

Принципиальная схема

Потом разработаны печатные платы

Основная плата в программе Sprint-Layout_6

Кнопочная плата в программе Sprint-Layout_6

Утюга и специальной бумаги для технологии ЛУТ не нашлось так что пришлось вспоминать детство и рисовать платы ручками лаком, выпрошенным у уборщицы.

После первоначальной сборки и заливки пробного скетча возникли первые проблемы. Во первых, реле отказались срабатывать, хотя на катушки приходило 5 вольт. Перед установкой на плату я естественно проверял сопротивление катушек и подавал на них питание с проверкой сработки. Оказалось что реле очень хитрое. Хотя внутри и нет диодов (в обе стороны катушки прозваниваются одинаково), для них играет роль полярность питания на катушках. Скорее всего, у них подмагниченный якорь для снижения тока срабатывания. Из-за этого, релюшки переехали на другую сторону платы. После переезда релюшек все нормально заработало.

Затем была разработана окончательная прошивка для платы.

Проект в FLProg

Как работает система.

При подаче питания  на контроллер, из EEPROM вычитываются уставки порогов включения ступеней вентиляторов шкафов, и аварийной сигнализации.

Каждые 5 секунд считываются данные из датчиков и отображаются на дисплее. При превышении температуры в шкафу первого порога включается первый вентилятор, второго порога – второй, а при превышении порога аварийной температуры включается двухтональная звуковая сигнализация и начинает моргать подсветка дисплея. Квитирование аварии происходит при нажатии любой из кнопок. При падении температуры ниже уставки отключения вентиляторов оба вентилятора останавливаются.

При каждом нажатии кнопки “Меню” на экран дисплея выводится последовательно все уставки. Каждую уставку можно изменить кнопками  “Прибавить” и “Убавить”. При этом новое значение уставки сразу записывается в EEPROM.

Если в течение 1 минуты не производить никаких действий с кнопками происходит переход на основной экран индикации температуры

При нажатии сразу трех кнопок все уставки сбрасываются на начальные значения, записанные в программе. Это необходимо при первом запуске контроллера, когда в EEPROM находятся непредсказуемые значения. У меня, например, аварийная температура оказалась 387 градусов, и я бы очень устал ее сваливать до 35 градусов нажатиями на кнопку “Убавить”.

Запуск системы на столе и прогрев датчиков феном показал работоспособность программы.

Были установлены датчики и проложены кабеля до шкафов

Во время пробной эксплуатации выяснились следующая тонкость.

Во первых, ни в коем случае нельзя прокладывать кабеля к датчикам вместе с кабелями к вентиляторам. Я совершил эту ошибку, понадеявшись на малые токи вентиляторов. В результате время от времени при остановке вентилятора контроллер зависал. После разнесения кабелей на расстояние друг от друга эти зависания прекратились. Возможно так же помогло – бы применение экранированных проводов к датчикам, но таковых в наличии не было.

Прошу не обращать внимание на оригинальное крепление дисплея, но я посчитал слишком жирно ставить четырехстрочный дисплей на постоянную основу, и на следующей вахте заменю его на двухстрочный.

На текущий момент система работает третью неделю без зависанй и отказов 24/7.

Теперь немного гик-порно. Я не удержался и распотрошил сгоревший датчик DHT-22. Внутри он оказался очень умным.

Добавил: support


0

Автор публикации

не в сети 1 день

Анатолий

77
Комментарии: 26Публикации: 77Регистрация: 21-12-2017

3 комментария к “Контроль температуры в серверных шкафах и управление работой вентиляторов”

  1. Ставить в схему кт819 сильно не правильно, они тут лишние  из-за слишком большого тока базы и слишком большой мощности, кт 815 и то много будет.  Достаточно любого NPN c током 0.1 а, тот же 2N5551 на пример c хорошим запасом встанет.

    0
  2. Маааааленькое замечание к схеме.

    1. Нету вообще никаких фильтрующих конденсаторов по питанию. Установка хотя бы 470мкфх16в уже могла решить проблему зависаний .  Да скорее всего оно и работало бы стабильнее.

    2. Не понятно откуда оно вообще идет , питание !?  нету никкаких намеков на наличие бп.  Знающий человек это поймет, а другие.

    0
  3. Здравствуйте. Так получилось что я совсем недавно решил собрать подобный девайс и нашел вашу статью. Решил повторить. Скажу сразу разрабатывать в FlProg я пока не умею. движусь методом народного тыка. Вопрос такой: нажимаю компилировать и проект открывается в Arduino IDE и там просят подключить недостающие библиотеки, подключил все кроме одной — (#include «DHT_NEW.h») искал везде скачал кучу библиотек всё равно не подключается. Может я что то не так делаю? А можно этот датчик заменить на DS18B20?

    0

Оставьте комментарий

Войти с помощью: