|
STM32F4: цифровой фильтр АЦП |
|
|
|
 |
Ответов
|
Dec 29 2014, 04:12
|

Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978

|
Цитата(kovigor @ Dec 26 2014, 16:30)  Делается. Если со схемотехникой и разводкой все в порядке, то этот метод вполне применим. Рискну спросить. А антиалиасный фильтр перед АЦП имеется ? Хотя бы простейшая RC - цепочка ? И насколько сложно будет исправить некорректно разведенную плату ? На входе АЦП простой резистивный делитель + кондер на GND На входе Vref рекомендуемая схема от ST Схема будет переделана в следующих ревизиях устройства, как только будут найдены источники помех и способы их устранения. Сейчас задача - улучших характеристики АЦП уже эксплуатируемых устройств (т.е. программно) Цитата(scifi @ Dec 26 2014, 17:02)  Вот простейший фильтр: CODE #define SHIFT 4 // filter time constant is T*2^SHIFT
static int acc;
// seed filter with initial value void filter_init(int a) { acc = a << SHIFT; }
// call this periodically and supply filter with input data void filter_advance(int a) { acc += a - (acc >> SHIFT); }
// filter output int filter_result(void) { return acc >> SHIFT; }
спасибо за пример. еще бы допереть как его использовать. можно в 2х словах?
|
|
|
|
|
Dec 29 2014, 09:21
|

Местный
  
Группа: Участник
Сообщений: 319
Регистрация: 31-01-12
Пользователь №: 69 978

|
Цитата(adnega @ Dec 29 2014, 11:26)  Общеизвестно, что на сопротивление такого делителя накладываются ограничения. У вас R не больше предельного значения? В противном случае АПЦ превращается в показометр. плата разведена довольно неплохо, а вот схема питания устройства ( ... -> 5В -> 3.3В) так себе, соответственно Vref получается довольно шумным не смотря на фильтр. на самом деле железной частью устройства занимаюсь не я. я больше по программной части. Применил вышеописанный фильтр. Без подключенного измеряемого напряжения (на входе АЦП 0В): до применения показания были 0 - 0.3В после применения (результат берется из 100 измерений) 0.07-0.12В т.е. 0В никогда не бывает. В общем делаю вывод, что частота помехи слишком высокая и в измерения слишком часто попадают броски. Будь частота помехи пониже, от фильтра было бы больше пользы. Быть может у кого то еще появятся мысли о том, как мне победить помеху программным способом... Цитата(Golikov A. @ Dec 29 2014, 09:58)  идея в том что вы вызываете void filter_init(int a) с первым полученным от АЦП значением или 0
а далее каждое новое значение пихаете в void filter_advance(int a), и когда вам надо отфильтрованный результат, берете его в int filter_result(void)
это обычная экспонента спасибо. а чем такой способ отличается от медианного фильтра (в 2х словах, если не сложно) ?
|
|
|
|
|
Dec 29 2014, 09:30
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(k000858 @ Dec 29 2014, 12:21)  Применил вышеописанный фильтр. Без подключенного измеряемого напряжения (на входе АЦП 0В): до применения показания были 0 - 0.3В после применения (результат берется из 100 измерений) 0.07-0.12В т.е. 0В никогда не бывает. Можно предположить, что помеха настолько велика, что среднеквадратичное отклонение имеет порядок 0.1В, что и даёт такое среднее значение около 0 (потому что отрицательные значения на входе АЦП заменяются нулём, а положительные остаются). Это предположение нужно подтвердить. Оцифруйте 100...1000 отсчётов при ненулевом входе и посчитайте статистические показатели: среднее, мин., макс., среднеквадратичное отклонение. Если предположение подтвердится, то можно приподнять сигнал на входе АЦП ещё одним резистором (к Vref, например), чтобы сигнал на входе АЦП никогда не опускался ниже 0 даже в присутствии шумов. Ну а потом эту поправку от резистора учесть в расчётах, естественно.
|
|
|
|
Сообщений в этой теме
k000858 STM32F4: цифровой фильтр АЦП Dec 26 2014, 11:28    adnega Цитата(k000858 @ Dec 29 2014, 13:21) В об... Dec 29 2014, 09:33 scifi Вот простейший фильтр:
CODE#define SHIFT 4 // filt... Dec 26 2014, 13:02 AlexandrY Цитата(k000858 @ Dec 26 2014, 13:28) Так ... Dec 26 2014, 13:13 k000858 Цитата(AlexandrY @ Dec 26 2014, 16:13) По... Dec 29 2014, 06:45 Golikov A. экспонента для плавных процессов тоже хорошо броск... Dec 26 2014, 15:53 Aner Если шум на ацп: иногда вместо 0 показывает 0.1-0.... Dec 26 2014, 19:56 Golikov A. Цитатаспасибо за пример. еще бы допереть как его и... Dec 29 2014, 06:58 scifi Цитата(Golikov A. @ Dec 29 2014, 09:58) и... Dec 29 2014, 07:18 scifi Цитата(k000858 @ Dec 29 2014, 07:12) На в... Dec 29 2014, 08:37 Golikov A. Цитатаа чем такой способ отличается от медианного ... Dec 29 2014, 12:07 ViKo Цитата(Golikov A. @ Dec 29 2014, 15:07) м... Dec 29 2014, 12:32 adnega ЦитатаСейчас задача - улучших характеристики АЦП у... Dec 29 2014, 12:48 scifi Цитата(adnega @ Dec 29 2014, 15:48) Обсуж... Dec 29 2014, 12:56 Golikov A. ЦитатаОтнюдь. Медианный фильтр просто отбрасывает,... Dec 29 2014, 14:22 k000858 1) Vref 3.3В
2) Вход АЦП (после резистивного делит... Dec 30 2014, 05:47 scifi Цитата(k000858 @ Dec 30 2014, 08:47) 2) В... Dec 30 2014, 06:48  k000858 Цитата(scifi @ Dec 30 2014, 09:48) Имя, с... Dec 30 2014, 07:33 adnega Цитата(k000858 @ Dec 30 2014, 09:47) Шуми... Dec 30 2014, 07:03 VAI Вот здесь рассматривалось много разных медиан. Dec 30 2014, 06:04 adnega max = 14
14 * 3300 мВ / 4096 = 11 мВ = 0.011В
А ... Dec 30 2014, 07:49 k000858 Цитата(adnega @ Dec 30 2014, 10:49) max =... Dec 30 2014, 07:57 VAI Цитатаможет стоит изменить количество точек?
Медиа... Jan 13 2015, 12:32 KnightIgor Цитата(VAI @ Jan 13 2015, 14:32) И после ... Jan 13 2015, 12:47  Сергей Борщ Цитата(KnightIgor @ Jan 13 2015, 14:47) Э... Jan 13 2015, 13:59 k000858 Цитата(VAI @ Jan 13 2015, 15:32) Медианны... Jan 14 2015, 04:21 Golikov A. сортировка и усреднение - медиана?
классическая 4... Jan 14 2015, 06:00 k000858 Цитата(Golikov A. @ Jan 14 2015, 09:00)
... Jan 14 2015, 07:28 adnega а б б б = б ? Jan 14 2015, 08:21 ViKo а если кругом одни б б, то что выдаст описанный вы... Jan 14 2015, 08:44 Golikov A. я имел ввиду про исходную последовательность....
... Jan 14 2015, 09:16 ViKo Цитата(Golikov A. @ Jan 14 2015, 12:16) н... Jan 14 2015, 09:31  Tanya ТС.
Прежде, чем колдовать с фильтрами, построили б... Jan 14 2015, 10:10 Golikov A. ЦитатаМедиана по трем точкам. И, вообще, по нечетн... Jan 14 2015, 11:01 Ruslan1 Цитата(Golikov A. @ Jan 14 2015, 13:01) н... Jan 14 2015, 11:32 k000858 И все таки: какое количество точек для сортировки/... Jan 21 2015, 10:13 Golikov A. вижу единичные большие выбросы, остальное ровненьк... Jan 21 2015, 10:22 k000858 Цитата(Golikov A. @ Jan 21 2015, 13:22) в... Jan 21 2015, 11:16 Golikov A. Именно потому что оно выдает 0 - 4095 у вас и нет ... Jan 21 2015, 11:25 k000858 Цитата(Golikov A. @ Jan 21 2015, 14:25) s... Jan 21 2015, 11:54 Golikov A. цифровая обработка только в кино про шпионов из ра... Jan 21 2015, 13:06 Latch Нужно мерять 16 каналов 1 раз в секунду. Реально д... Jun 3 2015, 14:07 ViKo Цитата(Latch @ Jun 3 2015, 17:07) Нужно м... Jun 3 2015, 16:02 Axel Цитата(Latch @ Jun 3 2015, 17:07) Нужно м... Jun 4 2015, 03:20 ALEN&Co Цитата(Latch @ Jun 3 2015, 17:07) Нужно м... Jul 22 2016, 08:10 Golikov A. 0.1% от чего?
от диапазона, какого?
от сигнала, оп... Jun 3 2015, 14:51 Latch всем спасибо... проделал следующее:
опорное 2.5V
к... Jun 5 2015, 09:54
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|