Обсуждаем контроллеры компании Atmel.
Пт авг 27, 2021 13:20:59
понятно, кода не будет
Пт авг 27, 2021 18:12:19
slav0n, ты теряешься.
Раз программист исходит из тз и электрической схемы, ну поставь тз так и создай схему так, что бы он долго голову ломал.
Пт авг 27, 2021 18:36:21
та он уже голову сломал, судя по выкрутасам
Пт авг 27, 2021 20:14:38
понятно, кода не будет
Конечно не будет пока не сформулируете наконец чего же вы хотите.
Пт авг 27, 2021 20:25:59
хочу повторения своего алгоритма, но "по-правильному"
Сб авг 28, 2021 00:23:17
Третий раз спрашиваю: описание задачи будет или нет? Не ваших попыток решения, а то, чего вы хотите добиться.
Сб авг 28, 2021 04:33:34
COKPOWEHEU писал(а):Самое надежное - остановить ШИМ на некоторое время и измерить.
какая прэлэсть, использовать аппаратный ШИМ и останавливать его где попало...
ну, ладно, вот задача: измерять в каждом периоде ШИМ ток зарядки с максимально возможной задержкой после положительного фронта импульса ШИМ, напряжение без зарядки с максимально возможной задержкой после отрицательного фронта и все это
без остановки ШИМ.
решай, пожалуйста
Сб авг 28, 2021 07:07:57
а если к концу зарядки положительный импульс станет таким узким (снижение зарядного тока), что не только не будет времени на задержку, но и не хватит времени сделать измерение, пока длится импульс?
Сб авг 28, 2021 07:23:21
1. у меня задержка регулируется автоматически и всегда максимальна
2. если импульс настолько короткий, что не дает измерять, то он и не нужен, тупо вырубаем таймер. все, конец зарядки
Сб авг 28, 2021 08:27:29
ну, ладно, вот задача: измерять в каждом периоде ШИМ ток зарядки с максимально возможной задержкой после положительного фронта импульса ШИМ, напряжение без зарядки с максимально возможной задержкой после отрицательного фронта и все это без остановки ШИМ.
решай, пожалуйста
Я что, недостаточно понятно написал?
Сформулируйте
задачу, а не свои попытки
решения.
Сб авг 28, 2021 09:11:35
повторяю второй раз
slav0n писал(а):измерять в каждом периоде ШИМ ток зарядки с максимально возможной задержкой после положительного фронта импульса ШИМ, напряжение без зарядки с максимально возможной задержкой после отрицательного фронта и все это без остановки ШИМ.
Сб авг 28, 2021 09:30:53
измерять в каждом периоде ШИМ ток зарядки с максимально возможной задержкой после положительного фронта импульса ШИМ, напряжение без зарядки с максимально возможной задержкой после отрицательного фронта и все это без остановки ШИМ.
перефразирую для себя, когда почти и вот уже смена фронта произойодет, т.е. где ток будет максимально наибольшим и более достоверно его получится измерить? а напряжение, получится самое минимальное возможное перед нарастающим фронтом?
Сб авг 28, 2021 09:52:59
думаю с током будет то же самое, что и с напряжением - под конец импульса он будет уменьшаться и стабилизироваться
Сб авг 28, 2021 10:04:03
под конец импульса он будет уменьшаться и стабилизироваться
а мне казалось так, поведение тока такое
- Вложения
-
- pwm-kw.jpg
- (42.25 KiB) Скачиваний: 93
Сб авг 28, 2021 18:09:30
повторяю второй раз
Видимо, внятного ТЗ я так и не дождусь...
Если речь о зарядке аккумулятора, то логично после ШИМ поставить LC-цепочку для сглаживания пульсаций. Соответственно, измеряется постоянный ток и изредка, при остановке ШИМ, напряжение.
Ладно, не хотите реальной помощи, не надо. Так и быть набросаю по вашему странному алгоритму. Разумеется, поскольку в реальности применяться это не будет, большую часть настроек возьму от балды.
Сб авг 28, 2021 18:47:42
то логично после ШИМ поставить LC-цепочку для сглаживания пульсаций. Соответственно, измеряется постоянный ток и изредка, при остановке ШИМ, напряжение.
Вы видимо не знаете об импусных зу, там и привествуется именно заряд 19В на частоте около 1kHz, или десульфатор - тат же ЗУ но через дросель, плюс эл. конденсатор на 1000uf на той же частоте, заполнение ШИМ правдо около10% может и меньше. LC цепочка там не нужна, ну если сотворить из этого обычную автозарядку с порогом 14.4В.
Сб авг 28, 2021 19:05:03
Ну, грубо говоря, так:
- Код:
#define ADCSRA_START (1<<ADEN | 1<<ADSC | 1<<ADFR | 0b110 << ADPS0) //F_CPU/64
#define ADC_TIME_TIMER 30 //сколько тактов таймера длится аналого-цифровое преобразование. Пусть например 30
#define ADC_LOW (0b01<<REFS0 | 0) //ADC0
#define ADC_HIGH (0b01<<REFS0 | 1) //ADC1
ISR(TIMER1_COMPB_vect){
static uint8_t flag_low = 0;
if(flag_low){
adc_H = ADCH;
ADMUX = ADC_LOW;
ADCSRA = ADCSRA_START;
OCR1B = OCR1A - ADC_TIME_TIMER;
flag_low = 0;
PORTC |= (1<<4);
}else{
adc_L = ADCH;
ADMUX = ADC_HIGH;
ADCSRA = ADCSRA_START;
OCR1B = ICR1 - ADC_TIME_TIMER;
flag_low = 1;
PORTC &=~(1<<4);
}
}
У AVR в режиме ШИМов включается двойная буферизация регистров, поэтому измерение проходит только на половине импульсов ШИМ.
Вс авг 29, 2021 07:02:49
ну что тут скажешь... оригинально
а где же аппаратный ШИМ? где разгрузка ядра?..
Вс авг 29, 2021 08:26:37
В смысле "где"? На канале А, естественно. PC4 это просто отладочный вывод.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.