Аналоговая схема для проверки наличия аудиосигнала?

В проекте, над которым я работаю, у меня есть 3 аудиосигнала линейного уровня, и мне нужно определить на ардуино, существует ли на каждой линии сигнал без звука, и действовать соответствующим образом (в моем случае «отключение» устройства от сети). Напряжение). Моя первая сверхсложная идея состоит в том, чтобы усилить каждый сигнал, добавить смещение постоянного тока, а затем выполнить некоторые дорогостоящие операции на Arduino, чтобы определить, существует ли звуковой сигнал.

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

Теперь я мало что помню из своего аналогового класса в университете, но мое внутреннее чутье подсказывает, что это можно просто сделать с помощью аналоговых компонентов, куда я могу передать результат (псевдоцифровой сигнал, где высокий уровень будет выше напряжения x, а низкий уровень ниже напряжение y) и выполнить гораздо более простые вычисления на микроконтроллере, чтобы определить, существует ли сигнал.

Частота аудиосигнала находится в диапазоне от 10 до 22 000 Гц. Размах напряжения (линейного уровня потребительского уровня) составляет 894 мВ, но схема должна выдерживать от пика до 10 мВ.

Есть идеи?

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

Ответы (2)

Это было бы проще, если бы вы обнаруживали сигналы с максимальным уровнем -10 дБВ. Но поскольку вы хотите, чтобы это обнаруживало уровни до 10 мВ, вам нужно использовать компараторы. Вы получаете 4 компаратора в 14-контактном корпусе (LM339).

Несколько замечаний:

1) вам необходимо убедиться, что дифференциальное напряжение, которое вы хотите измерить, больше, чем наихудшее входное напряжение смещения выбранного вами компаратора. Быстрая проверка с моим старым техническим паспортом National Semiconductor говорит, что наихудшее напряжение смещения для LM339 составляет 2 мВ.

2) эти компараторы с открытым коллектором. Им нужны подтягивающие резисторы для любого напряжения питания, которое вам нужно (+ 5 В или что-то еще). На самом деле это преимущество, поскольку упрощает добавление детектора удержания пиков.

3) вам нужно сместить вход компараторов ВЫШЕ, чем ваш максимальный ожидаемый отрицательный пиковый сигнал, и МЕНЬШЕ, чем ваш максимальный ожидаемый положительный пиковый сигнал. Я обычно устанавливаю смещение на среднюю точку источника питания.

4) это будет очень дорого (усмехается). Общая стоимость спецификации должна быть около доллара на 4 канала.

Я сделаю быструю схему здесь. Обратите внимание, что вам нужно будет использовать 1% резисторы во входном смещении и эталонной секции компаратора, чтобы получить чувствительность, близкую к 10 мВ.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Выяснилось, что наилучшая чувствительность, которую он может обеспечить, составляет около 11 мВ пикового значения (22 мВ пикового значения), и он выдерживает входные сигналы примерно до 2,5 В пикового значения. Вы можете улучшить чувствительность, заменив нижний резистор делителя опорного напряжения на тот же резистор 22,1 кОм, который используется везде, и добавив последовательно с этим резистором потенциометр с низким номиналом. Отрегулируйте горшок для желаемой чувствительности.

Обратите внимание, что этот детектор включает удержание пика. Выход становится LO каждый раз, когда обнаруженный звук превышает опорное напряжение, и затухает до +5 В, когда звук исчезает. В настоящее время постоянная времени близка к 1 секунде, но ее можно легко изменить, изменив значения RC-цепи на выходных контактах.

Arduino Leonardo может работать в определенных пределах без сложных внешних цепей, поскольку он имеет дифференциальный АЦП с дополнительным коэффициентом усиления.

Решение:

1) Смещайте каждый входной сигнал постоянным током с помощью двух резисторов (делитель напряжения между GND и 5 В) и конденсатора, еще один делитель напряжения к общему эталонному контакту АЦП. Опорное напряжение АЦП должно быть установлено примерно на 100 мВ (делитель напряжения + конденсатор). АЦП насыщается при сигналах выше ±100 мВ, но вас не интересует, насколько превышен порог.

2) АЦП допускает 15 тыс. отсчетов в секунду, если у вас есть сигналы только с очень высокими частотами. АЦП можно разогнать за счет снижения точности. ±10 мВ при полной шкале 100 мВ составляет около 5 бит. Согласно Overclocking AVR ADC, тактовая частота АЦП 2 МГц по-прежнему обеспечивает точность 8,5 бит. Для одного преобразования требуется 14 тактовых циклов АЦП, то есть около 142 тыс. отсчетов в секунду или 47 кГц на канал.

3) Алгоритм будет что-то вроде «N последовательных выборок выше порога».

Проблемы:

Ничто из этого не поддерживается библиотеками Arduino, вы должны самостоятельно выполнять доступ ко всему низкоуровневому регистру AVR. В зависимости от ваших знаний и опыта, вас может ждать крутая кривая обучения.

Техническое описание AVR 32U4 Arduino для сопоставления контактов 32U4