Tutoriais

Frequencímetro com Arduino

Eletrogate 24 de outubro de 20235

Frequencímetro com Arduino

O frequencímetro é um dispositivo usado para medir a frequência de um sinal periódico. No contexto do Arduino, podemos criar um frequencímetro simples usando um sensor de pulso para medir a frequência de um sinal gerado por outro Arduino. Neste tutorial, vamos explicar o que é um frequencímetro, como ele funciona, a fórmula para calcular Hertz (Hz) e demonstrar um projeto básico de frequencímetro com Arduino. 


O Que é um Frequencímetro? 

Um frequencímetro é um dispositivo eletrônico projetado para medir a frequência de um sinal periódico, ou seja, o número de ciclos ou pulsos que ocorrem em um segundo. A frequência é medida em Hertz (Hz), onde 1 Hz equivale a um ciclo por segundo. Os frequencímetros são amplamente utilizados em eletrônica, engenharia, telecomunicações e ciência para medir a frequência de sinais, como sinais de áudio, sinais de RF (rádio frequência) e muito mais. Eles são essenciais para a depuração, análise e monitoramento de sistemas elétricos e eletrônicos. 


Como Funciona um Frequencímetro? 

O funcionamento de um frequencímetro baseia-se na medição da quantidade de ciclos ou pulsos no período de um segundo. A fórmula básica para calcular a frequência (f) a partir da quantidade (n) de ciclos em um período (Δt) é: 

f =n /Δ t

onde: 

f é a frequência em Hertz (Hz). 

Δ t é o intervalo de tempo em (segundos). 

n é o número de oscilações ocorridas em T  

Ou seja, os Hertz são o mesmo que oscilações por segundo.


Funcionamento

Para medir a frequência, um frequencímetro inicia um contador de tempo quando um pulso do sinal inicia e para o contador quando o próximo pulso inicia. O tempo decorrido (Δt) é então usado na fórmula para calcular a frequência. A fórmula usada é a seguinte:

f= 1/Δ t

A única diferença da anterior é que já sabemos a quantidade de pulsos (1), e o valor alterado é apenas Δt (intervalo de tempo), que será dito pela função pulseIn.


Projeto de Frequencímetro com Arduino

Vamos criar um projeto de frequencímetro com Arduino, usando um Arduino Nano, para medir a frequência gerada por um Arduino Uno R3. 


Circuitos

Gerador:

O pino lilás é o terminal das ondas.

Frequencímetro:

Para usar o sistema apenas para ler as frequências, é só conectar uma fonte de oscilações elétricas ao pino digital n.º 6, lembrando que não se deve conectar tensões maiores que 5 V aos pinos de entrada ou saída do Arduino Uno, pois isso pode danificar ou queimar o microcontrolador. É importante conectar os GNDs quando for usado para medir frequências de outras fontes (que não ultrapasse 5V) ou quando for usar os Arduinos em diferentes fontes ex; baterias e fontes diferentes. No mesmo computador, com referência comum pelo USB, não é necessário a conexão entre GNDs dos Arduinos.

Gerador + Frequencímetro: 

OBS: Os pinos digitais n°6 dos Arduinos devem estar conectados entre si para o funcionamento correto.

Esse é o circuito que desenvolveremos a seguir.


Códigos

Gerador: 

int HZ; 
void setup() { 
Serial.begin(9600); // inicia o serial pinMode(A0, INPUT); //define o pino A0 como entrada 
pinMode(6, OUTPUT); //define o pino 6 como saída
}

 void loop() { 
HZ = map(analogRead(A0), 0, 1023, 31, 10000); // define a variável HZ de 0 a 10000 (mesmo valor que limita a leitura analógica do potenciômetro 0 a 1023) 
Serial.println(HZ); //imprime a variável HZ 
tone(6, HZ); //ativa o pino 6 com a frequência de HZ
}

Explicação:

O código no bloco setup é executado uma vez quando o Arduino é ligado ou resetado. Basicamente ele configura a comunicação serial a uma taxa de 9600 bauds. Define o pino A0 como uma entrada para ler um sinal analógico (potenciômetro). Configura o pino 6 como saída para gerar as frequências. 

O código no bloco loop é executado repetidamente após a configuração inicial. Basicamente lê um valor analógico do pino A0 (varia de 0 a 1023) e o mapeia para um valor entre 0 e 10000. Define a frequência no pino 6 com base no valor mapeado em A0. Imprime o valor de HZ (frequência no pino 6) no monitor serial. 

Frequencímetro: 

long leitura; // cria a variável tipo long

void setup()
{
  Serial.begin(9600); //inicia o serial
  pinMode(6, INPUT); // define o pino 6 como entrada
}

void loop()
{
  leitura = (1000000/pulseIn(6, HIGH, 1000000)/2); //define a variável long como o valor de pulseIn(o tempo que o pino 6 fica ativo, obs: esse leitura passa pela fórmula de Hertz)
  delay(200);// após a definição da variável como Hz, aguarda 200 ms
  Serial.print("Frequência (Hz): "); //escreve no monitor serial
  Serial.println(leitura); //escreve o valor de leitura, que é em hertz
}

Explicação: 

O void setup configura a comunicação serial como baud-rate 9600 e define o pino 6 como entrada de energia ou dados.  

No void loop: 

leitura = (1000000/pulseIn(6, HIGH, 1000000)/2);

Esta linha define a variável (leitura) com o valor da função pulseIn para medir a duração de um pulso no pino 6 enquanto o nível do sinal é HIGH (dentro do período de um Segundo que equivale a 1000000 microssegundos), depois divide esse valor por 2, para encontrar o tempo de duração de metade do um ciclo desse sinal, que corresponde a um ciclo completo (um período) da onda produzida pela função tone do Arduino gerador. Para medir frequências de outras fontes, você pode tirar a divisão por 2.

A função pulseIn mede o tempo que um pino leva para fazer a transição de LOW para HIGH e retornar para LOW (ou o tempo que o pino fica no estado HIGH) . Essa função substitui o Δ t na fórmula. O número de oscilações sabemos que são 1, pois pulseIn mede o tempo de uma oscilação.

1s = 1000 ms = 1000000 µs

Resumindo, este código configura o pino 6 como entrada e mede a duração de um pulso que é aplicado a esse pino. A duração do pulso é então impressa no monitor serial, adicionada à fórmula de Hz, e depois exibe uma variável como uma frequência em Hertz.


Funcionamento do Projeto e Conclusões

À esquerda monitoramos o gerador de frequências elencado pelo Arduino UNO R3. À direita, monitoramos o frequencímetro, elencado pelo Arduino NANO. Para comprovar o valor lido do pulso a 10000 Hz, podemos observar em que ambos há o mesmo valor (aproximado) da frequência, fica ainda mais claro ao chegar em 31.

O valor mínimo de 31 Hz foi definido pelo criador da função tone(), então esse é o valor mínimo para gerar frequências com a função tone(). É possível contornar esse limite com o uso de delays variáveis pelo potenciômetro.


Sobre o Autor


Daniel Vasconcelos

Tenho 14 anos, meu primeiro contato com eletrônica foi aos 5 anos, e com o Arduino aos 12. Desde então venho explorando mais desse mundo incrível.


Eletrogate

24 de outubro de 2023

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!