Технический форум по робототехнике.
Radist » 27 апр 2013, 17:28
Получаю данные с АЦП каждые 20 мс. Выдавать инфу наверх надо со скоростью 1 раз в 100 мс, то есть есть возможность использовать предыдущие отсчеты. Сигнал - постоянное напряжение милливольтовой величины. Оно зашумлено белым шумом (все шаги по аналоговой фильтрации сигнала уже выполнены). Мне не важен тип фильтра, переходной процесс - мне важно качество фильтрования. Пока я пробовал самый простой фильтр:
Y(n) = ((100*Y(n-1)+156*X(n)))/256. Общая формула Y(n)=A*Y(n-1)+B*X(n), А+В=1. Он фильтрует, задержка всего 1 отсчет, но мне хочется большего. В инете слишком много теории и мало практики. Я хотел бы получить или хороший совет по пошаговому проектированию (формула и подбор коэффициентов, а также как посмотреть вид АЧХ), или ссылку на аналогичную информацию.
Последний раз редактировалось
Radist 23 май 2013, 19:17, всего редактировалось 1 раз.
Romikgy » 27 апр 2013, 21:16
мне важно качество фильтрования
без знания типа сигнала , правильного фильтра не сделать ....
Radist » 27 апр 2013, 21:34
Сигнал я описал - это постоянка милливольтового диапазона. После оцифровки скачут младшие разряды АЦП - вот этот разброс я и хочу отфильтровать. Вот взять к примеру ADUC - он это делает аппаратно. Простое усреднение по пяти отсчетам работает плохо. Медианный фильтр работает лучше, но результат дает случайный, хотя и более вероятный. Поэтому и хочу попробовать рекурсией...
Romikgy » 27 апр 2013, 22:33
Radist писал(а): это постоянка милливольтового диапазона
емкость больше поставить и уйдут шумы....
Radist » 27 апр 2013, 23:19
Никуда они не уйдут. Как будто вы с АЦП никогда не работали. У меня единица младшего разряда 1,25 мкВ. Тема не об этом.
Duhas » 28 апр 2013, 10:27
по слову рекуррентный еще пробуйте искать а не по рекурсивный...
Romikgy » 28 апр 2013, 12:48
речь идет о дребезге младших битов?
Radist » 28 апр 2013, 14:04
Да, речь о дребезге младших битов. АЦП выдает 24 бита, из них два старших - служебные. Даташит обещает офигенную точность ENOB 20.6 битов. А по факту хрен. На плате только линейный стабилизатор 5В, опорник, АЦП, МК с выходом на уарт. Аналоговая земля, цифровая земля, аналоговое питание, цифровое питание, вход через RC цепочки - вся фильтрация аналоговая выполнена. Закороченный вход шумит с выбросами в 6 бит. Код считываю правильно (обычный SPI). Вот такие дела.
А официальное название рекурсивных (рекурентных) фильтров - фильтры с бесконечной импульсной характеристикой. Основная их особенность - они используют ранее вычисленные значения. А нерекурсивные используют только сигнал и предыдущие сигналы.
Madf » 28 апр 2013, 14:38
решал похожую проблему, но с меньшими скоростями...а почему не взять просто: накопительное, среднеарифметическое? при такой скорости уже 5 выборок есть, если этого мало и можно пренебречь динамикой, то количество можно и увеличить (чтобы накапливались данные)
Radist » 28 апр 2013, 14:44
В том то и дело, что если выдавать даные раз в секунду, то все отлично выходит. НО, начальство поставило задачу: получать инфу и проверять аварийные уставки быстро, не медленнее 100 мс. Это для приборов противоаварийной защиты. Нашел по характеристикам быстрый (и точный) АЦП, теперь пытаюсь выжать из него точность на заявленной скорости. Поэтому тема и появилась. На пяти скользящее среднее работает плохо, поскольку есть большие выбросы в 6 бит.
Madf » 28 апр 2013, 15:23
Может ещё больше увеличить разрядность АЦП (если он шумит, а не сигнал скачет)?
elmot » 28 апр 2013, 16:55
Radist писал(а):В том то и дело, что если выдавать даные раз в секунду, то все отлично выходит. НО, начальство поставило задачу: получать инфу и проверять аварийные уставки быстро, не медленнее 100 мс. Это для приборов противоаварийной защиты. Нашел по характеристикам быстрый (и точный) АЦП, теперь пытаюсь выжать из него точность на заявленной скорости. Поэтому тема и появилась. На пяти скользящее среднее работает плохо, поскольку есть большие выбросы в 6 бит.
длительность выбросов какая?
Radist » 28 апр 2013, 18:39
Про длительность сказать не могу. Я смотрел осциллографом - на сигнале ВЧ шум. Но сейчас речь не об этом - вход закорочен прямо на ногах АЦП - навестись ничего не может. Значит это внутренние шумы (ИОН, АЦП). Измерение раз в 20 мс. Вот и все, что я могу сказать по этому делу.
Добавлено спустя 5 минут 55 секунд:Madf писал(а):Может ещё больше увеличить разрядность АЦП (если он шумит, а не сигнал скачет)?
Другими словами взять другой АЦП большей разрядности. Но где гарантия, что с ним не будет тех же проблем.
До этого я работал с АЦП AD7705. У него тоже была такая же проблема. Но поскольку измерение за 1 секунду всех устраивало - усреднял 50 отсчетов и было все ок.
Duhas » 28 апр 2013, 19:12
при такой битности АЦП я бы на питание смотрел очень пристально..
Radist » 28 апр 2013, 21:55
Линейный источник питания - диод - дроссель - электролит - керамика - резистор - электролит - керамика - стабилизатор REF195 - керамика (это цифровое питание) - два дросселя по питанию и земле (точка соединения цифровой и аналоговой земли) - электролит - керамика (аналоговое питание).
Добавлено спустя 2 часа 10 минут 45 секунд:
Сейчас, при закороченном входе, код прыгает с размахом плюс минус 40 мкВ максимум. Казалось бы такая малость, по ссравнению с опорником 2,5В. Но есть еще одно требование начальства: измерять сигнал с термопары в узком диапазоне с высоким классом точности. А это всего 6 мВ. И класс получается хуже чем 0,5 (а надо 0,1). То есть если решить обратную задачу, то максимальная ошибка измерения должна быть не больше 6 мкВ. Надо или фильтровать выход ацп (усреднение за секунду, кстати, позволяет получить погрешность меньше 6 мкВ), или усиливать вход. Мой АЦП это не умеет, а городить еще PGA не хочется.