- Materiais requisitados:
- Diagrama de circuito:
- Usando o método de regressão para calcular dB do valor ADC:
- Programa Arduino para medir o nível de som em dB:
- Funcionamento do medidor de nível de som Arduino:
- Amplificador com circuito de filtros:
A poluição sonora realmente começou a ganhar importância devido à alta densidade populacional. Um ouvido humano normal pode ouvir níveis de som de 0dB a 140dB, em que níveis de som de 120dB a 140dB são considerados ruído. Loudness ou níveis de som são comumente medidos em decibéis (dB), temos alguns instrumentos que podem medir os sinais de som em dB, mas esses medidores são um pouco caros e, infelizmente, não temos um módulo de sensor pronto para medir os níveis de som em decibéis. E não é econômico comprar microfones caros para um pequeno projeto do Arduino, que deve medir o nível de som em uma pequena sala de aula ou sala de estar.
Portanto, neste projeto, usaremos um microfone condensador de eletreto normal com Arduino e tentaremos medir o nível de poluição sonora ou sonora em dB o mais próximo possível do valor real. Usaremos um circuito amplificador normal para amplificar os sinais de som e alimentá-lo para o Arduino, no qual usaremos o método de regressão para calcular os sinais de som em dB. Para verificar se os valores obtidos estão corretos podemos usar o aplicativo android “Sound Meter”, se você tiver um medidor melhor pode usá-lo para calibração. Observe que este projeto não tem como objetivo medir dB com precisão e apenas fornecerá valores o mais próximo possível do valor real.
Materiais requisitados:
- Arduino UNO
- Microfone
- LM386
- POT variável de 10K
- Resistores e Capacitores
Diagrama de circuito:
O circuito para este medidor de nível de som Arduino é muito simples, no qual usamos o circuito amplificador de áudio LM386 para amplificar os sinais de um microfone condensador e fornecê-lo à porta analógica do Arduino. Já usamos este LM386 IC para construir um circuito amplificador de áudio de baixa tensão e o circuito permanece mais ou menos o mesmo.
O ganho deste amplificador operacional em particular pode ser definido de 20 a 200 usando um resistor ou capacitor nos pinos 1 e 8. Se eles forem deixados livres, o ganho será definido como 20 por padrão. Para o nosso projeto nós o ganho máximo possível por este circuito, então usamos um capacitor de valor 10uF entre os pinos 1 e 8, note que este pino é sensível à polaridade e o pino negativo do capacitor deve ser conectado ao pino 8. O amplificador completo circuito é alimentado pelo pino de 5 V do Arduino.
O capacitor C2 é usado para filtrar o ruído DC do microfone. Basicamente, quando o microfone detecta o som, as ondas sonoras são convertidas em sinais AC. Este sinal AC pode ter algum ruído DC acoplado a ele, que será filtrado por este capacitor. Da mesma forma, mesmo após a amplificação, um capacitor C3 é usado para filtrar qualquer ruído DC que possa ter sido adicionado durante a amplificação.
Usando o método de regressão para calcular dB do valor ADC:
Assim que estivermos prontos com nosso circuito, podemos conectar o Arduino ao computador e carregar o programa de exemplo “Analog Read Serial” do Arduino para verificar se estamos obtendo valores ADC válidos de nosso microfone. Agora temos que converter esses valores ADC em dB.
Ao contrário de outros valores, como medição de temperatura ou umidade, medir dB não é uma tarefa simples. Porque o valor de dB não é linear com o valor de ADC's. Existem poucas maneiras de você chegar, mas todas as etapas possíveis que tentei não me deram bons resultados. Você pode ler este fórum do Arduino aqui se quiser experimentá-lo.
Para minha aplicação, não precisei de muita precisão ao medir os valores de dB e, portanto, decidi usar uma maneira mais fácil de calibrar diretamente os valores de ADC com valores de dB. Para este método, precisaremos de um medidor SPL (um medidor SPL é um instrumento que pode ler valores dB e exibi-los), mas infelizmente eu não tinha um e tenho certeza que a maioria de nós não terá. Portanto, podemos usar o aplicativo Android chamado “medidor de som”, que pode ser baixado da Play Store gratuitamente. Existem muitos desses tipos de aplicativos e você pode baixar o que quiser. Esses aplicativos usam o microfone embutido do telefone para detectar o nível de ruído e exibi-lo em nosso celular. Eles não são muito precisos, mas certamente serviriam para nossa tarefa. Então, vamos começar instalando o aplicativo Android, o meu, quando aberto, parecia algo assim abaixo
Como eu disse anteriormente, a relação entre dB e valores analógicos não será linear, portanto, precisamos comparar esses dois valores em intervalos diferentes. Apenas anote o valor do ADC sendo exibido na tela para os diferentes dB exibidos em seu telefone celular. Fiz cerca de 10 leituras e eram assim abaixo, você pode variar um pouco
Abra uma página do Excel e digite esses valores, por enquanto usaremos o Excel para encontrar os valores de regressão para o número acima. Antes disso, vamos traçar um gráfico e verificar como os dois se relacionam, o meu era assim abaixo.
Como podemos ver, o valor de dB não está relacionado linearmente com ADC, o que significa que você não pode ter um multiplicador comum para todos os valores de ADC para obter seus valores de dB equivalentes. Nesse caso, podemos utilizar o método de “regressão linear”. Basicamente, ele converterá essa linha azul irregular na linha reta mais próxima possível (linha preta) e nos dará a equação dessa linha reta. Essa equação pode ser usada para encontrar o valor equivalente de dB para cada valor de ADC que o Arduino mede.
No excel, temos um plug-in para análise de dados que irá calcular automaticamente a regressão para seu conjunto de valores e publicar seus dados. Não vou cobrir como fazer isso com o Excel, já que está fora do escopo deste projeto, também é fácil para você pesquisar e aprender no Google. Depois de calcular a regressão para o valor, o Excel fornecerá alguns valores como mostrado abaixo. Estamos interessados apenas nos números destacados a seguir.
Depois de obter esses números, você será capaz de formar a equação abaixo, como
ADC = (11,003 * dB) - 83,2073
Do qual você pode derivar o dB para ser
dB = (ADC + 83,2073) / 11,003
Você pode ter que conduzir sua própria equação, pois a calibração pode ser diferente. No entanto, mantenha esse valor seguro, pois precisaremos dele durante a programação do Arduino.
Programa Arduino para medir o nível de som em dB:
O programa completo para medir dB é dado abaixo, algumas linhas importantes são explicadas abaixo
Nessas duas linhas acima, lemos o valor ADC do pino A0 e o convertemos em dB usando a equação que acabamos de derivar. Este valor de dB pode não ser preciso para o valor de dB verdadeiro, mas permanece muito próximo dos valores exibidos no aplicativo móvel.
adc = analogRead (MIC); // Lê o valor ADC do amplificador dB = (adc + 83.2073) / 11.003; // Converte o valor ADC para dB usando valores de regressão
Para verificar se o programa está funcionando corretamente, também adicionamos um LED ao pino digital 3 que é feito para ficar alto por 1 segundo quando o Arduino mede um ruído alto acima de 60dB.
if (dB> 60) {digitalWrite (3, HIGH); // liga o LED (HIGH é o nível de tensão) delay (1000); // espera por um segundo digitalWrite (3, LOW); }
Funcionamento do medidor de nível de som Arduino:
Quando estiver pronto com o código e o hardware, basta fazer o upload do código e abrir seu monitor serial para ver os valores de dB medidos por seu Arduino. Eu estava testando este código em minha sala onde não havia muito barulho exceto pelo tráfego externo e eu obtive os valores abaixo no meu monitor serial e o aplicativo Android também exibiu algo próximo a isso
O funcionamento completo do projeto pode ser encontrado no vídeo disponibilizado no final desta página. Você pode usar para projetar para detectar som na sala e verificar se há alguma atividade ou quanto ruído é gerado em cada sala de aula ou algo parecido. Acabei de fazer um LED ficar alto por 2 segundos se houver som gravado acima de 60dB.
O funcionamento é estranhamente satisfatório, mas com certeza pode ser usado para projetos e outros protótipos básicos. Com mais algumas pesquisas, descobri que o problema era realmente com o hardware, que ainda me fazia barulho de vez em quando. Então, experimentei outros circuitos que são usados nas placas de microfone do Spark Fun que têm um filtro passa-baixa e passa-alta. Eu expliquei o circuito abaixo para você experimentar.
Amplificador com circuito de filtros:
Aqui, usamos filtros passa-baixo e passa-alto com amplificador para reduzir o ruído neste circuito de medição de nível de som para que a precisão possa ser aumentada.
Neste circuito acima, usamos o popular amplificador LM358 para amplificar os sinais do microfone. Juntamente com o amplificador, também usamos dois filtros, o filtro passa-alto é formado por R5, C2 e o filtro passa-baixo é usado por C1 e R2. Esses filtros são projetados para permitir frequência apenas de 8 Hz a 10 KHz, uma vez que o filtro passa-baixas filtrará tudo abaixo de 8 Hz e o filtro Passa-altas filtrará tudo acima de 15 KHz. Esta faixa de frequência é selecionada porque meu microfone condensador funciona apenas de 10 Hz a 15 KHz, conforme mostrado na folha de dados abaixo.
Se sua demanda de frequência mudar, você pode usar as fórmulas abaixo para calcular o valor do resistor e do capacitor para a frequência necessária.
Frequência (F) = 1 / (2πRC)
Além disso, observe que o valor do resistor usado aqui também afetará o ganho do amplificador. O cálculo para o valor do resistor e do capacitor usado neste circuito é mostrado abaixo. Você pode baixar a planilha do Excel aqui para modificar os valores de Freqüência e calcular os valores de regressão.
O circuito anterior funcionou satisfatoriamente para as minhas expectativas, por isso nunca experimentei este. Se você tentar este circuito, deixe-me saber se ele funciona melhor do que o anterior através dos comentários.