Как сделать чистый усиленный микрофон аналого-цифровым преобразованием?


12

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

Я подключил электретный микрофон к операционному усилителю и дал вывод на мой Arduino микроконтроллер. АЦП на микроконтроллере преобразует диапазон от 0 до 5 В в 10-разрядное число (от 0 до 1023).

Я попробовал 3 разных чипа усилителя:

  • LM386 - Я получил отзыв, что этот чип не подходит для этой цели, так как он не операционный усилитель, и он не работал правильно, как ожидалось.
  • LM358 - работает
  • UA741 - работает, усиливает больше, чем LM358

Я точно следовал этой схеме (за исключением того, что я искал значения резистора, чтобы получить хороший коэффициент усиления): я использовал 50 кОм для R5 и 10 Ом для R2. введите описание изображения здесь

Проблема в том, что выход из последних двух чипов не "чистый". AnalogRead () на Arduino всегда читает ненулевое значение, даже когда я не делаю шум в микрофоне. Чтение реагирует правильно, когда я шуметь, но значение «ноль» ненулевое. Иногда «нулевое» значение даже мерцает, сбрасывая показания все время. Надеюсь, это имело смысл.

Можете ли вы помочь мне разобраться с этим?

Не менее важна дополнительная информация: в конце концов я пытаюсь сделать что-то подобное .


Вы уверены, что у вас есть C2 на месте? Что такое тихое напряжение постоянного тока после C2?
Маженко

Да, у меня есть С2 на месте. Это около 2 вольт. Я не знаю, имеет ли это какой-то смысл: может ли быть какой-то ток, захваченный (?) В контуре между контактами 2 и 6, выходом и инвертирующим входом?
Шубхам

Как насчет тихого напряжения постоянного тока после того, как C2 отключен от входного контакта Arduino?
Маженко

Наличие C2 означает, что выходной сигнал предусилителя будет колебаться около 0 В, а не 2,5 В, на котором он работает внутри.
Маженко

Еще одна вещь - вы можете захотеть вставить маленький диод шотки между предусилителем C2 и входом Arduino - выбросить те отрицательные напряжения, которые вас действительно не волнуют. Еще одна вещь, которую я сделал, - это добавить еще один конденсатор между аналоговым входом и землей, чтобы немного сгладить сигнал. Делает измеритель громкости чуть менее мерцающим.
Маженко

Ответы:


17

Избавьтесь от выходного конденсатора. Эта схема, вероятно, должна была генерировать сигнал около нуля, поэтому конденсатор должен блокировать смещение 1/2 Vdd. Тем не менее, микроконтроллер хочет видеть сигнал с центром около 1/2 Vdd, поэтому просто избавьтесь от конденсатора.

Микрофоны нуждаются в большом усилении. Электреты могут быть чувствительными, но вам все равно может понадобиться коэффициент усиления по напряжению 1000. Коэффициент усиления в вашей цепи - это отношение R5 к R2, но это работает только в пределах возможностей операционного усилителя.

Значения, которые вы упомянули выше, дали бы вам выигрыш в 5000. Это намного больше, чем вы должны пытаться получить на одной стадии операционного усилителя. Мало того, что напряжение смещения будет умножено на это усиление, но операционный усилитель не сможет обеспечить это во всем диапазоне частот. При полосе усиления 1 МГц вы получите только усиление чуть ниже 200 Гц. Даже смещение на входе 1 мВ становится 5 В после усиления на 5000.

R2 также является сопротивлением, видимым микрофоном после входного конденсатора. Вам нужно, чтобы это было несколько больше, чем полное сопротивление микрофона с его подтягиванием и входным конденсатором на самой низкой интересующей частоте. 10 Ом слишком мало для этого. 10 кОм было бы лучшим значением.

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

Редактировать: добавлена ​​схема

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

Усиление напряжения примерно 1000, что должно быть достаточно для разумного электретного микрофона. Я могу быть немного слишком много, но легко добавить некоторое ослабление.

Топология довольно отличается от вашей схемы. Самая важная вещь, которую стоит отметить, это то, что она не пытается получить весь выигрыш за один этап. Каждый каскад имеет усиление около 31. Это оставляет достаточный запас усиления на максимальной звуковой частоте 20 кГц для обратной связи, поэтому усиление будет хорошо предсказуемым и равномерным во всем диапазоне звуковых частот, поскольку MCP6022 имеет типичную полосу усиления. произведение 10 МГц. Ограничивающим фактором, скорее всего, будет микрофон.

В отличие от того, что я сказал ранее, две ступени не должны быть емкостно связаны, чтобы предотвратить накопление напряжения смещения вместе с усилением. Это связано с тем, что в этой схеме каждый каскад имеет только коэффициент усиления постоянного тока, равный 1, поэтому окончательное смещение составляет только двойное смещение операционного усилителя. Эти операционные усилители имеют смещение только 500 мкВ, поэтому окончательное смещение составляет только 1 мВ из-за операционных усилителей. Будет больше из-за несоответствия R3 и R4. В любом случае, выходной постоянный ток будет достаточно близок к 1/2 источника, чтобы не выходить за пределы диапазона A / D значимым образом.

Коэффициент усиления по постоянному току, равный 1 на ступень, достигается путем емкостного подключения цепи делителя обратной связи к земле. Конденсатор блокирует постоянный ток, поэтому каждая ступень является всего лишь последователем для постоянного тока. Полное усиление переменного тока реализуется по мере того, как полное сопротивление конденсатора (C3 на первой ступени) становится небольшим по сравнению с нижним делительным резистором (R7 на первой ступени). Это начинает происходить на частоте около 16 Гц. Одним из недостатков этого подхода является то, что постоянная времени для установления равна C3, умноженной на R7 + R5, а не только на R7. Эта схема займет пару секунд или около того, чтобы стабилизироваться после включения.


Когда я снимаю крышку с выхода, arduino видит вход около 3 вольт. Извините, но вы можете объяснить, что вы имеете в виду под напряжением смещения? Чтобы получить усиление 1000, с R2, равным 10 кОм, мне нужно 10 мОм для R5? вы уверены в этом? Выгода - это соотношение между R5 и R2, верно?
Шубхам

@Shubham: Ваша схема пытается умножить напряжение смещения операционного усилителя на 5000, поэтому неудивительно, что выход привязан к одной шине. Нет операционный усилитель идеально. Напряжение смещения на входе - это напряжение между двумя входами, когда выходной сигнал находится в среднем диапазоне. Теоретически, два входа были бы равны тогда. Спецификация напряжения смещения на входе говорит вам, насколько это далеко от этого идеала.
Олин Латроп

@Shubham: вам понадобится 10 МОм для резистора обратной связи, если вы попытаетесь получить на одной ступени все усиление. Как я уже сказал, это плохая идея.
Олин Латроп

Спасибо за помощь, многому учусь здесь. Таким образом, имея два этапа по 30 усилений, я получаю общий выигрыш в 900, верно? Я попробую это, используя LM358 (вот что у меня есть), и
доложу

Наконец-то это сработало! Спасибо, что дали мне эту схему! Но я получаю только диапазон АЦП около 200. Значение бесшумного АЦП будет немного выше средней точки (512), но независимо от того, сколько шума я делаю в микрофоне, значение АЦП не превысит 200 выше. бесшумное значение. Вероятно, это ограничивает мои настройки колпачков и резисторов.
Шубхам

5

Как вы говорите, цифровое значение будет от 0 до 1023. Середина этого диапазона не 0, а 512 (что соответствует напряжению около 2,5). Для тишины вы должны увидеть что-то в середине диапазона, как это. Точно не должно быть 512, но должно быть близко. Это называется «смещение постоянного тока». Сигнал смещается вверх и центрируется около 2,5 В.

Если вы измеряете 2 В и видите значения АЦП около 400, то это в основном работает нормально.

Звуковые волны переходят от отрицательного к положительному давлению. Если бы центральная точка была 0, а сигнал мог быть измерен только между 0 и 1023, то отрицательные значения давления (-1023) были бы отключены.

Кроме того, он всегда будет немного колебаться из-за уровня шума АЦП. (И в комнате всегда будет слышен шум от звука, независимо от того, насколько вы тихи.)


Оооо, что объясняет "DC offset", я продолжал видеть в других ответах. Есть ли способ убрать смещение постоянного тока, но поставить где-нибудь крышку?
Шубхам

@Shubham: Вы ХОТИТЕ смещение DC. Процесс АЦП не будет работать без него. Кепка С2 - это то, что гарантирует, что она у вас есть. В этом случае, вероятно, нет большой разницы, потому что выход U1 уже смещен. Можете ли вы измерить значение постоянного тока на каждой стороне C2?
эндолит

@Shubham: Если вы имеете в виду, что ваши цифровые измерения должны быть сосредоточены вокруг 0 ​​вместо 512, вы можете просто вычесть смещение в своем программном обеспечении или, что еще лучше, внедрить в фильтр цифровой фильтр верхних частот.
эндолит

3

Можете ли вы опубликовать спецификацию на этом микрофоне? Нет никакой причины, по которой вам нужен коэффициент усиления 5000 с электретным микрофоном, если у вас нет голого устройства без внутреннего FET. В этом случае предусилитель должен выглядеть по-другому.

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

Я бы порекомендовал:

введите описание изображения здесь

R5 / R4 устанавливает усиление и может регулироваться без привинчивания к входному сопротивлению цепи. R3 может быть от 2k -> 10k ish. 10k будет иметь тенденцию улучшать характеристики искажения, если вы установите слишком низкое значение, вам следует переосмыслить значения для R1 и R2, чтобы зафиксировать входное сопротивление.

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

Как упоминалось в других ответах, ваша «нулевая» точка будет ~ 512 при чтении АЦП и будет немного колебаться независимо от того, что вы делаете.

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

РЕДАКТИРОВАТЬ: Подробнее об этом с пиковым детектором

Проблема, с которой вы столкнетесь, заключается в том, что частота дискретизации arduino относительно ограничена. Я думаю, что ваш максимум будет около 10 кГц, а это значит, что вы можете разрешить максимум 5 кГц аудио сигнала. Это связано с тем, что arduino делает очень мало, за исключением запуска АЦП, если вам нужно выполнить какую-либо реальную работу (и вы делаете некоторые, чтобы получить уровень), частота дискретизации будет ниже.

Помните, что вы брали дискретные сэмплы необработанного сигнала, то, что синусоидальная волна в полном диапазоне подается на АЦП, не означает, что вы не получите показания 0 с АЦП, вы получите сэмплы в различных точках волны. , С настоящей музыкой результирующий сигнал будет довольно сложным, и у вас будут сэмплы повсюду.

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

Для чего это превращает ваш аудиосигнал в напряжение, которое представляет его пиковый уровень. Когда вы измеряете это напряжение с помощью АЦП, вы сразу получите значение, представляющее уровень сигнала во время измерения. Вы по-прежнему будете немного колебаться, так как звук - это сложная, всегда изменяющаяся форма волны, но с этим должно быть легко справиться в программном обеспечении.

Пиковый детектор без удержания - это действительно выпрямитель с фильтром на выходе. В этом случае нам нужно иметь дело с сигналами низкого уровня и поддерживать точность, поэтому нам нужно сделать немного больше, чем то, что было бы сделано для вашей средней цепи выпрямителя. Это семейство цепей называется «прецизионные выпрямители».

введите описание изображения здесь

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

OP1 действует как (почти) идеальный диод, который устраняет обычную проблему падения напряжения на диоде при выпрямлении. Почти любой маленький сигнальный диод будет работать для D1, что-то с меньшим падением прямого напряжения повысит точность, но я сомневаюсь, что это будет иметь значение для вашего использования.

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

Вероятно, вы можете использовать ту же модель операционного усилителя, что и в предварительном усилителе, но Rail-to-Rail и высокая скорость нарастания идеально подходят для этой схемы. Если у вас есть проблемы со стабильностью, увеличьте R1, R2 и R3 до 100 кОм.


Микрофон является стандартным электретным конденсаторным микрофоном. Я сделаю R3 10K, мой Vcc составляет 5,9 В, так что будет нормально, если R1 и R2 тоже 10K? Какой операционный усилитель вы бы порекомендовали: LM358 или 741? Есть ли способ, которым я могу довести «нулевую» точку до 0 или около 0? «Вместо этого выполните обнаружение пикового или среднего уровня в аналоговой области и установите период усреднения пропорционально тому, какой будет ваша частота дискретизации». - Можете ли вы дать мне немного больше подробностей об этом? это звучит интересно, и я действительно хочу посмотреть на это. Извините, у меня есть много вопросов ... Я учусь в колледже EE, все еще учусь.
Шубхам

Я попробовал вашу рекомендованную схему (она намного чище, чем то, что я использовал, меньше случайности на выходе). Я использовал 1 мОм для R5 и 1 кОм для R4, давая усиление 1000. Когда я делал некоторые измерения с цифровым мультиметром, операционный усилитель дает тихий выходной сигнал около 3 вольт, а C3 уменьшает его до примерно 1,5 вольт. Кроме того, когда я удаляю R5, это не имеет никакого значения для выхода ... Вы уверены, что усиление составляет R4 / R5?
Шубхам

1
R3 устанавливает точку смещения FET внутри микрофона, (R1 || R2) || R3 устанавливает входное сопротивление переменного тока, видимое микрофоном. Установка нулевой точки на 0 не может быть решена ничем в аналоговой области, это функция АЦП в Arduino, имеющем один источник питания. Все, что вам нужно сделать, это вычесть ~ 512 из каждого сэмпла, если вы не хотите, чтобы звук был нулевым (убедитесь, что вы используете тип данных со знаком, так как это означает, что возможны отрицательные значения)
Марк

R4 / R5 - это усиление, однако усиление 1000 может превысить пределы операционного усилителя на проверенной вами частоте. C2 в цепи только для того, чтобы помочь уменьшить любое смещение постоянного тока на выходе обратной связи и не влияет на усиление.
Марк

Отметка C1 относительно R1 // R2 имеет частоту спада фильтра высоких частот 1,3 кГц. Это намного выше хорошей доли голосовых частот и на 6 октав выше нижнего предела HiFi. Это может быть хорошо, если он просто хочет сделать активированный звук триггером, но не хорошо, если он хочет нормальный оцифрованный звук.
Олин Латроп
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.