Страница 2 из 2

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 14:11:53
LegionKC
Напряжение и ток получилось измерить. Но точность страдает, почему-то показания АЦП постоянно скачут. АЦП не выдает конкретно одно значение, а каждую секунду изменяет измеренный параметр.
Можете пожалуйста подсказать от чего это зависит?

Настройки АЦП выставил таким образом (работаю в CodeVisionAvr):
Спойлер// Voltage Reference: AVCC pin
#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=(1<<ADSC);
// Wait for the AD conversion to complete
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
Измерение тока:
Спойлерnapr=read_adc(4);
current=(napr-512)*0.0264;
Измерение напряжения:
Спойлерvoltage_ADC=read_adc(3);
voltage = voltage_ADC*step_voltage_ADC;
step_voltage_ADC = 0.00489

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 14:16:16
ARV
фильтровать сигнал надо

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 14:21:32
LegionKC
в качестве фильтров подойдут керамические конденсаторы по 0,1 мкФ, установленные на линиях перед входом АЦП?

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 14:41:37
ARV
я имел ввиду программную фильтрацию.
но конденсаторы тоже подойдут, возможно

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 14:46:58
LegionKC
Что подразумевается под программной фильтрацией?

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 14:59:03
ARV
именно то, что и написано: фильтрация результатов, получаемых из АЦП перед тем, как выводить их на дисплей или иначе использовать.

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 15:04:19
LegionKC
смотрите, если я закомментирую часть кода в котором выполняю преобразование сигнала АЦП

napr=read_adc(4);
//current=(napr-512)*0.0264;

и буду выводить только сам сигнал АЦП, то он-то у меня и будет ежесекундно изменяться, причем диапазон изменения будет быть больше 100 единиц (я измеряю при 10-битном режиме МК)

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 18:34:36
dgrett
16 измерений суммируем и делим на 16. Или 8 на 8...

Re: Измерение напряжение на АЦП ATmega8

Добавлено: Вт июн 04, 2019 22:20:37
GoldenAndy
Либо делаем массив из 8/16/32 результатов измерения, измеренные данные циклически пишем в массив.
результат изменения - сумма элементов массива, деленная на количество его элементов.
Получается среднее последних ХХ измерений в любой момент времени