Появилась как то потребность в бесперебойном обеспечении устройства (контроллера о котором Я возможно напишу позже) электроэнергией, а значит ИБП. Вводные следующие:
- Входное питание плюс 12 вольт с копейками
- Свинцово-кислотный АКБ (почему такой, читай ниже)
- Возможность отключение нагрузки при КЗ или при низком заряде АКБ
- Возможность самоотключения при критическом заряде АКБ
- Управление и опрос ИБП по интерфейсу I2C (можно и UART, но мне так больше нравится)
- Контроль заряда и работы АКБ.
- "Планирование" циклов заряда
Итак, задача поставлена, приступим к решению. Для начала определимся с типом АКБ и с параметрами, которые страсть как хочется контролировать. Ввиду небольшой нагрузки, порядка 200 мА постоянных и периодически кратковременных порядка 2.5 А большая емкость и большие токи не нужны. Прибавив к этому требованиям к небольшим габаритам выбор пал на свинцово кислотный АКБ типа 12012 (рисунок1). Теперь сразу отвечу на немой вопрос почему не выбрал литий ионный аккумулятор. Ответ прост - безопасность. Такие АКБ имеют неприятную особенность вспыхивать ярким пламенем, что не входит в ТЗ к устройству как и собственно в Мои планы. Параметры для контроля соответственно напряжение и температура самого АКБ в процессе заряда.
Так как Я больше программист, нежели схемотехник, хотелось бы решение на готовых модулях, желательно компактных. Так:
0. Контроллер Arduino Nano соответственно для контроля работы
1 - контроль тока ACS712, контроль напряжения аналоговые входы ардуинки. Но здесь экспериментальным методом был выяснен недостаток данной схемы. Если с измерением входного напряжения проблем не будет (используя резистивный делитель), то с измерением напряжения батареи есть, скажем, некоторые трудности. Ардуинка, точнее atmega 328, имеет особенность в виде питания через аналоговый вход. То есть если подать на аналоговый вход +5в (минус к минусу источника) то она с невозмутимым видом включится. А мы помним, что в ТЗ есть условие при критическом уровне напряжения ИБП должен отключиться. Что же делать как же быть... Решение возникло в виде применения оптопары - pc817. Коллектор через резистивный делитель подключается к плюсу АКБ, а эмиттер подключается к аналоговому входу. Теперь подавая напряжение на анод можно подтягивать плюс АКБ к аналоговому входу. производить измерения и в случае необходимости отключать. В моей программе подключение происходит периодически 1 раз в пол секунды и после заданного времени стабилизации происходит измерение. Что касается точности измерения, то они отличались от расчетных но были абсолютно линейными (проверено на лабораторнике) и требовалось лишь ввести корректирующий коэффициент
2 - контроль температуры DS18B20
3 - зарядка АКБ. Тут все интереснее. Почитав интернет на тему методов зарядки АКБ отсеев стандартные методы зарядки типа буферной (нет возможности отключить АКБ и входное напряжение ниже 14 вольт и еще куча несоответствий ТЗ). На просторах поднебесной был найдет любопытный модуль SDLA12TA (рисунок 3) (характеристики ищи там же). Позволяет сконфигурировать необходимый ток заряда с помощью резистора. Но. В ТЗ сказано, что должен быть контроль процесса заряда, но как же контролировать заряд? На модуле имеется два статусных светодиода, аккуратно удалив которые можно заменить на оптопару, к примеру тот же pc817. Отследив с помощью мультиметра плюс и минус на светодиоде с помощью тонких проводов можем подпаяться к аноду и катоду оптопары. Теперь через эмиттер и коллектор можно подключить на вход ардуинки +5 вольт, не забыв подтянуть через 10кОм к земле, и получить статусы "зарядка" и "зарядка окончена". Для запуска модуля на входе модуля быть напряжение больше или равно 18 вольт. Соответственно добавляем в схему повышающий модуль SX1308. Для включения и выключения зарядки n - канальный мосфет не подходит так как минус на всех плате будет общий (Я немного параноик по поводу объединения минуса на всех схеме) и смысла это не имеет; p-канальный мосфет не подходит. потому что для управления необходимо напряжение равное напряжению на стоке (если Мне не изменяет память) что влечет внесение в схему дополнительных элементов. Так что не мудрствуя лукаво решил применить реле, что добавляет безопасности в виде физического разрыва цепи заряда.
4 - с вопросом зарядки разобрались, теперь самое главное. Схема переключения с основного питания на резервное. Схема с реле была бы очень медлительна и нагрузка успевала бы выключиться. По этому пораскинув тем что есть в голове и как следует взболтав, была порождена схема на p-канальном мосфете. Чем интересна эта схема. Ну во первых скорость срабатывания обеспечивает не отключение нагрузки при переходе на АКБ. Во вторых с помощью потенциометра можно настроить порог переключения. В третьих с помощью еще одного реле можно отключать и подключать к мосфету с помощью реле, что удовлетворяет требование к отключению ИБП при критически низком заряде АКБ.
5 - отключение нагрузки в случае КЗ или низком заряде АКБ. Тут все просто на выход нагрузки нацепим мосфет IRF520.
Итак. Схемотехнически все требования удовлетворены, теперь садимся за кульман, то бишь Sprint-layout и ваяем схему. Ввиду сложности плата получилась аж двухсторонняя. Модули разместил на штырьковые разъемы для облегчения монтажа и смены модуля в случае выхода из строя.
Дальше программа. Тут сложнее. После пары недель и пары вариантов была написана прошивка которая позволяет выполнить все условия в ТЗ. Итак что может ардуинка в данной схеме:
-Контролирует напряжение АКБ при нагрузке и без вычисляя остаточную емкость Также при зарядке контролирует температуру батареи, так как перед тем как раздуть щеки АКБ начинает неистово греться что ардуинка заметит и отключит от нагрузки или зарядки, предварительно сообщив об этом по шине связи. Также имеется контроль наличия подключенного АКБ (напряжение О), о чем опять же заботливая ардуика сообщит
-Контролирует ток нагрузки. Причем есть два уровня отключения нагрузки. Внутренний прописанный в 4 ампера, и тот который можно передать на шине связи.
-Контролирует процесс зарядки АКБ. Опять же не просто так. Перед подключением цепи зарядки, АКБ отключается от мосфета, а после подключение цепи зарядки контролится напряжение на АКБ. Если напряжение не выросло или равно напряжению на выходе повышающего модуля - неисправность цепи заряда -> отключение цепи заряда -> сообщение по шине.
-Считает циклы заряда и разряда. Прогнозирует время работы при текущей нагрузке (читается по шине). Планирование циклов зарядки осуществляется мастер контроллером который выдает разрешение на зарядку по шине связи.
-При низком уровне напряжения АКБ (задается по шине) отключается нагрузка. При критически низком уровне АКБ арудинка отключит реле межу АКБ и мосфетом тем самым самовыключится (вспоминаем требования ТЗ)
-Также по шине есть возможность запрета работы от батареи в случае необходимости. Читается температура и напряжение АКБ. Ток потребления и напряжение на входе.
Получилось таки устройство не простое и не сложное, но все же работающее. Аналогов, удовлетворяющим требованиям, Я не нашел, кроме разве что одного - PS-1230 . Но оно не такое функциональное и имеет одну неприятную особенность в виде свиста дросселя на низких токах (в районе 250мА), которые будут являться постоянными.
Скачать список элементов (PDF)
Прикрепленные файлы:
Автор: Ivan_digital_heart