avatar_mr.Dream

Программируемая BMS от mr.Dream [процесс изготовления]

Автор mr.Dream, 19 Фев. 2016 в 14:43

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

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

mr.Dream

Возникла интересная идея по самопрограммированию (самокалибровке) "в системе". В тиньке осталась одна свободная нога. Поча что будет без этого, но если дойдет до коммерческого продукта - буду реализовывать:
При подключенной "ячейке" закоротить эту ногу на землю, определяется напряжение и записывается в ПЗУ пороги для данной химии. Если напряжение 3,2В - это ЛЖФ, если 3,6 - ЛиПо, ЛиИон, и т.д.
То есть нужно подать ровно столько на определенные пины шлейфа, скажем так - сервисный режим для "понимающих". В этом режиме происходит так же калибровка погрешностей опоры и делителя, доводя точность оределения напряжения до максимально возможной для АЦП :) Простым смертным этого делать не нужно будет, все будет откалибровано :)

mr.Dream

#19
И так, есть продвижение в этом плане. Пока что без видео, звиняйте))
Алгоритм калибровки был выбран таким, и это окончательно: если на отдельный МК подается напряжение, равно напряжению начала балансировки для конкретного типа химии, и замыкается "сервисная" нога МК на корпус (например, отверткой), это значение напряжения записывается в энергонезависимую память и будет использоваться в дальнейшем для работы. Все остальные напряжения будут плясать с учетом процента корректировки, таким образом самокалибруясь по эталонному напряжению.
- если подать напряжение 3,6В, будет алгорим для LiFePO4
- если подать напряжение 4,2В, будет алгоритм для LiIon/LiPo
Индикация на каждом канале будет отображать следующие моменты (пока что только для ЛЖФ, так как с ионками не работал еще):
- перезаряд ячейки (с отключением зарядного устройства) - выше 3,8В;
- режим балансировки - выше 3,6В;
- нормальное состояние;
- низкий заряд - ниже 3,0В;
- глубокий разряд (с отключением нагрузки) - ниже 2,4В;
Проверил на стенде работоспособность программы - все четко :) Порадовала точность калибровки, погрешности делителя теперь до лампы).
Пора собирать полноценную плату БМС.

i

Не понял как отличить 3.6 от 4.2 на некалиброваном устройстве.
При делении их на 5 получится 0,72 и 0,84В соответственно, разница 0,12В, значит нужно "ощутить"  0,06В, что бы отделить лифер от липо.
Думаю возможны ложные опознавания. Может стоит калибровать всегда при одном напряжении, а настройку порогов делать как-то иначе?
Ну и кроме того, не все согласятся с Вашим выбором порогов. Например у меня настроен диапазон 3,65-2,2.

i

Можно например использовать свободную ножку для перевода тиньки в диалоговый режим, где ее выводы Ein, Eout, и светодиода используются не по своему назначения, а как линии ввода-вывода для какого-либо последовательного протокола, i2c, или spi (точнее их упрощенного программного аналога).
Согласен, мороки много, места мало... но возможность диалога с чипом, упрощает многие эксплуатационные проблемы.
А если удастся сделать 1-wire на свободной ноге, да еще гальванически развязанную, то кроме настройки и калибровки, появится контроль и управление батареей, т.е чисто эксплуатационные плюшки.

TRO

[user]i[/user], боюсь у тиньки13 на все эти протоколы памяти не хватит. Я тут примитивную програмку написал для управления шаговиком, код вместе с 64 байтной таблицей синуса на полтора экрана помещается (и это с моей любовью к пустым разделительным строкам), а половина памяти пограмм уже тю тю.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

i

Не спорю, потому я и взял тику25 и "откушал" у нее 1910 байт . А в случае необходимости могу перейти на 45 или 85.
А кроме того, я заметил, что сначала размер код растет как снежный ком, а его функциональность остается околонулевой, но потом рост функциональности намного опережает рост кода, а иногда и сопровождается его уменьшением.

mr.Dream

[user]i[/user], изначально планировалось вообще без калибровки каждой, тупо подбором делителя и "калибровкой" один раз и однаковой для каждого чипа. Потом возникла эта идея. Отличать 0,15В придется, а это аж 5 бит :)
Мне не нужно плюшек в виде дисплея. Акцент делался на большое и нестандартное количество элементов, для которых трудно найти китай-бмс, а так же для использования разной химии в батарее с одной БМС. Вот я например буду пихать в раму 30-34 ячейки лифера. Сколько будет стоить такая "промышленная бмс?" И думаю, что будут люди, которые захотят прокачать свой байк, добавив несколько элементов. Но при этом не заморачиваясь с поиском дорогущей платы БМС.

Касательно порогов для лифера - все по желанию. Я лучше полпроцента недозаряжу и недоразряжу, но зато батарейка будет на пару циклов дольше держать емкость) У моей БМС на рассыпухе напряженые балансировки 3,55-3,57В
А для липолей/ионок какие предусмотреть?

acyd

#25
в основном используются три типа основных типа:
1. ионки с диапазоном 4.2 до 2.75(4.15-4.18 верх, 2.8низ, начало балансировки 3.9-4),
2. 4.35-3.0 (4.30-4.32 верх, 3.2 низ, начало балансировки 4.1-4.2)
3. липоли 4.2-3.3 ( 4.15-4.18верх, 3.4-3.5низ, 4 - начало балансировки), у монстров по даташиту низ 3в, т.е 3.4 тоже нормально, а кому то 3.2 подавай.
есть еще ионки с верхним 4.1в, но уже практически не используются, только если некро из очень старых ноутских банок  - 4.1-2.5(4.1 верх, 2.7 низ, балансировка 3.9)



i

Ну так "аппетит приходит во время еды".
То на чем сейчас сэкономите, потом трудно будет впихнуть. Да и производство более 10 штук уже становится проблемой, особенно при ручной калибровке и настройке.
Хотя Вы правы, сейчас главное сделать хоть что-то, не бросить на полдороге, почувствовать уверенность в себе, прощупать так сказать "вживую"... ну а потом переделать (куда-ж без этого?).
В любом случае желаю Вам удачи и терпения.

mevial

Цитата: mr.Dream от 21 Фев. 2016 в 11:03
[user]mevial[/user], гистерезис "входа" такой, что "0" на входе, если напряжение ниже половины напряжения питания на доли вольта, и "1" на входе, если на доли вольта выше половины питания. Со всеми вытекающими.
Я имел в виду переход уровня шины данных, ведь то, что для одной микросхемы земля, для другой + питания. И соответственно диапазон логики для одной vcc - 0, а для другой vcc - 2vcc. Хотя вот смотрю я на элишн, и там что-то подобное, но не догоняю, как оно работает вообще.

mr.Dream

#28
Сегодня сделал прототит платы. С маской немного лажа вышла, нарушил технологию)) Но для экспериментов сойдет, переделывать лень.

А так же оптимизовал п/о, так как память у тиньки не блещет размером. Вписался в 796 байт ))

mr.Dream

Сегодня решил таки переделать маску.

Ну и запаял деталей на 8 каналов. Работают только 7 через один разьем.
https://www.youtube.com/watch?v=6EMA9N93WvA
Крайний справа светодиод говорит о режиме балансировки (канал запрограммирован на заниженное напряжение)
Пятый справа светодиод говорит о пониженном напряжении, но не критическом еще. (канал специально запрограммирован на завышенное напряжение).
На сегодня с меня хватит ;-)

alpatov

Хорошая идея, молодец! Жаль, что для узкого круга повторения.
Надежное ЗУ https://electrotransport.ru/index.php?topic=31814.msg750878#msg750878
Преобразователь напряжения https://electrotransport.ru/index.php?topic=31601.0
Реверс трайк https://electrotransport.ru/index.php?topic=33036.0
Электромобиль https://electrotransport.ru/index.php?topic=21852.0
Линейно-импульсный эквивалент нагрузки с ОБР https://electrotransport.ru/index.php?topic=44200.0

mr.Dream

[user]alpatov[/user], планирую делать на продажу, так как народ немного интересуется. Особенно для мощных кастом байков и нестандартной батарейки. Но пока что несколько опытных образцов отдам на тестирование узкому кругу. А вообще, результаты радуют. Точность после калибровки 0,1-0,2% получается.

mevial

Так БМС в итоге получилась не смарт, а одноразово запрограммированная?

mr.Dream

[user]mevial[/user], обычный пользователь "заказывает" пороги, или просто выбирает химию. Опытный пользователь через сервисный режим может это изменить. БМСка в своем роде получилась уникальная, так как на каждую ячейку идет свой МК и отдельный АЦП - все напряжение меряется относительно минуса каждой ячейки. В случае с единым АЦП и багатоканальным мультиплексором напряжение скажем на 24-й ячейке, это разница 24-х последовательных елементов и 23-х. Грубо говоря, это диференциальный вход 79,92-76,59=3,33В.
Если для одной ячейки измеряем десятиразрядным АЦП, то для двух в этом эквиваленте точности нужно 11, для 4х - 12, для 8-ми - 13, для 16ти каналов - 14 разрядов.
В моем же варианте от количества каналов точноcть не зависит, и теоретическое их количество определяется грузоподьемностю ТС xD. Кроме того, ошибки делителя калибруются до точности 0,1-0,2% уже на собранной плате. Да, это не полноценнай смарт-бмс, но по сравнению с "китайскими" имеет расширенный функционал. Видно, что в данный момент творится на ячейке. Ну и возможность перестроить на другие пороги/химию одной перемычкой и "эталонным" напряжением, которым хотим в результате балансировать.
В общем, буду писать в тему не часто, только по мере продвижения и испытаний.

mevial

Цитата: mr.Dream от 02 Март 2016 в 17:21
Опытный пользователь через сервисный режим может это изменить.
Сервисный режим это отдельно подключаться к каждой ячейке и программировать её? По поводу расчёта точности всё понятно, но непонятно почему за референс взято 0В, ведь если за референс брать 2В, ниже химию не припомню, то можно поднять точность измерений вдвое. В том же смарте с мультиплексором 13 битный ацп обеспечивает 1мВ точности, правда 1 бит уходит на знак, не понимаю, зачем там знак. Вы просто путаете аналоговый мультиплексор с прямым подключением каналов ацп к нескольким ячейкам. В последнем случае проблемы несколько страшнее чем падение точности оцифровки из-за нехватки битности, это ярко показывает бмс от адаптто, где каждый микроконтроллер работает с 4мя ячейками. Ваша идея мне очень нравится, чем-то напоминает элишн, который в элладе применяется, жаль, что не доведено до конца.

mr.Dream

Цитата: mevial от 02 Март 2016 в 20:48
Сервисный режим это отдельно подключаться к каждой ячейке и программировать её?
Закоротить "место перемычки" на отдельном канале отверткой или каплей припоя, подать "калибровочное напряжение", например - для лифера 3,55-3,65В, для ионок - 4,15-4,35В (для современной химии), подождать секунду (получить ответное могание светодиодом, как подтверждение "программирования"). Отключить, убрать перемычку. Или убрать перемычку и отключить. После следующего запуска напряжение начала балансировки будет ровно то, которое было подано при программировании. Но если подать 3,5-3,7В - определится алгоритм порогов для лифера. Если 3,9-4,4 - для ионок/полимеров. Как то так. Эту процедуру делать один раз, если нужно будет что то изменить в конфигурации батареи. Или не лезть "туда" никогда, просто следя за состоянием ячеек.

Для лифера (для себя) я буду делать следующие значения.
Аварийное отключение по нижнему порогу: 2,4В и ниже
Включение после отключения по достижении: 2,6В  (гистерезис 0,2В)
Индикация пониженного напряжение: 2,4-3,1В
Включение балансировки: по достижении 3,60В
Отключение балансировки: при падении до 3,55В (гистерезис 50мВ)
Защита от перезаряда, аварийное отключение: 3,85В
Восттановление зарядки после отключения 3,60 (гистерезис 0,25В, переход в режим балансировки + зарядка)
Цитата: mevial от 02 Март 2016 в 20:48

По поводу расчёта точности всё понятно, но непонятно почему за референс взято 0В, ведь если за референс брать 2В, ниже химию не припомню, то можно поднять точность измерений вдвое.
про референс не понял :) АЦП меряет от 0 до Vref. Не знаю, как можно заставить испоользовать точки отчета от 2,0 до 4,5. Знаю только, как изменить "верхнее" опорное напряжение. Но если можно было бы - сразу бы точность на 1 бит выросла ;-)