Básico - Projeto 36a

Controlando um sonorizador piezoelétrico sem a função tone()

Objetivo

Neste projeto vamos apresentar um circuito onde é possível controlar a frequência de um sonorizador piezoelétrico (buzzer ou disco piezoelétrico) através de um potenciômetro. Neste exemplo, diferente do projeto 36, não iremos utilizar o conceito tone() para gerar sons, e o sonorizador deverá estar conectado à uma porta digital do Arduino sem precisarmos do recurso PWM (Pulse Width Modulation).

Disco Piezoelétrico: Um disco piezoelétrico funciona quando uma corrente elétrica passa pelo material cerâmico do disco, fazendo com que ele mude de forma e produza um som. O disco também funciona de forma inversa: quando se bate nele ou ele sofre algum tipo de pressão, a força no material provoca a geração de uma corrente elétrica. Para saber mais, leia: https://pt.wikipedia.org/wiki/Piezoeletricidade e Transdutor Piezoelétrico.

Resultado de imagem para disco piezo elétrico com fio

Buzzer: Nada mais é do que um transdutor piezoelétrico encapsulado.

Obs.: O buzzer e o disco são sonorizadores piezoelétricos. Quando se aplica um sinal elétrico e um determinada frequência, o dispositivo piezoelétrico produz uma nota musical. As notas variam de acordo com a frequência utilizada. (O ouvido humano pode ouvir sons nas frequências entre 20 e 20.000 Hz).

Aplicação

Para fins didáticos e criação de sons com arduino.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos

Comprar

1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 830 pontos

Jumpers Kit cabos ligação macho / macho

Comprar

1  
Buzzer

Buzzer ativo 5V 12mm

Comprar

1

Utilize um buzzer ou um disco piezoelétrico

Potenciômetro

Potenciômetro 10K

Comprar


 

1 Resultado de imagem para potenciômetro

O valor do potenciômetro aumenta quando giramos o eixo do componente na direção do polo negativo para o polo positivo.

Arduino UNO R3 Arduino UNO Original

Comprar

 

Arduino UNO Similar

Comprar


 

1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito. Neste projeto você poderá utilizar um buzzer ou um disco piezoelétrico na montagem do circuito. Se possível, teste com os dois componentes.

 


Atenção

1) O buzzer tem polaridade. Portando, cuidado para não ligar o buzzer invertido. Se você retirar o adesivo superior do buzzzer poderá ver um sinal de positivo (+). Este sinal mostra onde está o pino positivo do componente que deverá estar conectado ao potenciômetro (neste projeto) ou a uma porta digital do Arduino e o polo negativo ao GND.

2) Observe que nesse projeto o potenciômetro foi montado como um divisor de tensão, onde utilizamos os 3 terminais do componente:

Veja a montagem do nosso projeto abaixo:

Desta forma o potenciômetro funciona como um divisor de tensão que pode ser lido pelo IDE do Arduino. Girando o eixo no sentido horário (da saída do arduino para a entrada do buzzer) aumentaremos o valor, e ao contrário, diminuímos o volume do som. Isto acontece pois girando o eixo do potenciômetro aumentaremos ou diminuímos a tensão na entrada da porta analógica do Arduino, variando de 0 a 5V. Para saber mais sobre a diferença entre potenciômetro e reostato leia o tutorial: Potenciômetro ou reostato: qual a diferença?

3) A montagem do nosso projeto foi realizada em um protoboard com linhas de alimentação não contínuas, onde acrescentamos jampers para a ligação. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas - saiba mais em protoboard

Observação: No exemplo acima, utilizamos um buzzer. Você poderá substituir o buzzer por um disco piezoelétrico para ter um efeito semelhante. O cabo vermelho (positivo) deverá estar conectado ao Arduino e o cabo preto (negativo) conectado ao GND (ground).

Código do Projeto (Sketch)

1) Faça o dowload e abra o arquivo projeto36a.ino no IDE do Arduino:

Ou se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*    Projeto 36a - Controlando frequência de um sonorizador sem tone()
*                   http://squids.com.br/arduino
*
*******************************************************************************/

const int pinPot = A5; // Indica a porta analógica ligada ao potenciômetro
const int pinBuzzer = 8; // Indica a porta digital ligada ao buzzer

void setup(){
  pinMode(pinBuzzer, OUTPUT);
  pinMode(pinPot, INPUT); // Por padrão porta analógica já é INPUT 
}

void loop(){
  
  int potValue = analogRead(pinPot); // Lê valores no potenciômetro
  int frequencia = map(potValue, 0, 1024, 2500, 0); //define valores de frequência

  digitalWrite(pinBuzzer, 1);  //onda quadrada (50%) - estado lógico HIGH
  delayMicroseconds(frequencia);   // micro segundos

  digitalWrite(pinBuzzer, 0);     //onda quadrada (50%) - estado lógio LOW
  delayMicroseconds(frequencia);    
     
} 

Observação: Os valores mínimo e máximo de frequência podem ser alterados a vontade. Por exemplo, você poderá utilizar valores das notas musicais de diversas escalas. Veja tabela de notas musicais.

Vídeo

Como o projeto deve funcionar

1. Ao iniciar o programa, você poderá controlar a frequência gerada em um buzzer através do potenciômetro.

2. Girando o eixo do potenciômetro para o lado conectado no polo positivo (5V) o valor da frequência no buzzer aumentará. Já ao contrário, girando o eixo para o lado negativo (GND) o valor da frequência diminuirá.

Gerar sons em um dispositivo piezoelétrico

1. Neste projeto não vamos utilizar a função tone(pin, frequência, duração) para gerar sons em um sonorizador piezoelétrico.

2. Portanto, para criarmos um onda quadrada de cerca de 50%, vamos utilizar um truque onde ligamos e desligamos o buzzer em frações de microsegundos (delayMicroseconds), conforme mostra padrão abaixo:

  digitalWrite(pinBuzzer, 1);  //onda quadrada (50%) - estado lógico HIGH
  delayMicroseconds(frequencia);   // micro segundos

  digitalWrite(pinBuzzer, 0);     //onda quadrada (50%) - estado lógio LOW
  delayMicroseconds(frequencia); 

Desta forma, para gerarmos um tom,  criamos uma onda quadrada de cerca de 50% no estado lógico HIGH e 50% no estado lógico LOW, onde podemos definir que:

. A frequência será inversamente proporcional ao valor dado pela variável frequencia, ou seja, quanto maior o tempo em micro segundos, menor a frequência gerada no buzzer.

. Apenas um tom pode ser gerado por vez.

 

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Compartilhe:

Doações

Contribua pra manter o site online :)

Inscreva-se no canal Squids

Você está preparado?

Squids Arduino News

Desafio 82 - Projeto 92 Relógio digital com temperatura, umidade e datas Com base no projeto Projeto 92 - Criando um relógio digital com OLED SSD1306, módulo DS3231 e Arduino resolva os seguin...

Básico - Projeto 92 Criando um relógio digital com Oled SSD1306 - bibliotecas Adafruit Objetivo O objetivo neste projeto é criar um relógio digital usando um display OLED junto com o Real Time ...

Desafio 81 - Projeto I09 Controlando 2 motores com driver L9110s (menu via display LCD) Com base no projeto I09 - Motores DC com Driver Ponte H L9110 e Arduino - Controle de 4 velocidades pelo ...

Intermediário - Projeto 09 Motores DC com driver ponte H L9110s e Arduino - 4 velocidades Objetivo Neste tutorial vamos mostrar como controlar a velocidade de 2 motores CC (corrente contínua) a...

Básico - Hub 008 Usar o módulo display 4 dígitos 74HC595   Sugerido por: Tim Santos Objetivo O objetivo é adaptar o  Projeto 63 - Usando o módulo TM1637 (display 4 dígitos) com Arduino e u...

Outros artigos

Mais: Desafios Projetos Básicos Projetos Intermediários Básico

Topo