|
Фильтр между датчиком и 16-битным АЦП |
|
|
|
Nov 3 2012, 02:57
|
Группа: Новичок
Сообщений: 3
Регистрация: 3-11-12
Пользователь №: 74 226

|
Всем привет, Пишу здесь первый раз, прошу зараннее простить за ляпы. Есть датчик (гироскоп) ADXRS646, двумя выходами (температуры TEMP и угловой скорости RATEOUT) он подключается к 16-битному SAR АЦП AD7689B. АЦП именно этот, восьмиканальный, т.к. гироскопов будет три (шесть каналов данных), и под этот АЦП уже написана программа для дальнейшей обработки данных. Требуется точность все 16 бит для одного из двух выходов с каждого гироскопа - угловой скорости RATEOUT, без шума в младших разрядах. Напряжение VREF/VIO +5В, частота фактического семплирования каждого канала 500Гц. Как правильно выбрать или построить аналоговый антиалиасинг фильтр на входе АЦП с учетом достижения необходимой 16-битной точности? Я понимаю, что в идеале нужно срезать все, что идет после 250Гц, но не совсем понял, как, например, отбирать активные фильтры по уровеню нелинейных искажений до частоты среза, и вообще как выбирать и что - активный, пасивный или составлять какой-либо другой фильтр?
Сообщение отредактировал Cossacs - Nov 3 2012, 03:02
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Nov 3 2012, 07:59
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(Cossacs @ Nov 3 2012, 08:57)  Требуется точность все 16 бит для одного из двух выходов с каждого гироскопа - угловой скорости RATEOUT, без шума в младших разрядах. Напряжение VREF/VIO +5В, частота фактического семплирования каждого канала 500Гц. все 16 разрядов от шкалы 300гр/сек это 0.0045гр/сек на разряд. Если посмотреть в даташит, то можно увидеть плотность шума 0.01гр/сек/Гц^0.5, соответственно чтобы просто собственные шумы датчика были <1 мл разряд от 16бит, полоса сигнала должна быть <0.2Гц. в полосе 250Гц шумы 5e-4 от шкалы - а это только 11 бит, и только по шумам, а еще есть дрейфы и нелинейности Цитата(Cossacs @ Nov 3 2012, 08:57)  Как правильно выбрать или построить аналоговый антиалиасинг фильтр на входе АЦП с учетом достижения необходимой 16-битной точности? так, чтобы то, что отразится от Fs/2 и попадёт в полосу сигнала было подавлено лучше чем требуемые 2^-16. что при полосе 250Гц и частоте дискретизации 250кГц не так уж и сложно. с просто RC цепочкой на 250Гц получится -60дБ, учитывая уровень шумов на 250кГц может вполне хватить.
|
|
|
|
|
Nov 3 2012, 13:19
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(Cossacs @ Nov 3 2012, 04:57)  он подключается к 16-битному SAR АЦП AD7689B. Требуется точность все 16 бит Не получится. От 16-битного АЦП получить точность 16 бит удается крайне редко и нетривиально. Внимательно прочитайте раздел документации "SPECIFICATIONS", в нем параметры, собранные под шапкой "ACCURACY". Если Вы действительно знаете, как свести все указанные там величины, действующие сообща и одновременно (включая температурные зависимости), к максимальной ошибке +/- 0.5 LSB - честь Вам и хвала. Особенно интересно, как производить рассчеты для параметров, предельные значения которых не указаны (например, "Gain Error Temperature Drift" есть только типовой) Если это принципиально (точность 16 бит, причем не статистически, а гарантированно)- то меняйте АЦП. Лично я бы для такой задачи смотрел в сторону дельта-сигма 18 бит и более, с кучей параллельных каналов. Ну или если SAR то все равно с кучей АЦП в параллель, типа ADS1278 Ну и опять же, сенсор который гарантирует точность 16 бит- тут тоже может быть не все так гладко. Особенно если производитель приводит только типовые величины.
|
|
|
|
|
Nov 3 2012, 14:13
|
Группа: Новичок
Сообщений: 3
Регистрация: 3-11-12
Пользователь №: 74 226

|
Цитата(Ruslan1 @ Nov 3 2012, 15:19)  Если это принципиально (точность 16 бит, причем не статистически, а гарантированно)- то меняйте АЦП. К сожалению, я пока не знаю, насколько принципиальна точность 16 бит - это покажут фактические тесты. Если от АЦП не получится 16 бит, то требуется получить хотя-бы что-то близкое к этому показателю. Упрощенная схема всей цепочки сейчас выглядит так:
Ключевые условия задачи: 1) Выдавать на Cortex ARM M3 данные со всех каналов АЦП с частотой 500 Гц 2) напрямую Cortex невозможно подключить к АЦП, потому как у него нет времени конфигурировать SPI соединение, ждать результатов оцифровки и тп, поэтому используется буфер на базе Atmega 168. 3) АЦП, датчик, и буфер на Atmega168 уже выбраны - под них написан код, они подходят по гарабаритам, питанию и тп. С одной стороны, если семплировать каждый канал с частотой больше, чем 500Гц, в Atmega168 прийдется реализовывать цифровой фильтр и пересчитывать на выходную частоту 500Гц для Cortex, т.е. Atmega168 возьмет еще на себя функции DSP, а не простого буфера, что я не планировал и не знаю пока, насколько это реализуемо по ресурсам. С другой стороны, ставить частоту среза аналогового фильтра меньше чем 200, в самом крайнем случае 150 Гц уже критично для работы системы в целом. Поэтому вопрос пока все тот же - как подобрать аналоговый фильтр? Я читал, что обычно строят каскад на операционниках и пассивных фильтрах, отталкиваясь от частоты среза, частоты семплирования, нелинейных искажений в области среза, точности АЦП, но к сожалению понимаю этот процесс пока примерно. Или как-то по другому? Как я понимаю, RC-цепочки тут не хватит.
|
|
|
|
|
Nov 3 2012, 14:55
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(Cossacs @ Nov 3 2012, 16:13)  Поэтому вопрос пока все тот же - как подобрать аналоговый фильтр? Я читал, что обычно строят каскад на операционниках и пассивных фильтрах, отталкиваясь от частоты среза, частоты семплирования, нелинейных искажений в области среза, точности АЦП, но к сожалению понимаю этот процесс пока примерно. Или как-то по другому? Как я понимаю, RC-цепочки тут не хватит. 1. Определитесь с входными данными. Это за Вас никто не сделает. 2. используйте какую-нибудь программку, позволяющую считать и моделировать фильтры, например фриварную Filtrer Pro от ti ( http://www.ti.com/tool/filterpro ) 3. пользуетесь полученным. Вот, например, рапорт от Filter Pro, посчитал фильтр и сказал уточнить характеристики при использовании номиналов ряда E96 (1%) [attachment=72481:filter.pdf]
|
|
|
|
|
Nov 3 2012, 17:32
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(Cossacs @ Nov 3 2012, 20:13)  К сожалению, я пока не знаю, насколько принципиальна точность 16 бит - это покажут фактические тесты. Если от АЦП не получится 16 бит, то требуется получить хотя-бы что-то близкое к этому показателю. определяться это будет не шумами/точностью АЦП, а датчиком, который в заданной полосе больше 10-11 бит не выдаст. Цитата(Cossacs @ Nov 3 2012, 20:13)  Поэтому вопрос пока все тот же - как подобрать аналоговый фильтр? Как я понимаю, RC-цепочки тут не хватит. Вы для начала определитесь для чего нужен фильтр. а то может оказаться что и RC цепочки хватит.
|
|
|
|
|
Nov 4 2012, 06:15
|

Местный
  
Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040

|
Цитата(Cossacs @ Nov 3 2012, 18:13)  С одной стороны, если семплировать каждый канал с частотой больше, чем 500Гц, в Atmega168 прийдется реализовывать цифровой фильтр и пересчитывать на выходную частоту 500Гц для Cortex, т.е. Atmega168 возьмет еще на себя функции DSP, а не простого буфера, что я не планировал и не знаю пока, насколько это реализуемо по ресурсам. А почему нет? Воспользуйтесь оверсэмплингом (например х16), без всяких цифровых фильтров, что возможно приблизит Вас к требуемым 16 битам
|
|
|
|
|
Nov 4 2012, 09:25
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(RabidRabbit @ Nov 4 2012, 10:15)  А почему нет? Воспользуйтесь оверсэмплингом (например х16), без всяких цифровых фильтров, что возможно приблизит Вас к требуемым 16 битам  ТС указал же однозначно, что частота сэмплов на выходе с Атмеги =500Гц. Какой тогда смысл в оверсэмплинге, если после него придется делать децимацию? 2 ТС: для Вашего случая (малый разнос между Fcp и Fs) порядок фильтра будет очень большим. Почитайте про наложения спектров, посмотрите спектр реального сигнала -возможно действительно нет нужды так круто ограничивать сигнал по частоте (типа 96дБ в полосе задержания); и-таки да, проиграйте возможность реализации цифрового фильтра в целочисленной арифметике в Атмеге. Хотя Кортекс для этого гораздо больше подходит  Учитывайте, что аналоговый фильтр в реализации будет на порядки сложнее и дороже, чем такой же по параметрам цифровой.
|
|
|
|
|
Nov 4 2012, 11:32
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(Alexashka @ Nov 4 2012, 15:25)  ТС указал же однозначно, что частота сэмплов на выходе с Атмеги =500Гц. Какой тогда смысл в оверсэмплинге, если после него придется делать децимацию? 2 ТС: для Вашего случая (малый разнос между Fcp и Fs) порядок фильтра будет очень большим. озможно действительно нет нужды так круто ограничивать сигнал по частоте (типа 96дБ в полосе задержания); наверное имелся ввиду оверсэмплинг в меге АЦП может и быстрее чем 500Гц сделать, по скорости все упирается в макс 10МГц spi у меги. 10MHz / 16бит / 6каналов ~ 100ksps. но даже на простое усреднение 16 битных отсчётов 600000 раз в секунду силёнок возможно у меги не хватит. так что максимальная частота всё-таки ограничится обработкой в атмеге. но до десятков кГц вполне поднять можно. и сильно большие подавления не нужны, у датчика с/ш не больше 60дБ, соответственно уйти на пару порядков по частоте сэмплирования от 500Гц и просто одной RC цепочки хватит.
|
|
|
|
|
Nov 4 2012, 16:24
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(_pv @ Nov 4 2012, 15:32)  и сильно большие подавления не нужны, у датчика с/ш не больше 60дБ, соответственно уйти на пару порядков по частоте сэмплирования от 500Гц и просто одной RC цепочки хватит. Вот Вы тоже не поняли Ну допустим сделает он 50кГц дискретизацию, тогда если fcp=250, частота Найквиста=25кГц, т.е на 2 порядка больше, то вроде можем поставить ФНЧ всего-навсего 2 порядка ( для 80дб /исправлено/). Но! на выходе Атмега должна выдавать 500Гц отсчетов/сек. Не больше. Значит Атмега будет выкидывать на выход каждый сотый отсчет с АЦП. Теперь допустим в сигнале имеется гармоническая составляющая с частотой 500Гц, которую аналоговый фильтр задавит всего в 2^2=4 раза, т.е менее 10дБ! И этот сигнал будет оцифрован и после децимации превратится в постоянный уровень (смещение) на выходе АЦП, которое будет меняться от 0 до макс.значения в зависимости от расхождения фазы сигнала и частоты запуска АЦП. Т.е получили приемник прямого преобразования  Более того, сигнал с частотой 251Гц вообще не будет ослаблен и также попадет на выход Атмеги как сигнал с частотой 249Гц. А усреднение (усредняющее окно) даст во-первых весьма заметное ослабление в полосе пропускания, а во-вторых имеет побочные лепестки, первый из которых ослаблен всего на 6-12дБ. ИМХО, лучше сразу сделать "нормальный" цифровой ФНЧ Баттерворта или другой 2-4 порядка если конечно Атмега сдюжит. Либо городить сложный аналоговый фильтр, благо элементы с расбросом 0,1% сейчас не проблема достать. Но если ТС не критична неравномерность АЧХ и некоторые наложения спектров, можно действительно обойтись активным фильтром 4-6 порядка, либо CIC-фильтром. Для Атмеги последнее само то. Кстати для 60дБ динамического диапазона можно порекомендовать МАКСовские фильты типа MAX291, заметно упростите себе жизнь.
|
|
|
|
|
Nov 5 2012, 23:22
|
Группа: Новичок
Сообщений: 3
Регистрация: 3-11-12
Пользователь №: 74 226

|
Спасибо за ответы и внимание  Я почитал внимательно, и хотел все-таки поправить, полная шкала датчика +/-300 град/c, т.е. для 250 Гц у меня вышло 3794 отсчетов, что соответствует 12-битному АЦП или 74дБ - это верхний предел. С оверсемплингом, как я понимаю требования к входной фильтрации и разрядности АЦП уменьшаются в зависимости от степени увеличения частоты дискретизации. Но вопрос децимации неизбежен, и мега явно для него не предназначена - у меня же 6 каналов с данными. То есть в каком-то виде цифровую фильтрацию прийдется реализовывать - или ставить Cortex вместо меги, или какой-то DSP, с которыми я ни бум-бум, или в принципе искать другое решение, так как полоса 200-250Гц и выборка 500 семплов в секунду плохо совместимы.
Сообщение отредактировал Cossacs - Nov 5 2012, 23:23
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|