Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
19.02.2017, 21:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,072
Сказал спасибо: 3,054
Сказали Спасибо 3,223 раз(а) в 2,188 сообщении(ях)
|
Re: Как обнаружить нужное значение в последовательных данных
Сообщение от vladh
|
А что такое просчитать корреляцию маски?
|
Корреляция это, грубо говоря, степень сходства двух наборов данных. Я в этом, в общем-то, не силен - смотрите учебники по матстатистике.
Вот простенький пример с корреляцией в экселе. Вычисляется корреляция синусоид одной частоты и разной амплитуды, в т.ч. в присутствии шума в 1/10 амплитуды. Я, правда, ожидал увидеть более резкие пики на графике корреляции, я не относительно высокие значения по всей восходящей ветви синусоиды. Но если ограничить решение чем-то вроде 0.98, то получится неплохо.
P.S. Корреляция - это тот метод, которым выделяют сигналы навигационных спутников, лежащие ниже уровня шумов эфира и входных цепей приемника. Или нет?
__________________
Экзорцист 40-го уровня.
|
|
|
|
19.02.2017, 23:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.12.2006
Адрес: С.-Пб.
Сообщений: 1,441
Сказал спасибо: 309
Сказали Спасибо 498 раз(а) в 319 сообщении(ях)
|
Re: Как обнаружить нужное значение в последовательных данных
Сообщение от ForcePoint
|
Или нет?
|
Именно так, только корреляция - это не метод, а степень соответствия сигналов. А метод - это корреляционный анализ.
P.S. Извините за занудство, люблю аккуратность в формулировках !
__________________
"Счастье для всех, даром, и пусть никто не уйдет обиженный!" ©
|
|
|
Эти 2 пользователя(ей) сказали Спасибо tim1960 за это сообщение:
|
|
|
20.02.2017, 12:01
|
|
Прописка
Регистрация: 02.03.2010
Сообщений: 139
Сказал спасибо: 12
Сказали Спасибо 49 раз(а) в 26 сообщении(ях)
|
Re: Как обнаружить нужное значение в последовательных данных
Такие вещи в радиолокации называются "оптимальный обнаружитель" .
Сразу , как реализуется в общем случае -
1) порог сработки после вашего узкополосного фильтра и детектора обычно автоматически устанавливается на середину амплитуды. В простейшем случае - CR цепь с малой постоянной времени. Затем ФНЧ, с частотой среза примерно ваши боды умноженные на 3 (9кГц для 3кБод). Затем чувствительный компаратор. Возможно в вашем квантователе всё это уже есть.
Выход компаратора опрашивается с частотой в ~ три раза выше частоты смены знака сигнала. Тут частота берется выше, чтобы :
1) не терять полностью значения "дробленого" сигнала (у которого часть импульса потеряна по ширине)
2) что бы работать, не имея значения фазы сигнала (а по реальным сигналам тяжело фазироваться)
Вот эту последовательность подаете на сдвиговый регистр с количеством разрядов 3N, где N - длина ловимой последовательности.
На всех выходах регистров, которые соответствуют "нулям" сигнала, ставите инверторы. Все выходы, после инверторов для "нулей" и напрямую для "единиц" подаете на резистивный сумматор. Чем больше последовательность похожа на вашу, тем больше амплитуда на выходе сумматора. Тут всегда ставят еще один компаратор с адаптивным порогом. Порог подбирают исходя из критерия допустимого числа ложных срабатываний.
Описал, как схему, хотя всё это миллион лет делают в цифре. Но чтобы в цифре, вам нужен не квантователь на выходе приемника, а АЦП с достаточной разрядностью. Для экспериментов хватит звуковой карты и компьютера, кстати.
|
|
|
|
23.02.2017, 00:26
|
|
Заблокирован
Регистрация: 19.02.2007
Адрес: Барановичи
Сообщений: 255
Сказал спасибо: 3
Сказали Спасибо 51 раз(а) в 39 сообщении(ях)
|
Re: Как обнаружить нужное значение в последовательных данных
Сообщение от vladh
|
Поскольку, вначале я писал, что максимальная частота принимаемых данных - 3 кГц то и тактировать прием можно своим генератором на 3 кГц.
|
А если Ваш тактовый сигнал (по которому Вы считываете данные) попадёт как раз на перепад считываемого Вами сигнала - чего получите на выходе ?
Если знаете максимальную частоту принимаемого сигнала (тем более, что передаёте его сами, и тем более, что он у Вас зачем-то плавает) то уж делайте некие промежутки между посылками, чтобы приёмник понимал, где конец предыдущей и начало следующей посылки. Да и тактирование принимающего устр-ва должно быть в какой пяток раз выше (вообще - чем больше, тем лучше) - приняли (условно) 7 единиц, 3...4 нуля, и опять пошли единицы - значит тактирующий сигнал приёмника у Вас не совпадает с передатчиком - рассчитывайте что один такт у Вас отстаёт от передатчика - корректируйте. И чем больше Вы примете единиц, или нулей с приблизительно вдвое большей (меньшей) численностью, тем более точную частоту подберёте для своих тактов. Для этого и нужно свои такты в 5, 10, 15, 20, и т.д. большие поддерживать А приняли Вы до этого что-то в районе 2 единиц и нуля... Это типа пример.
А если Вы пытаетесь наладить обычную радиосвязь (типа автомобильной сигнализации, , голубойпопы, печенья в клеточку, и т.п), то вроде как у любой фирмы по выпуску процев есть библиотеки.
А если конкретно хотите своё сделать на модулях типа 433 МГц, и тп., то Вам больше нужно обрабатывать не поимку своего сигнала - его со своим протоколом отловить не сложно, а отсеивание, и игнорирование чужих сигналов, и фиксации окончания этих сигналов, т.к. там от разных производителей сигналы сыплются с разной частотой, и разными протоколами. Причём не только от автомобилей, но и от всяких ворот, шлагбаумов, всяких квадрокоптеров (в гавно плюхалок), китайских вертолётиков, дешёвых радиостанций, и прочей лабуды, которая помимо законных частот ещё гармоники раскидывает по всем диапазонам - вот пока Вы это всё не отсеите - результат будет нулевым. А для этого помимо выделения нужной посылки, ещё нужно получить и корректную CRC, а вообще - лучше пообщаться со своим устройством, т.е. иметь обратную связь.
А иначе - один сосед будет закрывать свой унитаз, второй в этот момент открывать ворота гаража чтобы свой жоповоз выкатить, а соседский ребёнок выбежит с какой-нить сертифицированной 3-ёх баксовой игрушкой - и Ваша система также захочет под этот весь цирк поплясать...
|
|
|
|
23.02.2017, 11:37
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Как обнаружить нужное значение в последовательных данных
Сообщение от vladh
|
Да, это программное решение моей задачи. Большое спасибо.
Да и всем принявшим участие в обсуждении огромное спасибо.
|
Тут еще немного
https://4donline.ihs.com/images/VipM...A73243A3159BB0
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:59.
|
|