avatar_clawham

Разработка народной BMS на BQ77PL900

Автор clawham, 04 Март 2014 в 00:36

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

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

clawham

#630
вообще неправильно вы все поняли :)

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

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

Разъем силового комутатора это просто земля и два выхода. на одном из них появляется +3,3 вольта если все ячеки этой платы разрешено разряжать а на другом появляется +3,3 вольта если ячейки платы разрешено заряжать.

Выводы для программирования микросхемы - это выводы прошивки процессора atmega328. Сама бкюшка не программируется никак. её просто впаиваем.

Line +- это изолированная линия обмена данными между платами. Её особенность в том что ей надо снаружи платы дать 5 вольт через 100-1000 ом резистор. Все выводы Line+ всех плат подключаются вместе впаралель. аналогично и Line - тоже все впаралель. Собственно блютузмодуль тоже может питать линию как и любой юсб-уарт переходник. тогда Line- это земля переходника или блютуза а Line+ - через 1 килоом на RX модуля а TX через 100-1000 ом на TX модуля. Или если модуль слабый или вырубает питание без подключения - тогда Line+ через 100-1000 ом на +3.3-5-12 вольт а TX модуля через диод анодjv на Line+ и Катодом на TX модуля.
Без подпитки линии через подтягивающий резистор - работать не будет межплатная связь.

Перед запайкой атмеги и бкюшки - проверить умощнитель балансировки. Для этого подключить батарею и убедиться что никакие светики не горят и вообще ниоткуда дым не идёт. Дальше пробегаемся тестером по площадкам бкюшки - там должны быть поячеечные напруги один-в-один как они есть на входе. Дальше пробегаемся по двум соседним пинам бкюшки резистором 500-1000 ом и проверяем что соответствующий светодиод балансировочный загорелся, транзистор не греется, ничего не залипает. Залипает это ситуация когда через sot23 биполярник пытаются протащить полтора ампера балансирного тока. он от этого перегревается и уходит в тепловой пробой. дальнейшие операции по входу со стороны бкюшки не приводят к прекращению балансирования. потому это ахтунг! это надо проверить чтоб транзистор выдерживал ваш балансировочный ток как минимум на протяжении 10 минут и при этом мог спокойно отключаться. Соответственно если ток больше одного ампера то надо и соответствующие биполярники и охлаждение соответствующее или вместо NPN биполярника выходного - полевик irlml2502 и ему между гейт-сурс -  резистор 0603 на 1-10 килоом. тогда дожно ток балансировки подянять до 4 ампер но будут выпаиваться резисторы 1206 без охлаждения. тут уже все на вашей ответственности.
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

kokaradik

[user]clawham[/user], спасибо за пояснения! Перерисовал схему для батареи S16, сейчас правильно?  :-)



1. По поводу шунта что то я не понял) Куда его подключать?

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

3.  Так ли нужна линия связи между двумя БМС? Пока я не планирую Блютус модуль, так что по идее я могу не соединять платы между собой, ведь коммутатором я все равно могу управлять.

acyd

#632
1. шунт на первую плату, где "неведомый разъем" в центре платы
2. Силовой размыкатель в той схеме требует доработки и настройки, т.е просто так не заработает, рабочая версия схемы, где он интегрирован в 1.9, Но я дорабатывал и под эту - пару дорог перерезать, несколько резисторов поменять и также потребуется питание драйверов и микросхемы. Стоковая на tl431 у меня не завелась, так же как и простой эмиторный повторитель - при нагрузке выгорали сместе с операционником, пришлось делать мини импульсный.

и  в силовом на каждую оптопару можно индикаторный светодиод по входу вместо одного из резисторов
3 связь между бмс нужна не только для блютс, без ней платы начнут разбегаться друг от друга. Кроме этого нужна калибровка самих плат(программно по вольтметру и эталонному испочнику) и калибровка связи  - подбирать резисторы у оптопар(впаиваются подстроечники 4шт и крутятся особым образом). Подключиться к терминалу для калибровок можно к компу без блютус модуля, через шнур uart-usb

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

А так же если соберетесь делать модулек питания блютуса, то там стоит кренка на 5в и она с 18 вольт жрет столько, что умудряется высадить батарейку, решается просто - сама кренка меняется на китайский импульсный dc-dc. Или тупо включать блютус только когда хочешь посмотреть.

вот изменения для размыкателя в 8.0, на котором у меня работает плавный пуск

список изменений:
схема 8.0(схема 1.9 комбайн) старый->новый номанал
r44(r178) 1R->1K
r23 500K - убрать
r36(r190) 1R->1K
r43(r186) 1M->5M
r32(r183) 120k->100k
c6(r184) 100nF->1M
r34(rv1_низ) 22k
rv1_Низ(r210) 100k
rv1_Верх(перемычка)  1R
r51(перемычка) 1K->1R
r33(r189) 1M->120K
r46(r172) 2M->1M

kokaradik


bobik19

[user]clawham[/user],  Здравствуйте !
Скажите сколько сейчас будет стоить платы с микросхемами прошитыми для работы с титанатом?

clawham

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

bobik19

[user]clawham[/user],  без балансировки рекомендуют до 1,9 разряжать, с балансиром нижний порог 1,6-1,7 В в зависимости от типа титаната

clawham

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

bobik19

Цитата: clawham от 30 Июнь 2017 в 08:15
В плате все-в-одном последней версии - все готово отлажено и учтено. закупайте много транзисторов в sot23 и двукратный запас бкюшек и вперед.

а можете дать ссылку на плату все в одном))), на форуме вижу только модульное исполнение из нескольких плат

clawham

1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

JT

[user]clawham[/user],  в релизе SmartBMS V 1.9 изминения  которые в сообщении 632 в схему и печатку уже внесены ?
Защитные стабилитроны по входам BQ нужны ?

clawham

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

jeen1s

Для чего в v1.4-v1.8 использовался Кварц(X1)?, и его нет в v 1.9.

clawham

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

i

Цитата: clawham от 27 Июль 2016 в 08:31
...
Да если Вы разбираетесь хорошо в аврках то вот что сильно очень реально надо - так это загрузчик.  Требований немного - простой интерфейс дуплексный - линия то RX и TX замыкает на себя а потому говорит один - слышут все и этот один тоже.
Второе - размер минимальный. у меня ооочень мало флеши в 32 меге осталось.
Третье - чтоб умел и еепром тоже вычитывать.
4 - 4 платки впаралель чтоб одновременно прошивались с линии ибо перекидывать 32 килобайта по 9600 блютузу это пол минуты минимум без всяких проверок и повторов а надо бы повторять посылки если ктото чтото на линии не расслышал - ответить то они смогут только в конце блока.
5 - вход в загрузчик по команде с компорта. чтоб послал типа #$1004$# и все скажем 4 платы перекинулись в загрузчик и начали обновляться.

Короче есть над чем работать. В меге сичас занято 31132 байт флеши, 1003 байта еепрома и при програмном стеке в 350 байт свободной оперативы - 92 байта. Конечно если постараться - есть где сэкономить но в общем загрузчик надо сверхмаленький.
У меня возникла такая же проблема, только на тиньке25. У нее вообще всего 2К флеша (причем связь занимает почти половину его) и 128 байт RAM. Приспичило разом обновить прошивку во всех 18 микроконтроллерах и желательно не разбирая батареи, через внешний разъем.
Как ни странно, мне это удалось (я писал), даже общий размер кода уменьшился... на пару байт.

Основная идея в том, что загрузчик использует систему связи основной программы. Таким образом чисто загрузчик ("мертвый код", не нужный самой программе) занимает всего 164 байта (82 слова).
Программа делится на две части: система связи+загрузчик(у меня 920байт) и собственно программа, которая пользуется той же системой связи, что и загрузчик. Программа, получив особый пакет, передает управление загрузчику, тот начинает принимать свои особые пакеты и записывать данные из них в область основной программы. Закончив этим заниматься, загрузчик (по команде) передает управление основной программе. Все, дело сделано.

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

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

Прим: точками обозначены принятые пакеты с данными.

clawham

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

i

Сочувствую.
Но думаю, что и на си такое  тоже можно делать. Я, конечно, в нем уже давно не профи, но ...
Как я помню, линковщик берет готовые объектные коды и заменяет символические имена на конкретные адреса функций, беря их из файлов. Если объектный код системы связи не изменился, то остальной код получит "старые" адреса и заливать нужно только этот новый код.
Разве нельзя сделать две прошивки, одна с системой связи и микро-загрузчиком, а вторая со всем остальным, которое пользуется библиотечными функциями из первой прошивки? Наверняка это можно сделать... другое дело что с микроконтроллерами обычно так не поступают, но на больших компах это сплошь и рядом.

Забыл сказать, что моя система связи квитирует каждый посланный пакет, то есть его примут, либо все либо никто. Битый пакет автоматически повторяется. Это уже заложено в ней самой, также как и в CAN. Именно из-за этого я отказался от UART... он конечно прост, но туповат.

clawham

уарт это физ уровень..а как вы его там будете отрабатывать логически - ваши проблемы :) хотя конечно можно и чтото наподобие 1Wire делать тогда любой получатель учуяв неладное - заблокирует шину и сообщит о проблеме.

ну в общем....есть определенные проблемы.
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham