РЕДАКТИРОВАТЬ : Я занимался этой проблемой в течение достаточно долгого времени. Оказывается, это гораздо более сложный проект, чем я думал, а не что-то для начинающих. Это требует дорогостоящего оборудования (микрофон и усилитель) и некоторого сложного анализа звука на микроконтроллере. Даже полноценный микрофон с усиленной схемой не дает желаемых результатов (согласно комментариям к этому продукту)
Я совершенно новичок в Arduino (но я знаком с программированием). Чтобы построить измеритель уровня громкости , я хочу подключить микрофон к аналоговому 0-му контакту Arduino и отображать значение через последовательное соединение.
Я погуглил и нашел эту схему:
... и я попытался построить его с таким результатом:
(Сейчас я использую схему, предложенную Оли Глейзером в своем ответе)
Значения на последовательном мониторе не меняются в зависимости от громкости музыки.
Какой самый простой способ измерить громкость на аналоговом входе Arduino?
Кроме того, у меня есть TDA2822M , но я не знаю, полезно ли это для этого проекта. Надпись на микрофоне гласит: XF-18D .
Изменить: мой код Arduino:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(0));
delay(300);
}
Серийный выход: 1023 1022 1022 1022 1022 1023 1022 и т. Д.
Как я могу проверить, работает ли микрофон вообще? Это направленное?
Изменить: я сейчас использую транзистор S9014. АЦП и последовательное соединение работают (я проверил их с помощью потенциометра).
Серийный выход сейчас составляет около 57.
Также у меня нет мультиметра или осциллографа.
У меня сейчас мультиметр.
источник
Ответы:
Самый простой способ - просто подать сигнал и сэмпл с помощью АЦП. Сохраните результаты в буфере, а затем отобразите их по желанию (в вашем случае отправьте на ПК через RS232).
Если вы хотите получить среднеквадратичное значение сигнала, вам нужно будет рассчитать его в какой-то момент, перед отправкой на ПК или после.
Ваша схема усиления, как показано на рисунке, не идеальна, но должна работать разумно для базового измерителя VU. РЕДАКТИРОВАТЬ - Я только что заметил C2, удалите это, так как он заблокирует смещение постоянного тока от транзистора, и сигнал будет качаться ниже уровня земли.
РЕДАКТИРОВАТЬ - вот лучшая схема для усилительного транзистора:
Это не должно беспокоиться об используемом транзисторе, выходное смещение должно быть около 2,5 В.
Точные значения для входного делителя (R3 и R4) не слишком важны, это соотношение 1: 4, что более важно. Таким образом, вы можете использовать, например, 400 КБ и 100 КБ или 40 КБ и 10 КБ и т. Д. (Старайтесь не идти выше или ниже этих соответствующих значений). C2 должен быть> 10 мкФ. C1 должен быть> 1 мкФ (заменяет C1 в вашей схеме),
хотя R1 и R2 должны быть этими значениями.
Все, что вам нужно, это электрет с резистором смещения (R1 в вашей схеме)
Одной из проблем является то, что линии Arduino 3,3 В и 5 В, кажется, связаны друг с другом - я предполагаю, что это схематическая ошибка, но если это имеет место в реальной схеме, она не будет работать и может что-то повредить.
Чтобы точно определить проблему (проблемы), это поможет увидеть ваш код и то, что вы видите на стороне ПК. И какой транзистор вы используете?
Если у вас есть осциллограф, то вы можете проверить, правильно ли работает ваш микрофон / транзистор. Если нет, то мультиметр можно использовать для выполнения некоторых более базовых тестов (например, подтвердить наличие + 5 В, подтвердить, что база транзистора находится на уровне ~ 0,6 В, тестовый коллектор, чтобы убедиться, что он не подключен к + 5 В или заземлению без сигнала)
Также вам необходимо убедиться, что RS232 работает правильно, поэтому было бы неплохо написать простой код для отправки тестовых значений.
Если вы можете предоставить запрошенную информацию и сообщить нам, какими инструментами вы располагаете, вам может быть оказана более конкретная помощь.
РЕДАКТИРОВАТЬ - если вы производите выборку очень медленно, вам понадобится схема обнаружения пиков, например:
Вы бы поместили эту схему между транзистором и выводом Arduino (минус C2)
Диод может быть практически любым диодом. Значения пробок и резисторов являются ориентировочными, их можно немного изменить. Их значения определяют, сколько времени займет изменение напряжения в зависимости от уровня сигнала. Вы можете рассчитать это, используя постоянную RC (т. Е. R * C - в приведенном выше примере постоянная RC равна 1e-6 * 10e3 = 10 мс. Напряжению потребуется около 2,3 постоянной времени, чтобы упасть на 90% от ее первоначального значения, поэтому в приведенном выше примере, если напряжение начинается с 1 В и вы удаляете сигнал, оно упадет до 0,1 В примерно через 23 мс.
РЕДАКТИРОВАТЬ - хорошо, думаю, я нашел серьезную проблему. Ваш транзистор S9012 является транзистором PNP (как и S9015), для этой схемы вам нужен NPN-транзистор. S9014 представляет собой транзистор NPN, так что вам придется использовать этот.
Конденсаторы с маркировкой «104» почти наверняка представляют собой керамические конденсаторы 0,1 мкФ. Значение (в pF) - это первые 2 числа, за которыми следует число нулей, установленных последним числом. Таким образом, для 104 значение равно 10 + 4 нуля или 100 000 пФ. 100 000 пФ это 100 нФ или 0,1 мкФ.
РЕДАКТИРОВАТЬ - Отсутствие оптического прицела или мультиметра очень усложняет жизнь (вы должны как можно
быстрее освоить один или оба). Однако существуют некоторые базовые осциллографы звуковой карты ПК, которые можно использовать для проверки вашей электретной / транзисторной цепи. Visual Analyzer - хороший пример:
Если вы замените C2 (не обязательно, но это хорошая идея), вы сможете напрямую подавать сигнал на ПК и наблюдать в программном обеспечении, чтобы убедиться, что микрофон и усилитель работают правильно. Если на вашем компьютере используется линия, но вход для микрофона обычно подходит для напряжения до 2 В IIRC. Вы также можете напрямую проверить электрет - просто удалите бит транзистора и сохраните R1 и C1, возьмите сигнал с другой стороны C1.
Обратите внимание, что этот метод не будет проверять уровни постоянного тока, только то, что вас интересует (только из-за ограничителя постоянного тока на входе звуковой карты), но сигнал переменного (аудио) сигнала.
Если вы попробуете это, опубликуйте скриншоты, чтобы мы могли понять, что происходит.
источник
EDIT
блоки и отредактировать их так, чтобы их можно было понять, не читая ветку комментариев? Я также новичок, и я не понимаю, как проблема была решена и могу ли я использовать схему, которую вы опубликовали, как есть.Предполагая, что ваша схема работает, аудиосигнал находится в диапазоне кГц, в то время как Arduino имеет АЦП, подходящий для уровней постоянного тока. Компонент постоянного тока в вашем сигнале равен нулю, то есть он плавает при фиксированном напряжении. Это то постоянное напряжение, которое читает ваш АЦП.
Чтобы исправить это, вы должны подключить диод последовательно с выходом, подключенным к АЦП, конденсатору и резистору.
Колпачок будет заряжаться до пикового значения, получаемого в то время, как резистор разряжает колпачок, когда сигнал стихает.
Изменить: Вход АЦП фактически плавающий, поскольку он не имеет смещения вообще из-за последовательного конденсатора. Если вы собираетесь попробовать мое решение, удалите C2.
источник
When using single-ended mode, the ADC bandwidth is limited by the ADC clock speed. Since one conversion takes 13 ADC clock cycles, a maximum ADC clock of 1 MHz means approximately 77k samples per second. This limits the bandwidth in single-ended mode to 38.5 kHz, according to the Nyquist sampling theorem.
Ваши показания 1022, 1023 в основном полномасштабные на АЦП Arduino. Предполагая, что вы установили исправный последовательный конденсатор, как показано на диаграмме, этот уровень не может быть получен из схемы микрофона, которую вы построили, так как он может соединять только изменяющиеся напряжения (например, переменный ток).
В результате, я подозреваю, что вы читаете ток утечки внутри самой ATMEGA - вы, вероятно, получите тот же результат на любом из других (не связанных) аналоговых выводов.
Попробуйте сделать очень «легкий» делитель напряжения с некоторыми высокоценных резисторов (между 10K и 100K) и использовать это для смещения аналогового входа на половину опорного напряжения (можно также использовать потенциометр, который дает вам дополнительные возможности тестирования). Тогда ваше чтение без ввода должно быть около 512.
После того, как вы правильно настроите вход АЦП, вы можете начать работать, пытаясь выяснить, есть ли у вас изменения. Возможно, вы частично занижаете полосу пропускания, что означает, что вы получите псевдоним высокочастотных компонентов, но если все, что вы пытаетесь сделать, это оценить общий объем, что не должно быть слишком большой проблемой.
источник