Innholdsfortegnelse:

GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Nøyaktig .: 3 trinn
GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Nøyaktig .: 3 trinn

Video: GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Nøyaktig .: 3 trinn

Video: GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Nøyaktig .: 3 trinn
Video: Стивен Грир: UAP, CE5, Lazar, Skinwalker Ranch 2024, Juli
Anonim
GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Korrekt
GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Korrekt
GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Korrekt
GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Korrekt
GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Korrekt
GPSDO YT, disiplinert oscillator 10Mhz referansefrekvens. Lav kostnad. Korrekt

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Dette er et foreldet prosjekt.

Sjekk i stedet min nye 2x16 lcd -skjermversjon tilgjengelig her:

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

Jeg forlot den gamle versjonen her for dokumentasjon.

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

Hei folkens, Hva er en GPSDO? GPSDO betyr: GPS -disiplinert oscillator. GPS for globalt posisjoneringssystem. Alle GPS -satellitter er utstyrt med synkronisert atomur. GPS -modulen mottar disse signalene fra flere satellitter. Og ved triangulering vet han sin beliggenhet. Men her er det som interesserer oss pulsen per sekund som finnes på modulen. Med denne presise pulsen (fra atomur) kan vi gjøre en veldig nøyaktig oscillator. Til hva ? For referanse, for kalibrering av frekvensmåler eller bare for moro skyld å ha en i laboratoriet.

De er mange skjematiske på internett. Jeg har prøvd noen. Noen er gode, en med en liten 2313 var 5 hertz for treg. Men min er den mest enkle, nyttige og praktiske. Og jeg gir deg.hex -koden. De er ingen VCO og ingen skillelinje. Kretsen med VCO går bra. Men den må ha et pulssignal på 10 kHz eller mer kontinuerlig. Hvis antennen blir for svak, mangler puls eller ingen puls i det hele tatt, kjører Oscillatoren (ocxo) av seg selv og VFC (Voltage Frequency Control) er ikke nøyaktig lenger. VCO -tilbakemeldingen trenger referansefrekvens for å holde seg fast. Hvis ikke, varierer det fra 1 til 2 Hertz! Dessuten fungerer ikke den billigere gps -modulen i denne konfigurasjonen. Vi må ha minst 10 kHz for å lage en VCO. Jeg prøvde med 1000 hertz. Gapet var for stort. Frekvensen varierte. Så med en ublox neo-6m kan du ikke gjøre en god vco gpsdo fordi maksimal utgangsfrekvens er 1000Hz. Du må kjøpe en neo-7m eller overdel.

Slik fungerer min GPSDO YT. Kontrolleren fant den gode justeringen for enhver OCXO med vfc 0 til 5v. Hvis vi mister fastlegenes signal, beveger frekvensen seg ikke i det hele tatt. Når signalet dukker opp igjen, tar kontrolleren sin siste kjente gode verdi og fortsetter som før. På omfang, med en referanseoscillator. Vi kan ikke fortelle når signalet er tapt eller når det kom tilbake. Signalet er det samme.

Etter kalibrering kan du bruke gpsdo uten antenne hvis du vil. Noen få fester senere vil du ha en veldig liten drift. Men…. hvor mye større? Det er på tide med litt forklaring.

Her er litt matematikk … Enkel matte, følg meg med dette, det er enkelt. Så langt har algoritmen 6 faser. Hver fase tar en prøve på 1 til 1000 sekunder, fant den gode pwm -justeringen og gå til de fleste lengre prøvene for mer nøyaktighet.

Nøyaktighet = (((Antall sekund x 10E6) + 1)/antall sekund) - 10E6

Fase 1, 1 sekund prøve for 10 000 000 tellinger for +- 1 Hz nøyaktighet

fase 2, 10 sekunder prøve for 100, 000, 000 tellinger for +-0,1 Hz nøyaktighet

Fase 3, 60 sekunder prøve for 600, 000, 000 tellinger for +-0,01666 Hz nøyaktighet

Fase 4, 200 sekunder Prøve for 2, 000, 000, 000 teller for +-0,005 Hz nøyaktighet

Fase 5, 900 sekunder prøve for 9, 000, 000, 000 teller for +-0,001111 Hz nøyaktighet

Fase 6, 1000 sekunder prøve for 10 milliarder teller for +-0,001 Hz nøyaktighet

Verste tilfelle. Når vi får fase 6. Dette tallet kan endres litt hvert 1000 sekund eller ikke. en gang vil det være 10, 000, 000, 001 eller 9, 999, 999, 999 Så, +eller - 0, 000, 000.001 variasjon for 1000 -tallet. Nå må vi kjenne verdien i 1 sekund.

10Mhz = 1 sekund

I 1 sekund = 10, 000, 000, 001 count/1000s = 10, 000, 000.001 Hz (verst i 1 sekund)

10, 000, 000.001 - 10, 000, 000 = 0.001 Hz/s raskere eller langsommere

0,001Hz X 60 X 60 X24 X365 = 31536 Hz/år

Så husk at 10Mhz er 1 sekund, 31536Hz X 1 / 10E6 = 0, 0031536 sekund / år

En annen raskere beregningsmetode. en miss for 10E9Mhz er 1/10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 sekund/år.

Er det nøyaktig nok for deg?

du må imidlertid ha en god OXCO. Jeg foretrekker Double Oven 12v Sinus -utgang. Mer stabil, stille og nøyaktig. Men jeg har samme resultat med enkel 5V. For eksempel har en stp 2187 en stabilitet kort tid (allan avvik) på 2x10-12 = 0,000, 000, 000, 002 Hz stabilitet. På samme tid, når GPS -puls er tilgjengelig, vil Avr alltid korrigere pwm (frekvens). UC teller alltid … alltid. Dette betyr at du ikke vil se dato og klokkeslett på skjermen. Når uC prøver 900 -tallet, er denne opptatt i 900 sekunder. Den må telle hele klokken. Problemet er at uC kjører på 10 Mhz. Hver klokke må telle. Det teller seg selv. Hvis bare en klokke mangler, vil prøven ikke være bra, og pwm -justering vil ikke være riktig. Jeg kan ikke oppdatere skjermen hvert sekund.

Når prøvetakingen er startet. Uc begynner å telle timer0. Hver 256 klokke genererer et avbrudd. X -registeret økes. når det er fullt Y økes registeret og X tilbakestilles til 0 og så videre. På slutten, ved den siste gps -pulsen, stoppes tellingen. Og nå og bare nå kan jeg oppdatere skjermen og beregne pwm.

å vite det, jeg har bare 25, 6 oss (256 klokke før avbrudd) til å lese og vise tid eller annet. Det er umulig. Ett avbrudd kan buffes, ikke 2. Jeg kunne oppdatere tiden etter 1000 -tallet … men det vil ikke være praktisk å se tid med 15, 16 minutters intervall. Jeg har en klokke, en klokke, en mobiltelefon for å vite tid:) Jeg gjør en 10Mhz referanse. Ikke en klokke.

Et annet problem jeg hadde, noen avr instruksjoner har 2 sykluser. Inkludert rjmp -instruksjonen. Dette betyr at hvis den første eller siste GPS -pulsen kom opp samtidig med en 2 syklusers instruksjon, vil uC gå glipp av en klokke. Fordi uC vil fullføre instruksjonene før avbruddet begynner. Så telleren starter eller stopper en syklus senere. Så jeg kan ikke gjøre en ventetid … Men faktisk har jeg ikke noe annet valg. Jeg trengte å sløyfe et sted !! I Så jeg bruker rjmp og nop (dette gjør ingenting) instruksjon. Nop er en en syklus instruksjon. Jeg har lagt 400 nop instruksjon for en rjmp på atmega48. 2000 på atmega88 og atmega328p versjon. Så sjansene er mindre til første eller siste puls ved rjmp instruksjon. Men ja det er mulig, og hvis dette skjer, vil denne feilen bli rettet ved neste prøvetaking.

Displayet er valgfritt. Du kan bare gjøre krets med, uC, OCXO og lavpassfilter (motstandskondensator), slå på og vente. Etter 1 time vil du ha en akseptabel frekvens. Men for å nå fase 6. Det tar et par timer.

Pwm er 16 bits. 65535 trinn. 5v/65535 = 76, 295 uV

OCXO -variasjonen er 2Hz ved 1V. 1v/76, 295uV = 13107 trinn i 2 hz. 2/13107 = 152,59uHz etter trinn i pwm

Fasen 5, endrer pwm med 3, fase 6 er 2. trinn … Hvorfor 3? fordi 3 endrer frekvens med 0,000, 000, 000, 4 på 15 minutter skala. og 4 er mitt magiske nummer i algoritmen min. For eksempel, i fase én, er den første frekvensen funnet 10.000, 003Mhz. Jeg senker ned med 0, 000, 000,4 trinn.

For stort trinn kan passere fra 10.000003 til 10.000001 og etter 9, 999998Hz. Jeg mangler målet.

Med 0, 0000004. Det er raskere enn 0, 1, og jeg er mer sikker på at jeg ikke omgår et tall. Og så videre. Jeg gjør det samme med 10 sekunder, 60 sekunder og 200 -tallsfase og 900 -tall. 1000s kjører modus og bruk et pwm trinn på 2

Vær oppmerksom på at fase 5 er lengre å oppnå. Gapet mellom 4 og 5 er større. Men det hjelper å passere fra 5 til 6 raskere.

Når fase 6 har talt nøyaktig 10 milliarder, blir pwm -verdiene lagret i eeprom. Nå er det tid for løpemodus. Denne teller 1000 sekunder prøve, men kun med 2 trinns pwm. I driftsmodus vises den virkelige frekvensen og oppdateres med 1000 sekunders intervall. Hvis signalet går tapt i driftsmodus, går det over i selvløp. Ingen endring av pwm i denne modusen. Når signalet kommer tilbake, går det tilbake til fase 5 til resynkronisering.

Hvis kretsen kobles fra etter at eeprom er lagret. Denne vil begynne i fase 5 når den slås på med eeprom pwm -verdi.

For å slette eeprom-verdien, trykker du bare på knappen ved oppstart. Pwm 50% vil være belastning og kalibrering starter fra fase 1.

Jeg bruker mange timer på å prøve forskjellige ting, konfigurasjon av kretsen. Jeg gjorde mange tester, med OP -forsterker, buffer og annen brikke. Og til slutt … det beste resultatet jeg fikk trenger det ikke. Bare en god stabil strømforsyning og litt filtreringskondensator. Så jeg holder dette enkelt.

Trinn 1: Kjøp deler

Kjøp deler
Kjøp deler
Kjøp deler
Kjøp deler
Kjøp deler
Kjøp deler

Det første du må gjøre er å kjøpe delene. Fordi ofte er forsendelse veldig veldig lang.

GPS-modul: Jeg bruker en ublox neo-6m. Jeg kjøpte denne på ebay. Søk, det koster omtrent 7 til 10 dollar.

Som standard har denne mottakeren 1 puls ved andre aktivert. Vi trenger ikke å gjøre noe.

Du kan bruke hvilken som helst GPS -modul med en 1 Hertz pulsutgang. Du har en. Bruk det!

OCXO: Jeg prøvde 2 oscillatorer. En dobbel ovn stp2187 12v sinusbølgeutgang. Og en ISOTEMP 131-100 5V, firkantbølgeutgang. Begge kommer fra radioparts16 på ebay. Jeg hadde en veldig god service fra dem og prisen var billigere.

AVR: Kodepass på litt atmega48. Men jeg foreslår at du kjøper en atmega88 eller atmega328p. Det er nesten samme pris. Kjøp dette på digikey eller ebay. Jeg bruker dip -versjonen. Du kan kjøpe versjon på overflatemontering, men vær oppmerksom på at pins ikke er det samme som skjematisk.

LCD -skjerm: Enhver 4x20 HD44780 -kompatibel skjerm vil fungere. Gjett hvor jeg kjøpte min:) Ja på ebay for et par år siden. Nå er det dyrere enn før. Men tilgjengelig under $ 20 US.

Kanskje i nær fremtid vil jeg lage en kode for en 2x16 -skjerm. Disse skjermene er bare 4 $. Og mellom deg og meg ville en 2 -linjers visning være tilstrekkelig.

Du må ha en AVR ISP -programmerer. Å programmere en AVR er ikke som en Arduino. Arduino er allerede programmert til å kommunisere på seriell port. En helt ny avr må programmeres med ISP eller Parallel High Voltage Programmer. Vi bruker isp her.

En 74hc04 eller 74ac0, voltregulator 7812 og 7805, motstander, kondensator…. digikey, ebay

Trinn 2: Her er skjematisk og Gpsdo_YT_v1_0.hex

Image
Image
Her er skjematisk og Gpsdo_YT_v1_0.hex
Her er skjematisk og Gpsdo_YT_v1_0.hex
Her er skjematisk og Gpsdo_YT_v1_0.hex
Her er skjematisk og Gpsdo_YT_v1_0.hex

Jeg tror at skjematikken er alt du trenger for å realisere dette prosjektet. Du kan bruke et kobberbelagt brett med etsemetode eller bare perforert brett hvis du vil.

Du kan bruke hvilken som helst boks du vil, men jeg foreslår en metallboks. Eller bare på et brødbrett for moro skyld som mitt:)

Jeg venter på antenneforlengelse og bnc -kontakt for å legge prosjektet mitt i en eske.

Du må velge riktig sikringsbit. Sørg for at ekstern oscillator er valgt. Hvis du har problemer med ekstern oscillator, kan du prøve External Crystal. Og klokken low.ckdiv8 er ikke merket. Se bilde. Vær oppmerksom, når den eksterne klokken smelter litt, må du oppgi en ekstern klokke for å programmere eller kjøre koden. Med andre ord, koble til oscillatoren i xtal1 pin.

Forresten … du kan bruke den samme koden til å lage en frekvensmåler med 1 sekunders gate. Bare skriv inn klokken som skal måles i xtal1 pin, og du får en +-1 Hz frekvensmåler.

Jeg vil oppdatere prosjektet så snart jeg har nye ting.

I mellomtiden, hvis prosjektet interesserer deg, har du nok materiale til å starte og til og med fullføre det før meg

Jeg lastet opp 2 videoer, du kan se fase én og den siste.

Jeg er tilgjengelig for spørsmål eller kommentarer. Takk skal du ha.

26. februar 2017…. Versjon 1.1 tilgjengelig.

-atmega48 støttes ikke lenger. Ikke nok plass.

-Lagt antall satellitter låst.

-Støtte 2x16 lcd. Hvis du har en 4x20, vil den også fungere. Men 2 siste linje viser ingenting.

Trinn 3: Logger på Eeprom

Logger på Eeprom
Logger på Eeprom

Her er dumpen med eeprom etter et par timer uf driftstid. Jeg skal forklare hvordan du leser dette. Igjen, det er lett:)

På adresse 00 er 01 lagret pwm -verdi. Så snart fase 5 teller 9 milliarder, oppdateres pwm -verdien hver gang telleren når nøyaktig 10 milliarder.

Så snart vi er i fase 5. Alle tellinger lagres i eeprom etter pwm -verdi. Start på adresse 02, etter 03 og så videre.

Dette eksemplet kom fra min 5 volt ocxo. Vi kan lese pwm -verdien 0x9A73 = 39539 desimal på 65536. = 60, 33% eller 3.0165 Volt.

Så adresse 00:01 er 0x9A73

Deretter kan du lese 03. For 9, 000, 000, 003 senkes Pwm med 3 fordi vi ennå er i fase 5

00 for 10, 000, 000.000 pwm opphold er uberørt, og vi går over til driftsmodus (fase 6)

02 for 10, 000, 000.002 I så fall senkes pwm -verdien fra 2

01 for 10.000, 000.001 pwm -verdien senkes fra 2

01 for 10.000, 000.001 pwm -verdien senkes fra 2 igjen

00 for 10 000 000 000 000 pwm opphold er uberørt

00 for 10 000 000 000 000 pwm opphold er uberørt

00 for 10 000 000 000 000 pwm opphold er uberørt

Nå vet du hvordan du leser eeprom. Hver 1000 sekunders ny verdi skrives i eeprom. Når eeprom er fullt, starter det på nytt fra adresse 2.

FF -verdi betyr 9, 999, 999,999

Du kan med denne dumpen spore nøyaktigheten, uten noen LCD -skjerm.

Du kan dumpe eeprom -filen med en isp -programmerer.

Jeg håper at jeg ga deg nok informasjon. Hvis ikke, gi meg beskjed. Råd, feil, hva som helst.

Yannick

Anbefalt: