Счетчик mAh для контроля разряда LiFePo4 батарей

Идея устройства возникла на форуме rcdesign.

Постановка задачи
Аккумуляторы, выполненные по технологии LiFePo в процессе разряда сохраняют свое напряжение практически до полного исчерпания емкости, после чего напряжение резко падает, представляя угрозу для нормального функционирования бортового оборудования модели. Разрабатываемое устройство должно позволить отслеживать разряд батареи по количеству израсходованных мАч, короче говоря, нам нужен электросчетчик постоянного тока.

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

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

Принцип действия
Для успешного решения задачи нам потребуется периодически (5-10 раз в секунду) производить измерение тока в цепи. Для этого используем датчик тока в виде шунта. Понятно, падение напряжения на шунте будет невозможно зафиксировать на АЦП микроконтроллера, так что воспользуемся операционным усилителем. Измерять ток будем по таймеру, при этом будем накапливать сумму всех произведенных ранее измерений. Поскольку мы точно знаем сколько измерений будет произведено за час, мы будем попросту делить накопленную сумму на определенный коэффициент для того, чтобы получить искомые израсходованные мАч. Ну а дальше, счастье - дело техники.

Принципиальная схема
Принципиальная схема устройства приведена по ссылке. Схема имеет некоторые несущественные отличия от приведенного ниже конечного устройства. Например, выводы мультиплексоров разведены иначе, но это никак не сказывается на ее наглядности…

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

Для масштаба рядом лежит элемент AA.

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

Я провел несколько экспериментов на сравнительно небольших токах. Ну, понятно, пока в идеальных условиях без пульсаций и резких изменений нагрузки. В качестве нагрузки выступали 10-ваттные резисторы. Частота дискретизации была совсем небольшой (порядка 2-3 Гц), но для постоянной нагрузки это безразлично. Время замерял секундомером в телефоне.
Результаты:
Опыт 1.
Ток 360 ма, за 1:39 натикало 10 mAh (должно было натикать 9.9)
Опыт 2.
Ток 1000 ма, за 6:04 натикало 104 mAh (должно было натикать 101)

По мере развития проекта буду дополнять страницу.

  • 2188
Comments
Виктор

А почему не используете датчик тока на эффекте Холла. На нём повторяемость намного лучше. И эту задачу решают почти все современные ОСД.

ALS

Для успешного решения задачи нам потребуется периодически (5-10 раз в секунду) производить измерение тока в цепи.

Можно пропустить “выбросы”, не знаю насколько это повлияет на точность, но что мешает мерять ток постоянно?

xius
Виктор;bt138825

А почему не используете датчик тока на эффекте Холла. На нём повторяемость намного лучше. И эту задачу решают почти все современные ОСД.

Ну датчика холла нет под рукой, решил так. ОСД - это очень серьезное оборудование и денег стоит. А такую козявку можно в любую модель влепить.

Кстати, стоимость датчика хола несравнима со стоимостью шунта и операционника. Посмотрим, конечно, какая точность будет…

xius
ALS;bt138826

но что мешает мерять ток постоянно?

Современная цифровая техника в любом случае не меряет ничего “постоянно”, только дискретно. И частота этого процесса называется частотой дискретизации. Что будет с точностью и с вероятностью пропуска пиков сразу сказать не могу, надо проводить эксперименты. На худой конец, подниму частоту.

sirQWERTY

Что используется в качестве шунта? Я когда решал подобную задачу, тоже думал, чем регистрировать ток (до 150А). В итоге остановился на аллегровских датчиках.

xius
sirQWERTY;bt138832

Что используется в качестве шунта?

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

ALHIMIK777

Может все таки не мА/ч , а мА*ч ?
И почему выбрана столь малая частота дискретизации ?

xius
ALHIMIK777;bt138835

Может все таки не мА/ч , а мА*ч ?

Точно, накосячил. Спасибо, поправил

ALHIMIK777;bt138835

И почему выбрана столь малая частота дискретизации?

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

ALHIMIK777

Однако, на большой частоте всегда есть риск наехать на то, что контроллер из прерываний вылезать не будет.

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

ALHIMIK777
xius;bt138836

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

Частота дискретизации сверху ограниченна соотношением частота АЦП/число циклов для преобразования, т.е. в пределе получается следующим образом - преобразование завершилось, установился флаг прерывания, в прерывании считали результат измерений и запустили новое преобразование.Обработкой и выводом результатов можно заниматься в фоновом режиме.

sirQWERTY

Можно еще так написать: "… есть риск не успеть в фоновом режиме обсчитать (а там прилично математики для 8 битного контроллерам может быть, деления эти еще) данные между преобразованиями.
На самом деле все относительно, зависит от ситуации.

xius
ALHIMIK777;bt138851

Не обязательно, частота дискретизации сверху ограниченна соотношением - частота работы АЦП/количество тактов на преобразование, т.е. преобразование завершилось, установился флаг прерывания, в прерывании считываем результат измерений и запускаем новое преобразование.

Так делать очень не рекомендуется. Между окончанием предыдущего измерения и началом следующего должно пройти минимум 2 мкс, а иначе накопительный конденсатор АЦП не успеет зарядиться и в результате получится полная фигня.

xius
sirQWERTY;bt138854

Можно еще так написать: "… есть риск не успеть в фоновом режиме обсчитать (а там прилично математики для 8 битного контроллерам может быть, деления эти еще) данные между преобразованиями.
На самом деле все относительно, зависит от ситуации.

Вы чертовски правы