Waso 1 29 декабря, 2011 Опубликовано 29 декабря, 2011 · Жалоба Здравствуйте! И с наступающим! Встала задача отслеживать расстояние до объекта, удаляющегося с ускорением. Для этого имеется передатчик на 70ГГц и приемник со смесителем. Длина волны 4мм. Точность нужна 1% от расстояния. Диапазон измеряемых расстояний - от 0.1 до 5 метров. Сейчас у меня эта задача решается дубово - измеряю фазу со смесителя и считаю отталкиваясь от известного начального расстояния. Но вот проблема - в реальных условиях могут возникать кратковременные помехи - например пролет между объектом и датчиком посторонних предметов. Естественно, после такого безобразия мой алгоритм начинает безбожно врать. Я хочу при обнаружении помехи экстраполировать сигнал и потом пытаться снова зацепиться за него в надежде что за время помехи объект не изменит своего движения. Т.е. будет продолжать двигаться с темже ускорением и в томже направлении. Подскажите пожалуйста литературу! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 29 декабря, 2011 Опубликовано 29 декабря, 2011 · Жалоба Почему фазу измеряете, а не частоту? df=-2Vr/Lambda0, насколько помню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stepanov 9 2 января, 2012 Опубликовано 2 января, 2012 · Жалоба Тут на выбор решения сильно влияет требуемое быстродействие системы (зедержка выходного сигнала относительно входного), если результат можно выдать после пролета (снарядом?) измерительного участка, то можно записать весь сигнал (после смесителя) в буфер, а потом вычислить БПФ на 128 или 256точек, выделить максимумы в отсчетах каждой точки, выстроить по этим максимумам результирующий график, причем откину несколько точек не вписывающиеся в плавную кривую. Если времени нет, то поможет ФАПЧ (схема Костаса) в петле ОС которого будет фильтр или регулятор настроенный по оптимальному закону по критериям запаздывания и помехоустойчивости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Waso 1 5 января, 2012 Опубликовано 5 января, 2012 · Жалоба Почему фазу измеряете, а не частоту? df=-2Vr/Lambda0, насколько помню.Потомучто требуемая точность при малом расстоянии меньше длины волны. Если времени нет, то поможет ФАПЧ (схема Костаса) Времени нет. Нужно выдавать информацию на ходу с частотой 2кГц и с известным отставанием по времени от фактического момента измерения (задержкой). Задержку нужно минимизировать, но она не должна быть больше 20мс. Буфер - это пожалуйста. 20мс - это уйма времени чтоб сделать первое БПФ, а вот как потом его заставить скользить по буферу и делать вычисления не более чем за 0.5мс... Существуют ли оптимальные алгоритмы для такого скользящего по буферу БПФ? Про петлю Костаса начал учить матчасть. Спасибо. Будут вопросы - задам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tmtlib 0 7 января, 2012 Опубликовано 7 января, 2012 · Жалоба Буфер - это пожалуйста. 20мс - это уйма времени чтоб сделать первое БПФ, а вот как потом его заставить скользить по буферу и делать вычисления не более чем за 0.5мс... Существуют ли оптимальные алгоритмы для такого скользящего по буферу БПФ? Если шаг скольжения мелкий, как у вас - 0.5мс, то вместо БПФ возьмите обычное ДПФ, оно хорошо оптимизируется под скольжение. (в гугле - sliding dft). Я делал скользящий вариант ДПФ по приходу одного сэмпла, что естественно быстрее чем любое скользящее БПФ. Могу поискать ссылку на метод, объяснение на пальцах: каждая палка в спектре получается перемножением сигнала на синусоиду определённой частоты. То есть i-тая амплитуда это просто сумма A=SUM( Sample[j]*Cos(i,j) ) по всем сэмплам j. По приходу сэмпла мы можем прибавить к палке число A:=A+Sample[Now]*Cos(i,j) и вычесть самое "старое" слагаемое A:=A+Sample[Now-128]*Cos(i,j). Так как старое произведение можно хранить в памяти, то на каждый сэмпл для каждой частоты только одно умножение по COS-компоненте. По второй компоненте так же. А дальше как для фурье - корни из сумм квадратов. Если мелкий шаг не нужен, то можно целыми блоками. Будет быстро, но при росте размера блока алгоритм скользящего ДПФ станет в итоге медленнее, чем скользящего БПФ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Waso 1 11 января, 2012 Опубликовано 11 января, 2012 · Жалоба tmtlib, благодарю за подсказку! Stepanov. Ознакомился в общих чертах с Костасом, а заодно и с ФАПЧ 3-го порядка, которые позволяют следить за убеганием частоты. Понятно, что в итоге можно по известной частоте определять скорость и расстояние, и помехи можно задавить. Непонятно только что делать с фазой на малых расстояниях, если частота будет постоянно подстраиваться. С переводом фазы в метры надо будет както хитрить. И еще гложут сомнения, что можно будет подобрать такие параметры ФАПЧ, чтобы он успевал перестроиться и не возбуждался, если цель будет удаляться от датчика с приличным ускорением (1 - 2 g). Максимальная скорость разлетания - 100 м/с (это в конце пути, когда уже быстрее всего) - пока не перевел в герцы чтоб найти полосу для ФАПЧ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tmtlib 0 13 января, 2012 Опубликовано 13 января, 2012 · Жалоба 20мс - это уйма времени чтоб сделать первое БПФ, а вот как потом его заставить скользить по буферу и делать вычисления не более чем за 0.5мс... Ещё как вариант - можно сделать многомикропроцессорную плату, засинхронизировав их работу с запаздыванием 20мс / N чипов. Например два чипа: первое БПФ закончилось, второй чип выдаст спектр через 10мс. Если четыре чипа - 5мс и т.д. Либо может поставить какой специализированный БПФ-чип, который из сигнала сразу делает спектр (Правда сколько они стоят не знаю) Я как и вы пытался мерять фазу, делал это скользящим ДПФ. Основная проблема - без перемножение на сглаживающее окно фаза получалась не очень. А если умножать на окно, то оптимизация сходит на нет, так как старые значения по второму разу не использовать. С БПФ есть ещё такой способ. К примеру, я брал 1024-точечное БПФ. Экспериментально подобрал оптимальную форму сглаживающего окна, в итоге ненулевых коэффициентов осталось 64, а по краям - одни нули, по научному видимо STFT окно. Для оптимизации этого дела цикл БПФ можно развернуть в линейную программу. Хотя бы первую ступень преобразования. Основной выигрыш на первой ступени перемножения бабочек: вместо 1024 входных отсчёта используем только 64. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться