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

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 10
Зарегистрирован: Пт май 26, 2017 16:09:15

Сообщение 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
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

фильтровать сигнал надо
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Родился
Сообщения: 10
Зарегистрирован: Пт май 26, 2017 16:09:15

Сообщение LegionKC »

в качестве фильтров подойдут керамические конденсаторы по 0,1 мкФ, установленные на линиях перед входом АЦП?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я имел ввиду программную фильтрацию.
но конденсаторы тоже подойдут, возможно
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 10
Зарегистрирован: Пт май 26, 2017 16:09:15

Сообщение LegionKC »

Что подразумевается под программной фильтрацией?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

именно то, что и написано: фильтрация результатов, получаемых из АЦП перед тем, как выводить их на дисплей или иначе использовать.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Родился
Сообщения: 10
Зарегистрирован: Пт май 26, 2017 16:09:15

Сообщение LegionKC »

смотрите, если я закомментирую часть кода в котором выполняю преобразование сигнала АЦП

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

и буду выводить только сам сигнал АЦП, то он-то у меня и будет ежесекундно изменяться, причем диапазон изменения будет быть больше 100 единиц (я измеряю при 10-битном режиме МК)
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

Сообщение dgrett »

16 измерений суммируем и делим на 16. Или 8 на 8...
Я всё-всё узнAю и стану профессором.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

Либо делаем массив из 8/16/32 результатов измерения, измеренные данные циклически пишем в массив.
результат изменения - сумма элементов массива, деленная на количество его элементов.
Получается среднее последних ХХ измерений в любой момент времени
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
Ответить

Вернуться в «AVR»