Открытый проект универсального зарядника

Psw
R2D2:
  1. Запущено непрерывное АЦП преобразование на частоте 16000000/128=125 кГц.

Пришлось краем глаза заглянуть в даташит Атмела, что-бы узнать/вспомнить детали:
Страница 202 из Mega32_doc2503:

the successive approximation circuitry requires an input clock frequency
between 50 kHz and 200 kHz to get maximum resolution. If a lower resolution than 10
bits is needed, the input clock frequency to the ADC can be higher than 200 kHz to get a
higher sample rate.

Так а быть могет 250 Кгц будет всё-таки лучше (точность не должна особо потеряться, зато в пару разиков быстрее) чем 125 с учётом последующего усреднения ?
Ну и для сравнения страница 257 из пик 18F4431 документ 39616b:

The A/D conversion time per bit is defined as TAD. The A/D conversion requires 12 TAD per 10-bit conversion <> For correct A/D conversions, the A/D conversion clock (TAD) must be as short as possible, but greater than the minimum TAD (approximately 0.416 µs

Иными словами, в 18 пике макс быстродействие (каждого из двух) бортовых АЦП = 2 400 000/12=200 КГц супротив 200 000/14=14 Кгц у Атмела. К нему правда прибавляется ненулевое время выборки, однако даже с его учётом преимущество в скорости весьма существенное.

R2D2:

Програмная защита работает так:
<>
4. Если канал напряжения зашкаливает (т.е. дает 1111111111), значит перекрывается подача сигнала с тл на ключ.

Когда я говорил про контроль Грубых Ошибок до усреднения, имелись в виду не только Совсем уж Грубые типа переполнения (которое кстати при равенстве опорного АЦП и питающего ОУ никогда не наступит - надо превышение макс значения глядеть, а не просто переполнение анализировать), а просто превышение напряжения над желаемым (для каждого типа батарей своё) + макс возможный % погрешности быстрых измерений (например 1/32=3% + парочка/четвёрочка младших разрядиков). Ну то есть крайности тоже нужно быстро отслеживать, но - зачем же только крайности ? И подсечку преобразователя тоже можно не только грубо делать (запрет на выходе ТЛ) а и ещё помягче (при менее грубых ошибках) - к примеру уменьшение вдвое уставки тока.

R2D2:

Причем обычная ЛМ324 справлюется ОК.

Про измерение токов выше 3.5А обычной лм324 уже сказал.

R2D2:

Сильнее всего греется ключ медленно но верно нагревается до 50 градусов.

Так а без обдува ключ в корпусе (ТО220?) (без радиатора ?) нагреется до 50 градусов медленно но верно при скольких ваттах рассеяния ? Что-то мне кажется, что около 0.5-1 Вт. Иными словами, быть могет и не о чем беспокоится (надо просто радиатор добавить), учитывая высокую частоту переключений и особенности СЕПИКа, ента мощность не слишком и возрастёт при увеличении мощности на выходе ?

Еще раз повторю своё ИМХО: подстроечники - долой! Даёшь программную калибровку!

Ну блин.
Согласен, что в фирменных дешёвых зарядках НЕТУ подстроечников. Ненадёжный и дорогой элемент. И в балансире ГиперИон кстати тоже нету. Так что - я тоже За
Войну Шелудивым Угольным Полоскам.
В законченных изделиях, которых у нас пока нету.
P.S.

прямая - она и в Африке прямая, проходит через 2 точки

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

R2D2

Про убирание подстроичников согласен. Все коэффициенты в принципе рассчитываются и кстати на посадочное подстроичника легко впаиваются смд.

Про пересчет фнч 2го порядка на 40 Гц почти согласен. С одной стороны децебелы уменьшатся с другой - скорость выставления уменьшится.

Про первую-нулевую точку тоже почти согласен. Всеравно надо цеплять лампочку один хрен это будет делать спец или чел по инструкции. Кстати нелинейность вблизи 0 запросто может быть. 3.9 мОм были подобраны методом проб и ошибок для получения линейности с одной стороны и минимизации подтяжки с другой. Так что коэффициент усиления 10 на ОУ. и несколько нажатий кнопок вот и вся калибровка тока.
Если и есть зависимость от температуры так мона ее исследовать и учесть в расчетах.

Если увеличить скорость АЦП в 2 раза. Это увеличит в два раза сработку прерывания по завершению преобразования. Которое тоже не маленькое и может сказаться на остальной деятельности проца. В томже даташите написано, что внутри проца шины шумят и для более точных измерений надо усыплять проц на время измерения.
Вижу и + и минусы и неспособен определить что лучше. Думаю надо эксперементировать.
По ощущениям текущей скорости достаточно.

С зашкалом тоже надо конечно исправить, но сейчас он работает. Проверял при малых токах. При отсутствии нагрузки подавал ток 0.05А. Все вырубается.

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

Вот очередные прошивки!
Десульфатацию НЕ проверял!!!
Разряд НЕ проверял!!!



Десульфатацию НЕ проверял!!!
Разряд НЕ проверял!!!

AlexN

Я вот подумал, может сделать микро-сайт/страничку по новой зарядке?
Там теряться не будет ничего. Сделать несколько разделов: Схемотехника, ПО, Идеи по доработке и т.д.
Редактировать будем, добавляя новые идеи из текущей или уже новой ветки.

Psw
R2D2:

3.9 мОм были подобраны методом проб и ошибок для получения линейности с одной стороны и минимизации подтяжки с другой.<>Если и есть зависимость от температуры так мона ее исследовать и учесть в расчетах.

Если при изменении температуры напряжение смещения нуля ОУ станет больше чем 5вольт*5КОм/3.8МОм то поведение схемы станет таким же мало предсказуемым как и раньше - появицца любимый автором гистерезис в управлении. И учесть его программно - вряд ли удасться. По ентому - придётся подтягивать с запасом на возможный температурный дрейф.

R2D2:

увеличит в два раза сработку прерывания <> Которое тоже не маленькое и может сказаться на остальной деятельности проца

Ну оценить общее процессорное время на обработку прерываний - легко.
На входе в обработчик как можно ближе к точке входа ставим команду “Отладочная Нога=1”, на выходе из обработчика как можно ближе к RetI ставим команду “Отладочная Нога=0”. Потом меряем напряжение тестером на ентой ноге. % времени на обработку прерываний=напряжение на тестовой ноге/напряжение питания.

R2D2:

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

Ну по мне так лучше проц не тормозить (особенно при ТАКОЙ разнице в быстродействии проца и АЦП - за каждый цикл 10 бит преобразования проц могет выполнить 128*14=1800 командочек. Усреднение будет и меньше быстродействия жрать, и конечный результат на мой взгляд тоже будет лучше.

может сделать микро-сайт/страничку по новой зарядке?

Без проблем создам каталог psw.ru/Charger/ к примеру. Могу туда заливать нарисованное кем-либо нечто.
По крайней мере самые свежие версии статьи/прошивки/схемы будут всегда на одном и том же месте/ссылке.
Ну или Пузрин предоставит, если сочтёт затею не постыдной для его ресурса.
Потому как на данный момент - пока ещё детский лепет, возня малышей в песочнице и профи тихо посмеиваются в усы.
А вот зачем плодить ветки - не пойму. Наоборот интереснее всё читать в одном месте.
А у кого нету навыков скорочтения - заодно начнёт их получать/тренировать.

AlexN

Еще мысли вслух:
Сравнивал два варианта, 1 - SEPIC с управлением от TL494 и 2 - Step-Up+Step-Down с управлением непосредственно от микроконтроллера.
И кажется мне, что только 1 вариант даст возможность использовать полный диапазон ШИМ-а.
Т. к. входное напряжение нам в общем случае неизвестно (известен только диапазон от 10 до 15, например), то можем ли мы спроектировать 2 вариант так, чтобы “растянуть” 1024 ступеньки ШИМ-а ровно до выходных 0 - 5 ампер?
В 1 же варианте таким “растягиванием” занимается ТЛ-ка, и с ее обратной связью по току все получится как надо.
С другой стороны, во втором варианте разрядность ШИМ-а фактически повышается вдвое, т.к. 1024 шага приходятся на понижение напряжения, и еще 1024 - на повышение.
Не забыл ли я чего в рассуждениях?

Psw:

Без проблем создам каталог psw.ru/Charger/ к примеру. Могу туда заливать нарисованное кем-либо нечто.
По крайней мере самые свежие версии статьи/прошивки/схемы будут всегда на одном и том же месте/ссылке.
Ну или Пузрин предоставит, если сочтёт затею не постыдной для его ресурса.
Потому как на данный момент - пока ещё детский лепет, возня малышей в песочнице и профи тихо посмеиваются в усы.

Есть у меня идея: для тех, у кого трафик платный, а может и для всеобщего удобства выкладывать документацию в PDF формате.
Для сравнения, последняя выложенная Разработка.DOC:
В исходном виде - 6,13 Мб,
В архиве - 3,35 Мб.
В PDF, созданном за 5 секунд - 1,12 Мб.
OpenOffice рулит!

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

R2D2

Ок в следующий раз оппа-офисом заделаю.
Там типа сохранить в формате PDF.

Ище там немного все съезжает.

Про запас: каждый может добавить скока хочет - прошивка переживет.

AlexN
R2D2:

Ище там немного все съезжает.

Ага, в условиях закрытости форматов Microsoft Office (если я ничего не путаю) он очень неплохо открывает майкрософтовские документы.
Для собственного спокойствия рекомендуется сразу сохранять документы и работать с ними в его собственном открытом формате.

Psw
AlexN:

можем ли мы <> “растянуть” 1024 ступеньки ШИМ-а ровно до выходных 0 - 5 ампер?

Естественно НЕТ.
Однако енто и не нужно, потому как максимально цифровая схема тем и интересна, что отрицательная ОС по току/напряжению в ней должна быть ПРОГРАММНАЯ.
Соответственно, вых значение ШИМа (как минимум младший разрядик) будет постоянно колебаться (с частотой управления, вполне можно пытаться 100 или 1000 Гц делать быстродействие контура ОС по току и напряжению). Это будет так сказать второй ШИМ, и итоговая точность/нестабильность удержания вых тока/напряжения должна быть весьма достойной. Поскольку сложность цифровых алгоритмов могет быть весьма выше (вплоть до упреждающих коэфф зависимости от входа), чем просто пропорция в отрицательной ОС внутри ТЛ.

AlexN:

выкладывать документацию в PDF формате.

Ну, блин. Тогда уж сразу в наи открытейшем ХТМЛ с гипер ссылками статьи хотя бы сама на себя. А енто замороченное глубокое форматирование текста - ну а насколько оно повышает удобо читаемость, нужно ли оно ?
Надо разделять цели - либо инфу доходчиво передать, либо эстетические чуйства порадовать.

AlexN:

Профи (если они вообще есть)

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

AlexN:

этой ветки, которая многим может дать кучу полезной информации.

Опять же - многим малышам в песочницах по соседству.
Однако учитывая, что малышей значительно больше чем профи - научно-популярная литература была, есть и будет пользоваться спросом.
P.S.
Единственное, что Тема уже переросла - это слово Зарядник.
Потому как начали от печки, а печка - енто (универсальный?) цифровой Питальник с (универсальной?) активной цифровой нагрузкой. Которые не только заряжать/разряжать смогут.
Почему я кстати и радею за 2в1 устройства - импульсный БП 220V АС->14V DC и несколько канальных 14V DC -> 0-30V DC с единым управлением/интерфейсом/радиатором. Но ето в версии 2.0 если таковая ваапще появится на свет.
P.P.S. И ещё не первый раз наблюдаю справедливость поговорки “Учись сам, уча другого”.

AlexN
Psw:

Ну, блин. Тогда уж сразу в наи открытейшем ХТМЛ с гипер ссылками статьи хотя бы сама на себя. А енто замороченное глубокое форматирование текста - ну а насколько оно повышает удобо читаемость, нужно ли оно ?
Надо разделять цели - либо инфу доходчиво передать, либо эстетические чуйства порадовать.

А я думал, что PDF - это де-факто стандарт представления технической документации в цивилизованном мире 😒
Связь между внешним форматом документа и “замороченным форматированием” внутри документа не уловил совсем.

R2D2

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

Цель: получить следующую иерархию:

Запуск осуществляется по:

  1. Названию аккума.
  2. Вид деятельности (зарядка, разр/зар, N*разр/зар)
  3. Скорость.

Аккумулятор определяется следующими параметрами:

  1. Название 10 букв баттареи акку.
  2. Тип банок батареи акку.
  3. Количество последовательных элементов в батарее акку.
  4. Емкость последовательного элемента в батарее акку (емкость акку).
  5. Зарезервировано, но не используется (Код унификатор для автоопределения батареи (типа штрихкод))
  6. Зарезервировано, но не используется (Реальные параметры старения, для анализа и предупреждений)

Типы аккумуляторов:

  1. Название типа
  2. Флаги
  3. V минимальное нулевой фазы (например для липо от 2.4 (до 3.0)), т.е. когда можно заряжать но очень медленно.
  4. V минимальное первой фазы (например для липо 3в).
  5. V макс при динамическом измерении.
  6. V макс при статическом измерении.
  7. V дельтапик.
  8. Ток медленно (зарядки и разрядки)
  9. Ток нормально (зарядки и разрядки)
  10. Ток Быстро (зарядки и разрядки)
  11. Ток нулевой фазы
  12. Ток струйной зарядки
  13. Абсолютная температура перегрева
  14. Скорость перегрева
  15. Кпд (из-за рассеивания) для определения максимального времени заряда
  16. Периоды десульфатации
  17. Периоды статического измерения
  18. Скорость линейного повышения тока

Флаги:
По умолчанию идет заряд постоянным током

  1. Разрешить нулевую фазу заряда
  2. Разрешить капельный заряд
  3. Разрешить струйный заряд
  4. Реагировать на перегрев абсолютный
  5. Реагировать на скорость перегрева
  6. Разрешить десульфатацию
  7. Остановка при I=0
  8. Динамическая стабилизация напряжения
  9. Остановка при превышении статического напряжения макс
  10. Реагировать на дельтапик динамический
  11. Реагировать на дельтапик статический
  12. Линейное повышение тока в процессе зарядки от мин к макс
R2D2

Флаги продолжение:

  1. При превышении абсолютной температуры сделать паузу и попробовать еще раз.
AlexN
  1. Заряд батареи “на хранение”.
    Зарядка стандартной литиевой батареи (не А123) до 50% ёмкости.
Psw

Про наиболее долгое хранение лития при среднем между краевыми допустимыми значениями напряжения (4.2-2.9)/2+2.9=3.55 вольт примерно на банку ну и в холоде около 0 градусов - согласен с мнением Голубева - должно быть наименее убийственно для баночек. Раньше я прямо в поле заряжал до ентого значения. А дома уже добивал до упора. А теперь лень в поле - всё дома делаю. Однако - есть другая потребность/пожелание (всё касается зарядки лития с балансиром):
Батареек у меня слегка больше чем зарядников ( зарядник один, а батареек много). В итоге - приспособился заряжать батарейки параллельно:

Но есть неудобство - в ручную определять момент присоединения очередной батарейки. Общий алгоритм таков - вначале меряю напряжение на каждой батарейке, раскладываю их в порядке возрастания, первой присоединяю самую разряженную, включаю зарядку на макс разрешённый для неё ток, жду возрастания напряжения до уровня следующей батарейки, присоединяю, жду возрастания напряжения до следующей и тд. пока не присоединю все батарейки.
Хотелось бы автоматизировать ентот умственно нелёгкий процесс:
1 этап - поочерёдное присоединение батареек к заряднику с указанием/выбором из списка серийных номеров и быть могет записью в логи данных о раз балансировке после разряда на модели (по ней можно об умирании судить).
2 этап - зарядник даёт команду на присоединение батарейки с наиболее разряженным номером, заряжает её до уровня следующей и переходит в режим стабилизации напряжения, подавая звук сигналы. Всё енто длится некоторое время ( 5 минут к примеру - это если я уснул). Если я подтвердил присоединение очередной батарейки - зарядник снова переходит в режим стабилизации тока. И так до присоединения всех заявленных батареек с музыкальными паузами на всех запомненных значениях напряжений.
У меня этот процесс занимает 10-30 минут непрерывного дежурства у зарядника с тестером наготове. А потом он окончательно заряжает сборку за парочку часов без моего участия. Я тока на лампочки балансира поглядываю.
Хотя енто быть могет никому кроме меня и не надо. Кстати, при выставлении емкости батарейки 20 а*час ГиперИон останавливает заряд на 22 А*Часе. 10% даёт на разницу емкости разряд/заряд.

SERGEY11
AlexN:
  1. Заряд батареи “на хранение”.
    Зарядка стандартной литиевой батареи (не А123) до 50% ёмкости.

Пункт4 ,определяем остаточную емкость каждой банки или батареи в целом?
Для старых аков критично.

Сергей.

AlexN
SERGEY11:

определяем остаточную емкость каждой банки или батареи в целом?
Для старых аков критично.

Если имеется в виду “зарядка на хранение”, то определение остаточной ёмкости батареи в целом, а тем более каждой банки в отдельности - крайне сложное и малопродуктивное занятие без BID чипов.
Поэтому такой режим будет, вероятнее всего, подразумевать просто зарядку батареи до фиксированного значения напряжения.

AlexN
Psw:

Про наиболее долгое хранение лития при среднем между краевыми допустимыми значениями напряжения (4.2-2.9)/2+2.9=3.55 вольт примерно на банку ну и в холоде около 0 градусов - согласен с мнением Голубева - должно быть наименее убийственно для баночек.

Есть еще идея, почерпнутая из буржуйских источников: если температура окружающего воздуха ниже нуля (экзотика для зарядки, согласен 😃 ), то заряд лития идет до напряжения всего 4,0 вольт. Что типа сильно продлевает срок службы батареи при зарядке в таких условиях.

R2D2

Возник вопрос по защите от переполюсовки.
Как ее сделать цивильно?

Вот рассуждения:

  1. Выходная схема боится перпеполюсовки (танталовые конденсаторы, измеритель напряга), значит надо делать защиту полевиком или реле, но оно жрет, значит полевик.
  2. На выходе, защищенном полевиком, обратная полярность (от -0 до -26в), как простенькой схемкой из этого сделать 0 или 1 для сигнализации процу?
Psw
R2D2:
  1. На выходе, защищенном полевиком, обратная полярность (от -0 до -26в)

Нифига.
Из-за дешевизны и простоты управления используем N канальный ключик, исток которого на минусе питальника, а сток далжен подключаться к минусу батарейки. И проц контролирует ентот вывод перед тем как замкнуть ключик. И если неправильно присоединить АКБ (переполюсовать) то выходное напряжение АКБ сложится с выходным напряжением питальника. А если правильно присоединить - то вычтется. В итоге - если хочется иметь только дискретный анализ ( 0 или 1) то высоко омного токо ограничивающего резистора (к примеру 3КОм) на логический вход проца будет достаточно ( считаем что защитные диоды 20 мА на шины питания есть внутри процика). Ну и парочка нормально запертых защитных диодов (один - между плюсовым выходом питальника и минусовым выходом питальника и второй - между стоком и истоком защитного полевика - встроен в полевик как правило) и резистор параллельно полевику примерно 5 КОм понадобится) В итоге алгоритм анализа защиты от переполюсовки могет быть таков:

  1. Прога контролирует точное аналоговое напряжение на плюсовом выходе питальника, оно близкое к нулю в покое, и напряжение на стоке защитного полевика - оно тоже логический 0.
  2. При правильном присоединении батарейки с напряжением более открывания диода в полевике (0.7 примерно вольт) напряжение на плюсовом выходе будет Uакб-Uдиода - и прога его увидит, сделает выводы, откроет защитный ключ. При етом на логическом входе будет 0. Точнее, -0.7 вольт до открывания ключа, потом - 0 вольт.
  3. При НЕ правильном присоединении батарейки напряжение на плюсовом выходе упадёт до открывания защитного диода: - 0.7 вольт, аналоговый вход его увидит как строго 0 при отсутствии смещения нуля. А вот на стоке защитного полевика будет Uакб-Uдиода=логическая 1 даже для 1 банки кадмия. При ентом в цепи АКБ/диод/резистор-шунт защитного ключа будет течь ток (Uакб-Uдиода)/R шунта, который и будет создавать те самые падения напряжений, которые прога и увидит.
  4. Хуже всего когда присоединяют разряженную до нуля банку кадмия. Или ещё хуже - когда её уже зарядило в обратную сторону при глубоком разряде разболтавшейся сборки. Тут надо предусмотреть вопрос с ответом “Я уверен в правильности полярности”.
  5. Из выше описанных зависимостей можно вообще пытаться отказаться от анализа напряжения на стоке защитного ключа (тогда можно от шунт резистора 5 КОм отказаться). Типа - есть батарейка (ненулевое аналоговое напряжение на плюсовом выходе) - буду пытаться заряжать. А если нету - то и заряжать не стану, включать защитный ключ не буду. Разве что под дулом пистолета.( но тогда для страховки нужен анализ напряжения на стоке защитного полевика). Опять же оборвусь если вдруг при осторожном включении питальника напруга сверх макс ожидаемого попрёть неужержимо - нету значить батарейки, врёт юзер. Даже если и он сам не знает, что врёт ( типа провода к батарейке гнилые).
    Ничего не перепутал ? Рисовать/фотать было лень, заодно и по рассуждал за банкой пива.
    А я думал что из-за тотального дефицита выводов в голове автора уже рождается модульный легко масштабируемый много проциковый прожект. Ну то есть голова с дисплеем/клавой, локальная сеть, по процику на канал с балансиром … Сказка. И каждый себе лепит стока каналов, скока захочет. Ну или скока у него батареек.
AlexN
Psw:

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

Мы ждали Вашего совета 😃 Сейчас буду внимательно изучать.
Описываю текущее состояние второй ревизии зарядки:
Это пока по-прежнему двухканальное устройство,
каждый канал - до 6 банок лития,
второй канал вынесен на отдельную плату, пристыковывается по желанию.
Сердце зарядки - Атмега128. Внешний АЦП на ток и напряжение - ADS1112.
Аппаратная защита по току и от перенапряжения на выходе.
Защита от переполюсовки и перенапряжения по входу (пока достаточно грубая, должна вырубать БП или сжигать входной предохранитель)
USB интерфейс (FT232RL).
Силовая - пока Сепик, TL494 + IR4426S.
Термодатчики - LM35, два внешних и один внутренний.
На подходе балансир на Атмеге16, тоже как отдельное устройство.
Схему скоро выложу, как причешем номиналы и кое-какие мелочи.

AlexN

Хотя, пожалуй, Мега16 в балансире ни к чему, хватит и восьмой.

naumovich
R2D2:

Возник вопрос по защите от переполюсовки.
Как ее сделать цивильно?

Банально, диодик. и учесть падение напряжения на нем(германий кремний)

AlexN:

Аппаратная защита по току и от перенапряжения на выходе.
… или сжигать входной предохранитель)

Не успеет.

AlexN:

…USB интерфейс (FT232RL).

А я до сих пор с СОМ-вским анахронизмом, и вероятно не в гордом одиночистве.
Н.С.П.