Índice:

GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Exato: 3 etapas
GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Exato: 3 etapas

Vídeo: GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Exato: 3 etapas

Vídeo: GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Exato: 3 etapas
Vídeo: ePMP™ Ponto a Ponto webinar 2024, Julho
Anonim
GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Preciso
GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Preciso
GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Preciso
GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Preciso
GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Preciso
GPSDO YT, Disciplined Oscillator 10Mhz Reference Frequency. Baixo custo. Preciso

*******************************************************************************

STOP STOP STOP STOP STOP STOP STOP STOP STOP

Este é um projeto obsoleto.

Em vez disso, verifique minha nova versão de display LCD 2x16 disponível aqui:

www.instructables.com/id/GPSDO-YT-10-Mhz-L…

Deixei a versão antiga aqui para documentação.

*******************************************************************************

Oi, pessoal, O que é um GPSDO? GPSDO significa: oscilador disciplinado GPS. GPS para sistema de posicionamento global. Todos os satélites GPS são equipados com relógio atômico sincronizado. O módulo GPS recebe esses sinais de vários satélites. E por triangulação, ele sabe sua localização. Mas aqui o que nos interessa é o pulso por segundo que se encontra no módulo. Com este pulso preciso (do relógio atômico), podemos fazer um oscilador muito preciso. Pelo que ? Para referência, para calibração do contador de frequência ou apenas para diversão ter um em seu laboratório.

Eles são muitos esquemáticos na internet. Eu tentei alguns. Alguns são bons, um com um tiny2313 era 5 hertz lento demais. Mas o meu é o mais simples, útil e conveniente. E estou lhe dando o código.hex. Eles não são VCO e nem divisores. O circuito com VCO está indo bem. Porém, ele deve ter um sinal de pulso de 10 kHz ou mais continuamente. Se a antena ficar muito fraca, sem pulso ou sem pulso, o Oscillator (ocxo) está funcionando sozinho e o VFC (Voltage Frequency Control) não é mais preciso. O feedback VCO precisa da frequência de referência para se manter. Caso contrário, varia de 1 a 2 Hertz! Além disso, o módulo GPS mais barato não funciona nesta configuração. Devemos ter pelo menos 10 kHz para fazer um VCO. Tentei com 1000 hertz. A lacuna era muito grande. A frequência variava. Portanto, com um ublox neo-6m você não pode fazer um grande vco gpsdo porque a frequência máxima de saída é 1000Hz. Você deve comprar um neo-7m ou superior.

É assim que meu GPSDO YT funciona. O controlador encontrou um bom ajuste para qualquer OCXO com vfc 0 a 5v. Se perdermos o sinal de GPs, a frequência não se move. Quando o sinal reaparece, o controlador pega seu último valor bom conhecido e continua como antes. No escopo, com um oscilador de referência. Não podemos dizer quando o sinal foi perdido ou quando voltou. O sinal é o mesmo.

Após a calibração, você pode usar o gpsdo sem antena, se quiser. Algumas montagens depois, você terá uma pequena deriva. Mas…. quanto maior? É hora de alguma explicação.

Aqui está um pouco de matemática … matemática fácil, siga-me com isso é fácil. Até agora, o algoritmo possui 6 fases. Cada fase leva uma amostra de 1 a 1000 segundos, encontrou o bom ajuste pwm e vá para amostras mais longas para obter mais precisão.

Precisão = (((Número de segundos x 10E6) + 1) / número de segundos) - 10E6

Fase 1, amostra de 1 segundo para 10.000.000 contagens para precisão de + - 1 Hz

fase 2, amostra de 10 segundos para 100, 000, 000 contagens para precisão de + -0,1 Hz

Fase 3, amostra de 60 segundos para 600, 000, 000 contagens para precisão de + -0,01666 Hz

Fase 4, Amostra de 200 segundos para 2.000.000.000 contagens para precisão de + -0,005 Hz

Fase 5, amostra de 900 segundos para 9, 000, 000, 000 contagens para precisão de + -0,001111 Hz

Fase 6, amostra de 1000 segundos para contagens de 10 bilhões para precisão de + -0,001 Hz

Pior caso. Quando chegarmos à fase 6. Este número pode mudar um pouco a cada 1000 segundos ou não. em algum momento será 10.000.000, 001 ou 9, 999, 999, 999 Portanto, + ou - 0, 000.000,001 variação para 1000s. Agora devemos saber o valor para 1 segundo.

10 MHz = 1 segundo

Para 1 segundo = 10.000.000, 001 contagem / 1000s = 10.000.000,001 Hz (pior caso para 1 segundo)

10.000.000,001 - 10.000.000 = 0,001 Hz / s mais rápido ou mais lento

0,001 Hz X 60 X 60 X24 X365 = 31536 Hz / anos

Portanto, lembre-se, 10 MHz é 1 segundo, 31536 Hz X 1 / 10E6 = 0, 0031536 segundo / ano

Outro método mais rápido de cálculo. uma falha para 10E9Mhz é 1 / 10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 segundos / ano.

Isso é preciso o suficiente para você?

no entanto, você deve ter um bom OXCO. Eu prefiro a saída Double Oven 12v Sinus. Mais estável, silencioso e preciso. Mas eu tenho o mesmo resultado com 5V simples. Por exemplo, um stp 2187 tem um tempo curto de estabilidade (desvio de allan) de 2x10-12 = 0,000,000,000,000, 002 Hz de estabilidade. Ao mesmo tempo, quando o pulso gps estiver disponível, o Avr sempre corrigirá o pwm (frequência). O uC está sempre contando … sempre. Isso significa que no display você não verá a data e a hora. Quando uC está amostrando 900s, este fica ocupado por 900 segundos. Deve contar todo o relógio. O problema é que o uC está funcionando a 10Mhz. Cada relógio deve ser contado. Ele está contando a si mesmo. Se apenas um clock estiver faltando, a amostra não será boa e o ajuste de pwm não estará correto. Não consigo atualizar a tela a cada segundo.

Quando a amostragem é iniciada. Uc começa a contar o timer0. Cada 256 clock gera uma interrupção. O registro X é incrementado. quando está cheio, o registro Y é incrementado e X é redefinido como 0 e assim por diante. No final, no último pulso de um gps, a contagem é interrompida. E agora, e somente agora, posso atualizar o display e fazer algumas contas para o cálculo do pwm.

sabendo disso, tenho apenas 25, 6 us (256 clock antes da interrupção) para ler e exibir o tempo ou outro. É impossível. Uma interrupção pode ser atenuada, não 2. Eu poderia atualizar o tempo após 1000s … mas não será prático ver o tempo com intervalo de 15, 16 minutos. Eu tenho um relógio, um relógio, um celular para saber as horas:) Estou fazendo uma referência de 10Mhz. Não é um relógio.

Outro problema que tive, algumas instruções avr têm 2 ciclos. Incluindo a instrução rjmp. Isso significa que se o primeiro ou último pulso gps surgiu ao mesmo tempo de uma instrução de 2 ciclos, o uC perderá um relógio. Porque uC terminará a instrução antes de iniciar a interrupção. Portanto, o contador irá iniciar ou parar um ciclo depois. Portanto, não posso fazer um loop de espera de tempo … Mas, na verdade, não tenho outra escolha. Eu precisava fazer um loop em algum lugar !! I Portanto, estou usando a instrução rjmp e nop (isso não faz nada). Nop é uma instrução de um ciclo. Coloquei 400 instruções nop para um rjmp em atmega48. 2000 na versão atmega88 e atmega328p. Portanto, as chances são menores do primeiro ou último pulso vir na instrução rjmp. Mas sim é possível e se isso acontecer, esse erro será corrigido na próxima amostragem.

A exibição é opcional. Você pode fazer o circuito apenas com uC, OCXO e filtro passa-baixa (capacitor resistor), ligue e espere. Após 1 hora, você terá uma frequência aceitável. Mas para chegar à fase 6. Demora algumas horas.

Pwm tem 16 bits. 65535 passo. 5v / 65535 = 76, 295 uV

A variação do OCXO é de 2 Hz por 1 V. 1v / 76, 295uV = 13107 etapa para 2 Hz. 2/13107 = 152,59uHz por etapa de pwm

A fase 5 está mudando pwm por 3, a fase 6 é 2. etapa … Por que 3? porque 3 está mudando a frequência em 0,000, 000, 000, 4 na escala de 15 minutos. e 4 é meu número mágico em meu algoritmo. Por exemplo, se estiver na fase um, a primeira frequência encontrada é 10.000,003Mhz. Eu desço em 0, 000, 000,4 degraus.

Passo muito grande pode passar de 10.000003 para 10.000001 e após 9,999998 Hz. Estou perdendo o alvo.

Com 0, 0000004. É mais rápido do que 0, 1 e tenho mais certeza de não ignorar um número. E assim por diante. Estou fazendo o mesmo com 10 segundos, 60 segundos e fase 200s e 900s. 1000s está em modo de execução e use uma etapa pwm de 2

Observe que a fase 5 é mais demorada. A diferença entre 4 e 5 é maior. Mas ajuda passar de 5 para 6 mais rápido.

Quando a fase 6 contou exatamente 10 bilhões, os valores pwm são salvos no eeprom. Agora, é hora do modo de execução. Esta é uma amostra de 1000 segundos de contagem, mas apenas com 2 etapas pwm. No modo de operação, a frequência real é exibida e atualizada em intervalos de 1000 segundos. Se o sinal for perdido no modo de operação, ele passará a funcionar automaticamente. Nenhuma mudança de pwm neste modo. Quando o sinal retorna, ele retorna à fase 5 para a ressincronização.

Se o circuito for desconectado após o eeprom ser salvo. Este começará na fase 5 ao ligar com o valor eeprom pwm.

Para apagar o valor eeprom, basta pressionar o botão na inicialização. Pwm 50% será carregado e a calibração começará na fase 1.

Passo muitas horas tentando outra coisa, configuração do circuito. Fiz muitos testes, com amplificador OP, buffer e outro chip. E no final… o melhor resultado que consegui não precisa. Apenas uma fonte de alimentação estável e algum capacitor de filtragem. Portanto, mantenho isso simples.

Etapa 1: Compre peças

Compre peças
Compre peças
Compre peças
Compre peças
Compre peças
Compre peças

A primeira coisa a fazer é comprar as peças. Porque muitas vezes o transporte é muito longo.

Módulo GPS: Estou usando um ublox neo-6m. Comprei este no ebay. Faça uma pesquisa, custa cerca de 7 a 10 dólares americanos.

Por padrão, este receptor tem 1 pulso por segundo habilitado. Não precisamos fazer nada.

Você pode usar qualquer módulo GPS com uma saída de pulso de 1 Hertz. Você tem um. Use isso!

OCXO: Tentei 2 osciladores. Uma saída de onda sinusoidal de 12v stp2187 de forno duplo. E um ISOTEMP 131-100 5V, saída de onda quadrada. Ambos vêm de radioparts16 no ebay. Tive um serviço muito bom deles e o preço era mais barato.

AVR: Código se encaixa em um pequeno atmega48. Mas eu sugiro comprar um atmega88 ou atmega328p. É quase o mesmo preço. Compre isso no digikey ou ebay. Estou usando a versão dip. Você pode comprar a versão de montagem em superfície, mas preste atenção, os pinos não são iguais no esquema.

Monitor LCD: qualquer monitor compatível com 4x20 HD44780 funcionará. Adivinha onde comprei o meu:) Sim, no ebay, há alguns anos. Agora é mais caro do que antes. Mas disponível em US $ 20.

Talvez em um futuro próximo, eu faça um código para um display 2x16. Essas exibições custam apenas 4 $. E entre você e eu, uma exibição de 2 linhas seria suficiente.

Você deve ter um programador AVR ISP. Programar um AVR não é como um Arduino. O Arduino já foi programado para se comunicar na porta serial. Um novo avr deve ser programado com ISP ou Parallel High Voltage Programmer. Estamos usando o ISP aqui.

Um 74hc04 ou 74ac0, regulador de volt 7812 e 7805, resistores, capacitor…. digikey ebay

Etapa 2: Aqui está o esquema e Gpsdo_YT_v1_0.hex

Image
Image
Aqui está o esquemático e Gpsdo_YT_v1_0.hex
Aqui está o esquemático e Gpsdo_YT_v1_0.hex
Aqui está o esquemático e Gpsdo_YT_v1_0.hex
Aqui está o esquemático e Gpsdo_YT_v1_0.hex

Acho que o esquema é tudo que você precisa para realizar este projeto. Você pode usar uma placa revestida de cobre com método de gravação ou apenas uma placa perfurada, se desejar.

Você pode usar qualquer caixa que quiser, mas sugiro uma caixa de metal. Ou apenas em uma placa de ensaio para se divertir como a minha:)

Estou esperando a extensão da antena e o conector bnc para colocar meu projeto em uma caixa.

Você deve escolher o fusível certo. Certifique-se de que o oscilador externo esteja selecionado. Se você tiver problemas com o Oscilador Externo, tente Cristal Externo. E o clock low.ckdiv8 está desmarcado. Ver foto. Preste atenção, quando o bit do relógio externo funde, você deve fornecer um relógio externo para programar ou executar o código. Em outras palavras, conecte o Oscilador no pino xtal1.

A propósito … você pode usar o mesmo código para fazer um contador de frequência com porta de 1 segundo. Basta inserir o relógio a ser medido no pino xtal1 e você terá um contador de frequência de + -1 Hz.

Estarei atualizando o projeto assim que tiver novidades.

Nesse ínterim, se o projeto lhe interessar, você tem material suficiente para começar e até terminar antes de mim

Eu carreguei 2 vídeos, você pode ver a fase um e o último.

Estou à disposição para qualquer dúvida ou comentário. Obrigada.

26 de fevereiro de 2017…. Versão 1.1 disponível.

-atmega48 não é mais compatível. Espaço insuficiente.

- Número adicionado de satélite bloqueado.

-Suporte 2x16 lcd. Se tiver um 4x20, estará funcionando também. Mas a 2 última linha não exibirá nada.

Etapa 3: Logs no Eeprom

Logs no Eeprom
Logs no Eeprom

Aqui está o despejo do eeprom após algumas horas de execução. Vou explicar como ler isso. Novamente, é fácil:)

No endereço 00, 01 é o valor pwm armazenado. Assim que a fase 5 contar 9 bilhões, o valor pwm será atualizado toda vez que o contador atingir exatamente 10 bilhões.

Assim que estivermos na fase 5. Todas as contagens são armazenadas em eeprom após o valor pwm. Comece no endereço 02, após 03 e assim por diante.

Este exemplo veio do meu ocxo de 5 volts. Podemos ler o valor pwm de 0x9A73 = 39539 decimal em 65536. = 60, 33% ou 3,0165 Volt.

Então, o endereço 00:01 é 0x9A73

A seguir, você pode ler 03. Para 9.000.000, 003 Pwm é reduzido em 3 porque ainda estamos na fase 5

00 para 10.000, 000.000 pwm permanece sem tocar e passamos para o modo de execução (fase 6)

02 para 10.000.000,002 Nesse caso, o valor pwm é reduzido de 2

01 para 10.000.000,001 valor pwm é reduzido de 2

01 para 10.000.000,001 valor pwm é reduzido de 2 novamente

00 por 10.000.000 pwm de permanência sem toque

00 por 10.000.000 pwm de permanência sem toque

00 por 10.000.000 pwm de permanência sem toque

Agora você sabe ler a eeprom. A cada 1000 segundos, um novo valor é escrito em eeprom. Quando o eeprom está cheio, ele reinicia a partir do endereço 2.

Valor FF médio 9,999,999,999

Você pode com este dump rastrear a precisão, sem nenhum display LCD.

Você pode despejar o arquivo eeprom com um programador ISP.

Espero ter lhe dado informações suficientes. Se não, me avise. Conselhos, erros, qualquer coisa.

Yannick

Recomendado: