Пн мар 01, 2021 16:48:03
Пн мар 01, 2021 20:02:02
Пн мар 01, 2021 20:19:13
Пн мар 01, 2021 20:46:57
Пн мар 01, 2021 22:02:56
Пн мар 01, 2021 23:16:19
Вт мар 02, 2021 08:28:35
тогда еще вопрос - какая частота ШИМ и какая частота опроса АЦП?neid писал(а):мк вычисляет по ацп
Вт мар 02, 2021 10:33:44
#define K 0.1 //K - коэффициент фильтрации, 0.0-1.0
//*******ФУНКЦИЯ БЕГУЩЕЕ СРЕДНЕЕ АРИФМИТИЧЕСКОЕ**********************************
float expRunningAverage(float newVal) {
static float filVal = 0;
filVal += (newVal - filVal) * K; //K - коэффициент фильтрации, 0.0-1.0
return filVal;
}
//*******************************************************************************
----прочий код-------
adc=expRunningAverage(read_adc(0));
if(OCR1B>0 && OCR1B<PWR) {adc_max_pwr=expRunningAverage(read_adc(0));} //т.е. когда период ШИМ Toff то меряем напругу
if(OCR1B>0 && OCR1B<PWR) {adc_max_pwr=read_adc(0);} //т.е. когда период ШИМ Toff то меряем напругу без филтрации
Вт мар 02, 2021 14:45:48
Вт мар 02, 2021 15:22:53
Учитывая чтоStarichok51 писал(а): то есть, как часто вызывается твоя функция read_adc(0).
----прочий код-------
adc=expRunningAverage(read_adc(0));
Не понятно? Полагаю что ТС на АКБ подаете фиксированное напряжение 19В через какой-то "ключ" на который завели ШИМ 1кГц. -?neid писал(а):В двух словах подаю на АКБ автомобильный напряжение 19В частотой 1кГц с заполнение 40%.
Вт мар 02, 2021 15:46:11
Вт мар 02, 2021 16:49:37
не хочу отвечать даже! вообще не о том речь! там просто Р-канальный мосфет и все.... на 5 страниц она выльется если подобные вопросы не в тему задавать)))Dimon456 писал(а):Dimon456
Starichok51 писал(а):вообще-то, АКБ автомобильная. батарея же она, а не он.
и какие, на хрен, 19 Вольт, если на батарею нельзя подавать более 14,4 Вольта???
Вт мар 02, 2021 17:16:29
вопрос в тему был.neid писал(а):не хочу отвечать даже! вообще не о том речь! там просто Р-канальный мосфет и все.... на 5 страниц она выльется если подобные вопросы не в тему задавать)))
Вт мар 02, 2021 17:32:26
Вт мар 02, 2021 17:56:24
это не настройки ты привел, а комментарии.neid писал(а):на этот вопрос я ответил настройками из codevisiona avr,
Вт мар 02, 2021 17:58:26
Вам же писалиneid писал(а):что вы хотите делать опрос АЦП в нулевом периоде ШИМ сигнала
Demiurg писал(а):Запускать АЦП между импульсами ШИМ
так делается во многих промышленных зарядниках, что дает более оптимальное измерение напряжения на акб.neid писал(а):тогда другой вопрос зачем его вообще выключать?
Вт мар 02, 2021 18:53:14
//*******Timer1 output compare A interrupt service routine***********************
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
timer++; //таймер шим 1кГц
OCR1B= (PERIOD_kHz*(1000-IGLA))*0.001; //т.к С ИНВЕРСИЕЙ - считаем так
} // end Timer1
//**********************************************************************
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: Fast PWM top=OCR1A
// OC1A output: Disconnected
// OC1B output: Inverted PWM
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 0,99925 ms
// Output Pulse(s):
// OC1B Period: 0,99925 ms Width: 0,99925 ms
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (1<<COM1B0) | (1<<WGM11) | (1<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x1F; // 1F3F(7999) - 1кГц - 1.0000 ms
OCR1AL=0x3F;
OCR1BH=0x00;
OCR1BL=0x00;
if(OCR1B>0 && OCR1B<PWR) {adc_max_pwr=expRunningAverage(read_adc(0));} //т.е. когда период ШИМ Toff то меряем напругу
TCCR1A &=~(1 << COM1B0);
TCCR1A &=~(1 << COM1B1);
Вт мар 02, 2021 18:58:09
как ты можешь сравнивать OCR1B, если у тебя там записан НОЛЬ, и это значение нигде не изменяется?neid писал(а):if(OCR1B>0 && OCR1B<PWR)
Вт мар 02, 2021 19:01:18
OCR1B= (PERIOD_kHz*(1000-IGLA))*0.001;
Вт мар 02, 2021 19:14:48