Boa noite pessoal.

Hoje precisei de um frequencímetro, e como não tinha um, resolvi desenvolver um

projeto de um.

Depois de apanhar um pouco cheguei a um modelo que me atende.

Mas não sei se ele tem boa precisão.

Tentei comparar os valores com o osciloscópico, mas o meu não ajuda muito.

Então resolvi disponibilizar o sketch aqui, e se alguém que tenha um frequencímetro tiver a 

paciência de montar este aqui e comparar com o seu eu agradeceria.

De qualquer forma fica aqui um projeto de um frequencímetro para Arduíno (UNO/MEGA/Mini).

Pretendo modifica-lo para funcionar no ESP8266 e no ESP32.

RV

Frequencimetro8.ino

Exibições: 4319

Responder esta

Respostas a este tópico

Bom dia Rui, 

Se achar mais simples, após abrir o oscilador, retire o cristal e solde dois fios para serem ligados em um Protoboard. E nesses fios conecte os cristal a ser testado. 

Abraços,

Gustavo 

Rui boa noite, 

Corrigindo. 

O circuito oscilador a cristal funciona melhor com 4 V do que com 3,3V.

Portanto alimente-o com 5V e em série insira um diodo para a tensão cair para 4,2V aproximadamente.

Assim a saída do oscilador vai ser 3,3V. 

Galera, errei no diagrama.

O capacitor C3 deve ser conectado no pino 3 e não no pino4.

Você me perguntou sobre o algortimo do programa do Oscilador. 

As informações estão nos links que eu sempre cito no início do programa. 

Por isso,acho importante citar esses links. 

// Based on https://portal.vidadesilicio.com.br/controle-de-potencia-via-pwm-es...
// https://randomnerdtutorials.com/esp32-pwm-arduino-ide/
// https://techtutorialsx.com/2017/06/15/esp32-arduino-led-pwm-fading/

// Reference https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/...
// https://docs.espressif.com/projects/esp-idf/en/latest/api-reference...

Bom dia José Gustavo Abreu Murta,

o arquivo do link:

// Reference https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/...

existe na sua maquina em:

C:\Users\SEU_PC\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32

RV

Rui boa tarde, 

Eu prefiro sempre acessar no GitHub, pois se houver alguma atualização ou correção será mais rápida. 

Eu também gosto do formato da visualização. 

Abraços, 

Gustavo 

(to aqui, só de olho)

Boa tarde TM,

para ESP32 rodando na IDE do Arduíno já está pronto.

Agora estamos trabalhando na versão para rodar na IDF-ESP.

RV

Rui, 

Fiz inúmeros testes e achei que os resultados ficaram  mais estáveis desse modo. 

Para ter certeza qual rotina mede com mais precisão, só se a gente conseguir um frequencímetro para aferirmos. 

static void IRAM_ATTR pcnt_intr_handler(void *arg) // Overflow de contagem de pulsos
{
  portENTER_CRITICAL_ISR(&timerMux); // Desabilita interrupção ?
  multPulses++; // Incrementa contador de overflow
  PCNT.int_clr.val = BIT(PCNT_COUNT_UNIT); // Limpa indicador de interrupt
  portEXIT_CRITICAL_ISR(&timerMux); // Libera novo interrupt
}

Depois da décima medição, o valor praticamente não é alterado. 

Estou testando com os meus cristais! 

Precisão de 5 casas decimais! Caraca! 

Rui, 

Depois de testar aproximadamente uns 30 cristais, baseando-me na frequência medida com o meu Scope TEK TBS1062. 

Mudei a janela para 999.999. 

Se o high precision timer começa do Zero, para contar um milhão de pulsos, ele tem que contar até 999.999.

Concorda? 

24.000.860 Hz
24.000.860 Hz
24.000.860 Hz
24.000.860 Hz

Scope 24,00008 MHz Bom demais!  Cinco casas decimais! 

Boa tarde pessoal,

mais um avanço no frequencímetro.

Ele pode ser compilado agora, tanto na IDE do Arduíno, quanto na IDF-ESP.

Não precisa de seleciona nada, é automático.

Para Arduíno tem a opção de LCD ou LCD_I2C, mas ainda não consegui LCD e LCD I2C para IDF

Fiz uso da GPIO Matrix para também direcionar o pulso que entra para o LED do ESP.

   O LED do ESP pisca na frequência do pulso de entrada.

No inicio do sketch tem uma descrição completa do projeto.

Importante. Para funcionar precisa de um jumper entre os GPIOS  de controle do pcnt.

                     No sketch estes GPIOS são 32 e 35, mas podem ser alterados.

                     Mas cuidado, tem GPIOS no ESP que só podem ser configurados como entrada.

A entrada do frequencímetro está definida para o GPIO 34, mas pode ser alterado.

Existe também no projeto um oscilador que pode ser usado para teste do frequencímetro.

                     No sketch a saída do oscilador está definido com 25 e pode ser alterado.

                     Pode ligar a saída deste oscilador na entrada do contador para teste 

                     A frequência do oscilador pode ser alterada digitando o novo valor na serial, mas lembre-se 

                     que se estiver usando o serial monitor do Arduíno, a opção, (Ambos, NL e CR),

                    ( Both NL & CR), tem que estar ativa.

Agradecemos  comentários e correções.

Sketch em https://pastebin.com/fnVWFQf6

PS: A digitação do valor da frequência por enquanto só funciona se compilado na IDE do arduino.

RV

Sensacional RV !!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço