Objetivo

Para quem trabalha e faz projetos com eletrônica, é comum se deparar com situações em que se faz necessário tomar conhecimento da frequência de saída de um componente, para isso o recomendado é a utilização de um osciloscópio, que vai indicar a frequência e apresentar o gráfico da mesma. Só que temos conhecimento de que comprar um osciloscópio não é uma opção viável para todo mundo devido ao seu alto custo. Com a finalidade de deixar a eletrônica mais inclusiva e abrangente, eu fiz buscas por outras formas de medir a frequência e encontrei uma alternativa que compartilharei com vocês. Esse tutorial será dividido nos seguintes tópicos:

Clique em algum tópico para ir direto ao título.

   

Materiais

01- Placa Arduino (pode ser UNO, Leonardo ou Mega)

01- Kit de Jumpers

Além do componente ou placa que será o alvo da medição.



O que é Frequência?

De forma simples, a frequência é o número de vezes em que algo se repete durante um período de tempo. A frequência é representada pela letra f e a sua unidade de medida é em Hertz (Hz), contabilizamos a repetição de uma onda por ciclos, abaixo temos a representação de um ciclo.

onda senoidal

Quando alguém diz que a frequência no Brasil é de 60Hz, essa pessoa está querendo dizer que a cada 1 segundo, há 60 desses ciclos.

Agora que você tem uma breve definição da frequência, vamos iniciar o nosso exemplo de medição.



Bibliotecas para medição de Frequência

Eu encontrei duas bibliotecas destinadas à medição: a FreqCont e a FreqMeasure, abaixo será explanada a diferença de ambas para que você escolha a que mais se adapta a sua necessidade.

-FreqCount

A biblioteca FreqCount é melhor para medições de 1KHz a 8MHz, sendo que a mesma mede o número de ciclos durante um período, funcionando  muito bem para medições de frequências relativamente altas.

Cada placa terá um pino específico que fará a medição da frequência, abaixo está uma tabela do pino para algumas placas.

pino de frequência do arduino FreqCount

-FreqMeasure

A biblioteca FreqMeasure é melhor para medições de 0,1Hz a 1KHz, medindo o tempo de cada ciclo para assim calcular os ciclos em um período.

Assim como a biblioteca anterior, essa biblioteca faz medições em pinos específicos, estes são:

pino de frequência do arduino FreqMeasure

Esses são os links para baixar cada uma das bibliotecas:

FreqCont

FreqMeasure

Para baixar as bibliotecas e instalar na sua IDE você precisa realizar os seguintes procedimentos:

Ao abrir o site, clique em code > Download Zip

Em seguida, abra a sua IDE e vá em Sketch> Incluir Biblioteca > Adicionar biblioteca .ZIP, selecione o arquivo .ZIP e confirme para transferir o arquivo.

 

Como medir a Frequência com a IDE do Arduino

Depois de baixar as bibliotecas ou a biblioteca, olhe os exemplos em:

Arquivos > Exemplos > FreqCount

 Biblioteca FreqCount

 

Arquivos > Exemplos > FreqMeasure

Biblioteca FreqMeasure

 

Note que as bibliotecas contam com os exemplos para visualização da medição no Monitor Serial (Serial_Output), e para a visualização em um display LCD (LCD_Output), é possível notar também um exemplo disponível apenas na biblioteca FreqCount (Serial_Output_T4), esse exemplo é destinado para a placa do tipo Teensy 4.0.

Realizando as medições com o Arduino

Para realizar as medições, eu vou utilizar um Arduino Mega. Como “cobaia” de medição, eu utilizarei as portas analógicas de um Arduino Uno, lembrando que você pode utilizar a saída de qualquer outra placa ou componente para testes, se for o caso você pode pular essa parte.

Tabela retirada do site oficial do Arduino: https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/

 

De acordo com a tabela acima, o Arduino Uno tem frequência de 490Hz nas portas analógicas 3, 9, 10 e 11 e 980Hz nas portas 5 e 6, então eu vou medir a frequência em ambas as saídas e verificar se os valores medidos são condizentes com os valores teóricos.

Eu elaborei um programa simples para carregar no Arduino Uno e acionar as portas: 10 (com 490Hz) e 5 (com 980Hz).

 

/*Programa básico para teste de frequência
    Autoria: Curto Circuito  */

int menor_frequencia = 10/*definição do pino 10 com o nome menor_frequencia */

int maior_frequencia = 5;                    /* definição do pino 5 com o nome maior_frequencia */

void setup() {                               /* laço de configuração */

  pinMode(menor_frequencia, OUTPUT);         /* define o pino menor_frequencia como saída */

  pinMode(maior_frequencia, OUTPUT);         /* define o pino maior_frequencia como saída */

}

void loop() {                                /* laço de repetição */

    analogWrite(menor_frequencia, HIGH);     /* Escreve o nível logico alto no pino menor_frequencia */

    analogWrite(maior_frequencia, HIGH);     /* Escreve o nível lógico alto no pino maior_frequencia  */

}

 

Depois de compilar o programa, eu vou abrir o exemplo para a medição de frequência no monitor serial.

 

Programa de medição de frequência

Para esse teste eu usarei o programa FreqCount. Na IDE, vá em Arquivos> Exemplos > FreqCount> Serial_Output e compile na sua placa Arduino após fazer as configurações de escolha de placa e porta.

 

/*Programa: FreqCount

 *Comentado:  Curto Circuito

 *Autoria: http://www.pjrc.com/teensy/td_libs_FreqCount.html*/


#include <FreqCount.h>                      /* inclui a biblioteca FreqCount */


void setup() {                              /*laço de configuração */

  Serial.begin(57600);                      /* baud rate */

  FreqCount.begin(1000);                    /* inicia a contagem da frequência */

}



void loop() {                               /* laço de repetição */

  if (FreqCount.available()) {              /* Retorna verdadeiro quando há uma nova medição */

    unsigned long count = FreqCount.read(); /* Retorna a medição mais recente de um número inteiro e sem sinal */

    Serial.println(count);                  /* printa a medição */

  }

}

 

Ao terminar de compilar esse programa, eu finalmente vou medir as frequências do meu Arduino cobaia ligando a saída 10 no 47 do Arduino Mega (de acordo com a tabela dos pinos responsáveis pela medição de cada placa), e depois a saída 5 no 47.

Abra o monitor serial e selecione o Baud rate para 57600

baud rate 57600

Ao ligar no pino 10, eu obtive os seguintes resultados:

 

E depois de mudar para a saída 5

frequência pino 5 arduino

 

Conclusão

Comparando as medições com os valores teóricos, os resultados estão de acordo, na saída de 490Hz obtivemos valores entre 490 e 491Hz, e na que deveríamos ter o valor de 980Hz, o valor foi de 976 e 977Hz, sendo próximo ao valor nominal. Isso demonstra que esse programa cumpre o prometido e fornece medições precisas, lembrando que o fato da frequência na saída 5 não ser de 980Hz exatamente, não apresenta uma falha no programa, pois as placas e componentes não são ideais.
Esse teste foi uma medição da frequência da placa Arduino Uno, mas você pode medir quaisquer componentes que gerem uma frequência.

Boa sorte com as suas medições e até um próximo tutorial ;)

Abraços, Curto Circuito.