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