Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
14.06.2010, 21:30
|
|
Временная регистрация
Регистрация: 10.11.2007
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
АЦП AVR преобразование
Здравствуйте! Поделитесь опытом пожалуйста. У меня Atmega128 производить преобразование АЦП через определенный цикл и присваивает преобразованное значение в переменную. Проблема в том что преобразованное значение пляшет каждый раз. У меня схема измерение датчика с помощью делительного резистора ( емкость 1 мкф на входе). Подскажите пожалуйста как организовать фильтр программный если можно на СИ (CodeVision). Спасибо!
|
|
|
|
14.06.2010, 21:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: АЦП AVR преобразование.
Сообщение от Fan79
|
Подскажите пожалуйста как организовать фильтр программный
|
Значения складывать в буфер кольцевой и подсчитывать среднее значение, можно перед вычислением среднего ещё вычитать одно самое меньшее и одно самое большее значение в буфере.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
14.06.2010, 22:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: АЦП AVR преобразование.
Три переменных в каждой свое значение, среднее арифметическое выводим. Чем больше переменных тел лучше фильтрация, без фанатизма.
|
|
|
|
15.06.2010, 01:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: АЦП AVR преобразование.
Сообщение от 7Fantomas7
|
Три переменных в каждой свое значение.
|
это называется буфер размером в 3 результата ADC))) размер то моно задавать любой. Делить на 3 будет сложнее чем например на 4, делить на 4 это два раза сдвинуть результат вправо, а деление на 3 будет задействована арифметика, отожрёт память и RAM, так что на 2,4,8,16,32,64 практичнее делить.
Код:
|
CHAR bufer[4];
INT calculator_result;
bufer[3]=bufer[2];
bufer[2]=bufer[1];
bufer[1]=bufer[0];
bufer[0]=result adc;
calculator_result=((bufer[0]+bufer[1]+bufer[2]+bufer[3])››2); |
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
Последний раз редактировалось picavr; 15.06.2010 в 01:14.
|
|
|
Эти 4 пользователя(ей) сказали Спасибо picavr за это сообщение:
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:11.
|
|