Простая система передачи звука амплитудной модуляцией ультразвука состоит из передатчика и приёмника. В передатчике Arduino Pro Micro эмулирует звуковую карту с интерфейсом USB и формирует два сигнала: на выходе 5 — звуковой сигнал, который затем очищается от ШИМа RC-фильтром, а на выходе 9 — несущую частоту в 40 кГц. Оба сигнала поступают на однотранзисторный каскад, параллельно нагрузочному резистору которого подключён ультразвуковой преобразователь от дальномера.
В приёмнике такой же ультразвуковой преобразователь превращает акустический сигнал обратно в электрический, далее всё сделано так же, как в радиоприёмнике прямого усиления: УВЧ, детектор и предварительный УНЧ. Усилителем мощности служит стандартный модуль PAM8403.
Чтобы реализовать эмуляцию звуковой карты с интерфейсом USB, потребовалась библиотека LuFA, поэтому вместо Arduino IDE пришлось применить avr-gcc. Для заливки прошивки (лежит здесь) необходимо аппаратно сбросить Arduino, отчего оно на несколько секунд перейдёт в режим USB-загрузчика. За это время надо успеть начать заливку при помощи avrdude.
Для наладки устройства нужно сначала при помощи осциллографа убедиться в отсутствии перемодуляции и ограничения:
Устранив и то и другое уменьшением громкости и подбором резисторов в передатчике, нужно подключить осциллограф к выходу УВЧ приёмника, а в передатчике настроить частоту ШИМ (программно) в диапазоне от 38 до 42 кГц, чтобы она совпала с резонансной частотой преобразователей. Автор рекомендует поэкспериментировать с введением в приёмник системы АРУ, аналогичной применяемой в обычных АМ-радиоприёмниках.
Так всё работает после наладки:
Запрограммировать Arduino обычным способом можно, возложив на прошивку только генерацию несущей, а обойтись вообще без него — реализовав 40-килогерцовый генератор аппаратно. На модулятор при этом можно подавать сразу аудиосигнал, а RC-фильтр становится ненужным.
Комментарии (23)
ZEvS_Poisk
28.04.2019 17:58+3В схеме приемника во втором транзисторе, база без смещения и развязана конденсатором. Такой транзистор, даже если и будет работать, то с адскими искажениями.
В первом транзисторе, смещение 1 МОм, это тоже многовато, я бы 75 кОм поставил бы.tormozedison Автор
28.04.2019 17:59Ага, без смещения, странно, что вообще работает, но на видео работает же как-то.
ZEvS_Poisk
28.04.2019 18:32+1Я полагаю, что если задать правильный режим транзистору, то будет работать намного лучше. Громче и качественнее. Сейчас, наверняка, воспроизводятся только положительные полуволны. Отрицательные срезаются, таким образом имеется множество четных гармоник. Я думаю, что через видео не так заметно качество.
Кроме того, интересна полоса передаваемых частот, несущая 40 кГц, а вот какая полоса?
4кГц? или 5кГц? Но вот качество аналогичное 8кГц и 8 Бит…mactep3230
29.04.2019 10:02+1Отрицательные полуволны все больше запирают транзистор. Утечка через базу не очень большая, непонятно как это вообще может работать
mva_vovan
29.04.2019 10:26+1Зато диод в «детекторе» всегда открыт))) Схема и работает то благодаря ошибке со смещением второго транзистора — ему приходится быть амплитудным детектором того ада, что к нему приходит.
bugdesigner
28.04.2019 21:01+2Я про прямой синтез надеялся почитать…
tormozedison Автор
29.04.2019 06:31Это когда звук получается от биений двух ультразвуковых колебаний, и приёмник не нужен?
bugdesigner
29.04.2019 06:46+1Нет, я про DSP. Берем табличный синус, умножаем на передаваемый сигнал и выводим в ЦАП. ЦАП можно типа R-2R соорудить.
Fox_exe
29.04.2019 00:22+1Я немого не понял — А как реализована сама «USB-Звуковая»?
Судя по фотке — там типичная Atmega 328p и на USB порту висит FT232 (Или его китайский аналог), которая является USB-UART преобразователем…
Используется какойто древний драйвер для COM-звуковой?tormozedison Автор
29.04.2019 06:28Там ардуиновская прошивка выкинута, написана новая на avr-gcc с применением библиотеки LuFA. Значит, ресурсов и на звуковуху хватило.
Fox_exe
29.04.2019 10:37+1Я не про ресурсы, а про то, как эта ардуинка в системе определяется?
Еслиб её через 3.5mm-jack подключили — то всё понятно (Это не звуковуха, по сути).
Но в тексте прямо написано — через USB. Значит девайс определяется USB звуковухой.
Но как это возможно, если у Atmega328 нет аппаратного USB, а тот, что распаян на плате — подключен к FT232 (USB-UART/COM), который уже цепляется к Атмеге через UART_0…geisha
29.04.2019 11:50+1Ответили — 32U4. Собственно, то, что это Arduino Pro micro в самом тексте написано.
GennPen
29.04.2019 00:33+1А зачем в этой системе нужна Ардуина?
По сути тут она работает только как звуковая карта, которую можно выкинуть и добавить простейший генератор несущей, например на том же 555 таймере.
Gryphon88
29.04.2019 02:42+1А можно для совсем тёмных — зачем с практической точки зрения передавать звук ультразвуком?
apple01
29.04.2019 06:24+1Возможно для подводной связи, поскольку ультразвук хорошо в воде распространяется.
tormozedison Автор
29.04.2019 06:32Это тоже, но здесь — в чистом виде «because I can» и «just for fun». Вроде физического опыта.
dlinyj
29.04.2019 11:50+1Идея зачётная.
реализовав 40-килогерцовый генератор аппаратно.
Но почему дорогая ардуино, вместо 555 таймера?tormozedison Автор
29.04.2019 12:02У 555 ещё и частота не зависит от напряжения питания безо всяких кварцев. А здесь это важно, надо настроить на резонансную частоту преобразователей, и чтобы потом частота генератора не уплывала.
Krysnik
29.04.2019 14:25+1Вспоминается, такая тема была в журнале Юный техник, в разделе «патент не выдавать». Тогда там эту идею сильно пропесочили.
REPISOT
Схема уровня «бог». Бог издевательства над над схемотехникой. Особенно символ какой-то непонятной ардуины. Что к чему подключать — а кому это важно. Там же есть ардуина.
Перерисовать схему? А зачем — я жпереводчик. Раз-раз — статья готова.
tormozedison Автор
А теперь?