Телеметрия (часть 1)

РД00

И, кстати, как фильтруют американские дядьки с большими бюджетами. Это запись с альтиметра покупного Eagle Tree E-Logger’a (слева высота в метрах, внизу время в секундах).

Общий вид :

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

smalltim

Синусы, плавающая точка с двойной точностью… Это всё слишком сложно, мне вот тут в голову пришла как обычно гениальная идея 😃

Для высоты у меня есть плавающее окно, и этого, действительно, более чем достаточно. А для скорости есть набор слегка зашумленных (без плавающего окна) данных. В секунду у меня выдается 8 отсчетов высоты. Так кто мешает с приходом каждого нового делать линейную аппроксимацию этого набора данных по методу наименьших квадратов? Это ж самое то! Физически корректно, быстро и просто! Это получается приближение движения самолета на интервале от “секунду назад” до “сейчас” вариантом прямолинейного движения. Из уравнения прямой y=at+b, где MHK находит а и b, для вариометра нужно только а, то есть, наклон прямой. Еще больше задачу упрощает то, что набор данных имеет фиксированный размер и временные интервалы dt всегда одинаковые.
В общем, сейчас пиво допью и сяду, поковыряюсь 😃

РД00
smalltim:

Синусы, плавающая точка с двойной точностью… Это всё слишком сложно, мне вот тут в голову пришла как обычно гениальная идея 😃

Взгляните еще раз на вычислительную сложность IIRа по сравнению с усреднением значений по окну или линейной аппроксимацией (что одно и тоже в плане частотной хар-ки). Предполагается, что заранее посчитаны коэффициенты b0, b1, b2 - хоть в Екселе, хоть на калькуляторе, хоть опубликованным фрагментом кода. А микроконтроллер с приходом каждого нового значения должен посчитать :

Y = ((X + 2*x1 + x2) - b1*y1 - b2*y2) / b0;

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

Плавающая точка была приведена только для упрощения читаемости кода, чтобы можно было считать, что X и Y находятся в диапазоне -1…+1. Это несложно перевести в целочисленный 16-разрядный диапазон.

smalltim

А какие же должны быть частота среза и добротность для того, чтобы по 8 отсчетам с частотой 1/8 секунды произвольной зашумленной функции правдоподобно восстановить первую производную исходной неизвестной функции? Меня просто смущает то, что мне нужно не гармоники верхние отфильтровывать, а шум. Шум, впрочем, тоже гармоники, но с непонятной частотой. Всё уже с институтских времен забыл 😃
И потом, по Вашему алгоритму я получу сглаженную функцию высоты от времени, по которой еще надо искать первую производную или просто разность, а с МНК по исходным отсчетам нужно всего около 20 целочисленных сложений и 10 умножений для получения конечного результата. Да, и усреднение значений по окну делается не для вариометра, а только для высоты, это я и не подумаю переделывать - слишком хорошо работает 😃

РД00
smalltim:

А какие же должны быть частота среза и добротность для того, чтобы по 8 отсчетам с частотой 1/8 секунды произвольной зашумленной функции правдоподобно восстановить первую производную исходной неизвестной функции?

Я бы выбрал частоту 0.3 - 0.5 Гц и добротность 0.71.

SGordon

Меня с институтских времен интересовала проблема выбора количества разрядов для регистров и коэффициентов фильтров. Ну то есть умная теория из книг конечно есть, но что на практике получается, в 16 бит уложимся? Наверно прощще попробовать на исходных данных. Что там за диапазон измерений ( отсчетов)?

smalltim
SGordon:

Меня с институтских времен интересовала проблема выбора количества разрядов для регистров и коэффициентов фильтров. Ну то есть умная теория из книг конечно есть, но что на практике получается, в 16 бит уложимся? Наверно прощще попробовать на исходных данных. Что там за диапазон измерений ( отсчетов)?

АЦП у Атмеги 10-битный, 64 измерения в сумме у меня дают полноценные 16-битные числа. Так что всю математику приходится писать для 16…32 бит. Умножение двух 16-битных, например, уже 32 бита.

SGordon

32 уже весело Ж-) я бы все-таки попробовал сэмулировать фильтр на компе, есть что фильтровать то, какой то жизненный набор данных?

smalltim
SGordon:

32 уже весело Ж-) я бы все-таки попробовал сэмулировать фильтр на компе, есть что фильтровать то, какой то жизненный набор данных?

Уже всё на бумажке рассчитано, осталось только вписать в код. Начну всё-таки с МНК, значение вариометра в метрах в секунду для 8 сэмплов в наборе после всех выкладок будет считаться по формуле
v=(2*summ(Yi*Xi)-7*summ(Yi))/12, при этом Yi = 8 последних не сглаженных в окне показаний высоты, а Xi = 0…7. Вуаля.
Yi - целые 16-битные, Xi - целые 8-битные.

Не устроит результат - буду возиться с фильтрами.

smalltim

Сделал вариометр с линейной аппроксимацией по МНК, не уложился в 16-битные вычисления, пришлось делать 24 бита.
По ощущениям “на земле” работает хорошо, разрешение 0.1 м/сек, загрублено до 0.4 метра в секунду чтобы скрыть шумы. Теперь надо проверять в воздухе.
И последний рывок на этот раз: обработка PPM с индикацией качества приема RC сигнала и управление телеметрией в полете.

LowAmper

Тока не смейтесь. Помогите, плиз, разобраться с детальками для схемы уважаемого smalltim. 1. Датчик давления – то ли MPX5010, то ли MPX4115 ставить? И то и другое в Ч-Дипе с десяток с разными буквочками на конце : www.chip-dip.ru/search.aspx?searchtext=MPX5010 . Ткните меня, плиз, в конкретную позицию в Ч-Дипе. 2. То же самое с LM1881 : www.chip-dip.ru/search.aspx?searchtext=LM1881 . С остальным, вроде, разобрался.

maloii

Дядьки, толкните меня в нужную сторону. Как с помощью меги на видео чтото наложить. Я ещё только учусь, щас читаю книжку как программировать микроконтроллеры, но там на примере ATiny2313 и пока программирую диодики 😃. А вот как видео обработать ума не приложу. Направьте на путь истинный, дайти ссылку на то где можно это прочесть. А так же какую мегу лучше выбрать. Пока до съёма данных с GPS далеко, хотябы просто буковки вывести на экран 😛 . Жутко охото 😃 . В электронике сам на очень низком уровне, но есть дикое рвение его повысить.

smalltim
LowAmper:
  1. Датчик давления – то ли MPX5010, то ли MPX4115 ставить? И то и другое в Ч-Дипе с десяток с разными буквочками на конце : www.chip-dip.ru/search.aspx?searchtext=MPX5010 . Ткните меня, плиз, в конкретную позицию в Ч-Дипе. 2. То же самое с LM1881 : www.chip-dip.ru/search.aspx?searchtext=LM1881 . С остальным, вроде, разобрался.

Нужно два датчика:

  1. Датчик скорости: MPXV5010DP. Буковки отвечают за цоколевку и наличие трубочек для подвода давления.
  2. Датчик высоты: MPXA4115A6U. Буковки отвечают за цоколевку и наличие трубочек для подвода давления.

www.freescale.com/files/sensors/…/MPX4115A.pdf
www.freescale.com/files/sensors/…/MPX5010.pdf

LM1881: Пойдет с любым буквенным индексом. Для платы SMD нужна в корпусе SO8, для “якобы SMD” нужна в копусе DIP8.

maloii
РД00:

Сюда гляньте.

А проще есть 😛 , из PAL в PAL, в принципе направление понятно, но из за отсутствия опыта воедино немогу собрать. И чтобы буквы поверх видео были 😃

А, ещё посоветуйте программатор по дешевле 😛 .

РД00
smalltim:

обработка PPM с индикацией качества приема RC сигнала

А как собираетесь по PPM оценивать качество ?

Идеально, конечно, было бы на ИМС приемника найти выход управляющего сигнала АРУ и мерять его, был бы объективный контроль уровня сигнала на антенне…

smalltim
РД00:

А как собираетесь по PPM оценивать качество ?

Идеально, конечно, было бы на ИМС приемника найти выход управляющего сигнала АРУ и мерять его, был бы объективный контроль уровня сигнала на антенне…

По вариации длительности импульсов в свободном канале. Ну, по-нашему, по рабоче-крестьянски - насколько сильно “дрожат” сервы 😃
Для PCM и для приемников с fail-safe не прокатит.

Brandvik

Есть предложение
А для приемников с фаилсэйвом есть предложение сделать сигнализацию его включения, отслеживая свободный канал. И вывод на свободную ногу процыка 1ку с задержкой 5с после включения фаилсэйва для управления средствами спасения модели 😃

LowAmper
smalltim:

Нужно два датчика:

  1. Датчик скорости: MPXV5010DP…

Спасибо! А чем, кроме цены, отличаются MPXV5010DP PBF и MPXV5010DP? В ЧипДипе они 910 и 550р соответсвенно.

maloii

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

maloii

Поправьте меня если я не прав. Я должен на одну из ног запрограммированную на вход получить PAL сигнал. Перед этим согласовав каскады с помощью сопротивления (тут же вопрос сколько ом?). Другую ногу запрограммировать на выход и через повышающий транзистор опять согласовать каскады (тут же вопрос какой транзистор, если он конечно нужен?). В программе меги в главном цикле получать сигнал с одной ноги, обрабатывать его подмешивая в него буковки. Полученный сигнал выкидывать на ногу выхода.