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

AlexN
sergee:

А может они иcпользуют при этом АЦП в меге в диф режиме? По ногам подходит ADC1 -, ADC0 +

Нет, не думаю. Примитивные делители для измерения такого малого напряжения вряд ли сгодятся. В открытых проектах используется напряжение, оцифровываемое с шунта.
Есть одна рабочая гипотеза: “BATT-” оцифровывается как минимум для определения переполюсовки на выходе. Как только к ЗУ, находящемуся в режиме ожидания, подключаю батарею с перепутанной нарочно полярностью - сразу пищит тревожный сигнал.

sergee

А тут и не надо мерять “BATT-” . АЦП сразу разницу между “BATT+” и “BATT-” покажет. Главное чтобы делитель из R2 к (R3+R4+R5) был равен R64 к (R65+R66+R67). А там судя по цепочкам последовательным даже подгоняют их на одинаковый коэф. деления

AlexN

Батарея в случае переполюсовки отключена от силовой части ЗУ.
Как заряднику понять, что к нему подключили переполюсованную батарею? Измерять в режиме ожидания напряжение на “BATT-”. Кстати, “BATT-” оцифровывается в двух местах схемы - этот китайский финт ушами мне до сих пор не понятен 😃
В рабочем же режиме гораздо точнее измерять “BATT+”, усиленный сигнал с токового шунта (ADC2) и вычитать одно из другого. Иначе DA1.1 с обвязкой был бы не нужен.

sergee

на DA1.1 DA1.2 в чистом виде стабилизатор тока для разряда , на ADC2 приходят данные о разрядном токе. А где еще оцифровывается BATT- ?

Извиняюсь, нашел где он еще оцифровывается. Сильно похоже , что это только для балансира. там кстати на В3 и дальше ресистивных делителей точно нет ?

AlexN

На DA1.1 - в чистом виде усилитель слабого сигнала с шунта. А на DA1.2 добавили еще и стабилизатор до кучи.
Эффективность делителя 1:2 для таких малых сигналов равна нулю, ой нет, вру, она отрицательная, ибо для нормальной оцифровки сигнал надо усиливать, а не уменьшать еще в два раза 😁
Схема абсолютно точна во всем, за исключением возможных номиналов конденсаторов - емкость измерялась без выпаивания из платы.

sergee
AlexN:

Нет, не думаю. Примитивные делители для измерения такого малого напряжения вряд ли сгодятся. В открытых проектах используется напряжение, оцифровываемое с шунта.
Есть одна рабочая гипотеза: “BATT-” оцифровывается как минимум для определения переполюсовки на выходе. Как только к ЗУ, находящемуся в режиме ожидания, подключаю батарею с перепутанной нарочно полярностью - сразу пищит тревожный сигнал.

Посмотрел даташит на мегу , в диф рижиме включения каналов можно мерять как положительную, так и отрицательную разницу между ADC0 и ADC1 правда разрядность снижается до 9 бит в каждую сторону . Но можно включить усилитель на 10 или на 200 (этот врядли, там еще разрядность снизится до 7 бит) при таком включении можно не только полярность , но и напряжение перевернутой батареии измерить 😃.

AlexN:

В рабочем же режиме гораздо точнее измерять “BATT+”, усиленный сигнал с токового шунта (ADC2) и вычитать одно из другого. Иначе DA1.1 с обвязкой был бы не нужен. .

Насколько я понял на ADC2 приходят данные о токе разряда , а зарядный это с шунтов R53 R54 и через DA2.1 на ADC3. При этом напряжение на шунтах не равно “BATT-”,там еще VT9 есть , на нем тоже падение есть .

AlexN
sergee:

Посмотрел даташит на мегу , в диф рижиме включения каналов можно мерять как положительную, так и отрицательную разницу между ADC0 и ADC1 правда разрядность снижается до 9 бит в каждую сторону .

Туплю под вечер, но если все верно - то идея кажется неплоха 😃 Разрядность в “ждущем” режиме нас вообще не волнует, единственная задача - определить переполюсовку, а не измерить точно напряжение.

sergee:

При этом напряжение на шунтах не равно “BATT-”,там еще VT9 есть , на нем тоже падение есть .

Я думаю, падением напряжения на VT9 китайцы 100% пренебрегают, т.к. он работает в ключевом режиме и при нормальном режиме работы полностью открыт, сопротивление канала < 14 миллиом, что дает максимальную погрешность 70мВ, которые при желании легко учесть, зная зарядный ток.

sergee:

Насколько я понял на ADC2 приходят данные о токе разряда , а зарядный это с шунтов R53 R54 и через DA2.1 на ADC3.

Да, с шунтами я напутал чуток, разумеется при заряде используются значения ADC0 и ADC3, а не ADC2.

sergee

Работал бы я с мегами , сам бы попробовал такой метод измерения, и усилитель включить попробовал бы . Да вокруг меня на работе к сожалению только PICи, да Signal ов немного.да и программировать некому, сам на них ничего не писал, а сильно разбираться некогда ,как всегда. Хотя может попробую на Signal , есть демо плата с 430-м, там дифвходы есть, только усилителей нет, а может и найду чего из старших моделей, там ацп покруче будут, есть и 12 и 16 разрядные и усилители перед ними. Да еще посмотрел даташит на мегу, разрядность всегда 10 бит не зависимо от усиления и есть аппаратная автокорекция смещения (то биш нуля), плюс можно дополнительно 0 скоректировать программно закоротив на уровне мультиплексора внутри входы между собой.

AlexN
sergee:

Работал бы я с мегами , сам бы попробовал такой метод измерения, и усилитель включить попробовал бы . Да вокруг меня на работе к сожалению только PICи

Аналогично, на работе только Пики 😃

sergee

У нас как-то Atmel не прижился, когда его пробовали мег еще толком не было а 90s какието мягко говоря не очень были 😃. Но у меня теперь есть пара штук , кипил себе поиграться 8 и 16, ктоб теперь еще программку написал 😁.

Chekhov

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

sergee

Вот из-за стоимости и не охото брать что-то другое. да и зачем умножать сущности. А так у Signalа в старших моделях и два АЦП есть и разрядность 16 бит , только стоят они не как мега.

Chekhov

А так у Signalа в старших моделях и два АЦП есть и разрядность 16 бит , только стоят они не как мега.

А что за Signal’ы ? первый раз слышу. Ссылку не дадите, а то попробовал поискать - ничего толкового не обнаружил.

sergee

Сейчас это Микроконтроллеры семейства C8051Fxxx фирмы Silicon Laboratories silabs.ru это руский сайт, родной соответственно .com. Тут много по ним в том числе и переводы даташитов и книги www.electrosnab.ru/silabs/Silabs. контроллеры 51 совместимые, система команд та-же , да и базовая переферия похожа , самое основное отличие- много дополнительной переферии и скорость до 100 MIPs бывает. встроен JTAG или его аналог. стоимость эмулятора-программатора-отладчика около 30 уе(вроде), но лучше взять в составе какого-нибуть кита www.electrosnab.ru/silabs/sil_kit.htm Единственное к чему надо привыкнуть, что уж больно сильно разные семейства отиичаются друг от друга, особенно переферией. Иногда тяжко перенести проект на другой кристал. Ну еще своеобразное распределение переферии по портам ввода вывода, оно программируется довольно своеобразно.
У них еще прикольные УКВ ЧМ стерео приемники и передатчики есть, размером 5х5 мм и без единой катушки😁

anton_z

Собрал этот зарядник пару месяцев назад, вот, что в итоге получилось.

Железо, вроде работает как положено. По программной части есть некоторые вопросы:

  1. Уже общался на эту тему с R2D2 - максимальные и минимальные напряжения зарядки и соответственно разрядки для некоторых типов аккумуляторов, как мне кажется, нуждаются в корректировке. В часности для SLA.
  2. Не работает режим десульфации(пробовал только для SLA): когда запускаешь c настройками по-умолчанию, то сразу выкидывает ошибку настроек, если отключить бит “разрешить струйный заряд” то при запуске заряда сразу же выскакивает - достигнуто Vmin. У кого-нить десульфация работает?
Nick_Shl
AlexN:

Сопротивление датчиков в зарядной и разрядной цепях - разное. Но никак не 0.05 Ома - это слишком мало.

Похоже всё таки 0.05 Ома - зарядник показывает ток заряда 0.9-1.0 A а мультиметр включенный в разрыв красного провода 0.09-0.1 A. И заряжает ооочень медленно. Где бы теперь такие найти…

AlexN
Nick_Shl:

Где бы теперь такие найти…

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

Nick_Shl
AlexN:

Кусочек нихромовой проволоки - и подбирать длину экспериментальным путем.

Мне повезло и на рынке я нашёл резисотры по 0,1 Ом. Впаял по два в параллель…
Ну китайцы, ну и пи****сы! Заряд - Ок. Разряд(благо батарея полудохлая и слабенькая) - тут же проваливалась напругаи загоралось что разряд окончен. Померял ток разряда - а он в 10 раз больше чем надо!
На приведённой схеме RC Power BC6 есть R53, R54 в парралель по 0,1 Ом(получается 0,05 Ом). Там же есть R50 номиналом 0,5 Ом. Вот похоже оба этих резистора они запаяли в 0,05 Ом и в результате при разряде транзистор и погорел…

P.S. Блок питания всё-таки добил - по хорошему не получилось(TL431 + 10К ​_+ 1,5К ​__+ подстроечник 1,5K - для регулировки 10~20В_) поэтому просто заменил стабилитрон на 15-ти вольтовый…

sergee

Провел небольшой эксперимент по измерению напряжения с помощью АЦП в диф. режиме(как в китайском заряднике). Использовался контроллер С8051F340 фирмы Silicon Laboratories (АЦП 10 бит без усилителя ). Один порт был назначен плюсовым входом, другой минусовым, на каждом входе стоял делитель 215к на 21.5к на землю. Напряжение подавалось на входы делителей от отдельного источника. Минус этого источника можно было смещать относительно земли микроконтроллера на 0-1 В. Программа проводила 2048 измерений, вычисляла напряжение в миливольтах с учетом Vref = 2.440 В (встроенный) и коэффициента деления входных делителей 11 и вычитала значение нуля полученное при закороченных входах. Потом выводила через COM в терминал, это же напряжение сравнивалось с показаниями вольтметра 0,03 класа точности.
Вот несколько значений(слева вольтметр,справа МК с АЦП, у него значения со знаком минус , так как плюс напряжения подавался на отрицательный вход АЦП):
5 -7
175 -173
241 -236
511 -505
991 -987
1579 -1577
2117 -2113
4295 -4295
10947 -10943
12718 -12719
13674 -13700
15319 -15347
18664 -18697
20644 -20670
23166 -23195
26377 -26406
Смещение источника относительно земли МК на напряжение до 600 мВ добавляло не больше 5 мВ к измеренному значению.
При изменении полярности источника(типа переполюсовали батарейку), значение меняет знак на положительный и до 1,5 Вольт даже можно точно мерять . Выше врет😁, но полярность определяется однозначно.
Вывод.
При таком включении можно точно мерять напряжение на батарее и полярность ее подключения, при этом до лампочки чего и как падает на шунте измерения тока.
правда после 13, 7 В что-то подвирать стал, но может где в вычисления чего переполнилось, или АЦП некорректно считывается (младший ,старший байты), так как программа на С ваялась на очень скорую руку ;)на основе какого-то примера.

Nick_Shl
sergee:

Провел небольшой эксперимент по измерению напряжения с помощью АЦП в диф. режиме(как в китайском заряднике).

Я тоже проводил подобный эксперимент в AtMega128. Могу сказать - фуфло. Пытался использовать псевдодиф. режим(отритцательный вывод один, все остальные мультиплексируются на положительный) для смещения 0 при оцифровке ручек передатчика. В результате шум ± 1 единица… Всё потому что без этого режима вход идёт напрямую в АЦП, а при включении - через буферный ОУ паршивенького качества.

P.S. С зарядником закончил - дейстительно не так запаяли. Даже в инете фотку с правильными резисторами на таком же заряднике нашёл. А с TL431 я сам лоханулся - перевернул(в даташите вид сверху, а я подумал снизу).

sergee

Ну такой шум совсем не плохо, тем более усреднение поможет. В моем эксперименте единица младшего разряда вообще около 50 мВ, а конечный ркзультат больше пары , другой миливольт не болтается. Правда там отсчетов много. Тем более здесь основная задача отвязаться от падения на шунте и разности между землями АЦП и заряжаемой батареии