O circuito que vou usar vem do artigo "Little electret mic preamp":
Os valores dos componentes não são críticos. Por exemplo, usei um resistor de 470K no lugar do de 560K (simplesmente porque era o que tinha em mãos). No lugar do 2N3904 pode ser usado qualquer transistor NPN de baixa potência de uso geral; experimentei com sucesso um BC549.
A captação do som é feita por um microfone de eletreto. O modelo que usei é bem pequeno, foi escolhido por ser o que estava disponível com terminais. A wikipedia explica o funcionamento deste tipo de microfone. No momento interessa apenas que ele possui dois terminais e é alimentado pelo mesmo terminal que serve de saída. Isto resulta na saída ter uma componente DC (em outras palavras, o sinal varia em torno de uma tensão diferente de zero). Apesar do microfone possuir internamente um transistor para amplificar o sinal, a sua saída é ainda muito baixa para ser lida pelo conversor analógico digital (ADC) do Arduino. Daí o transistor no nosso circuito. A saída obtida ainda tem uma componente DC, mas o sinal está amplificado o suficiente para poder ser medido pelo ADC.
O sinal colocado no Arduino estará variando continuamente, conforme o momento em que o sinal for amostrado. Existem várias formas, algumas mais sofisticadas e outras mais simples, de processar os valores lidos para determinar a intensidade do som captado. Neste teste eu simplesmente calculei a média de 100 leituras e acendo ou apago o LED do Arduino conforme o resultado:
void setup() { pinMode(13, OUTPUT); } void loop() { long soma = 0; int valor; for (int i = 0; i < 100; i++) soma += analogRead (A0); valor = (int) (soma / 100L); if (valor > 600) digitalWrite(13, HIGH); // liga o LED else digitalWrite(13, LOW); // apaga o LED }
Um comentário:
Tudo o que eu precisava. Simples, direto, eficaz.
Muito facil de adaptar ao que precisei.
Parabéns e muito obrigado. Sou seu fã agora.
Postar um comentário