Делаю OSD, автопилот и инерциалку...
Коррекция гироскопа и определение положения по акселерометру это вообще не коррекция строго говоря. Это нелинейный алгоритм с очень узким диапазоном рабочих параметров.
Любительские полеты укладываются в эти рамки. Точнее, обязаны укладываться.
Чтобы узнать, что ошибка компаса составляет 0.1 градуса, нужно сравнить его показания с образцовым прибором, у которого точность 0.01 градус хотя бы. В полете образцового прибора нет.
Я не зря написал про децимацию. Мне кажется Вы немного не в теме. Я поясню, но сначала пожалуйста ответьте мне на вопрос:
можно ли имея АЦП 10 бит и 1 милиВольт на разряд, измерять сигнал 1 микроволь?
И при каких условиях это возможно.
Другими словами: как имея АЦП с 60 дБ сигнал/шум сделать из него АЦП с 90 дБ сигнал/шум или 120 дБ сигнал/шум?
Любительские полеты укладываются в эти рамки. Точнее, обязаны укладываться.
Правильно. Но алгоритм либо универсален либо специфичен.
Я вывел универсальный алгоритм. Ему все равно, любительский это полет или какой другой.
Другими словами: как имея АЦП с 60 дБ сигнал/шум сделать из него АЦП с 90 дБ сигнал/шум или 120 дБ сигнал/шум?
Никак.
Я не зря написал про децимацию. Мне кажется Вы немного не в теме.
Снижение частоты дискретизации сделает прецизионный АЦП из копеешного или снизит погрешность первичного преобразователя?
Ошибка компаса обычно +_2 градуса. Изменить ее невозможно, только купить более точный компас. Погрешности средств измерений определяются при помощи образцового прибора, который точнее поверяемого прибора хотя бы в 3 раза. Поэтому без “крутого” лабораторного компаса сказать, что в данный момент наш любительский компас (hmc5883L, например) врет на 2 градуса, на 0.1 или еще на сколько-то - невозможно.
Никак.
Ответ неверный! Это типичная ошибка. Сейчас я ее поясню.
Снижение частоты дискретизации сделает прецизионный АЦП из копеешного или снизит погрешность первичного преобразователя?
Да.
Итак, есть АЦП с с/ш 60 дБ (10 бит). Частота дискретизации 1024 кГц. Нам нужен сигнал в полосе 0…100 Гц.
Что такое шум дискретизации АЦП? Да это просто шум, который у нас есть на входе. Фактически, выход АЦП мы можем представить как сигнал + шум.
Мум дискретизации это обычный белый шум, равномерно распределенный по частоте.
А тепер внимание!
Как изменится мощность шума, если мы поставим ФНЧ с частотой среза 256 кГц (изначальная полоса - 512 кГц)? Правильно. Мощьность шума уменьшится вдвое. Т.е. на 3 дБ. А что будет если я поставлю фильтр 512 Гц, т.е. в 1024 раза меньше изначальной частоты?
Правильно! Мощность шума уменьшится в 1000 раз, или на 30 дБ.
В итоге, пропустив сигнал АЦП через фильтр я увеличил с/ш на 30 дБ (примерно).
Теперь я беру и делаю децимацию в 1000 раз, так как лишние отсчеты все равно не несут информацию.
Как так? Да очень просто.
АЦП у нас 10 бит, а фильтр у нас 16 бит, или вообще float. Вот так и получаем, что если изначально шум был 1 милливольт, то потом шум стал 30 микровольт. Здесь мы размениваем частоту дискретизации на динамический диапазон. Если интересны детали, то почитайте как работают сигма-дельта АЦП. Да и вообще все кодеки именно так и устроены. Это дешевле чем городить честные 16 битные АЦП. 😃
Вот то-же самое я буду делать и с компасом.
Еще добавлю.
А что будет, если я свой сигнал с АЦП просто возьму и без бильтра продецимирую в 1000 раз? Какое будет с/ш?
А вот в этом случае, у меня с/ш юужеь всего 30 дБ вместо моих 60. Потому что все шумы вне полосы завернуться в мой рабочий диапазон.
Поэтому когда народ пытается обрабатывать значения сенсоров 10 раз в секунду при частоте 1 кГц без предварительной фильтрации, у меня всегда возникает вопрос в адекватности показаний этих сенсоров.
Именно поэтому мной и был выбран нормальный ДСП, а не микроконтроллер.
Итак, есть АЦП с с/ш 60 дБ (10 бит). Частота дискретизации 1024 кГц. Нам нужен сигнал в полосе 0…100 Гц.
Не понял. В компасе HMC5883L стоит 12-битный АЦП (с\ш 72дБ), точность датчика 2 градуса. Максимальная частота дискретизации 160Гц.
Что такое шум дискретизации АЦП? Да это просто шум, который у нас есть на входе.
Я говорю про шум исходного сигнала от датчика, а не про шум квантования. Шум от датчика никак не убрать (гистерезис, межосевая чувствительность, нелинейности).
Повысить качество так: дискретизация с высокой частотой (уменьшается шум квантования, но мощность входных шумов растет за счет расширения спектра). А потом отфильтровываем шумы при помощи ФНЧ. Таким образом, получаем минимальный шум квантования и высокую частоту выборки. - только для HMC5883 это все внутри вшито.
Я говорю про шум исходного сигнала от датчика, а не про шум квантования. Шум от датчика никак не убрать.
А чем этот шум отличается от шума квантования? Судя по тому что я видел - обычный белый шум. У меня он прекрасно фильтруется.
Повысить качество так: дискретизация с высокой частотой (уменьшается шум квантования, но мощность входных шумов растет за счет расширения спектра).
Поэтому перед использованием сигнал всегда надо фильтровать. Если собираетесь мерять компас раз в секунду, то зачем вам 160 Гц? Отфильтруйте до 1 Гц. Это уже шум в 40 раз меньше. Т.е. было 2 градуса, а стало 0,05. При условии конечно что шум равномерно распределен, а он именно равномерно распределен. Нужно раз в минуту измерять, фильтруйде до 0,01 Гц. И т.д.
И так надо поступать со всеми сенсорами.
Имея нормальный сигнал с ним уже можно работать. Поэтому проблем с коррекцией по компасу я не испытываю.
Т.е. было 2 градуса, а стало 0,05.
Мне кажется, что тут физические ограничения. Сам датчик “заедает”, имеет гистерезис, несовершенство конструкции, наводки с одних своих линий на другие. То есть, выжать из него 0.05 градуса невозможно. Даже если его аналоговый сигнал подать на 64 битный АЦП, 1 ГГц дискретизацию, ФНЧ 1 Гц.
Мне кажется, что тут физические ограничения.
Это не вопрос веры. Это просто математика и обработка сигналов. 😃
Сам датчик “заедает”, имеет гистерезис,
Это нелинейные искажения. О них я не еще не говорил.
несовершенство конструкции, наводки с одних своих линий на другие. То есть, выжать из него 0.05 градуса невозможно. Даже если его аналоговый сигнал подать на 64 битный АЦП, 1 ГГц дискретизацию, ФНЧ 1 Гц.
Пример с АЦП я привел просто чтобы пояснить как фильтровать шумы. В случае с компасом я уже фильтрую шумы самого компаса, т.е. те самые наводки, несовершенства и т.д. И отфильтровать я могу что угодно, если шум лежит за пределами нужной мне полосы пропускания. В нашем случае, если мне нужны отсчеты компаса раз в секунду, то я фильтрую фильтром с полосой 1 Гц.
Я могу даже картинки с шумами и без показать. 😃
А вот собственно и пример фильтрации.
Синий график - фильтрованный сигнал, красный не фильтрованный. Значения одной из осей магнитометра в состоянии покоя.
Как горовится, результат фильтрации на лицо. 😃
В случае с компасом я уже фильтрую шумы самого компаса, т.е. те самые наводки, несовершенства и т.д. И отфильтровать я могу что угодно, если шум лежит за пределами нужной мне полосы пропускания.
У меня ощущение, что говорим о разном.
Фильтрация в частотной области не сделает из г - пулю.
Температурные погрешности, деформации частей, ЭМИ, гистерезисы и прочее - неустранимы.
Я могу даже картинки с шумами и без показать.
Покажите лучше 2 выставленных в одном направлении компаса, закрепленных на поворотной платформе. Чтобы один был образцовым с погрешностью 0.1 градус. А второй - ваш “полетный”. Пусть оба показывают на Север. Если погрешность полетного компаса составит хотя бы 0.5 градуса - я сильно пожму руку!
И следующий эксперимент - повторяемость результатов. Прокрутить платформу, выставить указатель на Север по образцовому компасу. Насколько будет врать полетный компас.
У меня ощущение, что говорим о разном. Фильтрация в частотной области не сделает из г - пулю.
Смотрите на картинку и читайте еще раз то, что я написал. Все уже давно доказано.
На картинке пример того, как 2 градуса превратились в 0.2.
На картинке пример того, как 2 градуса превратились в 0.2.
Дмитрий, попробуй провести эксперимент: плату с компасом (или коробку) положи на стол, обведи карандашом. Подними, поболтай, положи снова на стол в карандашный контур. Какая разность будет между предыдущим показанием компаса и текущим???
Потом еще раз поболтай плату, положи на стол в границы контура. Насколько показания изменились???
Неужели на 0.2 градуса?? (направление всегда было неизменным, карандашный контур не сдвинулся).
Смотрите на картинку
Я тоже так фильтрую. Через ФНЧ прогоняю, рекурсивные фильтры 1,4 порядка, вейвлеты, скользящее окно. Только реальное положение дел отличается от результата фильтрации.
Зачем вы используете такую точность 10^-4, мало того что там только шумы, вы тратите время процессора на фильтрацию. Округлите до 10^-3, и шумы уйдут, покрайней мере если исходить из картинки выше.
Имхо у вас избыточная точность.
Потом еще раз поболтай плату, положи на стол в границы контура. Насколько показания изменились???
Ладно.
Что-то мне лениво стало доказывать.
У меня получается 0.2 градуса. Закончим спор.
Зачем вы используете такую точность 10^-4, мало того что там только шумы, вы тратите время процессора на фильтрацию. Округлите до 10^-3, и шумы уйдут, покрайней мере если исходить из картинки выше. Имхо у вас избыточная точность.
Это не градусы. Это значение магнитного поля измеренного в “попугаях”. (В попугаях это значит в неизвестных величинах измерения. Но в связи с тем что единицы измерения меня в этом случае не волнуют, то меня это внолне устраивает.
И еще. Если шумы есть, то они никуда не уходят. И их отсечением я от них не избавлюсь.
Не избавитесь, но реально в расчетах от них пользы не будет, поетому лучше округлить до значущих разрядов.
е избавитесь, но реально в расчетах от них пользы не будет, поетому лучше округлить до значущих разрядов.
Во первых, округление в фиксированной точке, всегда добавляет дополнительную ошибку, и лучше стараться использовать максимально возможный диапазон значений.
А во вторых, у меня floating point DSP, поэтому мне вообще все равно сколько там разрядов. У меня все автоматом округляется. 😃
в расчетах от них пользы не будет, поетому лучше округлить до значущих разрядов
На практике получил звиздюлей от Главного метролога) высчитывал по формулам до 6 знаков после запятой, а он “Какие запятые, у тебя первичный преобразователь врет на +_ 10 попугаев!”
Дмитрий, вобщем ход мыслей правильный. А каким методом фильтрации пользуетесь если не секрет? Видел на сайте TI хар-ки этого DSP. Монстр:)
Сейчас меня очень занимает вопрос: а зачем народ городит разного рода RLS системы, когда можно использовать xBee? Либо я что-то упускаю, либо одно из двух.
упускаете,
цена вопроса
комплект xbееpro вроде под 200 баксов стоит?
А каким методом фильтрации пользуетесь если не секрет?
Разными. 😃
Конкретно на этой картинке - FIR. Вообще, если время задержики некритично и нужна децимация, то используется fir фильтр. А вообще у меня поменять один фильтр на другой или добавить еще фильтр это просто драг и дроп операция. Как схему из готовых блоков рисовать. Типа симулинка.
Или Вы спрашиваете про метод генерирования коэффициентов?
омплект xbееpro вроде под 200 баксов стоит?
Ну в общем да. Но это ведь кит. Один модуль отдельно 50 баксов стоит. В общем не так уж и дорого.
Не-не, коэф-ты рассчитываются по формулам в Матлабе или Маткаде. Интересовал именно метод фильтрации. Я просто не очень сведущ в DSP, сейчас активно изучаю эту тему, т.к. тоже надо будет обрабатывать аксель+гирю+компас+еще много чего, и шумов там много:) Я тоже интуитивно думал в сторону КИХ-фильтрации.
Кстати, кому если интересно, очень хорошая доходчивая (по-своему) книжеца Э. Айфичер Б. Джервис “Цифровая обработка сигналов. Практический подход” (Digital signal processing. Practical approach).
Я тоже интуитивно думал в сторону КИХ-фильтрации. Кстати, кому если интересно, очень хорошая доходчивая (по-своему) книжеца
КИХ всегда применяется для интерполяции/децимации, так как это наиболее эффективно с точки зрения количества вычислений. А с фиксированной точкой БИХ фильтры вообще противопоказаны (бих фильтр очень шумит).
БИХ фильтры применяются только если критично время задержки и его надо минимизировать.
А вообще, если говорить о книгах, то цифровую обработку надо начинать с книги Трахтман А.М. “Введение в обобщённую спектральную теорию сигналов”. Не имея представления о сигналах, в ДСП нет смысла соваться.