реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> АЦП в ATMega8: 8 бит или 10 бит?, Загадка в АЦП ATMega8 (ADC5)
defunct
сообщение Apr 27 2007, 01:39
Сообщение #31


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Snaky

Ради интереса попробуйте вот это (по 4м точкам):

Код
int UpdateAverage( int CurrVal )
{
    static int Sum = 0;
    int tmp = (Sum + 2) >> 2;
    Sum += CurrVal - tmp;
    return tmp;
}


за 12 итераций будет вам 10. ;>
А алгоритм прост до ужаса, упрощенно:

среднее = Sum / кол-во выборок по который усредняем.
Sum = Sum + Текущее значение - среднее.

Цитата(ReAl @ Apr 26 2007, 22:17) *
Но это, IMHO, не скользящее среднее.
...
А этот "экспоненциальный" фильтр имеет поведение как у RC-цепочки.

Согласен
Go to the top of the page
 
+Quote Post
Snaky
сообщение Apr 27 2007, 05:30
Сообщение #32


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Цитата(defunct @ Apr 26 2007, 16:07) *
Пример рабочий. Вы дальше повызывайте.
Хотите чтоб быстрее получался рез-тат усредняйте по 8-ми или по 4-м точкам.
Почитайте какую-нить книжку по усреднению прежде чем выступать.
Константа эта для устранения абсолютной погрешности в 0.5LSB при накоплении суммы.
У вас видать памяти в МК всегда много..

Тогда называйте вещи своими именами сразу. А то человек спросил про скользящее среднее, а вы ему совсем другое под этим названием подсовываете. Метод скользящего среднего - это то,что описал IgorKossak и Lepeksiy. Иначе захочется кому-нибудь сэкономить на памяти под массив, и будет потом долго удивляться, что результат поменялся.

PS Да, памяти у меня в МК всегда много - не жалуюсь.


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 27 2007, 11:24
Сообщение #33


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Snaky @ Apr 27 2007, 04:30) *
Тогда называйте вещи своими именами сразу. А то человек спросил про скользящее среднее, а вы ему совсем другое под этим названием подсовываете.

Свои имена не всегда упомнишь.
Я не подсовываю, а делюсь примером, мог бы ведь и не делиться. Он сам решит подходит ему пример или нет.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 27 2007, 18:49
Сообщение #34


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Snaky @ Apr 27 2007, 04:30) *
Иначе захочется кому-нибудь сэкономить на памяти под массив, и будет потом долго удивляться, что результат поменялся.
Да, реакция на выбросы у них отличается.
Кстати, а в чём вообще смысл скользящего среднего? Фильтрует он не лучше, чем "экспоненциальный", памяти жрёт. Раз уж есть массив - так сделать бы фильтр с "более нормальным" откликом, чем прямоугольник. Да, счёту больше, ну так а жалко счёту - вон он, экспоненциальный, заодно и памяти меньше :-)


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Anjey_N
сообщение Apr 27 2007, 22:05
Сообщение #35


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 12-01-07
Из: Энергодар Украина
Пользователь №: 24 374



Спасибо всем! Благодаря вашим советам мне удалось запустить АЦП.
Только врёт он немножко.

Эталон --- АЦП
96 мВ --- 89 мВ
207 мВ --- 201 мВ
500 мВ --- 496 мВ
1 В --- 1 В
1.49 мВ --- 1.492 мВ
2 В --- 2.011 В
2.52 В --- 2.532 В

Как это исправить, подскажите! help.gif

Сообщение отредактировал Anjey_N - Apr 27 2007, 22:06
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 28 2007, 00:50
Сообщение #36


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Anjey_N @ Apr 27 2007, 21:05) *
Как это исправить, подскажите! help.gif
Если эталон - китайский мультиметр, то сменить мультиметр. Если же эталон заслуживает доверия, то давайте думать. Это не похоже на погрешность источника опорного напряжения, ибо отклонения имеют разный знак на концах шкалы. Какое у вас выходное сопротивление источника сигнала? И что вы используете в качестве опорного напряжения? Если внешняя опора, то какое выходное сопротивление ее источника?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 28 2007, 02:31
Сообщение #37


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ReAl @ Apr 27 2007, 19:49) *
Да, реакция на выбросы у них отличается.
Кстати, а в чём вообще смысл скользящего среднего? Фильтрует он не лучше, чем "экспоненциальный", памяти жрёт. Раз уж есть массив - так сделать бы фильтр с "более нормальным" откликом, чем прямоугольник. Да, счёту больше, ну так а жалко счёту - вон он, экспоненциальный, заодно и памяти меньше :-)

Разница между скользящим средним и "экспоненциальным" заключается в том что
"экспоненциальный" дает сдвиг фазы сигнала до 1/2 частоты сигнала
То есть если сигнал "постоянный" то разницы нет никакой, а вот если
изменяющийся, то тогда в каждом конкретном случае нужно рассчитывать
в какой момент времени данные уже устаканились и устраивает ли нас такой сдвиг фазы
Go to the top of the page
 
+Quote Post
Snaky
сообщение Apr 28 2007, 05:59
Сообщение #38


Mute Beholder
***

Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754



Цитата(ReAl @ Apr 27 2007, 21:49) *
Да, реакция на выбросы у них отличается.
Кстати, а в чём вообще смысл скользящего среднего? Фильтрует он не лучше, чем "экспоненциальный", памяти жрёт. Раз уж есть массив - так сделать бы фильтр с "более нормальным" откликом, чем прямоугольник. Да, счёту больше, ну так а жалко счёту - вон он, экспоненциальный, заодно и памяти меньше :-)

Оба фильтра по сути цифровая реализация ФНЧ. Просто фильтр скользящего среднего с массивом - это КИХ фильтр, экспоненциальный - БИХ. В моих задачах нужна конечная по времени реакция на отклик - я иду на затраты памяти.
Олссон/Пиани интерпретируют экспоненциальный фильтр как авторегрессионный фильтр скользящего среднего первого порядка (признаю, тут можно согласиться с defunct). Подробнее - см. аттач (имхо лучше не объяснишь).

PS Что значит "с более нормальным откликом" - я не понял smile.gif
Прикрепленные файлы
Прикрепленный файл  filtr.zip ( 495.18 килобайт ) Кол-во скачиваний: 85
 


--------------------
Common sense is not so common.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Apr 28 2007, 08:04
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(Lepeksiy @ Apr 26 2007, 18:21) *
VladimirYU
А как это выражается формулами?


Все очень просто, привожу не код, а алгоритм:

Исходно имеем

Summator - переменная двойной длины,
Current - результат текущих измерений (данные с прибора, АЦП ...)
Previos - предыдущий фильтрованный результат

Далее

error = Current - Previos
Summator = Summator +error
Previos = Summator>>N

N определяет степень фильтрации ( количество результатов по которым идет усреднение).
Ньюансы кода, как понимаете, зависят от формы предсавления результатов (разрядность, тип и т.д.)

А математика за этим следующая

1/(TS+1) представить можно как интегратор 1/TS охваченный единичной отрицательной
обратной связью.

W(S) = Wпр(S)/(Wпр(S)*Wос(S) + 1)
Go to the top of the page
 
+Quote Post
yod
сообщение Apr 28 2007, 19:12
Сообщение #40


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 20-10-06
Пользователь №: 21 500



Вот такой вот рабочий код приведен в документе
slaa037.pdf - апликэшн репорт от тексаса

Код
*****************************************************************************
* Anti–bias results
* answer = input + (0.875 * lasty) – lastx;
* lasty = answer;
* lastx = input;
*****************************************************************************
Go to the top of the page
 
+Quote Post
Anjey_N
сообщение Apr 29 2007, 09:13
Сообщение #41


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 12-01-07
Из: Энергодар Украина
Пользователь №: 24 374



Цитата(Сергей Борщ @ Apr 28 2007, 00:50) *
Если эталон - китайский мультиметр, то сменить мультиметр. Если же эталон заслуживает доверия, то давайте думать. Это не похоже на погрешность источника опорного напряжения, ибо отклонения имеют разный знак на концах шкалы. Какое у вас выходное сопротивление источника сигнала? И что вы используете в качестве опорного напряжения? Если внешняя опора, то какое выходное сопротивление ее источника?



1) Мультимер UNI-T M890F, купленный 4 года назад за 20 баксов. На него я ещё не разу не жаловался!
2) В качестве источника входного сигнала я ис пользую такую сему
3) ИОН внутренний с конденсатором на ножке AREF, равен 2.66 В


Может я чего намутил в программе,посмотрите, пожалуйста, код

Сообщение отредактировал Anjey_N - Apr 29 2007, 09:18
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  ADC_new.rar ( 30.77 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 29 2007, 18:29
Сообщение #42


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Anjey_N @ Apr 29 2007, 09:13) *
На него я ещё не разу не жаловался!
Это не значит что он показывает правильно.
Цитата(Anjey_N @ Apr 29 2007, 09:13) *
2) В качестве источника входного сигнала я ис пользую такую сему
Выходное сопротивление вашей цепи близко к предельному:
Цитата
The ADC is optimized for analog signals with an output impedance of approximately 10k or less. If such a source is used, the sampling time will be negligible.
Попробуйте увеличить время выборки (sampling time) снизив тактовую частоту АЦП или возьмите потенциометр на 10К


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016