- PVSM.RU - https://www.pvsm.ru -

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него

Идея

Несколько лет пользовался сервисами типа Dropbox и Яндекс Диск, решил, что надо сделать свое хранилище. Выбирал между X86 сервером на Windows/Ubuntu, Raspberry Pi, Odroid, CubieBoard и др. Остановился на Raspberry Pi, потому что это самое дешевое решение и уже полно написано инструкций для нее — а я новичок в линуксах, наличие пошаговых мануалов мне важно.
Со стороны софта выбирал между OwnCloud и BittorentSync. Попробовал оба и выбрал второй — мне понравилась децентрализованность и возможность хранить данные в ненадежном месте зашифрованно (об этом чуть позже). Еще мне хотелось спаять что-нибудь свое, и я решил сделать источник бесперебойного питания на свинцово-кислотной батарее.
Предполагалось, что Pi будет always-on устройством, тем временем BittorentSync будет работать еще на рабочем компьютере и домашнем, небольшая часть данных синхронизируется еще и с телефоном. В итоге информация должна храниться в трех местах: одно из них всегда включено, компьютеры зашифрованы Truecrypt, а на Pi зашифрованы данные при помощи BittorentSync.

Настройка BittorentSync

Как его настраивать и подключать к Pi жесткий диск, описывать не буду [1]. Поведаю лишь об особенности, которой я не нашел ни в одном из этих туториалов. Как известно, шаринг происходит копированием ключа (secret в терминологии BittorentSync). Есть ключи Read only и Read write. Но есть еще один шифрованный ключ (encrypted secret [2]). Если поделиться этим ключом, то машина сможет скачать данные, но каждый файл будет зашифрован ключом, полученным из этого encrypted secret. Проблема в том, что этот третий вид ключей нельзя сгенерировать обычным способом, надо сначала попросить у них API ключ [3], затем пошаманить [2] с конфиг-файликами, и тогда веб-сервер на 127.0.0.1 будет генерировать сразу по три вида ключа.

Разработка схемы

Диодный мост я нарисовать смогу, но эта статья [4] все же частично про меня. При разработке схемы я опирался на тщательное моделирование всех процессов и ничего не считал, как учат в институтах, все крутил в симуляторе, чтобы не ошибиться. Прочитал десятки статей со схемами [5] зарядки аккумуляторов и UPS и к удивлению обнаружил, что большинство из них просто не работают, мое моделирование этих схем показывает, что они неправильны. При этом в комментариях им пишут «спасибо, все ок». Такое впечатление, что их никто не проверял. В итоге я проверил их все и собрал мутанта из десятка схем, который вроде работал в симуляторе…

Электрическая схема

Вся схема [6] для удобства разделена на 3 части: UPS с аккумулятором, схема автоматического отключения, выход.

Часть 1

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Тут слева на вход подается напряжение от ноутбучного блока питания в 19В, рабочий диапазон 16-30В. Регулятор напряжения LM317 на выходе имеет 13.6В. Почему 13.6? — вот почему [7].
Резисторы R4, R3, RV3 настроены так чтобы получилось 13.6В. Можно было точно посчитать сопротивления и обойтись без подстроечного резистора, но я решил не считать точно, а просто потом подкрутить.
Конденсаторы C1 и C7 служат для фильтрации питания на LM317. В принципе без них можно было обойтись, потому что на выходе ноутбучного адаптера есть свои фильтры, а аккумулятор не чувствителен к пикам напряжения для заряда. Но я решил их оставить, как рекомендуют даташиты.
Резистор R_LIM нужен, чтобы ограничить ток через LM317 и через аккумулятор, без него LM317 перегреется.
Три диода BD437 нужны, чтобы высокое напряжение блока питания не заливалось в аккумулятор и чтобы аккумулятор не пытался заряжать сам себя через LM317. Хотя я обманул, это не диоды, а транзисторы, у которых база замкнута на коллектор — то есть выполняющие функцию диодов. Чем это лучше диода? При выборе компонентов я исходил из тех, что есть в наличии в магазине и для которых есть модель в программе моделирования. Оказалось, что наименьшее падение напряжения под нагрузкой из этих деталей — вот у таких транзисторов, а не у диодов, даже Шоттки. Минимизировать падение напряжения нужно для увеличения эффективности. Если, например, падение напряжения на диоде 1В, а через него течет ток 0.5А, значит мы выбрасываем зря в воздух полджоуля в секунду.

Часть 2

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
У свинцово-кислотных аккумуляторов есть следующая особенность: если из них продолжать высасывать энергию, когда она уже почти кончилась, у них падает срок службы. Поэтому, когда напряжение аккумулятора падает до 12.2, нагрузку надо выключать. Эта схема представляет собой компаратор, который сравнивает напряжение аккумулятора с некоторым опорным, и решает, когда перекрыть нагрузке ток.
Работает схема следующим образом. Напряжение аккумулятора попадает на Зенер диод 11.5В и на вход опорного источника напряжения AD680. Резисторы R6, R5, RV2 образуют делитель напряжения, такой, чтобы оно было близко к напряжению аккумулятора минус напряжение Зенер диода (11.5В). Компаратор на выход выдает 0В, если его отрицательный вход больше, и >12В — если положительный больше. Резистор с крутилкой RV2 подстроен так, чтобы это выключение происходило как раз при падении питания ниже 12.2В. Подтягивающий резистор R9 нужен для нормальной работы компаратора LM393, так уж в даташите написано. Конденсаторы С5 и C4 нужны для фильтрации этих чувствительных аналоговых сигналов перед компаратором.
Все бы хорошо, но когда я моделировал эту схему, появилась следующая проблема. Под нагрузкой напряжение немного проседает. Когда оно падает ниже 12.2В, нагрузка отключается и исчезает проседание. В итоге напряжение поднимается чуть-чуть. Этого хватает, чтобы оно перешло обратно за порог работы, и схема снова включает нагрузку. От этого напряжение опять проседает, и схема ее выключает. Происходит страшная вещь: в районе порога нагрузка включается и отключается с высокой скоростью, такое никому не понравится.
Для решения этой беды был добавлен резистор RV1. Он добавляет гистерезис в этот компаратор. Смысл в том, что он добавляет немного напряжения на вход, когда выход положительный. После отключения нагрузки эта «помощь» тоже исчезает, и напряжению надо вырасти больше, чтобы вернуться обратно. Представьте, что в одну сторону надо перешагнуть через бордюр, а обратно можно скатиться по наклонной без бордюра.

Часть 3

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Тут все просто. Выход питания для нагрузки, фильтрующие конденсаторы, главный транзистор-ключ и конечно же светодиод. Устройство без светодиода — деньги на ветер.

Моделирование работы

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него

На этих картинках представлено 3 графика:

  • изменение напряжения аккумулятора, заданное синусоидой от 12 до 12.6В
  • 2 линии напряжения на входе компаратора (красная плоская опорное напряжение, зеленая — выход после Зенер диода и делителя)
  • ток через нагрузку (включено или выключено)

Видно, что при падении напряжения до 12.2В, транзистор закрывается, и ток через нагрузку перестает течь. Затем после возрастания напряжения более чем на 12.3В (эту разницу можно регулировать резистором-крутилкой) транзистор снова открывается, образуя тем самым гистерезис. Шкала времени в этих графиках значения не имеет, надо было лишь протестировать, при каких напряжениях происходит включение-выключение.

Печатная плата

Такую несложную плату можно собрать и на коленке, но мне хотелось получить опыт заказа красивой платы с завода. Другим решением было бы найти друга джедая лазерного утюга, но не нашел. Быстрым гуглением нашел фирму в Китае, которая согласились сделать мне партию из 5 штук за 10$ + 4$ доставка. «Хорошая цена» — подумал я и заказал. После этого ради интереса отправил запрос в одну популярную Зеленоградскую контору, они объявили цену в 3500 рублей. «Спасибо за предложение» — подумал я. Китайцы сработали быстро, через 2 дня уже выслали, через 2 недели почта доставила.

Было — стало

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него

Было

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Стало
Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него

тут пытливый глаз заметит, что вместо одной микросхемы девайс на 3 ножках — это я по невнимательности не проверил упаковку устройства при покупке. Еще, опять же по невнимательности, не проверил диаметр отверстий, и пришлось крепить плату вот так по-кривому сбоку на болты. Справа на фотографии DC-DC конвертер на микросхеме XL4015 [8]. Выбрал ее вместо самой популярной LM2596 [9] из-за больших эффективности и максимального значения мощности. Еще видно, что в 3 местах вместо обычного резистора их два. Это потому, что у меня не было подходящего номинала и пришлось городить такой «the beast with two backs».

Тестирование

С первого раза, разумеется, не заработало. Оказалось, что в CAD стандартная распиновка ножек для подстроечного резистора не совпадает с реальной. Пришлось перепаять их. Потом не заработало из-за того, что Зенер диод был слишком большого напряжения и задавливал сигнал, и я перепаял на другой на 1 вольт меньше.
И теперь, гистерезис мне в компаратор, оно работает! При выключении питания из розетки Raspberry Pi продолжает работать и раздает BittorentSync! По-всякому ее мучил, из розетки выдирал, контакты дергал, плата работала стабильно и не зависала.
Решил посмотреть на переходные процеccы при помощи осциллографа.
Вот включение и выключение питания без нагрузки (Raspberry Pi не подключен)
Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Зеленая линия — это выход DC-DC конвертера, она должна быть 5В. Желтая линия — 19В питание из ноутбучного адаптера. Видно, что при выключении никаких колебаний нет, а при включении небольшой пик.
Вот включение и выключение питания с нагрузкой (Raspberry Pi и жесткий диск подключены и работают)
Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Выключение как обычно хорошо, а при включении появляется пик в 740мВ. По идее это не страшно, у Pi и диска есть свои фильтрующие конденсаторы, 5В + 740мВ в течение 300мкс они переживут.
Питание на Pi рекомендуется подключать не через USB, а через GPIO разъемы 1 и 3. Тогда питание идет в обход самовосстанавливающегося предохранителя, иначе не хватит тока на жесткий диск.
У Pi есть известная проблема перезагрузки и отказа работы жесткого диска. Лечится эта проблема напайкой дополнительного конденсатора в 200-300мкФ поверх существующего конденсатора на USB. Вот статья [10], где объясняется как. Я этого не делал, потому что и так заработало.

Цена

Raspberry Pi — 1600р
Печатные платы 10+4$
Компоненты дя платы 500р
USB жесткий диск — уже был
DC-DC конвертер — 4.75 $
Индикаторы напряжения — 8$
Аккумулятор 12В, 4.5 Ач — 480р
Корпус — 250 р
Итого приблизительно 3800р

Недостатки и будущее развитие

Когда уже пришли платы, я обнаружил несколько косяков. В основном — не самое удачное расположение элементов. В CAD казалось, что все идеально, а когда взял их в руки, то понял, что конденсаторы можно было вот туда подвинуть, ту схему вот так повернуть и т.д. В следующий раз буду распечатывать схему, чтобы пощупать руками перед производством.
Микросхему LM317 по-хорошему надо заменить на DC-DC конвертер, например LM2596, для большей эффективности и большего тока заряда.
Значения всех конденсаторов можно было бы подкорректировать, чтобы уменьшить пик при включении.
Теперь в планах подключить к Pi реле и включать лампочку через вебсервер, но про это писать статью не буду.
На этом все.

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него

Автор: Makemake

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/raspberry-pi/68094

Ссылки в тексте:

[1] описывать не буду: http://goo.gl/yVb26r

[2] encrypted secret: http://www.bittorrent.com/sync/developers/api

[3] попросить у них API ключ: http://www.bittorrent.com/sync/developers

[4] но эта статья: http://habrahabr.ru/post/233851/

[5] десятки статей со схемами: http://goo.gl/TnzLL8

[6] Вся схема: http://habrastorage.org/files/fff/482/742/fff482742efc4d4782479734bee012e4.png

[7] вот почему: http://habrastorage.org/files/7a1/f0e/be1/7a1f0ebe164c4a94bccd2904e0c479f3.jpg

[8] микросхеме XL4015 : http://www.xlsemi.com/datasheet/XL4015%20datasheet.pdf

[9] LM2596: http://www.ti.com/lit/ds/symlink/lm2596.pdf

[10] Вот статья: http://thestuffsido.blogspot.ru/2013/05/fixing-raspberry-pi-hotplugging.html

[11] Источник: http://habrahabr.ru/post/234211/