Учебное пособие по проектированию фильтров АЦП от датчика к предложениям

Я ищу несколько хороших ресурсов в Интернете, чтобы расширить свои знания о конструкции фильтров для взаимодействия с АЦП uC.

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

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

Вы ищете информацию об аналоговых фильтрах или цифровых фильтрах (таких как IIR, FIR, которые должны быть реализованы в программном обеспечении микроконтроллера)?
Фильтры сглаживания, датчики буферизации, датчики усиления, датчики подключения и, возможно, питание (некоторых) датчиков. Это слишком широко, чтобы охватить один вопрос. Может быть, немного ограничим свой вопрос и (скажем) сконцентрируемся на фильтрации сглаживания.
Я ищу больше правильных методов проектирования оборудования. И эмпирические рекомендации. Я понимаю, что фильтры — это ОГРОМНАЯ тема, но я предполагаю, что есть несколько рекомендаций/шагов, которым нужно правильно следовать, когда у вас есть датчик и микро. т.е. скажем, фоторезистор и PIC, как вы определяете правильную буферизацию или вам даже нужен фильтр нижних частот? и т. д.

Ответы (4)

Итак, первый шаг — сглаживание. Это большое дело, если вы не понимаете это правильно. Чтобы взять ваш пример с фотодатчиком, давайте представим, что происходит в неблагоприятных условиях без антиалиасингового фильтра.

Например, вы разработали устройство с батарейным питанием и трансфлективным ЖК-дисплеем, потому что его можно увидеть с подсветкой в ​​темноте и при естественном освещении днем. У вас есть фотодатчик, который отключает подсветку, когда окружающий свет достаточно яркий, что позволяет экономить заряд батареи. Чтобы сэкономить мощность процессора (это не требует высокой пропускной способности), у вас есть свободное время процессора каждые 10 мс, а затем производится выборка фотодатчика с помощью АЦП. Все идет нормально.

Теперь вашим продуктом пользуется медсестра в ночную смену при слабом окружающем освещении, но для работы у нее есть настольная лампа. Недавно она заменила вольфрамовую лампочку, но смогла найти только лампочку эко-CCFL. Этот флуоресцентный свет мерцает с частотой 100 Гц (она в Европе), что слишком быстро для нее, чтобы увидеть. Но играет хаос с вашим продуктом.

Когда продукт включен, он производит выборку фотодатчика каждые 10 мс и соответствует пику формы волны мерцания света для каждой выборки. Он записывает несколько последовательных образцов высокого уровня освещенности и выключает подсветку ЖК-дисплея. Но поскольку интервал выборки 10 мс не синхронизирован с частотой цикла переменного тока, выборка отклоняется по фазе, и через секунду или две фотодатчик производит выборку в нижней части сигнала мерцания. После нескольких последовательных замеров низкой освещенности ваше программное обеспечение включает подсветку ЖК-дисплея.

В результате подсветка ЖК-дисплея хаотично включается и выключается с частотой, точно равной разнице между частотой мерцания и частотой семпла. Товар считается бракованным и отправляется вам на ремонт. Вы тестируете на своем стенде у окна, закрывая и открывая датчик, и обнаруживаете, что он работает так, как вы ожидали. Но продукт неисправен, он неисправен по замыслу, потому что вы не слушали дядю Найквиста.

Теорема Найквиста о выборке утверждает, что вы должны производить выборку с частотой, по крайней мере, в два раза превышающей самую высокую частоту входного сигнала. Иными словами, вы должны быть уверены, что отфильтровали входной сигнал, чтобы отфильтровать любые частоты с половиной частоты дискретизации или выше, и вы должны сделать это ДО дискретизации. Добавление программного фильтра после выборки не спасет вас, если у вас уже есть низкочастотный псевдоним. Во что бы то ни стало используйте цифровую фильтрацию для обработки выборочных данных в соответствии с требованиями вашего приложения, но если вы хотите знать, с чего начать проектирование фильтров для выборки датчиков, вы должны начать с правильной фильтрации сглаживания перед выборкой.

В дополнение, однажды меня поймали на написании кода для управления давлением в аспирационном устройстве с использованием небольшого электрического насоса и цифрового датчика давления. Датчик давления производил измерения каждые 10 мс или около того, но насос создавал значительные колебания давления на неудобных частотах, которые датчик искажал. Я ничего не мог сделать в электронике или программном обеспечении, алиасинг происходил внутри самого датчика. В итоге решением стал пневматический фильтр Найквиста на входе в датчик.

В тот день я получил ценный урок.

+1 хорошие примеры. Ты не глупый человек, лол

Это действительно зависит от приложения

  1. Определите, какой фильтр вам нужен для низких..высоких..полос пропускания.
  2. Вы хотите просмотреть различные классы: Баттерворта, Бесселя, Чебычева и т. д. и решить, какой из них соответствует вашим требованиям.
  3. Необходимо определить порядок фильтрации, какой минимум можно использовать для достижения этой цели

Вы можете использовать Matlab, spice или другое программное обеспечение, чтобы смоделировать его перед попыткой. У Microchip есть хорошие заметки по применению и программное обеспечение для проектирования для примеров и моделирования.

Вот одно руководство: Anti-Aliasing, Analog Filtering for Data Acquisition Systems.

У TI есть FilterPro, который выглядит полезным для проектирования фильтров: ti.com/tool/filterpro

TI и Analog Devices — хорошие компании, которым стоит следовать за хорошей технической документацией. Ссылка AD содержит большую часть интерфейсной части, которая будет использоваться при проектировании схемы. Если вы ищете высокоскоростные АЦП с частотой дискретизации более 100 MSPS, я предлагаю использовать TI High Speed ​​для четырехканального и восьмиканального АЦП. Вот некоторые ссылки из TI для основ ADC:

www.ti.com/lit/an/slaa510/slaa510.pdf

www.ti.com/lit/an/slyt423/slyt423.pdf

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

Допустим, у вас есть схема, работающая от батареи, с номинальным напряжением 12 В, но это напряжение может варьироваться от 10,5 В до 14,5 В. Этот источник питания питает как высокочастотный понижающий преобразователь для управления вашим микроконтроллером, так и некоторый исполнительный механизм, привод которого необходимо изменить, чтобы компенсировать изменения напряжения батареи по мере ее разрядки с точностью ± 5%. Таким образом, вам необходимо измерить напряжение батареи с помощью 12-разрядного АЦП в микроконтроллере, который имеет опорное напряжение 2,0 В и который можно настроить для чтения с интервалом в 1 мс с точностью ±1%.

Самый простой подход — подавать на вывод АЦП выход делителя напряжения. Для АЦП требуется сопротивление источника менее 3 кОм, поэтому мы можем использовать делитель напряжения с 3 кОм в 0 В и 22 кОм в Вбат, что даст нам хорошее разрешение, нулевое смещение и диапазон до 15,3 В. Это также дает импеданс источника 2k87, что чуть ниже предела АЦП. Но мы можем получить тот же коэффициент деления с 2k7 и 18k, что дает лучший запас импеданса на 2k4. Так что мы будем использовать это.

Со стандартными резисторами 1 % делитель потенциала вносит почти ±2 % неопределенности, что составляет в общей сложности ±3 % для всего измерения на данный момент. Таким образом, у нас осталось ± 2% для остаточного алиасинга.

Теперь теорема Найквиста требует, чтобы ваша частота дискретизации была как минимум в два раза выше самой высокой частоты вашего сигнала, чтобы предотвратить наложение. Иными словами, и с учетом остаточного допуска, полученного выше, мы должны убедиться, что любой компонент сигнала, который может быть совмещен, вносит вклад не более ±2% от полного диапазона или ±300 мВ.

Выбранный нами понижающий преобразователь используется в другом продукте с батарейным питанием, и, хотя он обеспечивает хорошую стабильность выходного сигнала, малые потери и низкую стоимость компонентов, мы знаем, что он имеет тенденцию вводить около 900 мВ pp-шума на частоте 130–180 кГц в источник питания батареи, что в остальном очень стабилен. Поскольку наше приложение не идентично, мы решили разработать для наихудшего случая 1,5 В размаха (±750 мВ) на частоте 120–200 кГц.

Это особенно хороший сценарий, потому что у нас есть определенный сигнал с потенциалом наложения, и этот сигнал имеет очень высокую частоту по сравнению с частотой дискретизации. Если бы мы ничего не знали о потенциальных помехах, нам пришлось бы разработать фильтр, подавляющий все частоты выше 500 кГц (половина частоты дискретизации), что является гораздо более сложной задачей.

Итак, теперь нам нужно разработать фильтр, который будет подавлять ±750 мВ на частоте 120 кГц, оставляя менее ±300 мВ. Это пустяки!

Если вы вспомните какие-либо свойства фильтра, вы, возможно, помните, что фильтр первого порядка (например, одиночный RC) ослабляет частоты выше частоты среза, и что каждое удвоение частоты за пределами частоты среза уменьшает амплитуду сигнала вдвое (( или с коэффициентом 10, 10 дБ за десятилетие). [Обратите внимание, что мощность сигнала падает в два раза быстрее, потому что мощность пропорциональна квадрату амплитуды].

Теперь нам нужно <300 мВ от сигнала 750 мВ, что составляет <0,4. Таким образом, наша частота среза должна быть <0,4 x 120 кГц, что составляет 30 кГц. Но разумно иметь частоту среза не выше половины частоты дискретизации, поэтому мы могли бы добавить фильтр 500 Гц, который ослабил бы шум понижающего преобразователя до 750 x 500 / 120 000 = 3 мВ.

Мы можем добиться частоты среза <500 Гц, просто добавив конденсатор 220 нФ к нижнему резистору 2k7 делителя потенциала (частота среза Fc = 1/(2pi RC), где R — параллельное сопротивление 2k4 потенциального делитель.

Это помогает дальше?

Я почти уверен, что усиление (и, следовательно, амплитуда) падает на 20 дБ/декада, а мощность на 10.
@Scott: Спасибо, вы совершенно правы. Отредактирую, чтобы исправить, когда мне не нужно спать. :-)
Еще раз спасибо, это именно то, что я искал. Вы действительно помогли тонне!