avatar_VVK

Измеритель напряжения 4-х батареек на контроллере. Схема, исходник

Автор VVK, 26 Фев. 2014 в 13:27

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

VVK

Выкладываю схему и исходник к ней, которые представляют собой упрощенный вариант моей смарт-БМС ( https://electrotransport.ru/index.php?topic=21124.0 )

Схема простая, комментировать тут особо нечего. Контроллер питается от всех четырех ячеек через LP2950. Измеряемые напряжения заводятся на АЦП через резистивные делители. В этих цепях резисторы желательно применять 0,1%, иначе нужно будет задавать калибровочные значения в программе (сейчас они равны 0).
Предусмотрено 4-ре выхода на ключи с резисторами разряда (Discharge1...  Discharge4). Сами ключи рисовать не стал, желающие смогут добавить их самостоятельно. Также предусмотрены еще два выхода на внешние устройства, сигналы переразряда и перезаряда. Я их вывел через оптопары, но для уменьшения потребления их можно передать и через гальваноразвязанные преобразователи уровня.


Программа протестирована и полностью работающая, текст закомментирован.
По каждому каналу она производит 256 измерений, затем, в зависимости от полученного результата, задает уровни на портах Discharge1...  Discharge4 и на линиях перезаряд (в программе обозначена Chager_Key), переразряд (LowBat). После выполнения цикла измерения, для уменьшения среднего потребления процессор входит в спящий режим. В спящем режиме все устройство потребляет ~0.7мА, в режиме измерения ~1.6мА. Выход из спящего режима производится по срабатыванию WDT. Длительность спящего режима можно задать предделителем WDTPS. Сейчас цикл измерения длится ~0.4сек, спящий режим ~4сек. Т.е. отношение 1/10.
Таким образом, среднее потребление будет где-то ~0.75мА

Для контроля работы на 14-ю ногу контроллера во время измерительного цикла выводятся импульсы


i

Русские комментарии в программе забиты знаком вопроса (0x3F). Думаю кодировка слетела еще до упаковки в zip.

VVK

Цитата: i от 26 Фев. 2014 в 14:37
Русские комментарии в программе забиты знаком вопроса (0x3F). Думаю кодировка слетела еще до упаковки в zip.
Переписал комментарии в VC#, исправил вложение.

i


VVK

Перенес из другой темы:

Цитата: clawham от 05 Март 2014 в 11:16
Почитал я тут про пики ...
Про них нужно не читать, а уметь их готовить :-)

Цитата: clawham от 05 Март 2014 в 11:16
9 бит реального разрешения - остальное мусор.
Получается что если взять опору 5 вольт (от того же tl431) то можем посчитать реальное разрешение и реальную погрешность схемы.
У меня опора не 5В и не tl431. См. схему. В качестве опоры используется lp2950. У нее погрешность +-0.5%. Но это при изменении тока потребления от нуля до максимума. В данном случае потребляемый ток колеблется в пределах 0... 3 мА. При таком токе погрешность опорного напряжения значительно ниже. При этом его зависимость от температуры также мала, см. даташит, график зависимости от температуры.


Цитата: clawham от 05 Март 2014 в 11:16
У Вас скорее всего делитель на 4 применен...допустим что он откалиброван и резисторы 0.1% тогда.
5/512 = 9,765625 милливольт разрешение реальное АЦП. так как у Вас делитель - то умножаем на 4 = 39,0625 - это максимальная реальная точность измерения АЦП.
Дальше едем. опора если на 431 то  там 2% на 2.3 вольтах...ну пусть умножим на 2 уже получим +-4% стабильность опоры. Это ещё +- 3 милливольта. Тоесть реальная погрешность получится довольно плачевная :) 50 милливольт...это реальный максимум точности...то что есть ещё один сладший разряд и то что можно наусреднять шум - это не показатель...вы ведь для получения напряжения одной ячейки используете разность двух соседних...там эта погрешность суммируется...ну оно конечно не так плачевно в реальности но на больше чем 50 милливольт я бы не рассчитывал по точности. Шум он такой шум...
Усреднение как раз для измерения постоянного напряжения очень хорошо подходит, четыре цикла измерения эквивалентны одному дополнительному биту. Алгоритм усреднения можно рассматривать, как простейший ФНЧ. В данной программе одно измерение производится 256 раз. Можно задать любое число.


Цитата: clawham от 05 Март 2014 в 11:16
Но ведь впринципе этого-то и достаточно? Я когда свою БМС затевал тоже так думал сделать только использовать внешние АЦП на 24 бита...но плюнул...есть же нормальные микросхемы для этого и потом 50 милливольт это не так и страшно.
Точности в +-50 мВ не достаточно. Должно быть хотя бы +-20мВ

clawham

Агаа...опора зверская! это даа...у самого пакетик таких есть :)

А по поводу повышения разрядности усреднением....кхм....дык 9 бит это реальное разрешение, 10-тый бит вообще нужно отбрасывать ибо в него уходит нелинейность и температурный дрейф...

А вот чтоб с 9-ти бит до 12 расширить то даа...нужно не менее 24 замеров 9-тибитных НО в сигнал надо внести 1.5 LSB размахом белый шум. генератор белого шума например в армы встроен аппаратный и даже встроена цепочка смешивания аналогового входа и этого шума. Вот разрядность этого шума нужно не менее 16 бит и частота его в 10 раз больше нужна исходного сигнала...ну допустим у нас постоянка и времени вагон. тогда нам надо на операционниках пронормировать сигнал с DAC 16 бит допустим из 0...3 вольта необразовать в 3/512*1,5=9 милливольт! Тогда даа...при дичайшем усреднении мы смогли бы ловить  милливольт. Но на практике я достигал увеличения разрешения максимум на 2 разряда....дальше снова упирание в погрешности опоры, нелинейность ацп, джиттер такта для ацп и проблемы операционников...подмешать сигнал в 9/256=0,03 милливольта довольно нетривиальная задача требующая нереально прецизионных операционников и правильной разводки.

Нет я не говорю что это нереально. Я делал...работало...но не стоит забывать что у нас не постоянка! когда работает мотор то на батарее возникают колебания с учетверенной фазной чатсотой мотора.и никакие кондеры это не сглаживают. Потому и пришел к выводу что проще купить готовый 16битный АЦП! Вкупе с правильным аналоговым фронтендом можно получить жуткие 0,08 милливольт разрешающей способности...но калибровать это все дело замучаешся...Та же BQ77PL900 вносит 1 милливольт погрешности. Ибо внутренняя измеряющая ёмкость сопоставима с ёмкостью входа диференциального выходного операционника...она всегда недопоказывает 0,3...1 милливольт. Радует только то что от номера ячейки желаемой это не зависит и впринципе больше разнится у конкретного экземпляра.

Большую точность я мог достичь только спаренными герконовыми реле с позолоченными контактами...но то другое дело и размеры там совсем другие.

П.С. Пики забросил..даж программатор продал...сичас всё больше армы за периферию да msp430 за энергопотребление...ну а для народа - атмеги...их просто прошивать.

У меня тут другая проблема - как сделать микропотребляющий преобразователь для питания процесора чтоб в покое микроамперы жрал...100 вольт вход 3.3 выход...пока ничего лучше импульсника и ЛДО не придумал
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

inel

ЦитироватьУ меня тут другая проблема - как сделать микропотребляющий преобразователь для питания процесора чтоб в покое микроамперы жрал...100 вольт вход 3.3 выход...пока ничего лучше импульсника и ЛДО не придумал
Была мысль на эту тему, но проверить эффективность руки не дошли.
Если потребление небольшое, как вариант, управлять преобразователем.
То-есть при заряде конденсатора до (к примеру) 4В преобразователь отключается. Устройство питается от конденсатора. Далее при спаде до 3.5В преобразователь включается.

i

Цитата: clawham от 05 Март 2014 в 13:37
...
У меня тут другая проблема - как сделать микропотребляющий преобразователь для питания процесора чтоб в покое микроамперы жрал...100 вольт вход 3.3 выход...пока ничего лучше импульсника и ЛДО не придумал
Я поставил батарейку 3в, а высоковольтный преобразователь включаю/отключаю по команде. Проц потребляет 1мкА (с работающим RTC), а высокое отключено полностью мосфетом.

Роман Волк

Цитата: VVK от 26 Фев. 2014 в 13:27
Схема простая, комментировать тут особо нечего.
А как реализован в схеме контроль КЗ?

VVK

Цитата: Роман Волк от 02 Июль 2015 в 13:50
А как реализован в схеме контроль КЗ?
Никак, т.к. это не готовая БМС, а просто измерительный модуль.