Medindo a intensidade do som com o sensor KY-038

Aqui no blog eu já tive a oportunidade de testar um sensor de som com microfone, e hoje vou testar o módulo Sensor de Som KY-038 com Arduino, um módulo muito parecido com o anterior.

Medindo a intensidade do som com o sensor KY-038

Vamos dar uma olhada nesse módulo.

O módulo sensor de som KY-038

sensor de som KY-038 com microfone é uma versão mais atualizada do módulo, agora com o chip LM393. O princípio de funcionamento é simples: ao detectar som, o microfone varia a tensão na saída analógica A0, e também aciona a saída digital D0conforme a regulagem do potenciômetro presente no módulo.

A alimentação do módulo vai de 4 à 6VDC, e ele possui dois leds indicadores: um que mostra se o módulo está ligado, e o outro que acende quando a saída digital estiver en nível alto (HIGH).

Conexão do módulo sensor de som KY-038 ao Arduino

Para testar o módulo sensor de som vamos utilizar um circuito com 3 leds, que vão acender conforme a intensidade do som. Conforme o som captado pelo microfone, serão acesos primeiro o verde (baixa intensidade), depois o amarelo (intensidade média), e por fim o vermelho (intensidade alta).

Os resistores são usados para limitar a corrente sobre os leds, e no nosso circuito usamos 3 resistores de 330 ohms.

Programa medidor de intensidade de som

No nosso programa vamos utilizar o sinal da entrada analógica A5 do Arduino (ligado ao pino A0 do módulo). Quando o pino A0 for acionado, os leds correspondentes serão acesos.

Vamos ler o valor dessa entrada (que estará entre 0 e 1023), e testar, com três comandos IF (linhas 37, 44 e 51), qual é o nível de sinal que foi detectado pelo microfone.

//Programa: Sensor de som KY-038
//Autor: Arduino e Cia

//Definicao pinos leds
int pinoled_ver = 3;
int pinoled_ama = 4;
int pinoled_verm = 5;

//Definicao pinos sensor
int pino_analogico = A5;
int pino_digital = 7;

int valor_A0 = 0;
int valor_D = 0;

void setup()
{
  Serial.begin(9600);
  //Define pinos led como saida
  pinMode(pinoled_ver, OUTPUT);
  pinMode(pinoled_ama, OUTPUT);
  pinMode(pinoled_verm, OUTPUT);
  //Define pinos sensor como entrada
  pinMode(pino_analogico, INPUT);
  pinMode(pino_digital, INPUT);
}

void loop()
{
  valor_A0 = analogRead(pino_analogico);
  valor_D = digitalRead(pino_digital);
  Serial.print("Saida A0: ");
  Serial.print(valor_A0);
  Serial.print(" Saida D0: ");
  Serial.println(valor_D);
  //Intensidade baixa
  if (valor_A0 > 20 && valor_A0 < 300)
  {
    digitalWrite(pinoled_ver, HIGH);
    digitalWrite(pinoled_ama, LOW);
    digitalWrite(pinoled_verm, LOW);
  }
  //Intensidade media
  if (valor_A0 > 301 && valor_A0 < 700)
  {
    digitalWrite(pinoled_ver, HIGH);
    digitalWrite(pinoled_ama, HIGH);
    digitalWrite(pinoled_verm, LOW);
  }
  //Intensidade alta
  if (valor_A0 > 701)
  {
    digitalWrite(pinoled_ver, HIGH);
    digitalWrite(pinoled_ama, HIGH);
    digitalWrite(pinoled_verm, HIGH);
  }
  delay(50);
  //Apaga todos os leds
  digitalWrite(pinoled_ver, LOW);
  digitalWrite(pinoled_ama, LOW);
  digitalWrite(pinoled_verm, LOW);
}

Os valores também são mostrados no serial monitor, e você pode usar essa informação para verificar se o módulo está funcionando corretamente:

No serial monitor também é mostrado o valor da porta 7, onde está ligada a saída digital (D0). Configure a sensibilidade ajustando o potenciômetro do módulo.

Gostou do post do sensor de som KY-038 com Arduino? Confira outros posts com módulos para Arduino aqui mesmo no blog!

5/5 - (2 votos)

Related posts

RTC Arduino com LCD 16×2 e números grandes

by Arduino e Cia
12 anos ago

Como funciona o conversor de nível lógico bidirecional

by Arduino e Cia
9 anos ago

Como utilizar um encoder rotativo com Arduino

by Arduino e Cia
9 anos ago
Sair da versão mobile