делаю лабораторный блок питания и хочу сделать управление блоком на atmega328p. Контроллер будет и измерительным прибором.
пытаюсь поднять точность измерений на 10-битном ADC, прочитал многое об оверсемплинге и ничего не могу понять, шарлатанство какое-то.
всмысле, разрядность то поднялась, да. НО! какой смысл?? когда стало например 8191 ступеньки вместо 1023,.. но "шаг" стал не 1, а 20??))
то есть картина следующая:
кварц: 16МГц
опорное: 5В - стабилитрон tl431
измеряемый диапазон: 20В (20000мв)
вход на АЦП: делитель - 2 резистора (1:4). То есть на нагрузке 20В на входе ADC - 5.
Читаю 64 выборки вот так:
Код: Выделить всё
ISR (ADC_vect){
ms_volts += ADC;
....
}Код: Выделить всё
unsigned long get_volts_adc_value(){
static unsigned long adc_result_accum_processed = 0;
adc_result_accum_processed = ms_volts ;
adc_result_accum_processed = (adc_result_accum_processed * ADC_GAIN_ERROR_FACTOR) >> 16;
adc_result_accum_processed = adc_result_accum_processed >> OVRSAMPLE_ADD_BIT;
return adc_result_accum_processed;
}ПОВЕДЕНИЕ ТАКОЕ:
напряжение на нагрузке 3.556В вольта, программа рассчитала и вернула из функции оверсемплинга значение 727, что в пересчете 3.542В
формула для расчета далее:
Код: Выделить всё
volt=(Vref * adc_oversampled * volt_devider) / digitization;что значит: (4988 * 727 * 4) / 4095 = 3542
на лицо косяк настройки делителя.
Начинаю потихоньку по пол Ома добавлять сопротивление в делителе.
Показания ADC не меняются.. однако вход АЦП повышется на один миливольт.. ADC молчит, еще на один и опа!!
уже отдает из функции 735!
куда делись еще 8 ступеней (то есть между 727..735)??? и соотвественно и показания сразу же прыгнули как 3581мв, что == 3,581В
я так понимаю оверсемплинг призван на то чтобы как раз таки детализировать показания, а не угрубить их в 5 раз
от этого работает криво и ВСЯ система, бывает попадешь точно в напряжение, а бывает левак показывает с разницей 20мв и более.. до 40!
так без всякого оверсемплинга получается точнее должно быть, то есть 5000/1024=4,88 - шаг 5мв. А с оверсемплингом 40
что за бред? почему так? какое тут увеличение битности?? откудова?
друзья, где косяк? 2 дня убил
PS.
Читал атмеловский апноут и таблицу смотрел про мнимые миливольты в разрядности и даже микровольты - чушь!


