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

в 6:18, , рубрики: diy или сделай сам, 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 жесткий диск, описывать не буду. Поведаю лишь об особенности, которой я не нашел ни в одном из этих туториалов. Как известно, шаринг происходит копированием ключа (secret в терминологии BittorentSync). Есть ключи Read only и Read write. Но есть еще один шифрованный ключ (encrypted secret). Если поделиться этим ключом, то машина сможет скачать данные, но каждый файл будет зашифрован ключом, полученным из этого encrypted secret. Проблема в том, что этот третий вид ключей нельзя сгенерировать обычным способом, надо сначала попросить у них API ключ, затем пошаманить с конфиг-файликами, и тогда веб-сервер на 127.0.0.1 будет генерировать сразу по три вида ключа.

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

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

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

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

Часть 1

Личное облако на Raspberry Pi и разработка устройства бесперебойного питания для него
Тут слева на вход подается напряжение от ноутбучного блока питания в 19В, рабочий диапазон 16-30В. Регулятор напряжения LM317 на выходе имеет 13.6В. Почему 13.6? — вот почему.
Резисторы 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 . Выбрал ее вместо самой популярной LM2596 из-за больших эффективности и максимального значения мощности. Еще видно, что в 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. Вот статья, где объясняется как. Я этого не делал, потому что и так заработало.

Цена

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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js