Пятница, 19.04.2024, 12:52
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | Измеритель разряда литиевых батарей - Страница 8 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разработано и сделано ! » Измеритель разряда литиевых батарей
Измеритель разряда литиевых батарей
ВитГоДата: Среда, 30.01.2013, 07:17 | Сообщение # 106
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну у любого режима есть ограничения.. потому и режимов так много :-)))

Виталий (аka ВитГо)
 
uwrteyДата: Среда, 30.01.2013, 12:08 | Сообщение # 107
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
вот выясняю ответ на свой вопрос тут http://radiokot.ru/forum/viewtopic.php?f=20&t=84296&p=1560915#p1560915

ладно, что-то я от основной темы далеко ушел....
ну дак что? как мигать светодиодом?
Цитата
тогда придется вручную считать :-)
"вручную" - это цикл задержки сделать - как я делал?


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Среда, 30.01.2013, 19:36
 
ВитГоДата: Среда, 30.01.2013, 22:07 | Сообщение # 108
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну либо как ты делал, либо считать периоды таймера..

в принципе можно сделать 3-4 процедуры мигания (кратенькие) и нужную вызывать в главном цикле после получения значения с АЦП
главное чтобы места хватило в тиньке на это..


Виталий (аka ВитГо)
 
uwrteyДата: Среда, 30.01.2013, 22:11 | Сообщение # 109
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
ну тогда точно придется однократное АЦП настраивать ?

если делать задержку как я делал, то АЦП будет ее прерывать и мигания будут каждый раз разные ...

Ну хотя нам ведь точность не нужна - можно и так оставить...


не успеваю за своими мыслями......
 
ВитГоДата: Среда, 30.01.2013, 22:45 | Сообщение # 110
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
почему будут разные ?
ты же например прочитал значение АЦП из памяти и пошел мигать !
и пока не отмигаешь до конца (мигнул, выждал паузу) новое значение АЦП не читаешь из памяти..

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

так что ничего страшного ! пиши !! пора заканчивать проект :-)))


Виталий (аka ВитГо)
 
uwrteyДата: Четверг, 31.01.2013, 12:58 | Сообщение # 111
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата (ВитГо)
почему будут разные ?

ну если регулировать длительность свечения светодиода через задержку, то эта задержка будет увеличиваться во времени постольку, поскольку ее будет прерывать АЦП ... Но я думаю это не сильно будет заметно...
Вечером начну городить....


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Четверг, 31.01.2013, 13:01
 
ВитГоДата: Четверг, 31.01.2013, 21:25 | Сообщение # 112
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну чтение АЦП это 10-15 команд - даже не заметишь задержку!

Виталий (аka ВитГо)
 
uwrteyДата: Четверг, 31.01.2013, 23:20 | Сообщение # 113
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
вот уже немного накидал ( осталось процедуру оповещения о текущем напряжении написать )
Прикрепления: 0367133.asm (9.7 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Пятница, 01.02.2013, 16:32 | Сообщение # 114
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну в принципе глянул. нормально...

кстати, так ты все таки берешь 10 бит значения от АЦП ?

может быть проще все таки в 8ми битный режим перейти?

по поводу оповещения:
если акк севший - то лучше просто зажечь светодиод и зациклиться.. чтобы явно было видно ошибку ! а то два мигания можно как и две банки понять

по поводу других сигналов - ты изменил сигналы что ли ?


Виталий (аka ВитГо)
 
uwrteyДата: Пятница, 01.02.2013, 17:13 | Сообщение # 115
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата (ВитГо)
кстати, так ты все таки берешь 10 бит значения от АЦП ?
ага.

Цитата (ВитГо)
может быть проще все таки в 8ми битный режим перейти?
если нужно то можно и перейти... но мне придется все значения заново пересчитывать.... dry

Цитата (ВитГо)
по поводу оповещения:
если акк севший - то лучше просто зажечь светодиод и зациклиться.. чтобы явно было видно ошибку ! а то два мигания можно как и две банки понять
Хорошо - переделаю...

Цитата (ВитГо)
по поводу других сигналов - ты изменил сигналы что ли ?
Каких других ? surprised


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Пятница, 01.02.2013, 23:27
 
uwrteyДата: Суббота, 02.02.2013, 10:29 | Сообщение # 116
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата
например полностью заряжена батарея от 4 до 4.2 вольта - одна вспышка в 3 секунды
частично разряжена от 3.7 до 4 вольт - 1 вспышка в 2 секунды
разряжена от 3.4 до 3.7 вольт - вспышка каждую секунду
критический разряд - 2 вспышки в секунду...


Добавлено (02.02.2013, 10:29)
---------------------------------------------
Код

;*****************************************************************************************
; процедура вычисления разряда батареи
;*****************************************************************************************

; если 4 банки
;_____________

esli_4:

    ldi Temp, 0b00000011  ; 4,0 V
    ldi Temp1,0b11001110

    rcall compare   ; сравниваем...

    breq bolshe_40   ; переход на обработку когда X=Z    
    brcs bolshe_40   ; переход на обработку когда X<Z
    rjmp menshe_40   ; переход на обработку когда X>Z    

bolshe_40:

    ldi Temp8, 4   ; флаг напряжения = 4

    rjmp indikaciya

menshe_40:

    ldi Temp, 0b00000011  ; 3,7 V
    ldi Temp1,0b10000101

    rcall compare   ; сравниваем...

    breq bolshe_37   ; переход на обработку когда X=Z    
    brcs bolshe_37   ; переход на обработку когда X<Z
    rjmp menshe_37   ; переход на обработку когда X>Z    

bolshe_37:

    ldi Temp8, 3   ; флаг напряжения = 3

    rjmp indikaciya

menshe_37:

    ldi Temp, 0b00000011  ; 3,4 V
    ldi Temp1,0b00111100

    rcall compare   ; сравниваем...

    breq bolshe_34   ; переход на обработку когда X=Z    
    brcs bolshe_34   ; переход на обработку когда X<Z
    rjmp menshe_34   ; переход на обработку когда X>Z    

bolshe_34:

    ldi Temp8, 2   ; флаг напряжения = 2

    rjmp indikaciya

menshe_34:

    ldi Temp8, 1   ; флаг напряжения = 1

    rjmp indikaciya



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

и второй вопрос - а можно в именах меток использовать запятые ? например "menshe_3,4:"


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 02.02.2013, 14:57
 
uwrteyДата: Суббота, 02.02.2013, 15:52 | Сообщение # 117
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
ну вот что то получилось.

Чуть позже проверю в железе
Прикрепления: 3363139.asm (16.3 Kb)


не успеваю за своими мыслями......
 
ВитГоДата: Суббота, 02.02.2013, 19:36 | Сообщение # 118
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
на сколько тебе нужно разделить ? на количество банок ?

чтобы делить на два - сдвинь число один раз вправо

чтобы разделить на 4 - сдвинь число 2 раза вправо

деление на 3 нужно посмотреть.. тоже должно быть не сложно


Виталий (аka ВитГо)
 
ВитГоДата: Суббота, 02.02.2013, 20:10 | Сообщение # 119
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
придумал как поделить на 3 !!

исходное число (делимое) двигаем влево на 3 бита

сначала исходное число двигаем вправо на 2 позиции
потом исходное число двигаем вправо на 3 позиции

потом сложить оба результата сдвига

результат сложения сдвинуть на 3 бита вправо

например, нужно поделить число 12 на 3

пишу в бинари
12 - 1100
сдвиг на 3 бита <<
1100000
сдвиг на 2 бита вправо 11000
складываем 11000 + 1100 = 100100
сдвигаем на 3 позиции вправо - 100 (4)

например делим 7 на 3
7=111
сдвиг на 3 бита влево 111000
сдвиг на 2 бита вправо 1110
сложение предыдущего шага с исходным делимым 1110+111=10101
сдвиг на 3 бита вправо 10=2


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 02.02.2013, 22:27 | Сообщение # 120
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Виталий, принимай работу. smile

правда там не все так, как я хотел сделать...
я хотел использовать деление, но на тот момент я не знал как его организовать..
погуглил и нашел ответ ( правда тут про умножение, но суть та-же http://radiogeek.ru/umnozhe....nstantu )
оказалось, что делить на число не кратное степени двойки сложно... ( например число 3 ) НО об этом чуть позже... biggrin
я использовал десятибиный АЦП - это еще добавило трудностей к делению - вот по этому я отказался от деления...
А теперь про то как делить число на 3
Во первых - нужно было использовать восьми битный АЦП
а во вторых во флаг можно было записывать числа не 2, 3 и 4 - а 2, 4 и 8 это упростило бы написание кода с делением, что в свою очередь сократило бы весь код.. cool
( хорошая мысля приходит опосля )

в архиве лежит схема, ASM и HEX

на схеме указано как нужно выкрутить подстроечник ( 5,9 кОм между общим и АЦП )
для более точной настройки нужно крутить подстроечник

дисплей в конечной прошивке не используется...

я как мог так потестил, если кому эта штука принесет пользу - я только рад. smile

П.С.

вот кстати и само деление
1) http://radiogeek.ru/delenie-metodom-slozheniya
2) http://radiogeek.ru/delenie-na-assemblere-chast-1-obshhie-printsipyi

ссылка на файл для скачивания Индикатор заряда литиевой батареи


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Суббота, 02.02.2013, 22:34
 
Форум » Разработка электронных устройств » Разработано и сделано ! » Измеритель разряда литиевых батарей
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz