|
|
| ||||||||
|
|
|
|
33738
84
0
0
|
|
Опции темы | Поиск в этой теме |
|
21
|
|
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 7908
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Ага.
Только тут есть одна проблемка. Непонятно, что дешевле или лучше использовать? МК или специальные микросхемы.1. В случае со специализированными микросхемами, насколько я понимаю, нам понадобятся 2 микросхемы (одна для зарядки Li-Ion, а другая - для Ni-Mh) + МК для индикации + обвес. 2. В случае с МК, скорее всего, нам хватит внутреннего АЦП для замера напряжения, а ток заряда мы будем регулировать через напряжение, получаемое от ШИМ. Его тоже надо сглаживать - соответственно, доп. обвес. Зато, получим большую универсальность - алгоритмы зарядки можно со временем изменять. А если реализовать возможность подключения к компу, то и апгрейд зарядок… |
|
|
|
|
|
22
|
|
Завсегдатай Фонарёвки
|
Естественно, с МК будет дороже. Один МК стоит столько же, сколько специальная микросхема. Так к нему ещё и обвесу требуется.
Да и надёжнее всё-таки будет специальную юзать. Что касается алгоритмов зарядок - эта вещь, которую я бы не пожелал отлаживать... Если на реальном аккумуляторе отлаживать - это ж следить весь процесс заряда. А потом где-то разряжать, чтобы опять начать Учитывая, что правильно программы работают раза с двадцатого (а сложные и того хуже), на эту ерунду придётся потратить нереальное количество времени.
|
|
|
|
|
23
|
|||||
|
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 7908
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Насколько я понимаю, не существует универсальной микросхемы, которая бы умела заряжать и Li-Ion, и Ni-Mh. Соответственно, нам понадобится 2 микросхемы. Также, нам понадобится МК для индикации и выбора микросхемы, которую использовать для зарядки. Итого в деньгах это уже 3х + обвес. В случае с МК - это 1х + на обвес еще 2х остается... Цитата:
Цитата:
Цитата:
Вроде, для AVR Studio что-то такое было...Цитата:
|
|||||
|
|
|
|
|
24
|
|
|
Завсегдатай Фонарёвки
|
Цитата:
Proteus вообще со многими вещами не дружит в МК... А многие воспроизводит с точностью до наоборот Даже те вещи, которые в самом даташите указаны, как должно работать.
|
|
|
|
|
|
25
|
|
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 7908
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
|
|
|
|
|
26
|
|
Завсегдатай Фонарёвки
|
Всмысле, что их самому задавать придётся.
Вобщем, для задач, которые должны работать в реальном времени, не годится совсем... |
|
|
|
|
27
|
|
|
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 7908
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Вот и я тоже, не наблюдал, чтобы она что-то сбрасывала...
![]() Цитата:
![]() Ты же не будешь весь процесс отслеживать... А просто проверишь работу алгоритма на нескольких ключевых точках, которые заранее сам рассчитаешь... |
|
|
|
|
|
|
28
|
|
|
Завсегдатай Фонарёвки
|
Проверять ШИМ - вообще занятие неблагодарное, в AVR Studio даже представить тяжело
Вобщем, у меня свои методы - всё на железе только. Я и с ПЛК так учился, и с МК привычек не меняю. На железе обычно даже быстрее.Всякими симуляторами будет ещё медленнее. Цитата:
|
|
|
|
|
|
29
|
|||
|
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 7908
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
![]() Цитата:
![]() Цитата:
PS: Я вчера весь вечер в аське провел. Так что, сегодняшний придется посвятить нормам Минздрава. А вот завтра, думаю смогу уже и зарядкой на МК заняться. Для начала, неплохо было бы схему нарисовать и алгоритмы найти...
|
|||
|
|
|
|
|
30
|
|
Завсегдатай Фонарёвки
|
Уже выкладывал, но повторюсь
|
|
|
|
|
|
31
|
|
Завсегдатай Фонарёвки
Регистрация: 17.02.2010 Последняя активность: 30.01.2016 13:11
Сообщений: 787
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
У 10-и разрядного АЦП при диапазоне входного напряжения 5 вольт, дискретность будет менее 0.005 вольт. Так что хватит
![]() PS: меня тоже посетила идея сделать зарядку на МК после того, как я получил с DX зарядку, которая перезаряжает аккумуляторы. |
|
|
|
|
32
|
||
|
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 7908
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
![]() Цитата:
PS: Пошел я нормы Минздрава изучать, может сегодня еще время и на зарядку останется... |
||
|
|
|
|
|
33
|
|
|
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 266
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
"Алгоритм зарядки аккумулятора" & "сложная программа" - лол, именно поэтому я асм даже не смотрел. Код:
void volt_chk(void)
{
ADMUX = (1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX1)|(1<<MUX0); // Input select
ADCSRA = (1<<ADEN)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
volt=ADC_result();
}
void batt_current_chk(void)
{
ADMUX = (1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(1<<MUX3)|(1<<MUX1)|(1<<MUX0); // Input select
ADCSRA = (1<<ADEN)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
batt_current=AMP_ADC_result();
}
unsigned int ADC_result (void) // 256 ADC measurements
{
unsigned int result = 0;
int count = 0;
while (count<=255)
{
ADCSRA|=(1<<ADSC);
while(bit_is_clear(ADCSRA,ADIF));
result += ADCH;
count++;
}
result >>= 8;
return result;
}
unsigned int AMP_ADC_result (void) // 256 amplified ADC measurements
{
unsigned int result = 0;
int count = 0;
while (count<=255)
{
sbi(ADCSRB,ADASCR);
while (bit_is_clear(ADCSRA,ADIF));
result += ADCH;
count++;
}
result >>= 8;
if (result>127) return 0; else return result; // discarding negative values
}
void Chg_on(void)
{
chgd=0;
chg=1;
CHG_PWM=CHG_PWM_MIN;
sbi (PSOC0, POEN0B);
}
void Chg_off(void)
{
chg=0;
cbi (PSOC0, POEN0B);
}
void Chg_set(void)
{
batt_current_chk();
volt_chk();
if ((volt<V_LOW) & (batt_current>BATT_CURRENT_LOW)) // first stage, low current control
{
if (CHG_PWM>CHG_PWM_MIN) CHG_PWM--;
}
else if (batt_current>BATT_CURRENT_MAX) // second stage, high current control
{
if (CHG_PWM>CHG_PWM_MIN) CHG_PWM--;
}
else if ((volt>=V_MAX)&(batt_current>BATT_CURRENT_OFF)) // third stage, voltage control
{
if (CHG_PWM>CHG_PWM_MIN) CHG_PWM--;
}
else if (volt<V_MAX) // rising current, if not enough
{
if (CHG_PWM<CHG_PWM_MAX) CHG_PWM++;
}
else
{
chgd=1;
Chg_off(); // Charge is over
}
}
BATT_CURRENT_MAX, V_MAX и прочее - можно померить при помощи простенькой проги, которая мигает светодиодиком по уровню сигнала на АЦП, задать через #define. CHG_PWM - регистр таймера ШИМ, посмотреть по даташиту для своего МК. регистры ADMUX, ADCSRA и соответствующие биты - уточнить по даташиту для своего типа МК А, и переменные ещё нужно объявить. И проинициализировать таймеры и прерывания, см даташит. Chg_set() вызывать в бесконечном цикле или по таймеру. Ну или вообще откуда угодно, но периодически и обязательно. ---------------- Апдейт - опубликовано на условиях GNU GPL v2 или v3.
|
|
|
|
|
|
|
34
|
|
|
Завсегдатай Фонарёвки
|
Цитата:
И где автоопределение типа аккумулятора?
|
|
|
|
|
|
|
35
|
|
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 266
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Как говорят в таких случаях линуксоиды - сообщество допишет.
![]() Температура - copy&paste batt_current_chk() или volt_chk() c другими комбинациями битов. Впрочем, для Li-Ion она не нужна, есть стандартрные токи заряда. Для NiMH тоже не нужна, зарядка там останавливается по падению напряжения в процессе заряда (но я этого не писал, знаю только в теории). Автоопределение типа - элементарный if по диапазону напряжений на аккумуляторе (или что имеется ввиду?). Измерение ёмкости не нужно. Её надо при разряде мерить. |
|
|
|
|
|
36
|
|
|
Завсегдатай Фонарёвки
|
Отлично, теперь у нас есть кодер, который нам всё сделает
![]() ЗЫ. А я МК совсем недавно изучаю, буквально неделю в сумме им занимался... Конечно многое для меня сложно... Цитата:
В даташите много оговорок вроде "хотите точность - перед преобразованием уходите в спящий режим, не переключайте выхода в это время и т.д.".
|
|
|
|
|
|
|
37
|
|
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 266
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
|
|
|
|
|
38
|
|
|
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 05.09.2022 18:18
Сообщений: 1034
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Алгоритм зарядки лития 3.7В простой: ток до 1С, при напряжении выше 4.20В заряд отключается, упало ниже 4.20В - опять включается. Греются только плохинькие аккум. при зарядке предельными токами, из-за большого внутреннего сопротивления. |
|
|
|
|
|
|
39
|
|
|
Завсегдатай Фонарёвки
Регистрация: 17.02.2010 Последняя активность: 30.01.2016 13:11
Сообщений: 787
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Учёт этой погрешности можно сразу заложить в ЗУ и тогда особых проблем не будет.
|
|
|
|
|
|
40
|
|
|
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 7908
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
У тебя прошивки буду раз в 10 работать медленней.
Поэтому, они на асме и пишутся, как и тормознутые участки в нормальных прогах...Добавлено через 2 минуты Цитата:
Добавлено через 52 секунды На подходе...
|
|
|
|
|