Обновить
32K+
213

Embedded SW/Firmware Engineer

104,4
Рейтинг
540
Подписчики
Отправить сообщение

Там простая математика. Пропустить запись через КИХ фильтр. Просто надо быстродействие в вычислении корреляции. Надо аппаратный fir фильтр порядка 3к.

Да. Те самые короткие импульсы на частоте 2,5kHz.

Разность фаз на двух микрофонах даст точный азимут, но усложнит математику. Придется считать кросскорреляцию двух сигналов, а это уже серьезная нагрузка на проц

Понятно, что для вычисления угла прихода волны у нас в распоряжении wav файла есть только смещение фазы сигнала в каналах записи. Если смещение равно нулю, то и угол AoA равен 0 градусов.

При частоте дискретизации 96000 Hz один семпл длится всего 10.4 us. Скорость звука 331 м/c. За это время звук пролетает 3.4 мм.

Получается, что в предельном случае, когда угол на источник звука 90 градусов и при расстоянии между микрофонами 6 см=0.06м разность межу фазами звуковых дорожек составит всего 0.06/331.0 = 0.00018126s = 181.26 us или всего 17 cемплов на 96kHz.

С какой погрешностью мы тогда сможем измерять угол на источник звука? Получается что 90/17= 5.2 градуса. Не густо.

Cогласно рисунку прямоугольного треугольника ABC, последовательность формул (1)-(10) приводит к тому, что угол прихода звуковой волны AoA вычисляется по формуле (11). Тут применяется теорема Пифагора (1), простейшая тригонометрия (7) и формула вычисления пройденного пути по известной скорости и времени (3).

AB^{2} =CB^2+AC^2   \qquad  \qquad (1) \\ AB = D \qquad   \qquad (2) \\ CB = V*TOF \qquad   \qquad (3) \\ D^{2} =(V*TOF)^2+AC^2   \qquad  \qquad  (4)  \\ AC^2   = D^{2} -(V*TOF)^2\qquad   \qquad (5)  \\  AC   = \sqrt{D^{2} -(V*TOF)^2} \qquad   \qquad (6)  \\  AC= cos(AoA)*AB \qquad   \qquad (7) \\ AC= D * cos(AoA) \qquad  \qquad  (8) \\ cos(AoA) =  \frac{AC}{D}  \qquad  \qquad  (9) \\ AoA = acos( \frac{AC}{D})  \qquad   \qquad (10) \\

Из тригонометрических преобразований легко выражается формула для угола прихода звуковой волны (11). Единицы измерения тут радианы. От -pi/2 до pi/2

AoA = asin(\frac{V_{sound} \cdot  TOF}{D}) \quad  \quad (11)

Как видите, зависимость нелинейная. Арксинус это монотонно возрастающая нечётная функция, заданная на области определения от -1 до 1 области значения от -pi/2 до pi/2.

Учитывая, что микрофоны жестко закреплены , а скорость звука постоянная, ToF может максимум быть (13)

ToF_{max} = \frac{D}{V_{sound}}   \qquad (13)

Расстояние между микрофонами определяет то, какую максимальную разность фаз имеет смысл анализировать внутри программы. Если расстояние равно 1 метр, то звук пройдет это расстояние за 3ms. При частоте дискретизации 96kHz длительность семпла равна 10.4us. Выходит, что надо вычислять корреляцию между дорожками отличающимися максимум на 290 семплов.

TOF мы определим при помощи ЦОС вычислений программным образом алгоритмом вычисления корреляции между сигналами на каналах. База D - известна, скорость звука тоже известна. По сути можно выполнить свёртку записей правого и левого микрофона вокруг +/- (TOF_max/2), найдем максимум свёртки, определим значение максимума свёртки. Оно и будет являтся TOF.

Для тестирования потребуется ещё такая формула.

ToF = \frac{D   sin(AoA)}{V_{sound}}= \frac{[m]}{\frac{[m]}{[s]}} =[s]  \qquad (14)

Для вычисления угла прихода волны в диапазоне от -90.....+90 надо считать корреляцию по следующему количеству отсчетов (12)

ToF_{sample} = \frac{f_{s}D}{V_{sound}}   \qquad (12)

Буквально несколько предварительно рассчитанных значений

Для уменьшения погрешности определения направления прихода звуковой волны надо либо

1. Увеличивать расстояние между микрофонами

  1. Увеличивать частоту дискретизации.

    Второй способ более трудный, так как диктофон не может записывать быстрее, чем 96kHz. Вот и остается наращивать расстояние между микрофонами.

Какой длины считать свёртку?

Важный параметр это сколько семплов охватывать при вычислении свёртки? Чтобы не было неоднозначности. Надо чтобы длина волны уместилась на расстоянии между микрофонами не полностью. Допустим расстояние между микрофонами 1 метр. Значит надо, чтобы длины волн, которые прилетают были длиннее чем один метр. То есть из частота должна быть меньше 331 Hz.

С одной стороны, чем больше будет слагаемых тем явнее окажется максимум. С другой стороны увеличивается количество вычислений. Надо помнить что на каждом семпле мы считаем ToF_sample количеств свёрток (12). А потом еще находим максимум в массиве.

\lambda = \frac{V_{sound}}{F_{signal}}; \qquad (17)\\ F_{signal}= \frac{V_{sound}}{\lambda }\qquad  (18) \\ \lambda = 2D\qquad  (19) \\

При этом надо помнить что источник звука может двигаться. И надо выбрать такой интервал времени, в котором цель не успела переместиться слишком далеко.

Можно все ЦАПики на один spi повесить. Каскадом или параллельно, управляя по chip select.

book_722_619.pdf https://share.google/gXTv9AGsS3Pkr1aBX

Радиолокация для всех.

Вообще я очень рад, что на habr появляются такие замечательные тексты

Летучие мыши по ходу вообще в уме делают синтез аппаратуры. Подобно тому как SAR спутники землеобзора строят карту поверхности земли по отдельным радиолограммам в известных местах.

.

Несомненно, проекту есть куда расти

Я пришел к выводу , что полноценный сонар надо проектировать на FPGA. Или в тандеме с одноплатным компьютером . Микроконтроллер просто захлёбывается при обработке сложных импульсов.

Из всего этого можно сделать отличную охранную систему, для навигации ptz видеокамер. Охранять дачный участок, аэропорты, металлургические комбинаты , нефте переливные станции и прочее.

Или датчики для авто парковки автомобилей.

Если перейти на пьезокерамику, то можно смастерить глубиномер с анализом карты глубин и поиском скопления рыб.

Можно теперь провести испытания на полигоне , расставив кругом уголковые отражатели, выпеленные из коробок.

Микрофон я установил непосредственно за ФАР. 

Подобрать хороший микрофон та ещё задача. Какой у Вас микрофон?

Разрешение по расстоянию — около 45 см — не очень‑то хорошая точность в сравнении с летучей мышью, но как сделать точнее я пока не придумал

Решение классическое. Надо испускать сложные сигналы: ЛЧМ или ФКМ.

Выводимый сигнал через усилители подаётся на колонки. Таким образом, я программно задаю частоту сигнала и фазовый сдвиг для каждого акустического излучателя в массиве ФАР. В результате заданная частота чётко выделяется пиком на спектральном анализаторе звука; формируется узкий сканирующий луч, который с заданным шагом изменяет своё направление

Как же это здорово!

STM32F429 на плате Discovery. Однако на нём установлено всего 2 ЦАПа

Можно подобрать отладочные платы с DAC , которые управляются по spi.

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

Я так понял у Вас зондирующий импульс простой. B=1. На одной частоте.

Поэтому его отражение и можно поймать алгоритмом герцеля.

Однако такими импульсами невозможно различить две цели стоящие рядом. Идущие звеном самолёты.

Радары и сонары уже давно работают только со сложными импульсами. 1‹‹B.

Это ЛЧМ сигналы и модулированные м-последовательность фазовые пакеты. Причина проста . У сложных сигналов очень хорошая автокорреляционная функция. Это позволяет на порядки увеличить разрешение по дальности.

Когда я написал статью и засел за редактор Habr для её публикации, то с удивлением обнаружил, что тем же утром вышла статья с описанием аналогичного устройства. Однако, в ней автор использует другие идеи для создания своего сонара, так что есть возможность сравнить подходы и получившиеся устройства между собой.

Спасибо, что вставили ссылку на мой текст. Прям сезон сонаров.

https://habr.com/ru/articles/1050166/

Что если генерировать звуковую зондирующий волну не колонками , а пьезокерамическими звуко-излучателями? Зуммерами. Они компактные и управляются одним проводом.

Как раз ШИМ пригодится.

Cross компиляция это когда программу для телефона собирают на другом компьютере. Например на windows РС.

Это делают для ускорения сборки больших программ.

Думаю, что это сделано специально - "Within a set of Gold codes about half of the codes are balanced – the number of ones and zeros differs by only one 

Почему для GPS выбрали именно Gold-коды, а не M-последовательности?

M-последовательности применяются в радиолокации для кодирования BPSK зондирующих импульсов.

 заменить радиочастоты на звук (благо ADC уже достаточно быстрые для этого стали относительно доступнее), и сделать курс лабораторок по ЦОС. Но времена наступившие как-то эту идею погасили... Поэтому несмотря на вашу правоту в целом ("чтобы уметь делать радары - надо делать радары") - на мой взгляд, предложеная @aabzel совсем не лишена смысла.

Вот, пожалуйста.

https://habr.com/ru/articles/1050166/
Сонар из Музыкальной Колонки

Стоимость оборудования для элкспериментов менее 4kRUR.

Информация

В рейтинге
55-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, DevOps-инженер
Старший
Git
Bash
CI/CD
C
Встраиваемая система
Программирование микроконтроллеров
Разработка программного обеспечения
Алгоритмы и структуры данных
Системное программирование
Разработка драйверов