Найкращий спосіб відправити сигнал на дуже низькій частоті (250 Гц)?


8

Я програміст, що стикається з електронним запитанням, тому я подумав, що тут є питання!

  • У мене є датчик магнітного поля, який забезпечує мені значення магнітного поля (вісь XYZ) 250 разів на секунду.
  • Електронна схема з програмованим мікропроцесором управляє котушкою, яка може змінювати магнітне поле досить близько до цього датчика. Тим не менш, два пристрої розташовані не строго, тому я не можу повторювати вимірювання позиціонування.
  • Я хочу надіслати 2 даного сигналу з ланцюга на датчик, який може витримувати сильний шум магнітного поля і бути коротшим, ніж на півсекунди (Так, секунди - ми в 250 Гц!)

Поточним рішенням є передача квадратної хвилі 17 Гц, потім 12 Гц, потім 17 Гц для сигналу А, повернення порядку для сигналу В. Але для виявлення цих сигналів потрібно відправити досить довгі хвилі, що приводить сигнали до довжини близько 1,5 секунд.

Отож, моє запитання тут таке: чи існує спосіб, скажімо, візерунок, як музичний візерунок, який можна використовувати для швидшого сигналу та все ж бути надійним?

Відповіді:


7

Зі швидкістю вибірки в 250 Гц ви зможете легко надсилати 100 біт / секунду або більше. За 0,5 секунди це було б на порядку 50-60 біт.

Питання в тому, які бітові шаблони слід вибрати, які легко відрізняються один від одного, а також від зовнішнього шуму та перешкод? Поширеним рішенням є використання псевдовипадкових бітових послідовностей, також відомих як коди Баркера , які мають бажану низьку перехресну кореляцію.

Для виявлення кодів може бути використана методика DSP, відома як " зібраний фільтр ".


Звучить цікаво! Але я блукав, яким обчислювально складним може бути "відповідний фільтр"? Чи потрібні будуть великі FFT / інші розрахунки?
rubmz

Я перевірив реалізацію c ++ для відповідного фільтра, і, здається, для виявлення сигналу знадобиться досить важкий розрахунок. Тож це може бути не так корисно для мене, тому що мій бік коду датчика працював би в середовищі RT, тож чи є якийсь інший фільтр, який міг би надіслати мені 2 типи сигналів менше ніж за 0,5 секунди, не надто багато обчислень ?
rubmz

2
Він не вимагає перетворення Фур'є, але він вимагає еквівалента фільтра FIR (скінченного імпульсного відгуку) на кожному з трьох вхідних каналів, що математично еквівалентно виконанню крапкового добутку на двох векторах з 128 зразків для кожного нового вибірка, що надходить (128 множить і 128 додає, 250 разів на секунду, в цілому ~ 33 к операцій множення-додавання щосекунди на фільтр, або приблизно 100 к MAC / с секунди всього). Навіть дуже низький рівень мікросхеми DSP, такий як Microchip dsPIC, може легко впоратися з таким розрахунком у режимі реального часу.
Дейв Твід

2
Щоб зрозуміти, вам потрібно запустити цей розрахунок окремо для кожного різного коду, який ви хочете мати можливість виявити. Так, наприклад, якщо у вас є 10 різних кодів, будь-який з яких можна передавати в будь-який час, вам потрібно буде паралельно запустити десять відповідних фільтрів, загалом 1 МАС / сек - все ще в межах можливості dsPIC або подібний чіп. Якщо ви виявите, що у вашій програмі коротші коди є достатньо надійними, то ви можете використовувати відповідно коротші фільтри, і обчислювальне навантаження пропорційно падає.
Дейв Твід
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.