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

Блоки питания, преобразователи напряжения, UPS'ы - это здесь :)
Ответить
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

Starichok51 писал(а): для автора поставлена довольно сложная задача.
Однажды Гитлер (который был, конечно говнюк и подонок, но речь не о том) - сказал Шпееру -" человек растёт вместе со своими задачами", - и в этом он был, конечно, совершенно прав...
А строки на Ассебмблере - для меня совершенно непосильная задача... Я ещё могу понять что-то, типа, "Если "Это" > 0 то переход на метку "такую-то" А в регистрах копаться - очень сложно
Starichok51 писал(а): ldi R16, 0b01000000 заменяем на
ldi R16, 0b00000000 для опоры на AREF
-

Это что же, множитель "ноль" получается? 0b00000000 - это же - ноль?
Реклама
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

это не множитель.
это число, которое загружается в регистр, выраженное в двочном коде.
признаком двоичного кода служит префикс "0b", после которого идет само число.
соответственно, признаком шестнадцатеричного кода служит префикс "0х".
следующей строкой (в приведенном мною фрагменте) служит вывод этого числа из регистра в регистр, который имеет имя "ADMUX"
регистр ADMUX определяет источник опорного напряжения (2 старших бита) и определяет номер используемого АЦП (4 младших бита).
именно для тех, кто не понимает в ассемблере, я дал не только одну строку, требующую изменения, но еще дал окружающие строки, чтобы было легко найти нужную строку.
полагаю, что с такой подсказкой задача будет посильной любому человеку.
Sergey3a23 писал(а):и в этом он был, конечно, совершенно прав...
именно поэтому я сказал, что автору будет весьма полезно найти способ решения поставленной задачи самостоятельно.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

Starichok51 писал(а): полагаю, что с такой подсказкой задача будет посильной любому человеку.
Ну уж. Так-таки и любому.. В общем, чтобы дале - не задавать глупых вопросов - полез смотреть интересное видео.. https://www.youtube.com/watch?v=GcaSkdQ ... BYf98xMUMO
и вот тоже.. https://www.youtube.com/watch?v=xFxFRAF7bL4
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

Starichok51 писал(а): регистр ADMUX определяет источник опорного напряжения (2 старших бита) и определяет номер используемого АЦП (4 младших бита).
Сутки спустя - слово Адмух - уже не внушает того священного трепета... Скажите, всё-таки, что я менял там регистром R16? Это - та самая константа, которую надо умножить на 1/1023 от опорного напряжения?
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

в операции умножения опорное уже не участвует вообще.
в регистрах R8 и R9 находится результат измерения.
а регистр R16 задает число, сколько раз мы должны сложить результат измерения.
то есть, в данном случае вместо умножения используется простое сложение. то есть, складываем 50 раз.

вообще-то у АТМеги8 есть специальная команда умножения, называется MUL.
можно было применить эту команду, и умножения тогда было бы сделано гораздо быстрее.
а если бы нам было нужно умножить на 1000?
что, тысячу раз складывать? хотя проц и быстро работает, но так транжирить процессорное время категорически нельзя!
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6333
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Starichok51 писал(а): ldi R16, 0b00000000 для опоры на AREF
Моя буквоедская сучность :( не может никак утихомириться :
"Если для 1 в некоторых разрядах запись в бинарном коде наглядна, то вышеуказанная - никак не добавляет понимательности по сравн. просто с ldi R16, 0, скорей наоборот."
Звиняте коли шо не так.
Изображение
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

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

Starichok51 писал(а):вообще-то у АТМеги8 есть специальная команда умножения, называется MUL.
можно было применить эту команду, и умножения тогда было бы сделано гораздо быстрее.
а если бы нам было нужно умножить на 1000? Что, тысячу раз складывать?
Хардварное умножение неудобно, и присутствует не на всех чипах, во многих мануалах его даже не рассматривают. Двухступенчатый съем результата, и 1000 никак не умножить, перенос не учитывается, 16бит максимум. Так что да, если нужно 1000, буду суммировать, хотя легче "нули" отбросить :)))
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пн май 02, 2011 20:17:19
Откуда: Средняя Волга

Сообщение polyester »

Есть несколько вопросов по проекту.
1. Почему не используется 4-х битный режим при общении с LCD? (Это экономия на трудоемкости, проводах, ногах.)
2. Зачем задействовано RW на LCD, загружаются свои символы в него?
3. Почему выбран ASM, а не Си? (Облегчается правка кода и перенос на другие МК. Расширяется поле для творчества под сугубо индивидуальные нужды.)

Может где-то я упустил ответы на эти вопросы?

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

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

polyester ответы на ваши вопросы:
  • 1. 4-бит. режим использовать не рационально, согласно распиновке HD1602 вы сэкономите всего 4 провода с 16-ти, при чем не с краю.
    2. RW не задействован, но все возможно.
    3. Спорный вопрос, как говорится "на вкус и цвет...
    4. Тест для кадмиевых уже был прикручен.
    5. Зарядка литиевых будет, но позднее.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 354
Зарегистрирован: Чт июл 24, 2014 23:09:23
Откуда: Киев

Сообщение hosturik »

Было бы очень здорово, если прибор будет измерять внутреннее сопротивление аккумуляторов, это довольно важный параметр.
Методика простая: измеряем напряжение батареи без нагрузки (ЕДС), потом измеряем с подключенной нагрузкой, вычисляем разницу напряжений и делим на потребляемый в данный момент ток, можно измерять один раз при напряжении на батарее 3.8 вольта, запоминать на дисплее это значение и больше не измерять.
Только тут засада может быть, разница напряжений будет очень маленькая, примерно в пределах 20-100 милливольт при разрядном токе один ампер, это буквально несколько разрядов АЦП из 1024, не знаю какая точность получится и получится ли это вообще.
Что скажете?
Друг Кота
Аватара пользователя
Сообщения: 6635
Зарегистрирован: Чт дек 29, 2005 00:18:30
Откуда: Москва

Сообщение Дмитрий М »

Кстати да, сопротивление 18650 было бы интересно измерять, так как IMAXB6 этого к сожалению делать не умеет, а те что делают гораздо дороже и прикупать их ради одной этой функции нецелесообразно. Тем более нагрузка вроде уже есть, особых требований по железу не требуется, вот с софтом не знаю, не силён в этом, насколько это сложно. У самого куча "пальцев" с ноутов, хотелось бы их оценить и по этому параметру.
Ничто так не укрепляет взаимное доверие, как 100% предоплата! Дмитрий, ex-RK3AOR.
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

polyester писал(а):3. Почему выбран ASM, а не Си?
если бы проект был на Си, я бы даже пальцем не шевельнул, чтобы начинать помогать автору.
язык высокого уровня порождает избыточный код, и по моему опыту длина кода в байтах после Си будет в 7-8 раз больше, чем после ассемблера.
автор, не имея достаточного опыта, и в ассемблере допустил некоторую избыточность.
самую, на мой взгляд, большую нерациональность и избыточность я помог устранить.
если бы делать этот проект на Си, да еще добавить управление зарядом, да еще измерение внутреннего сопротивления, то даже 8К программной памяти могло просто не хватить...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Друг Кота
Аватара пользователя
Сообщения: 6333
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Flash.#13 писал(а): Хардварное умножение неудобно, и присутствует не на всех чипах, во многих мануалах его даже не рассматривают.
Утверждение спорное по всем статьям.
Не рассматривается в мануалах на те камни, в которых MUL нет, естественно.
и 1000 никак не умножить, перенос не учитывается
Перенос не учитывается, потому что при умножении его нет. На 1000 умножить - как 2 байта переслать: множь на 125 и 3 раза влево.
Так что да, если нужно 1000, буду суммировать, хотя легче "нули" отбросить :)))
Вольному - воля. Если времени для выполнения - вагон, то почему бы и нет.
СпойлерНеиспользование mul в МК, в которых он есть, напоминает ситуевину из старого анекдота: билет купил, а на поезде не поехал.
Starichok51 Ну не в 7..8 раз, но раза в 2..3 точно, причем чем короче прога, тем эта разница существенней. Так что если к вам стоит очередь заказчиков за вашими зупер-гениальными прогами, а лишний бакс за более "толстый" камень для вас - пустяк, то вперед на Си . А если для получения удовольствия ( попутно с пользой ) от виртуозного использования всех возможностей МК :) , то берем АСМ, и я с вами.
Изображение
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пн май 02, 2011 20:17:19
Откуда: Средняя Волга

Сообщение polyester »

Starichok51 писал(а):
polyester писал(а):3. Почему выбран ASM, а не Си?
если бы проект был на Си, я бы даже пальцем не шевельнул, чтобы начинать помогать автору.
......., то даже 8К программной памяти могло просто не хватить...
Чего-то прям дискриминация какая-то по языковому признаку :)))
Конечно ASM короче - ибо изначальный, тут без вопросов. А 8кб забить в этом проекте конечно можно, если вовремя не остановиться на добавлении различных плюшек. Но основные функции вполне поместятся.
Но хозяин-барин, как говориться. Главное что людям это интересно и нужно.

Да и вопрос по защите от переполюсовки аккумулятора остался не освещенным, а также увеличение каналов хотябы до 2-ух.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 354
Зарегистрирован: Чт июл 24, 2014 23:09:23
Откуда: Киев

Сообщение hosturik »

polyester писал(а): Да и вопрос по защите от переполюсовки аккумулятора остался не освещенным, а также увеличение каналов хотябы до 2-ух.
Защиту от переполюсовки можно сделать уже в конце, как и два канала. Сначала нужно один довести до ума, потом это не сложно будет продублировать на другой и сделать их независимыми.
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

Jack_A писал(а):Ну не в 7..8 раз, но раза в 2..3 точно
ну, может, в данном случае я преувеличил - для МК я не программировал на Си (и никогда не буду).
а вот примерно 1992-93 годы, когда я сделал небольшенькую программу на Паскале и сделал ее аналог на ассемблере - там была разница в 8 раз.
тогда у меня было еще советская "Искра-1030М", которая считалась ХТ-совместимая. тогда часов в компах еще не было, и дату - время нужно было выставлять при каждом включении компа.
я тогда начал осваивать Паскаль, и по учебнику набрал простенькую программу установки даты и времени.
и тут же занялся осваиванием ассемблера для компов. и первым делом сделал аналог на ассемблере.
в результате длина сом-файлов оказалась 1 кБ на асме и 8 кБ на Паскале.

по поводу более толстого камня я уже сказал. АТМега16 и АТМега32 стоят в среднем в 3 раза дороже, чем АТМега8.
а поначалу я хотел купить АТМега32- там все-таки 40 ног и 32 порта ввода-вывода, против 23 портов у АТМега8.
из-за цены пришлось урезать аппетиты и заказать АТМега8...

в задуманных мной изменения придется умножать 16 бит на 16 бит, и тут уже сложение никуда не годится.
и, скорее всего, еще придется делать деление 16 бит на 16 бит...
polyester писал(а):А 8кб забить в этом проекте конечно можно
будем считать, что я брал "на испуг".
поэтому для всех желающих работать на Си (и тем более на С++) - флаг в руки и вперед, за приобретением камней всё толще и толще...

для защиты от переполюсовки можно сначала АЦП по напряжению запрограммировать на дифференциальный вход (когда появляется возможность измерять и плюс и минус). если напряжение отрицательное, то разряд (или заряд) включить будет невозможно.
если полярность положительная, то потом программировать этот АЦП обычным (однополярным) образом.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1335
Зарегистрирован: Ср июн 09, 2010 16:44:54
Откуда: Пермь

Сообщение RomanT »

Starichok51 писал(а): АТМега16 и АТМега32 стоят в среднем в 3 раза дороже, чем АТМега8.
1.8 раза
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 19065
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

я не с потолка взял, я смотрел на алиэкспрессе. и это я привел разницу в самых дешевых лотах.
а поскольку там сортировка по цене, то поиск самых дешевых не представляет труда.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1335
Зарегистрирован: Ср июн 09, 2010 16:44:54
Откуда: Пермь

Сообщение RomanT »

Starichok51 писал(а):я смотрел на алиэкспрессе. и это я привел разницу в самых дешевых лотах.
а поскольку там сортировка по цене, то поиск самых дешевых не представляет труда.
Посмотрел http://ru.aliexpress.com
По штучно:
52 руб. - Atmega8
123 руб. - Atmega16
72 руб. - ATmega32
116 руб. - ATmega128

Честно говоря не вижу смысла париться с ценой, даже со 128 мегой ...

Ну например по 10 шт, бесплатная доставка, топ продавец:
Atmega8 - 370 руб.
ATmega16 - 680 руб.
ATmega32 - 720 руб.
Atmega128 - 700 руб.

Хоть убейте разница менее 2х
Контактная информация:
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср сен 12, 2012 19:05:02

Сообщение Sergey3a23 »

Starichok51 писал(а): умножение на 50 применяется как к току, так и к напряжению.
о поскольку это одна подпрограмма, то число в регистре R16 влияет одинаково как на ток, так и напряжение.
Вам, конечно, виднее, но вот я провёл ещё маленькую лабораторку... Нашёл в программе строчку 179, которая отвечает за напряжение.. -прошивка от 19.02

ldi R16, 0x32 ;множитель вольтметра,50 для В

Попрбовал снова поиграться с регистром R 16 Результаты - Во вложении..
При изменении R16 (по напряжению) - Показания Тока - НЕ МЕНЯЮТСЯ!!!
В общем, напряжение подстроил - в R16 положил число 0x35, разница с мультиметром 0.02 В

Напряжение питания уже застабилизировано через 78l05

Кстати, с Праздником всех!!!
Вложения
AdobePhotoshopExpress_993ed18d91554f9e862595c007fdf366.jpg
(169.65 КБ) 457 скачиваний
Ответить

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