Сервер за копейки
- среда, 25 июня 2025 г. в 00:00:09
КДПВ
Обычно сервер ассоциируется с чем-то дорогим и недоступным обычному человеку. Даже на вторичном рынке они пока еще стоят весьма существенно (если не рассматривать совсем уж допотопные экземпляры). Однако, есть и такие, которые можно приобрести весьма недорого.
Это, так называемые, блейд-серверы. Блейд-сервер (от англ. blade — лезвие) – концепция использования нескольких компактных серверов в одной общей корзине (шасси). Некоторые узлы сервера (такие как блоки питания, охлаждение, сетевые адаптеры, управление) вынесены за пределы сервера и сделаны общими для всех. Благодаря этому исключается излишнее дублирование и, соответственно, уменьшаются габариты и общее энергопотребление всей сборки. Увеличивается плотность вычислительной мощности на единицу объема серверной стойки. Из-за того, что единичный блейд-сервер бесполезен без корзины, а в корзине избыточен, они не пользуются спросом на вторичном рынке, а потому стоят весьма недорого.
Сервер со снятой крышкой
Мне удалось приобрести пару таких серверов за сумму всего порядка 1200 р. за шт. Это китайские серверы BH620 фирмы Huawei. Что же мы получаем за эти деньги? В каждом сервере имеется по 2 процессора Intel Xeon E5645, работающих на частоте 2,4 ГГц и имеющие по 6 ядер и 12 потоков. Сервер укомплектован 9-ю планками памяти DDR3 по 8 Гб (всего 72 Гб), дисковым RAID массивом из двух SAS дисков объемом по 300 Гб и 6-ю гигабитными Ethernet адаптерами. Даже сейчас это весьма неплохая вычислительная мощь, если сравнивать с бытовым сегментом, особенно, если принять во внимание копеечную цену всего этого добра. На одной плате-мезонине в передней части платы располагается RAID-контроллер дисков фирмы LSI, в задней части платы на двух мезонинах располагаются Ethernet-контроллеры на микросхеме Broadcom BCM5715. Каждая микросхема обеспечивает по 2 гигабитных порта. Еще одна такая же микросхема распаяна непосредственно на материнской плате, итого 6 интерфейсов.
Фото задней части платы
Сам сервер весьма компактен. Ширина всего 31 см, длина 48 см, толщина 4 см. В корзине они стоят вертикально в количестве 10 шт. Спереди располагаются 4 отсека для SAS дисков формата 2,5”, сервисный разъем, кнопка включения и индикаторы. Задняя стенка полностью отсутствует. Через нее в сервер задувается воздух для охлаждения. Также, сзади на плате расположены многоконтактные разъемы для соединения с корзиной и пластиковые направляющие. Направляющие помогают правильно состыковать разъемы, не повредив их.
Фото со стороны разъемов
Чтобы запустить этот сервер, необходимо обеспечить, как минимум, питание, охлаждение и подключение монитора с клавиатурой. К сожалению, гугление не выдало никакой существенной технической информации, которая помогла бы с решением этих вопросов. Нет ни распиновки разъемов, ни электрических параметров сигналов. Придется их изучать самостоятельно. Из рекламного буклета было выяснено, что сервер питается напряжением 12 В, а спереди через сервисный разъем выходят сигналы VGA и 3 шт интерфейсов USB. Проще всего оказалось найти куда подключать питание 12 В. Широкая шина питания идет от задних разъемов куда то вглубь платы.
Фото задней части платы. Шина питания 12 В
Вот только некоторые разъемы оказались выломаны. Но это не беда, все равно ответных частей у меня нет. Я подпаялся к их контактам несколькими тонкими проводами. Затем пучок тонких проводов соединил с толстым проводом, который подсоединил к лабораторному блоку питания. Определить полярность также несложно – минусовой провод питания должен звониться накоротко с корпусом устройства.
Подав питание, мы видим что некоторые светодиоды на плате зажглись и начали мигать. Значит, железка живая и что-то в ней происходит. Отлично, идем дальше.
Теперь нужно попробовать подключить к серверу монитор и клавиатуру. Сначала я попытался найти фирменный кабель, который должен подключаться к сервисному разъему. После весьма долгого гугления что-то похожее нашлось на Алиэкспресс. Внешний вид и количество контактов у разъема на фото было примерно похоже на то, что требовалось. Однако цена этого кабеля вместе с доставкой была почти как за оба сервера сразу, что выглядело не очень бюджетно. К тому же ждать месяц совершенно не хотелось. Попробуем выяснить распиновку и спаять кабель самостоятельно. Для этого я открутил маленькую платку с сервисным разъемом для более внимательного изучения.
Плата с сервисным разъемом
На плату приходят два пучка проводов, один из которых состоит из трех экранированных пар из белого и зеленого проводов. Очевидно, это и есть те 3 интерфейса USB, которые выходят на сервисный разъем. Так я вызвонил контакты на сервисном разъеме, которые отвечают за сигнальные пары USB. Экраны проводов соединены с общим проводом. Прозвонив их, я нашел все контакты сервисного разъема, соединенные с общим проводом. Питания 5 В среди этих проводов не было. Но, на плате были распаяны 3 одинаковых цепочки из самовосстанавливающихся предохранителей и фильтрующих конденсаторов. Видимо это и есть питание 5 В, которое шло с другого разъема. Прозвонив эти цепи, я определил все контакты, отвечающие за 5 В. Таким образом, с USB мы разобрались.
Для подключения монитора по интерфейсу VGA необходимо 5 сигнальных проводов – R, G, B, HS, VS. Первые 3 отвечают за 3 основных цвета "красный", "зеленый" и "синий", оставшиеся два — за строчную и кадровую синхронизацию соответственно. Поскольку на маленькой плате не было электронных компонентов, которые хоть как-то могли быть связаны с выводом изображения, можно предположить, что эти сигналы должны приходить с материнской платы транзитом напрямую на сервисный разъем. И да, после прозвонки такие сигналы были обнаружены – 3 сигнала – R, G, B шли напрямую и 2 сигнала шли через небольшое сопротивление 100 Ом. Последние, видимо, сигналы синхронизации. Кто из них кто, я предполагал выяснить с помощью осциллографа. Строчные синхроимпульсы должны идти с частотой около 31 кГц, кадровые – 60 Гц. Полная распиновка разъемов, полученная в результате исследований, приведена в таблицах ниже. Может быть, кому то пригодится эта информация.
Таблица 1 – Разъем с сигналами USB от материнской платы. Контакт 1 отмечен на разъеме треугольничком. Нумерация – в одном ряду четные, в другом нечетные.
N | Назначение | N | Назначение |
---|---|---|---|
1 | GND | 2 | USB1- |
3 | USB2- | 4 | USB1+ |
5 | USB2+ | 6 | GND |
7 | GND | 8 | USB3- |
9 | NC | 10 | USB3+ |
11 | NC | 12 | GND |
Таблица 2 – Разъем с сигналами VGA и питанием от материнской платы. Контакт 1 отмечен на разъеме треугольничком. Нумерация – в одном ряду четные, в другом нечетные.
N | Назначение | N | Назначение |
---|---|---|---|
1 | Button | 2 | +5V |
3 | R led | 4 | +5 V |
5 | G led | 6 | +5 V |
7 | B led | 8 | +3,3 V |
9 | R | 10 | GND |
11 | G | 12 | GND |
13 | B | 14 | NC |
15 | HS | 16 | GND |
17 | VS | 18 | GND |
Таблица 3 – Сервисный разъем. Контакт 1 вверху справа, если смотреть на разъем спереди. Нумерация – против часовой стрелки, вверху справа налево 1-13, снизу слева направо 14-26.
N | Назначение | N | Назначение |
---|---|---|---|
1 | USB +5V | 26 | USB +5V |
2 | USB +5V | 25 | USB +5V |
3 | USB3- | 24 | USB1- |
4 | USB3+ | 23 | USB1+ |
5 | GND | 22 | GND |
6 | 21 | ||
7 | VGA R | 20 | GND |
8 | VGA G | 19 | GND |
9 | VGA B | 18 | GND |
10 | VGA VS | 17 | USB2- |
11 | VGA HS | 16 | USB2+ |
12 | USB +5V | 15 | GND |
13 | USB +5V | 14 |
Сервисный разъем крупным планом
Ответный разъем, похожий внешне на сервисный, ищется на Алиэкспресс по названию SCSI MDR 26 pin. Этот разъем был заказан, а пока он едет, просто припаяемся проводами напрямую к контактам.
Подключаем VGA
Однако, далее меня ждало разочарование. После подачи питания никакие сигналы на монитор не выдавались, также не было и питания на USB. На кнопку включения тоже не было никакой реакции. Только лишь моргали различные светодиоды. Характер моргания периодически менялся, что говорило о том, что что-то там все-таки происходит. И я стал дальше прозванивать все, что можно было прозвонить и смотреть осциллографом все, что можно было посмотреть.
В задней части материнской платы были обнаружены стандартные штырьковые разъемы с шагом 2,54 мм. Один из них, судя по картинке на крышке сервера, служил для подключения встроенного накопителя USB. Два других, 10-контактных, очень напоминали JTAG, и, вероятно, предназначались для отладки и программирования микросхем ПЛИС на плате. И также обнаружился трехконтактный разъем, на котором присутствовало напряжение минус 6 В. Отрицательное напряжение явно говорило о том, что это был порт RS232 для вывода информации в терминал. Рядом с разъемом также обнаружилась и микросхема преобразователя интерфейса MAX x232, что подтвердило догадку. Был наскоро спаян кабель-переходник и вынут из закромов ретро-ноутбук TOSHIBA с портом RS232 и программой PuTTY. На одном из контактов периодически проскакивали какие-то импульсы, очевидно, это выход TX, он был подключен ко входу RX ноутбука, на другом контакте ничего не было. Видимо, это вход RX, его я припаял к выходу TX ноутбука. Ну, а их общий провод звонился накоротко с корпусом устройства.
Подключаем терминал по RS232
Сначала я запустил программу PuTTY на скорости 9600, на экране появились какие то символы вперемешку с мусором. Видимо, скорость не та. Я попробовал 115200 и вуаля! На экран посыпался осмысленный текст.
Информация из терминала
Как оказалось, при подаче питания первым стартует вспомогательный микроконтроллер MPC852T. Он работает на частоте 100 МГц, имеет 32 Мб ОЗУ и 16 Мб флеш-памяти. Он загружает операционную систему MontaVista. Это небольшая ОС linux для встраиваемых систем. После загрузки ОС, процессор инициализирует всю периферию сервера. И пока он все это не сделает, никакой реакции на нажатие кнопки включения не будет. После старта система MontaVista выдает стандартное linux’овское приглашение залогиниться. После непродолжительного подбора логина и пароля подошла комбинация root root. Однако внутри системы ничего интересного не было. По команде help выдавался список непонятных команд неизвестного назначения. Туда я копать дальше не стал.
Вспомогательный микроконтроллер
После того, как вспомогательный микроконтроллер загрузился, появилась реакция на кнопку включения. Кратковременно зажигались и гасли светодиоды на дисках и мезонинах сервера. Как оказалось, мощности моего лабораторного блока питания недостаточно для питания сервера. В рабочем режиме он потребляет ток порядка 10...11 А. При максимальной загрузке – до 20 А. Для питания можно применить стандартный блок питания 12 В мощностью 200...250 Вт для светодиодных лент, они довольно дешевы и широко представлены на маркетплейсах. Но, можно сэкономить и на этом. Для питания можно применить старый компьютерный БП. Единственное, необходимо убедится по этикетке, что он может выдать необходимый ток по шине 12 В. Также блок необходимо доработать. Инструкций по доработке в интернете имеется огромное количество. В старых компьютерных блоках питания основной канал, по которому происходит стабилизация – 5 В. Поэтому нужно отключить обратную связь от канала 5 В и оставить только 12 В, при этом нужно будет заново подобрать резистор в цепи обратной связи так, чтобы выходное напряжение составило порядка 12,4...12,6 В с запасом на падение напряжения на проводах. Также в некоторых блоках иногда необходимо дополнительно поколдовать со схемой защиты и формирования сигнала PG. Ее можно просто удалить.
Я же для питания применил доработанное зарядное устройство для 12 В буферных свинцовых аккумуляторов. Устройство выдает ток до 15 А, чего вполне достаточно для питания сервера в нормальном режиме (для ограничения максимального потребления тока можно в БИОС-setup сервера по максимуму включить все функции энергосбережения, а также отключить лишние ядра). Доработка этого зарядного устройства заключалась просто в удалении части схемы, отвечающей за стабилизацию зарядного тока и переключение в режим буферного питания после окончания заряда. Для работы в качестве блока питания, эти функции не только не нужны, но и вредны.
Устройство имеет мощное пассивное охлаждение, в нем отсутствуют вентиляторы и поэтому оно не издает шума при работе. Именно этот фактор и обусловил выбор именно его в качестве источника тока для сервера.
Поскольку сервер потребляет достаточно существенный ток, необходимо использовать питающие провода достаточного сечения, не менее 2,5 квадрата, а в непосредственной близости от сервера (например, в точке соединения тонких проводов с толстыми) необходимо установить электролитический конденсатор емкостью не менее 10000 мкФ х 16 В.
Следующая насущная проблема – охлаждение. При работе в составе с корзиной, охлаждение обеспечивала именно она. В самом сервере вентиляторов нет. Я на этот счет долго не думал, просто вырезал ножницами по металлу две дыры около процессоров и приделал туда 2 стандартных 80-мм вентилятора от старых компьютерных блоков питания.
Расположение вентиляторов
Вентиляторы запитал от тех же 12 В, что и сам сервер. Вентиляторы необходимо расположить таким образом, чтобы создаваемый ими поток воздуха проходил сквозь радиаторы процессоров и выходил наружу спереди сервера. Заднюю часть сервера необходимо заглушить, чтобы воздух туда не выходил, а шел только вперед, через процессоры. Я сделал это обычным канцелярским скотчем. Единственный момент — вентиляторы нужно выбрать такие из имеющихся, что создают минимальный шум при работе. Потребляемая сервером мощность в среднем составляет порядка 130 Вт, в принципе, чтобы выдуть такое количество тепла двух вентиляторов должно быть достаточно. А на время отладки использовал сборку из 6 компьютерных вентиляторов просто положив ее сверху.
Временный вариант
После того, как сервер начал стартовать, на разъеме VGA появились сигналы и с помощью осциллографа получилось вычислить где там HS, а где VS. Далее припаиваем разъем и подключаем монитор. Любуемся картинкой)
Установка ОС
Вначале я перепутал между собой сигналы R и B. Это выяснилось по неправильному оттенку картинки в винде. Также поначалу не хотели работать разъемы USB. Там мной были перепутаны сигналы D+ и D-. Как оказалось, китайцы в своих серверах не придерживаются стандартного цветового кода USB проводов. Выше в таблицах приведена уже поправленная распиновка.
После этого, я снес RAID массив, что там был, и создал новый, RAID 1, простое зеркалирование. Хотя для бытового использования больше подошел бы RAID 0, он обеспечивает более высокую скорость и полное использование объема обоих дисков. Но без резервирования. На созданный массив без проблем накатилась винда 10. Удивительно, но даже не потребовалось никаких танцев с бубнами и SCSI драйверами. Трех разъемов USB, кстати, вполне достаточно для работы. В одном торчит беспроводная клава/мышь, во втором – WiFi свисток, а третий для всяких флешек и прочего. У некоторых современных ноутов бывает и того меньше внешних разъемов USB.
Самодельные переходники
Быстродействие такого компьютера сложно оценить на обычных бытовых задачах. Мало где требуется 72 Гб ОЗУ и 24 потока и не любое ПО способно загрузить их все. Но все равно попробуем. На старом ноутбуке, примерно тех лет, что и сервер, с процессором Core 2 Duo T5500, 3Гб ОЗУ и HDD диском некий скетч в Ардуино компилируется около 7 мин при первом запуске и 2 мин 37 с при последующих. На описанном в статье сервере это происходит за 2 мин 39 с и 1 мин 8 с, соответственно. На относительно новом игровом ноутбуке с процессором Core i7 10870H c 16 Гб ОЗУ и SSD дисками эта же компиляция занимает 1 мин 10 с и 31 с соответственно.
Но если использовать данный девайс именно как сервер, то без высокоскоростных интерфейсов Ethernet не обойтись. Согласно краткому описанию микросхемы Ethernet контроллера Broadcom BCM5715, она содержит в себе 2 независимых интерфейса Ethernet с выходными интерфейсами типа SerDes 1G. SerDes (Serializer/Deserializer) это физический интерфейс SGMII (Serial Gigabit Media Independent Interface). И представляет собой две дифференциальные пары RX и TX. К линиям SerDes можно непосредственно подключать SFP модули. Если, например, взять SFP модуль с медным интерфейсом RJ45, то мы получим обычную гигабитную сетевую карту. Для пробы я раздобыл один из таких модулей. Их цена на вторичном рынке порядка 500...1000 р (почти как сервер целиком). Я же приобрел новый на Алиэкспресс примерно за 8$ (вместе с доставкой). Осталось найти на плате сигналы RX и TX. Они должны выходить на внешний многоконтактный разъем. На плате мезонинов Ethernet-контроллеров были обнаружены группы конденсаторов по 4 шт в каждой.
Фото платы Ethernet-контроллеров
Очевидно, это и есть разделительные конденсаторы пар RX и TX интерфейса SerDes. Осталось только вызвонить их тестером, на какие контакты внешнего разъема они идут, а осциллографом определить, кто из них RX, а кто TX. На TX должен быть виден какой-то сигнал. К сожалению, полярность тестером определить не получится, ее придется подбирать методом тыка. Это несложно, так как там всего 4 комбинации. В качестве проверки можно замкнуть этот интерфейс сам на себя, то есть соединить TX+ c RX+, а TX- c RX-. Например, перемычками.
Перемычки на интерфейсе Ethernet 6
При этом на соответствующем интерфейсе должен подняться линк.
Проверка наличия линка
Кстати сказать, линк поднимается даже если замкнуть только один провод из пары, да и полярность при этом не особо важна.
Многоконтактные разъемы
Сигналы многоконтактных разъемов, назначение которых получилось выяснить, приведены ниже. Также на этот разъем должны выходить линии интерфейса PCIe, а также линии для подключения клавиатуры и мыши по интерфейсу PS/2. Их я выискивать не стал, имеющихся интерфейсов USB оказалось достаточно.
Распиновка многоконтактных разъемов
Если линк есть, значит сигналы определены верно, можно попробовать подключить SFP модуль.
Таблица 4 — Распиновка стандартного модуля SFP
№ | Наименование | Назначение | Мой модуль |
---|---|---|---|
1 | VeeT | Земля передатчика (общая с землей приемника) | Общий |
2 | TX Fault | Индикация неисправности передатчика | Не подключен |
3 | TX Disable | Отключение передатчика | Не подключен |
4 | MOD-DEF2 | SDA последовательный сигнал передачи данных | Не используется |
5 | MOD-DEF1 | SCL последовательный синхронный сигнал | Не используется |
6 | MOD-DEF0 | Индикация наличия трансивера | Не используется |
7 | Rate Select | Не используется | Не подключен |
8 | LOS | Потеря сигнала | Не используется |
9 | VeeR | Земля приемника (общая с землей передатчика) | Общий |
10 | VeeR | Земля приемника (общая с землей передатчика) | Общий |
11 | VeeR | Земля приемника (общая с землей передатчика) | Общий |
12 | RD- | Инвертированный вывод полученных данных | RD- |
13 | RD+ | Вывод полученных данных | RD+ |
14 | VeeR | Земля приемника (общая с землей передатчика) | Общий |
15 | VccR | Питание приемника | Питание 3,3 В |
16 | VccT | Питание передатчика | Питание 3,3 В |
17 | VeeT | Земля передатчика (общая с землей приемника) | Общий |
18 | TD+ | Вход для передачи данных | TD+ |
19 | TD- | Инвертированный вход для передачи данных | TD- |
20 | VeeT | Земля передатчика (общая с землей приемника) | Общий |
Питание модуля можно взять с контакта 1А описанного выше маленького многоконтактного разъема, там как раз присутствует 3,3 В. Общий провод подключается к любым контактам GND. Сигналы выключения передатчика TX Disable, ошибки TX Fault и вход Rate Select никуда не идут уже на самом модуле, а значит и подключать их не нужно. Сигнал детектора несущей LOS можно также оставить неподключенным. Все равно, микросхема Broadcom определяет наличие сигнала сама по наличию синхронизации в потоке данных. Также можно оставить в воздухе сигналы MOD-DEFх. Между питанием 3,3 В и землей желательно припаять блокирующий конденсатор непосредственно на контакты самого модуля. Я не припаивал, вроде и так все стабильно работает. Провода сигнальных пар RD и TD необходимо свить.
SFP-модуль. Прикреплен стяжками к пластиковой направляющей
Вместо медного SFP-модуля можно аналогичным образом подключать оптические модули и соединяться с любым другим сетевым оборудованием по оптоволокну. Если же одинаковые сервера расположены в непосредственной близости, их можно соединить напрямую интерфейсами SerDes с помощью только проводов, без каких-либо дополнительных преобразователей. Единственный момент – микросхема BCM5715 работает только на одной скорости – 1Gbit, поэтому и модули и сопрягаемое сетевое оборудование должно поддерживать работу на этой скорости.
Питание сервера от единственного источника +12 В открывает заманчивые возможности по организации его бесперебойного питания. Опытным путем было установлено, что сервер стабильно работает при снижении напряжения питания до 10,5 В. После чего отключаются диски и сервер вылетает в синий экран. Если бы не диски, сервер, наверное, позволял снижать напряжение и дальше. Диски, конечно, можно заменить на современные SSD, которые требуют только одного питания 5 В. Стандарт SAS позволяет напрямую подключать к себе как SATA, так и SAS диски. Их разъемы механически и электрически совместимы за исключением небольшой пластиковой перемычки. Перемычка не позволяет воткнуть диск SAS в разъем SATA, а наоборот – позволяет. Но диски SSD большого объема стоят недешево, с ними сервер перестает быть сервером за копейки.
Разъем подключения SAS-дисков
10,5 В – это как раз и есть минимальное рабочее напряжение свинцово-кислотной батареи. А рабочее напряжение сервера 12,6 В равно напряжению полностью заряженной батареи. Можно подключить резервную батарею прямо параллельно шине питания сервера. Для зарядки батареи необходимо будет только добавить маломощный повышающий преобразователь 12 -> 15 В и несколько коммутирующих полевых транзисторов.
Однако я решил пойти несколько более сложным путем. Дело в том, что подходящей свинцовой батареи у меня не было, но зато скопилось большое количество б/у Li-Ion аккумуляторов типоразмера 18650 от отслуживших батарей питания ноутбуков. У значительного количества таких батарей была типовая неисправность – при длительном хранении встроенный микроконтроллер разряжает в ноль одну из трех последовательно включенных ячеек батареи из-за чего вся батарея приходит в негодность. При этом неразряженные ячейки сохраняют работоспособность и даже иногда показывают паспортную емкость. Если соединить большое количество таких аккумуляторов параллельно, то вместе они обеспечат необходимую емкость и ток для работы сервера. Также при работе параллельно в большой группе нивелируется разброс их остаточной емкости.
Однако, подключить напрямую такую батарею к серверу уже не получится. Максимальное напряжение одной Li-Ion ячейки – 4,2 В. Если взять и включить 3 шт последовательно, то общее напряжение составит 12,6 В – что равно рабочему напряжению сервера. Однако минимальное напряжение ячейки – 2,5 В, и всей сборки – 7,5 В, что намного ниже минимально допустимых 10,5 В для сервера. Если включить 4 ячейки последовательно, то минимальное напряжение составит 10 В, что близко к 10,5. Зато недопустимо вырастет максимальное напряжение сборки – 16,8 В, что для сервера будет явно перебор. В общем, в любом случае придется добавлять какой-то преобразователь – стабилизатор напряжения. Повышающий в первом случае и понижающий во втором.
Я выбрал схему с первым вариантом. Повышающий преобразователь должен выдавать на выходе напряжение 12 В и ток до 20 А при минимальном входном напряжении около 8 В.
Рассмотрим схему устройства:
Полная схема устройства
Повышающий преобразователь собран по прямоходовой схеме на широко известной микросхеме TL494 (или ее многочисленных аналогах). Эту микросхему можно добыть из старого компьютерного блока питания. Трансформатор также можно взять готовый из того же блока питания. При выборе донора следует отдать предпочтение наиболее фуфлыжному экземпляру – в них силовые трансформаторы самые крошечные, что в нашем случае только на руку. Трансформатор включен по автотрансформаторной схеме. Напряжение на выходной обмотке суммируется с входным напряжением. Таким образом, можно существенно облегчить работу преобразователя, ему потребуется перекачивать через себя не всю мощность, а только лишь добавить недостающее напряжение. Диодная сборка Шоттки и выходной дроссель также взяты готовые из того же блока питания – у дросселя используются те его обмотки, что ранее были подключены к каналу 5 В, это обычно две одинаковые обмотки, намотанные толстым проводом и включенные в параллель. Диодная сборка также взята из канала 5 В, они там обычно рассчитаны на 30 А. Силовые транзисторы можно взять из старых ИБП. Их множество различных номиналов, но обычно параметры у них примерно идентичные – максимальное напряжение 25-30 В и максимальный ток 50-100 А. Предпочтение следует отдать тем из них, что имеют минимальное сопротивление открытого канала (не более 5-10 мОм). Силовые транзисторы и особенно диодная сборка должны быть установлены на радиатор.
Выходные транзисторы микросхемы TL494 включены по схеме с общим коллектором, благодаря чему включение полевых транзисторов происходит быстро. Скорость ограничена сопротивлением резисторов R16 и R20. Чтобы и выключение происходило так же быстро, добавлены каскады на транзисторах VT5, VT6. Цепочки R23, C14 и R24, C15 демпфируют обмотки трансформатора, предотвращая звон при переключении. Их можно также целиком взять из донорского БП чтобы не заморачиваться с расчетом и подбором. Цепь, подключенная к выводу 4 микросхемы используется как для плавного пуска, так и для выключения преобразователя. По умолчанию через R15, R13 туда подается 5 В, конденсатор С3 разряжен и микросхема выключена.
Первичная обмотка трансформатора вообще то и не нужна. Но ее можно использовать для контроля исправности преобразователя. При работе преобразователя на ней появляются высоковольтные импульсы, которые выпрямляются диодом и через делитель поступают на вход микроконтроллера, сообщая тому что преобразователь функционирует.
Преобразователь, собранный на макетной плате
Да, всеми процессами в бесперебойнике рулит микроконтроллер. Через оптотранзистор U2 микроконтроллер следит за наличием сетевого напряжения. Если обнаружится пропадание нескольких периодов синусоиды подряд, происходит переход на работу от аккумулятора. Для этого отключается зарядка (если она была включена), подается сигнал разрешения работы преобразователя и контролируется его успешный запуск. Подстроечным резистором в цепи оптопары необходимо выставить такой порог срабатывания чтобы сигнал пропадал при падении сетевого напряжения на входе менее 190 В. Для обратного перехода микроконтроллер отслеживает отсутствие выпадения периодов в течение нескольких циклов подряд. Напряжение блока питания выставлено на уровне 12,5 В (под нагрузкой). Напряжение повышающего модуля выбрано чуть ниже – 12,3 В. В результате обеспечивается плавный, без каких-либо провалов, переброс нагрузки с сетевого источника на батарею и обратно. При пропадании сети выходное напряжение блока питания плавно снижается за счет использования некоторой энергии, запасенной в сетевых конденсаторах. Когда напряжение снизится менее 12,3 В питание «подхватит» повышающий преобразователь. Он к этому времени должен уже запуститься и работать вхолостую. Обратный переход происходит также плавно. Когда напряжение сети вырастет настолько, что выходное напряжение блока питания превысит 12,3 В, он просто заберет на себя нагрузку. Повышающий преобразователь при этом продолжит работать вхолостую некоторое время, подстраховывая, до тех пор, пока микроконтроллер не насчитает заданное количество периодов сетевого напряжения без выпадения.
Устройство без крышки
Также микроконтроллер контролирует напряжение на батарее и на выходе устройства. Измеренное напряжение отображается на OLED индикаторе. По разнице этих напряжений и известном сопротивлении рассчитывается примерный ток заряда. Можно подсчитать количество энергии, переданной батарее при заряде. Так можно косвенно оценить ее остаточную емкость. К микроконтроллеру подключена кнопка «TEST». При ее кратковременном нажатии микроконтроллер зажигает на некоторое время экран. При длительном нажатии запускает процедуру тестирования батареи. Сервер должен проработать при питании от батареи не менее определенного количества времени и напряжение на ней должно просесть также не ниже определенного порога. Пороги и уставки задаются программно. Также с определенной периодичностью микроконтроллер самостоятельно запускает процедуру тестирования батареи. Если батарея не проходит тест, микроконтроллер оповещает об этом.
К микроконтроллеру подключен звуковой сигнал. Он озвучивает нажатие кнопки и привлекает внимание оператора в случае различных нештатных ситуаций.
Батарея защищена готовой платой BMS 3S китайского производства. Она защищает от перезаряда, переразряда и обеспечивает балансировку ячеек. Батарея в сборе с платой BMS сделана отдельным блоком и подключается двумя проводами. Это позволяет при необходимости заменить одну сборку на другую, большей емкости или исправную взамен неисправной. Или добавить в параллель дополнительную батарею.
Устройство, батарея и сам сервер
Зарядка батареи производится по простейшей схеме с ограничением тока резистором. Два резистора включаются в цепь полевыми транзисторами. Сначала включается резистор бОльшего номинала R4, затем, по мере зарядки, происходит переключение на резистор меньшего номинала R3, а в конце зарядки включаются оба (R4 || R3) вместе. В дежурном режиме для компенсации саморазряда батареи через различные цепи, периодически подключается резистор большого номинала R4.
Часть схемы с микроконтроллером, обведенная сплошной линией – готовый китайский модуль Arduino Pro Mini на микроконтроллере Atmega328P. У него только лишь входной резистор R18 заменен на 50 Ом и добавлен стабилитрон, ограничивающий входное напряжение на уровне 12 В.
Устройство в сборе
Поскольку микроконтроллер отслеживает выходное напряжение и напряжение батареи он может заранее, не дожидаясь глубокого разряда, подать сигнал выключения на сервер. Например, при снижении напряжения батареи менее 9 В (3 В на ячейку). А затем, при появлении сети, автоматически его включить. Для этого используется сигналы микроконтроллера, подключенные к кнопке включения сервера и светодиодам. Различные комбинации свечения светодиодов означают разные состояния сервера (см. таблицу ниже). Данная последовательность происходит если включить в BIOS setup опцию управления питанием после отключения «Power OFF», если выбрать другие опции, последовательность будет иная.
Таблица 5 — последовательность сигналов при запуске сервера:
№ | Красный светодиод | Зеленый светодиод | Синий светодиод | Состояние | Код состояния | Обозначение состояния | Длительность |
---|---|---|---|---|---|---|---|
1 | Не светит | Не светит | Не светит | Нет питания сервера | 0 | OFF | |
2 | Не светит | Не светит | Не светит | Питание включено, загрузка вспомогательного процессора | 7 | IDLE | ~ 33 с |
3 | Не светит | Мигает быстро | Светит | Инициализация | 6, 4 | IDLE | ~ 6 с |
4 | Мигает быстро | Не светит | Светит | Инициализация | 6, 2 | IDLE | ~ 17 с |
5 | Мигает медленно | Не светит | Светит | Инициализация окончена | 6, 2 | IDLE | |
6 | Мигает медленно | Не светит | Не светит | Нажата кнопка включения (2 раза) | 7, 3 | START | ~ 23 с |
7 | Не светит | Мигает медленно | Не светит | Старт ОС | 5, 7 | ACTIVE | |
8 | Не светит | Мигает медленно | Светит | После выключения с кнопки. Можно нажать кнопку для включения сервера | 6, 4 | STOP |
Состояние всех трех светодиодов считывается по одному проводу с помощью АЦП. Лог. 0 – светодиод светит, лог. 1 – не светит.
Таблица 6 — Считывание состояний светодиодов:
Состояние | R led | G led | B led | Напряжение АЦП, В | Код |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0,413 | 85 |
2 | 0 | 1 | 0 | 0,825 | 169 |
3 | 0 | 1 | 1 | 1,238 | 254 |
4 | 1 | 0 | 0 | 1,65 | 338 |
5 | 1 | 0 | 1 | 2,063 | 423 |
6 | 1 | 1 | 0 | 2,475 | 507 |
7 | 1 | 1 | 1 | 2,89 | 591 |
Описанное устройство можно применить для бесперебойного питания любого другого устройства, требующего напряжения 12 В.
Вот так можно собрать сервер с бесперебойным питанием для дома практически за копейки. Сервер можно использовать для резервного хранения чувствительной информации, для файлопомойки, для личного почтового сервера, вебсервера и т. д.
Вопросы и замечания прошу писать в комментариях.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩