|
|
|
|
30343 84 0 0 |
|
Опции темы | Поиск в этой теме |
11.03.2010, 16:12 | 21 |
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Ага. Только тут есть одна проблемка. Непонятно, что дешевле или лучше использовать? МК или специальные микросхемы.
1. В случае со специализированными микросхемами, насколько я понимаю, нам понадобятся 2 микросхемы (одна для зарядки Li-Ion, а другая - для Ni-Mh) + МК для индикации + обвес. 2. В случае с МК, скорее всего, нам хватит внутреннего АЦП для замера напряжения, а ток заряда мы будем регулировать через напряжение, получаемое от ШИМ. Его тоже надо сглаживать - соответственно, доп. обвес. Зато, получим большую универсальность - алгоритмы зарядки можно со временем изменять. А если реализовать возможность подключения к компу, то и апгрейд зарядок… |
11.03.2010, 16:22 | 22 |
Завсегдатай Фонарёвки
|
Естественно, с МК будет дороже. Один МК стоит столько же, сколько специальная микросхема. Так к нему ещё и обвесу требуется.
Да и надёжнее всё-таки будет специальную юзать. Что касается алгоритмов зарядок - эта вещь, которую я бы не пожелал отлаживать... Если на реальном аккумуляторе отлаживать - это ж следить весь процесс заряда. А потом где-то разряжать, чтобы опять начать Учитывая, что правильно программы работают раза с двадцатого (а сложные и того хуже), на эту ерунду придётся потратить нереальное количество времени. |
11.03.2010, 16:39 | 23 | |||||
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
|||||
11.03.2010, 16:48 | 24 | |
Завсегдатай Фонарёвки
|
Цитата:
Proteus вообще со многими вещами не дружит в МК... А многие воспроизводит с точностью до наоборот Даже те вещи, которые в самом даташите указаны, как должно работать. |
|
11.03.2010, 16:55 | 25 |
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
11.03.2010, 17:06 | 26 |
Завсегдатай Фонарёвки
|
Всмысле, что их самому задавать придётся.
Вобщем, для задач, которые должны работать в реальном времени, не годится совсем... |
11.03.2010, 17:15 | 27 | |
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Вот и я тоже, не наблюдал, чтобы она что-то сбрасывала...
Цитата:
Ты же не будешь весь процесс отслеживать... А просто проверишь работу алгоритма на нескольких ключевых точках, которые заранее сам рассчитаешь... |
|
11.03.2010, 17:27 | 28 | |
Завсегдатай Фонарёвки
|
Проверять ШИМ - вообще занятие неблагодарное, в AVR Studio даже представить тяжело Вобщем, у меня свои методы - всё на железе только. Я и с ПЛК так учился, и с МК привычек не меняю. На железе обычно даже быстрее.
Всякими симуляторами будет ещё медленнее. Цитата:
|
|
11.03.2010, 17:44 | 29 | |||
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Цитата:
Цитата:
PS: Я вчера весь вечер в аське провел. Так что, сегодняшний придется посвятить нормам Минздрава. А вот завтра, думаю смогу уже и зарядкой на МК заняться. Для начала, неплохо было бы схему нарисовать и алгоритмы найти... |
|||
11.03.2010, 17:47 | 30 |
Завсегдатай Фонарёвки
|
Уже выкладывал, но повторюсь
|
11.03.2010, 20:59 | 31 |
Завсегдатай Фонарёвки
Регистрация: 17.02.2010 Последняя активность: 30.01.2016 13:11
Сообщений: 831
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
У 10-и разрядного АЦП при диапазоне входного напряжения 5 вольт, дискретность будет менее 0.005 вольт. Так что хватит
PS: меня тоже посетила идея сделать зарядку на МК после того, как я получил с DX зарядку, которая перезаряжает аккумуляторы. |
11.03.2010, 21:20 | 32 | ||
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Цитата:
PS: Пошел я нормы Минздрава изучать, может сегодня еще время и на зарядку останется... |
||
11.03.2010, 21:49 | 33 | |
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 273
Сказал(а) спасибо: 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. |
|
11.03.2010, 22:15 | 34 | |
Завсегдатай Фонарёвки
|
Цитата:
|
|
11.03.2010, 22:32 | 35 |
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 273
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Как говорят в таких случаях линуксоиды - сообщество допишет.
Температура - copy&paste batt_current_chk() или volt_chk() c другими комбинациями битов. Впрочем, для Li-Ion она не нужна, есть стандартрные токи заряда. Для NiMH тоже не нужна, зарядка там останавливается по падению напряжения в процессе заряда (но я этого не писал, знаю только в теории). Автоопределение типа - элементарный if по диапазону напряжений на аккумуляторе (или что имеется ввиду?). Измерение ёмкости не нужно. Её надо при разряде мерить. |
11.03.2010, 22:43 | 36 | |
Завсегдатай Фонарёвки
|
Отлично, теперь у нас есть кодер, который нам всё сделает
ЗЫ. А я МК совсем недавно изучаю, буквально неделю в сумме им занимался... Конечно многое для меня сложно... Цитата:
|
|
11.03.2010, 22:58 | 37 |
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 273
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
11.03.2010, 23:07 | 38 | |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 05.09.2022 18:18
Сообщений: 1090
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Алгоритм зарядки лития 3.7В простой: ток до 1С, при напряжении выше 4.20В заряд отключается, упало ниже 4.20В - опять включается. Греются только плохинькие аккум. при зарядке предельными токами, из-за большого внутреннего сопротивления. |
|
12.03.2010, 08:14 | 39 |
Завсегдатай Фонарёвки
Регистрация: 17.02.2010 Последняя активность: 30.01.2016 13:11
Сообщений: 831
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Ну-ну. Мы же не космический аппарат делаем, а простую зарядку для аккумуляторов Учёт этой погрешности можно сразу заложить в ЗУ и тогда особых проблем не будет.
|
12.03.2010, 11:21 | 40 | |
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 9050
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
У тебя прошивки буду раз в 10 работать медленней. Поэтому, они на асме и пишутся, как и тормознутые участки в нормальных прогах...
Добавлено через 2 минуты Цитата:
Добавлено через 52 секунды На подходе... |
|