Todo mundo sabe sobre sistemas de coordenadas por satélite. Eles também informam a velocidade e a hora atual. Com base nesses sistemas, servidores de hora exata são construídos, que já foram mencionados muitas vezes aqui, e não apenas aqui. A precisão desses sistemas está aumentando, o preço está caindo, enfim, o progresso não está parado. Parece que recentemente era uma questão de milissegundos e agora os microssegundos não surpreendem ninguém. E o dia não está longe quando ...
Honestamente, este dia já chegou para mim. Há pouco tempo, deparei-me com a informação de que um dos fabricantes de seus módulos promete uma precisão do intervalo do sinal de saída do PPS da ordem de dezenas de nanossegundos.
Em outras palavras, um segundo padrão apareceu com uma precisão muito decente. É verdade que nem sempre está à mão e geralmente depende de circunstâncias externas, mas você pode obter condições favoráveis e obtê-lo. E, o mais importante, como se copiar.
Apenas no caso, observei como estão as coisas com outros fabricantes de produtos similares e descobri as mesmas especificações técnicas. "Tendência, no entanto", um pensamento passou pela minha mente, aproximadamente, como o de Shtirlits. Era necessário fazer alguma coisa.
Aqueles leitores que sabem como soldar um resistor de uma placa de circuito impresso ou como soldar um microcircuito e até sabem como fazê-lo, concordam mentalmente comigo que ter um medidor de frequência que garanta precisão de 7 a 8 dígitos em casa nunca será prejudicial. Especialmente se ocupar pouco espaço e você não precisar emprestar muito dinheiro para comprá-lo. E aqueles que não gostam de parar de pensar podem pensar em um relógio que é confundido por alguns segundos por ano (no sétimo dígito, Clara). Os fãs de radiocomunicação amadora provavelmente lembrarão o design de um bom filtro caseiro de banda estreita em ressonadores de quartzo.
A primeira coisa a fazer foi encontrar o hardware certo. Gostei da placa de avaliação simples com um pequeno módulo Teseo-LIV3F de uma empresa conhecida. Abaixo está como ela é.

Essa coisa é vendida com uma antena ativa remota, que pode ser instalada mais próxima da janela para que os satélites possam "ver" bem. Jumpers são colocados no quadro, conforme necessário, para contarmos mais histórias e ter uma programação bem-sucedida. A foto também contém melhorias nos circuitos na forma de um único diodo com boa velocidade.
O esquema de melhorias será mostrado abaixo. O fabricante desde que esta placa possa ser inserida em uma placa de avaliação Nucleo adequada com um microcontrolador a bordo (na verdade, esses são conectores para o Arduino, mas não quero deixar com 32 bits). Na descrição do módulo GPS / GNSS, encontrei o seguinte.

Isso é muito bom e pode servir como uma primeira aproximação a um bom contador de frequência. Agora tenho um segundo intervalo muito preciso e posso calcular a frequência das oscilações, por exemplo, do meu próprio oscilador de cristal controlado termostaticamente. E até, talvez, ajustá-lo na direção necessária para si. Provavelmente será mais tarde. Enquanto isso, eu queria medir as frequências dos ressonadores de quartzo acumulados na economia.
Uma placa da série Nucleo adequada é construída sobre o STM32L476RG. Ele vem sem um ressonador de quartzo (o relógio não conta). Abaixo da foto mostra as setas onde os elementos ausentes tiveram que ser soldados.

Esta opção de placa é selecionada por três razões. Primeiro, o gerador de microcontrolador com um ressonador externo opera de 4 a 48 MHz. Nem todas as placas de microcontrolador Nucleo têm essas tolerâncias. Executaremos este gerador com nosso quartzo. Segundo, a porta serial (UART) pode ser gerada com clock de um gerador RC interno separado com precisão de 1% a uma frequência de 16 MHz. Portanto, não será necessário alterar as configurações e os divisores na configuração UART com uma alteração na frequência do gerador externo. E o mais importante, é fornecido um local para montagem na parede para o ressonador de quartzo, onde você pode instalar os conectores para não soldar o próximo ressonador de cada vez.
A porta serial já está conectada à porta USB virtual no depurador integrado. Então você pode usar o emulador de terminal para exibir informações. Depois de finalizar e instalar duas sucatas para o quartzo do conector da pinça, a placa fica da seguinte maneira.

Agora precisamos iniciar o cronômetro por exatamente um segundo e ele contará os pulsos do relógio do sistema, ou seja, a frequência do nosso ressonador de quartzo. Felizmente, o temporizador fornece um modo no qual é redefinido simultaneamente e inicia a partir da borda ascendente do pulso externo.
Eu imediatamente quis fazer isso para não fazer a média de alguns segundos de medições, mas para medir a frequência em dez segundos, ou seja, com mais precisão. Para isso, era necessário adicionar um diodo ao circuito e apoiar essa ideia programaticamente. O refinamento do circuito é mostrado abaixo.

Os diagramas a seguir mostram como fazer um intervalo de dez segundos a partir de um segundo.

O sinal PPS é fornecido ao temporizador através de um diodo e diretamente à entrada de interrupção externa adicional. Na interrupção do timer, é permitida uma interrupção externa que, contando até dez, se proíbe e altera o resistor de pull-up de cima para baixo.
As setas vermelhas indicam os momentos da operação de interrupção do timer e o verde indica os momentos do início da interrupção externa, segundo os quais os segundos intervalos necessários são considerados. Azul mostra resistores de pull-up on-off. O projeto foi feito no IAR e você pode vê-lo aqui . A foto abaixo mostra o resultado do programa do controlador em conjunto com o emulador de terminal, que mostra o estado estacionário.

Para ver o gráfico, e não as linhas secas dos valores de frequência, tive que compor um pequeno utilitário para o Windows. Sua carcaça está no mesmo local que o projeto do firmware.
Todas as experiências foram realizadas de acordo com o mesmo cenário. Antes das medições, o quadro era deixado por quinze a vinte minutos na geladeira, onde ficava um pouco abaixo de zero. Em seguida, foi naturalmente aquecido à temperatura ambiente por meia hora. Em seguida, o painel e o ressonador receberam ar quente do secador por vários minutos (aqui as mesmas condições não funcionaram).
Bons ressonadores se comportaram bem, isto é, de acordo com a dependência da temperatura do corte AT do cristal. Esses gráficos (ou várias cópias?) São fáceis de encontrar na rede. Os resultados das medições de três ressonadores a 16 MHz são mostrados abaixo.

Depois, descobriu-se que há exceções à imagem usual do comportamento. Os dados abaixo mostram dois cristais de quartzo do mesmo tipo e, provavelmente, da mesma origem, que se comportaram de maneira diferente.

No ressonador, que se comporta como de costume, eu apenas respirei um pouco, e o segundo decidiu aquecer mais, porque se mostrava diferente. Quão fácil é ver a dependência de temperatura dele ou mudar, ou apenas outra.
Outra observação interessante. Após a exposição à temperatura, o ressonador não retorna aos valores de frequência anteriores ou não tive paciência para esperar. De qualquer forma, não importa se você não se importa com os sinais após o sexto.
Aqui está outra observação. Este é o mesmo ressonador, que teve que ser medido duas vezes, porque causou surpresa. Ainda não encontrei uma explicação para esse comportamento e ainda não consegui.

Seria útil remover a dependência da temperatura individual da frequência para um ressonador individual. Em seguida, você pode criar um gerador altamente estável de segundos intervalos, usando um bom sensor de temperatura e conhecendo a curva de temperatura do ressonador. No entanto, isso já exigirá uma câmara de calor. Gostaria de saber quais sensores de temperatura podem ser considerados bons hoje?