Как вы знаете, многие из наших повседневных приборов или устройств, таких как смартфоны, системы домашней автоматизации, интеллектуальные колонки, наушники и многие другие, имеют собственные встроенные микрофоны для захвата аудиоданных. И если мы посмотрим на них, то увидим, что существуют различные типы микрофонов, такие как конденсаторные, ленточные, динамические и MEMS. Большинство современных устройств, таких как смартфоны, используют микрофоны MEMS для лучшей чувствительности. Но проблема в том, что они цифровые и для извлечения звука из них потребуется цифровая обработка. С другой стороны, аналоговые микрофоны существуют уже десятилетиями, и их можно найти в большинстве электронных устройств, от дешевых игрушек до высококлассных студийных установок. Среди микрофонов аналогового типа наиболее популярными являются конденсаторные микрофоны, они дешевы и просты в подключении. Но поскольку их выходной сигнал очень слабый, нам нужно будет усилить сигнал перед его использованием. Вот где в игру вступают усилители микрофонов.
Итак, в этой статье мы рассмотрим такой модуль усилителя микрофона, построенный на базе микросхемы MAX4466, которая обеспечивает регулируемое усиление. Мы узнаем об основах модуля усилителя микрофона MAX4466 и о том, как подключить его к плате Arduino. Ранее на нашем сайте мы также рассматривали подключение платы усиления микрофона MAX9814 к Arduino.
Модуль усилителя микрофона MAX4466
Модуль микрофонного усилителя MAX4466 — это очень универсальный и простой в использовании модуль. Как следует из названия, он основан на микросхеме усилителя MAX4466 от компании Analog Devices. Он обеспечивает очень высокий коэффициент усиления до 125, регулируемый с помощью потенциометра на модуле. Это позволяет пользователям точно настраивать чувствительность в соответствии с конкретными требованиями к применению. Он также обеспечивает превосходный коэффициент подавления помех по питанию 112 дБ и коэффициент подавления синфазного сигнала 126 дБ, обеспечивая при этом выходной сигнал rail-to-rail.
MAX4466 способен обеспечить полосу пропускания 600 кГц AV ≥ 5 при токе питания всего 24 мкА. Модуль также включает в себя электретный микрофон, способный захватывать звук в диапазоне от 20 Гц до 20 кГц. Благодаря всем этим превосходным функциям модуль усилителя микрофона MAX4466 способен воспроизводить исключительное качество звука даже в шумной обстановке.
Распиновка модуля
Модуль MAX4466 имеет только 3 контакта, что делает его очень простым в подключении. Контакты включают VCC, GND и OUT. Контакты VCC и GND используются для подачи питания на модуль, а выходной сигнал берется с контакта OUT.
VCC — вход питания для модуля. Диапазон входного напряжения от +2,4 В до +5,5 В.
GND — общий провод (земля).
OUT — выходной контакт, на него выводится усиленный сигнал с микрофона.
Основные компоненты модуля
На следующем рисунке показаны основные компоненты модуля MAX4466. Как вы можете видеть, на передней стороне модуля нет ничего, кроме самого электретного микрофона.
Остальная схема находится на задней стороне модуля. Здесь вы можете увидеть микросхему усилителя MAX4466 вместе с ее дополнительной схемой. Для регулировки усиления модуля предусмотрен потенциометр поверхностного монтажа. Вы также можете найти две ферритовые бусины SMD на печатной плате, которые находятся рядом с контактами VCC и GND. Они предназначены для подавления помех от электромагнитных помех и дальнейшего улучшения характеристик CMRR.
Принципиальная схема модуля
На следующем рисунке приведена принципиальная схема модуля усилителя микрофона MAX4466. Схема состоит из минимального набора компонентов. Как мы знаем, основным компонентом является микросхема MAX4466. Помимо микросхемы MAX4466 схема состоит из микрофона, ферритовых бусин для подавления шума и других дополнительных компонентов для микросхемы усилителя. Она такая же, как типичная схема применения, представленная в техническом описании MAX4466.
Часто задаваемые вопросы о модуле MAX4466
MAX4466 — аналоговый или цифровой?
MAX4466 обеспечивает аналоговый выход.
Каков диапазон частот MAX4466?
Аудиосигнал может находиться в диапазоне частот 20–20 кГц.
Как настроить усиление на MAX4466?
На задней стороне платы имеется небольшой потенциометр для изменения коэффициента усиления. Коэффициент усиления можно установить от 25x до 125x.
В чем разница между MAX9814 и MAX4466?
MAX4466 является вполне классической моделью и имеет встроенный операционный усилитель, а коэффициент усиления может изменяться от 25x до 125x, в то время как MAX9814 имеет автоматическую регулировку усиления.
Каково рабочее напряжение MAX4466?
Модуль MAX4466 может работать от напряжения в диапазоне от 2,4 В до 5 В.
Схема сопряжения модуля MAX4466 с Arduino
Для сопряжения модуля MAX4466 с Arduino мы будем использовать аналоговый контакт платы. Принципиальная схема подключения модуля усилителя микрофона MAX4466 к плате Arduino представлена на следующем рисунке.
Подключение относительно простое и требует всего 3 проводов, из которых два для питания и один для сигнала. Подключите вывод VCC модуля к выводу 5V на Arduino, а вывод GND к выводу GND на Arduino. Затем подключите вывод OUT к выводу A0 на Arduino. После того, как соединения выполнены, мы можем двигаться дальше, к написанию программы.
Внешний вид собранной конструкции проекта показан на следующем рисунке.
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
В этом проекте мы будем считывать выход микрофона, а пиковые значения уровня сигнала будут выводиться в окно монитора последовательной связи. Сначала мы объявили все необходимые нам переменные как глобальные переменные. Затем в функции setup() мы инициализировали последовательный интерфейс со скоростью передачи данных 9600 бод. Мы будем отправлять пиковое значение уровня по последовательному порту, и это отправленное значение будет затем выведено в окно монитора последовательной связи Arduino IDE.
1 2 3 4 5 6 |
const int sampleWindow = 50; // Ширина окна выборки в мс (50 мс = 20 Гц) int const Input_Pin = A0; // Выходной контакт предусилителя подключен к A0 unsigned int ADC_Value; void setup() { Serial.begin(9600); } |
Далее в функции цикла мы будем непрерывно считывать значения АЦП для окна выборки, в нашем примере это 50 мс, а затем вычислять пиковое значение de, обнаруженное в этом окне. Это пиковое значение затем отправляется на ПК с помощью функции Serial.println(). Вы также можете видеть, что мы исключили значение ниже 20, потому что оно в основном шумовое. Вы также можете отрегулировать потенциометр управления усилением, чтобы настроить чувствительность модуля.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
void loop() { unsigned long startMillis = millis(); // Start of sample window unsigned int PeakValue = 0; // peak-to-peak level unsigned int InMax = 0; unsigned int InMin = 1024; // collect data for 50 mS and then plot data while (millis() - startMillis < sampleWindow) { ADC_Value = analogRead(Input_Pin); if (ADC_Value < 1024) // toss out spurious readings { if (ADC_Value > InMax) { InMax = ADC_Value; // save just the max levels } else if (ADC_Value < InMin) { InMin = ADC_Value; // save just the min levels } } } PeakValue = InMax - InMin; // max - min = peak-peak amplitude if (PeakValue < 20) { PeakValue = 0; } Serial.println(PeakValue); } |
Теперь скомпилируйте код и загрузите его в Arduino. Откройте монитор последовательного порта, и вы увидите, что когда есть звук, значение выводится в его окно.
Вот ссылка на репозиторий GitHub, где вы можете найти полный код и принципиальные схемы, которые мы использовали в этом проекте.
Исходный код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
const int sampleWindow = 50; // Ширина окна выборки в мс (50 мс = 20 Гц) int const Input_Pin = A0; // Выходной вывод предусилителя подключен к A0 unsigned int ADC_Value; void setup() { Serial.begin(9600); } void loop() { unsigned long startMillis = millis(); // Начало окна выборки unsigned int PeakValue = 0; // уровень от пика до пика unsigned int InMax = 0; unsigned int InMin = 1024; // собрать данные за 50 мс, а затем построить график while (millis() - startMillis < sampleWindow) { ADC_Value = analogRead(Input_Pin); if (ADC_Value < 1024) // отбросить ложные показания { if (ADC_Value > InMax) { InMax = ADC_Value; // сохранить только максимальные уровни } else if (ADC_Value < InMin) { InMin = ADC_Value; // сохранить только минимальные уровни } } } PeakValue = InMax - InMin; // макс. - мин. = амплитуда пика if (PeakValue < 20) { PeakValue = 0; } Serial.println(PeakValue); } |