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

 
 
> Фильтр между датчиком и 16-битным АЦП
Cossacs
сообщение Nov 3 2012, 02:57
Сообщение #1





Группа: Новичок
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
_pv
сообщение Nov 3 2012, 07:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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кГц может вполне хватить.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Nov 3 2012, 13:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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 бит- тут тоже может быть не все так гладко. Особенно если производитель приводит только типовые величины.
Go to the top of the page
 
+Quote Post
Cossacs
сообщение Nov 3 2012, 14:13
Сообщение #4





Группа: Новичок
Сообщений: 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-цепочки тут не хватит.

Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Nov 3 2012, 14:55
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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]
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 3 2012, 17:32
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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 цепочки хватит.
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Nov 4 2012, 06:15
Сообщение #7


Местный
***

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



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


А почему нет? Воспользуйтесь оверсэмплингом (например х16), без всяких цифровых фильтров, что возможно приблизит Вас к требуемым 16 битам sm.gif
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Nov 4 2012, 09:25
Сообщение #8


Практикующий маг
******

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



Цитата(RabidRabbit @ Nov 4 2012, 10:15) *
А почему нет? Воспользуйтесь оверсэмплингом (например х16), без всяких цифровых фильтров, что возможно приблизит Вас к требуемым 16 битам sm.gif

ТС указал же однозначно, что частота сэмплов на выходе с Атмеги =500Гц. Какой тогда смысл в оверсэмплинге, если после него придется делать децимацию?
2 ТС: для Вашего случая (малый разнос между Fcp и Fs) порядок фильтра будет очень большим. Почитайте про наложения спектров, посмотрите спектр реального сигнала -возможно действительно нет нужды так круто ограничивать сигнал по частоте (типа 96дБ в полосе задержания); и-таки да, проиграйте возможность реализации цифрового фильтра в целочисленной арифметике в Атмеге. Хотя Кортекс для этого гораздо больше подходит sm.gif
Учитывайте, что аналоговый фильтр в реализации будет на порядки сложнее и дороже, чем такой же по параметрам цифровой.
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 4 2012, 11:32
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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 цепочки хватит.

Go to the top of the page
 
+Quote Post
Alexashka
сообщение Nov 4 2012, 16:24
Сообщение #10


Практикующий маг
******

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



Цитата(_pv @ Nov 4 2012, 15:32) *
и сильно большие подавления не нужны, у датчика с/ш не больше 60дБ, соответственно уйти на пару порядков по частоте сэмплирования от 500Гц и просто одной RC цепочки хватит.

Вот Вы тоже не поняли laughing.gif
Ну допустим сделает он 50кГц дискретизацию, тогда если fcp=250, частота Найквиста=25кГц, т.е на 2 порядка больше, то вроде можем поставить ФНЧ всего-навсего 2 порядка (для 80дб /исправлено/). Но! на выходе Атмега должна выдавать 500Гц отсчетов/сек. Не больше. Значит Атмега будет выкидывать на выход каждый сотый отсчет с АЦП.
Теперь допустим в сигнале имеется гармоническая составляющая с частотой 500Гц, которую аналоговый фильтр задавит всего в 2^2=4 раза, т.е менее 10дБ! И этот сигнал будет оцифрован и после децимации превратится в постоянный уровень (смещение) на выходе АЦП, которое будет меняться от 0 до макс.значения в зависимости от расхождения фазы сигнала и частоты запуска АЦП. Т.е получили приемник прямого преобразования sm.gif Более того, сигнал с частотой 251Гц вообще не будет ослаблен и также попадет на выход Атмеги как сигнал с частотой 249Гц.
А усреднение (усредняющее окно) даст во-первых весьма заметное ослабление в полосе пропускания, а во-вторых имеет побочные лепестки, первый из которых ослаблен всего на 6-12дБ. ИМХО, лучше сразу сделать "нормальный" цифровой ФНЧ Баттерворта или другой 2-4 порядка если конечно Атмега сдюжит. Либо городить сложный аналоговый фильтр, благо элементы с расбросом 0,1% сейчас не проблема достать.

Но если ТС не критична неравномерность АЧХ и некоторые наложения спектров, можно действительно обойтись активным фильтром 4-6 порядка, либо CIC-фильтром. Для Атмеги последнее само то.
Кстати для 60дБ динамического диапазона можно порекомендовать МАКСовские фильты типа MAX291, заметно упростите себе жизнь.
Go to the top of the page
 
+Quote Post
Cossacs
сообщение Nov 5 2012, 23:22
Сообщение #11





Группа: Новичок
Сообщений: 3
Регистрация: 3-11-12
Пользователь №: 74 226



Спасибо за ответы и внимание sm.gif
Я почитал внимательно, и хотел все-таки поправить, полная шкала датчика +/-300 град/c, т.е. для 250 Гц у меня вышло 3794 отсчетов, что соответствует 12-битному АЦП или 74дБ - это верхний предел.
С оверсемплингом, как я понимаю требования к входной фильтрации и разрядности АЦП уменьшаются в зависимости от степени увеличения частоты дискретизации. Но вопрос децимации неизбежен, и мега явно для него не предназначена - у меня же 6 каналов с данными.
То есть в каком-то виде цифровую фильтрацию прийдется реализовывать - или ставить Cortex вместо меги, или какой-то DSP, с которыми я ни бум-бум, или в принципе искать другое решение, так как полоса 200-250Гц и выборка 500 семплов в секунду плохо совместимы.

Сообщение отредактировал Cossacs - Nov 5 2012, 23:23
Go to the top of the page
 
+Quote Post

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

 


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


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