Imax B1, или тестер максимальной емкости батареек 18650

Блоки питания, преобразователи напряжения, UPS'ы - это здесь :)
Ответить
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

стабилизатор тока точно также будет греться...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Sergey3a23 до 10А обычные полевики не греются, на такую нагрузку найти что-то лучше и дешевле лампочек не получится. Нужно 2А - поворотник, 5А - ближний/дальний, идеально для 12В акумов до 60Ач.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Реклама
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

Flash.#13,
rjmp zamer

zamer:
зачем делать переход на замер, если замер идет сразу следующей командой?
;=========Delay=========
delay2s:
ldi R16, 0xFF
ldi R17, 0xFF ;$79FF=0.26c
rjmp delay
delay1s:
ldi R16, 0xFF
ldi R17, 0x79 ;$79FF=1c
rjmp delay
delay100ms:
ldi R16, 0x90
ldi R17, 0x65 ;$61A8=0.1c
rjmp delay
delay20ms:
комментарии не соответствуют записываемым в регистры числам.
delay40mks:
ldi R16, 0x0A
ldi R17, 0x00 ;$0A=40mks
rjmp delay
delay: ;длинна цикла x/5*hex
то же самое и здесь - переход (rjmp delay) на сразу следующую команду не нужен.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

Starichok51 писал(а):стабилизатор тока точно также будет греться...
Это да, согласен, при равном поглощении мощности - тепла выделится одинаково, спору нет... Но - транзистор легче разместить на радиаторе.. Да и вообще, красивее как-то. А с рассеиванием 90 Ватт (это в случае тестирования авто-аккумулятора) - с успехом справляется компьютерный кулер.
Flash.#13 писал(а): до 10А обычные полевики не греются
(в ключевом режиме) Я-то буду использовать линейный режим. Т.е., в режиме управляемого сопротивления.
Последний раз редактировалось Sergey3a23 Чт фев 18, 2016 12:48:15, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Starichok51 писал(а):зачем делать переход на замер, если замер идет сразу следующей командой?
О, когда-то давным давно существовал более длинный кусок кода, в котором так и было, красиво и грамотно, но затем путем многократных правок, допиливаний других блоков, с копипастой, получилось примерно так... :))) Если честно, во всем виноваты часы, бывает посмотришь на них, сразу ctrl+s и pwr, но по вейкапу стек не восстанавливается :facepalm:
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Реклама
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

Flash.#13 писал(а):Sergey3a23 Нужно 2А - поворотник, 5А - ближний/дальний, идеально для 12В акумов до 60Ач.
Ненене... Такой знаменитый прибор, и какие-то лампочки менять... Поворот потенциометра- и никаких лампочек... :))
Реклама
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

можно получить абсолютно точный коэффициент деления сразу до 1 секунды.
на таймере2 делаем предделитель на 32, а на таймере1 (16-разрядном) задаем число 31250.
и тогда всё упирается в точность внутреннего генератора.
при ощутимой погрешности внутреннего генератора тогда можно немного изменить число для таймера1.
одна единичка туда-сюда будет давать 0,032% изменения точность хода часов.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Идея хорошая, только придется вводить запрет прерываний. Сейчас счетчик имеет две строчки кода и срабатывает четыре раза в секунду, при этом весь код успевает исполниться до следующего прерывания счета. Введя предделитель 32 получим 31.25кГц, и "окно" в 32мкс. Код программы, с задержками, исполняется примерно 2мс, что приведет к 62 прерываниям, с потерей SREG. Придется вводить запрет прерываний либо копировать SREG :beer:

Продолжил расчет, в программе используется 4Гц, но делителя 16 нет, а делать 8 стремно :shock:
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

я тут еще почитал про атмегу, таймеру1 можно сразу запрограммировать делитель в его установках. правда, там 32 нет, но есть 64 - тоже пойдет.
поэтому совершенно не нужно применять таймер2 в качестве предделителя, и привязываться к его прерываниям.
а запрещать прерывания не надо, пусть считает время по 1 секунде непрерывно.
cpi R16, 0x36 ;если "цифра" уже 60c
60 - это 0x3с.
и ниже то же самое, когда определяешь 60 минут.
cpi R16, 0x3A ;если "цифра" уже $A
breq dayerror
rjmp sekyndomerprint
dayerror:
ldi R16, 0x30 ;сомвол"0"
st X,R16 ;0x0104 ОЗУ
что за, на хрен, dayerror?
что тебе мешает спокойно дальше считать десятки часов? ну, займешь еще одну ячейку памяти...
далее. ты в нескольких местах по 4 раз вызываешь
rcall delay40mks
сделай одну подпрограмму на 160 мкс.
ldi R16, 0xf5 ;задержка 245,для 4Гц
ты так и не исправил на 244, как я предложил.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Starichok51 писал(а):60 - это 0x3с., и ниже то же самое, когда определяешь 60 минут.
Здесь нюанс, часы считают Х:ХХ:ХХ, где каждый разряд есть отдельное десятичное число в коде ЖКИ HD1602. 0х36 является кодом одиночного десятичного символа, это не "54", а символ "6". При этом счетчик считает от "0" до "9", и до "6" в случае "десятков" минут.
Starichok51 писал(а):что за, на хрен, dayerror? Что тебе мешает спокойно дальше считать десятки часов?
Часы сделаны на 9ч59мин59с, далее обнуление, и так по кругу. Мешает считать количество сегментов на ЖКИ, кажется за это время можно замерить любой акум, и если нет, то замер не прервется.
Starichok51 писал(а):ты так и не исправил на 244, как я предложил.
На самом деле исправил, делал тест, и он показал что если поставить "244", то получается отставание в 1с за 10мин, тогда как "245" 0с за 10мин. Списал это на то, что прерывание происходит при "равно", и счет идет с "1", типа "245" без "0" равно 244 такта счетчика...
Starichok51 писал(а):в нескольких местах по 4 раз вызываешь "rcall delay40mks"
Да, 4 раза он вызывается в куске АЦП, и сам кусок дважды дублирован. Это связанно с особенностями лаговости меги8. Не сделал 160мкс по двум причинам, 40 используется много где, например в ЖКИ, а 160 по сути больше нигде не нужно(нет экономии кода), и 160 при работе счетчиков можно потерять в SREG(был случай), менее надежно.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

можно пожертвовать пробелом на индикатое для десятков часов.
но можно оставить и так - пусть десятки бегают по кругу...
Flash.#13 писал(а):0х36 является кодом одиночного десятичного символа, это не "54", а символ "6"
извиняюсь, "заскок" образовался, ты же сравниваешь одну цифру десятков (6), а не всё число секунд или минут (60).
Flash.#13 писал(а):На самом деле исправил, делал тест, и он показал что если поставить "244", то получается отставание в 1с за 10мин
ну, если тест показал...
Flash.#13 писал(а):Да, 4 раза он вызывается в куске АЦП, и сам кусок дважды дублирован.
в таком случае загрузи в регистры R16 и R17 число 40 и вызови один раз подпрограмму delay, вместо четырех вызовов подпрограммы delay40mks.
теперь по измерению тока.
ты можешь запрограммировать канал АЦП с усилением 10, при этом разрядность АЦП уменьшится до 8, но результат измерения будет в 2,5 раз больше, а дискретность изменится до 20 мА/дискрету.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Starichok51 писал(а):ты же сравниваешь одну цифру десятков (6), а не всё число секунд или минут (60)
Да, так и есть, одну цифру.

Переделывать задержку не хочу, можно загрузить и сэкономить "две строчки", но этот блок АЦП по своему визуально выделяется в коде, удобно в листинге.
Starichok51 писал(а):ты можешь запрограммировать канал АЦП с усилением 10, при этом разрядность АЦП уменьшится до 8, но результат измерения будет в 2,5 раз больше, а дискретность изменится до 20 мА/дискрету.
А вот теперь вообще не понял. Как это запрограммировать АЦП с усилением 10? Сейчас разрядность 10бит, и 50мА/дел.(~1000дел. на 5В), а как 8бит и 20мА/дел, не понимаю...
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

некоторые канала АЦП можно запрограммировать на дифференциальный режим работы.
в дифференциальном режиме канал можно запрограммировать на работу с усилением х1, х10 или 200.

дальнейшее чтение описания выяснило, что в дифференциальном режиме появляется возможность измерять двухполярное напряжение, а это значит, что еще один разряд (старший) становится знаковым, то есть полезная разрядность уменьшится, как я понял, до 7 бит.
и это уже лишает смысла применить усиление 10, а 200 тебе не подходит - слишком много.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Это явно нестандартный режим, которым мало кто пользуется, листаю Хартова, он о нем даже не упоминает, а Ревич в "практикуме программирования", только упоминает о его существовании, в некоторых версиях МК. Да настройки его видно, но это такая себе серая кобылка, о которой добывать инфу нужно с мануала по камню, и как по мне, проще настроить работу с внешнего опорного на 1В, только оно не сильно нужно. Малой кровью поднять "точность" не выходит, а большой не хочу.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

еще у тебя весьма многократно повторяются строки:
rcall write_lcd ;установка
rcall delay40mks
есть прямой смысл включить вызов rcall delay40mks в подпрограмму write_lcd перед командой ret. это сократит значительно длину кода.
все забывал сказать по поводу потери флагов в регистре SREG во время прерывания.
запрещать все прерывания совершенно не нужно.
если в прерывании есть команды, меняющие флаги, то в самом начале обработки прерывания SREG отправляется в стек командой PUSH и возвращаются командой POP перед командой reti. это "стандарт" программирования.
естественно, если прерывание не изменяет флаги, то сохранять и восстанавливать регистр флагов не нужно.
и еще ты так и не сказал ничего по поводу перехода с таймера2 на таймер1 и получения прерываний сразу по 1 секунде.
у таймера1 нужно задать предделитель на 64 и само число задать 15625, что дает коэффициент деления ровно 1 миллион.
предделитель для таймера1 задается в регистре TCCR1B младшими битами, точно так же, как для таймера2 в регистре TCCR2.
и тогда из программы уйдет еще несколько строк для перевода 0,25 сек в 1 сек.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

800х600.jpg
(235.04 КБ) 793 скачивания
Ну вот, никаких лампочек.
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

Flash.#13
Starichok51

Скажите пожалуйста, поскольку вы такие знатоки языка ассемблер ,можно ли как-то калибровать амперметр а программе ? Не подбором резисторов (это не наш метод), а изменением каких - нибудь циферок в программе? Циферками же проще, чем выпаивать- запаивать резисторы?
Можно, конечно, операционником усилить сигнал, а потом потенциометром точно подогнать, но как-то это того... коряво как-то...
Последний раз редактировалось Sergey3a23 Пт фев 19, 2016 18:53:17, всего редактировалось 1 раз.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Starichok51 да, есть немного у меня "паразитного" в коде. В мелких прогах задержку вывода ЖК не встраивал, с надеждой сэкономить байт стека, меньше вложений как бы. И пока их число не переваливало за десяток, все было "красиво", но здесь это сэкономит больше кода чем стека. О SREG, действительно не копировал его статус в прерываниях(бывало страдал от этого), проверил, работает, мой косяк, все сделаю в следующей версии. А вот по поводу секунды, выше правил пост, наверное не увидели, дело в том, что для более четкого обрабатывания кнопок требуется 1/4с, а сделать такой задержкой это будет трудно...

Sergey3a23 мне в голову лезет только поставить транзистор и на его базе держать ШИМ'ом напряжение, это позволит менять сопротивление канала транзистора с МК, правда очень нелинейно.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Говорящий с текстолитом
Сообщения: 1523
Зарегистрирован: Пн май 28, 2012 19:52:17
Откуда: г.Киров (Вятка)

Сообщение goldmen8 »

Sergey3a23 писал(а):...можно ли как-то калибровать амперметр а программе ?... а изменением каких - нибудь циферок в программе? Циферками же проще...
Циферками проще, но обычно просчитывается схема, и под заданной расчёт пишется программа.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

Sergey3a23 ерунду сморозил, думал вы о регулировке силы тока на "нагрузке", чтобы ручку не крутить)) Да, там есть множитель который позволяет калибровку делать. У вас наверное амперметр врет на 10-15%, если менять резистор, то советую ставить не керамику, а 10шт "в параллель" обычных 1 Ом, у них допуски лучше, но если хотите ручками то вот:

Код: Выделить всё

;===печать тока I,mA======
rcall cal1024		;калибровка замера
ldi R16, 0x32		;множитель амперметра,50 для мА
Вместо "0x32" пишете больше или меньше, как вам надо, и компилируете...
Вложения
Imax.rar
Версия 0.76, со строчкой для калибровки амперметра
(217.25 КБ) 218 скачиваний
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Ответить

Вернуться в «Питание»