INHOUDSOPGAWE:

GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat .: 3 stappe
GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat .: 3 stappe

Video: GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat .: 3 stappe

Video: GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat .: 3 stappe
Video: BG7TBL GPSDO (GPS Disciplined Oscillator) and 10 MHz Distribution Amplifier 2024, November
Anonim
GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat
GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat
GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat
GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat
GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat
GPSDO YT, gedissiplineerde ossillator 10Mhz verwysingsfrekwensie. Lae koste. Akkuraat

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Dit is 'n verouderde projek.

Kyk eerder na my nuwe 2x16 lcd -weergaweweergawe wat hier beskikbaar is:

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

Ek het die ou weergawe hier gelos vir dokumentasie.

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

Hi ouens, Wat is 'n GPSDO? GPSDO beteken: GPS gedissiplineerde ossillator. GPS vir globale posisioneringstelsel. Alle GPS -satelliete is toegerus met 'n gesinchroniseerde atoomklok. GPS -module ontvang hierdie seine van verskeie satelliete. En deur triangulasie ken hy sy ligging. Maar hier interesseer ons die polsslag per sekonde op die module. Met hierdie presiese polsslag (vanaf atoomklok) kan ons 'n baie akkurate ossillator doen. Vir wat ? Ter verwysing, vir die kalibrasie van die frekwensieteller of net om pret te hê om een in sy laboratorium te hê.

Hulle is baie skematies op die internet. Ek het 'n paar probeer. Sommige is goed, een met 'n klein 2313 was 5 hertz te stadig. Maar myne is die eenvoudigste, nuttigste en gerieflikste. En ek gee jou die.hex -kode. Hulle is geen VCO en geen verdeler nie. Dit gaan goed met die kring met VCO. Dit moet egter 'n polssignaal van 10khz of meer hê. As die antenna te swak raak, die pols ontbreek of glad nie, loop die ossillator (ocxo) vanself en is die VFC (spanningsfrekwensiebeheer) nie meer akkuraat nie. Die VCO -terugvoer benodig verwysingsfrekwensie om aan te hou. Indien nie, wissel dit van 1 tot 2 Hertz! Die goedkoper gps -module werk ook nie in hierdie opset nie. Ons moet ten minste 10khz hê om 'n VCO te maak. Ek het probeer met 1000 hertz. Die gaping was te groot. Die frekwensie het gewissel. Met 'n ublox neo-6m kan u dus nie 'n uitstekende vco gpsdo doen nie, want die maksimum uitsetfrekwensie is 1000Hz. Jy moet 'n neo-7m of boonste koop.

Dit is hoe my GPSDO YT werk. Die beheerder het die goeie verstelling gevind vir enige OCXO met vfc 0 tot 5v. As ons die huisdokter se sein verloor, beweeg die frekwensie glad nie. As die sein weer verskyn, neem die beheerder sy laaste bekende waarde en gaan voort soos voorheen. Op omvang, met 'n verwysings ossillator. Ons kan nie weet wanneer die sein verlore gaan of wanneer dit terugkom nie. Die sein is dieselfde.

Na kalibrasie kan u die gpsdo sonder antenna gebruik as u wil. 'N Paar keer later sal u baie min dryf. Maar…. hoeveel groter? Dit is tyd vir 'n verduideliking.

Hier is 'n paar wiskunde … Maklike wiskunde, volg my hiermee: dit is maklik. Tot dusver het die algoritme 6 fases. Elke fase neem 'n monster van 1 tot 1000 sekondes, vind die goeie pwm -aanpassing en gaan na die meeste langer monsters vir meer akkuraatheid.

Akkuraatheid = (((Aantal sekonde x 10E6) + 1)/aantal sekonde) - 10E6

Fase 1, 1 sekonde monster vir 10, 000, 000 tellings vir +- 1 Hz akkuraatheid

fase 2, 10 sekondes monster vir 100, 000, 000 tellings vir +-0,1 Hz akkuraatheid

Fase 3, 60 sekondes monster vir 600, 000, 000 tellings vir +-0,01666 Hz akkuraatheid

Fase 4, 200 sekondes Voorbeeld van 2, 000, 000, 000 tellings vir +-0,005 Hz akkuraatheid

Fase 5, 900 sekondes monster vir 9, 000, 000, 000 tellings vir +-0,001111 Hz akkuraatheid

Fase 6, 1000 sekondes monster vir 10 biljoene tel vir +-0,001 Hz akkuraatheid

Ergste geval. As ons fase 6. kry, kan hierdie getal elke 1000 sekondes 'n bietjie verander of nie. 'n geruime tyd sal dit 10, 000, 000, 001 of 9, 999, 999, 999 wees, dus, +of - 0, 000, 000.001 variasie vir 1000's. Nou moet ons die waarde vir 1 sekonde ken.

10Mhz = 1 sekonde

Vir 1 sekonde = 10, 000, 000, 001 telling/1000s = 10, 000, 000.001 Hz (ergste geval vir 1 sekonde)

10, 000, 000.001 - 10, 000, 000 = 0.001 Hz/s vinniger of stadiger

0.001Hz X 60 X 60 X24 X365 = 31536 Hz/jaar

Onthou dus dat 10Mhz 1 sekonde is, 31536Hz X 1 / 10E6 = 0, 0031536 tweede / jaar

Nog 'n vinniger metode vir berekening. een mis vir 10E9Mhz is 1/10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 tweede/jaar.

Is dit akkuraat genoeg vir u?

U moet egter 'n goeie OXCO hê. Ek verkies Double Oven 12v Sinus -uitvoer. Meer stabiel, stil en akkuraat. Maar ek het dieselfde resultaat met eenvoudige 5V. Byvoorbeeld, 'n STP 2187 het 'n stabiele kort tyd (afwyking van die hele tyd) van 2x10-12 = 0,000, 000, 000, 000, 002 Hz stabiliteit. Terselfdertyd, as gps -pols beskikbaar is, sal Avr altyd pwm (frekwensie) regstel. Die uC tel altyd … altyd. Dit beteken dat u nie datum en tyd op die skerm kan sien nie. As uC 900's neem, is hierdie 900 sekondes besig. Dit moet die hele klok tel. Probleem is dat uC teen 10Mhz werk. Elke klok moet getel word. Dit tel homself. As slegs een horlosie ontbreek, is die monster nie goed nie en is die aanpassing van pwm nie reg nie. Ek kan nie die vertoning elke sekonde verfris nie.

Wanneer die monsterneming begin word. Vc begin tel timer0. Elke 256 -klok veroorsaak 'n onderbreking. X -register word verhoog. as dit vol is, word Y -register toegeneem en X word teruggestel na 0 ensovoorts. Aan die einde, met die laaste polsslag, word die telling gestaak. En nou en nou kan ek die skerm opdateer en wiskunde doen vir die berekening van pwm.

in die wete dat ek slegs 25, 6 ons het (256 uur voor onderbreking) om tyd te lees en weer te gee. Dit is onmoontlik. Een onderbreking kan gebuffer word, nie 2. Ek kan die tyd na 1000's verfris … maar dit sal nie prakties wees om tyd met 'n interval van 15, 16 minute te sien nie. Ek het 'n horlosie, 'n horlosie, 'n selfoon om tyd te weet:) Ek doen 'n verwysing van 10 Mhz. Nie 'n horlosie nie.

Nog 'n probleem wat ek ondervind het, sommige instruksies het 2 siklusse. Insluitend die rjmp -instruksie. Dit beteken dat as die eerste of laaste GPS -pols op dieselfde tydstip van 'n instruksie van 2 siklusse verskyn, die uC 'n horlosie sal misloop. Omdat uC die instruksie sal voltooi voordat die onderbreking begin. Die toonbank sal een siklus later begin of stop. Ek kan dus nie 'n tyd -waglus doen nie … Maar eintlik het ek geen ander keuse nie. Ek moes iewers loop! I So ek gebruik rjmp en nop (dit doen niks) instruksie. Nop is 'n een siklus instruksie. Ek het 400 nop instruksies vir een rjmp op atmega48 geplaas. 2000 op atmega88 en atmega328p weergawe. Die kans is dus minder dat die eerste of laaste polsslag by rjmp -instruksie kom. Maar ja, dit is moontlik, en as dit gebeur, word hierdie fout by die volgende monsterneming reggestel.

Die skerm is opsioneel. U kan slegs 'n kring met uC, OCXO en 'n laagdeurlaatfilter (weerstandskondensator) doen, aanskakel en wag. Na 1 uur sal u 'n aanvaarbare frekwensie hê. Maar om fase 6 te bereik. Dit neem 'n paar uur.

Pwm is 16 bis. 65535 stap. 5v/65535 = 76, 295 uV

OCXO variasie is 2Hz by 1V. 1v/76, 295uV = 13107 stap vir 2 hz. 2/13107 = 152,59uHz per stap van pwm

Die fase 5, verander pwm met 3, fase 6 is 2. stap … Waarom 3? omdat 3 die frekwensie met 0,000, 000, 000, 4 verander op 'n skaal van 15 minute. en 4 is my towergetal in my algoritme. Byvoorbeeld, as dit in fase een is, is die eerste frekwensie wat gevind is, 10.000, 003Mhz. Ek verlaag met 0, 000, 000.4 stap.

'N Te groot stap kan van 10.000003 na 10.000001 en na 9, 999998Hz oorgaan. Ek mis die teiken.

Met 0, 0000004. Dit is vinniger as 0, 1 en ek is meer seker daarvan om nie 'n nommer te omseil nie. En so aan. Ek doen dieselfde met 10 sekondes, 60 sekondes en 200s fase en 900s. 1000s werk in die modus en gebruik 'n pwm -stap van 2

Let daarop dat fase 5 langer is om te bereik. Die gaping tussen 4 en 5 is groter. Maar dit help om van 5 na 6 vinniger oor te gaan.

As fase 6 presies 10 biljoene getel het, word die pwm -waardes in eeprom gestoor. Nou is dit tyd vir die hardloopmodus. Hierdie een tel 'n monster van 1000 sekondes, maar slegs met 2 stap pwm. In die werkmodus word die werklike frekwensie vertoon en bygewerk met 'n interval van 1000 sekondes. As die sein in die loopmodus verlore gaan, gaan dit deur selfloop. Geen verandering in pwm in hierdie modus nie. As die sein terugkom, keer dit terug na fase 5 na hersynchronisasie.

As die stroombaan ontkoppel word nadat die eeprom gestoor is. Hierdie een begin by fase 5 by aanskakeling met eeprom pwm -waarde.

Om die eeprom-waarde uit te vee, druk net op die knoppie by die aanvang. Pwm 50% is laai en kalibrasie begin vanaf fase 1.

Ek neem baie ure om ander dinge, die konfigurasie van die stroombaan, te probeer. Ek het baie toetse gedoen met OP -versterker, buffer en ander skyfies. En aan die einde … die beste resultaat wat ek gekry het, het dit nie nodig nie. Net 'n goeie stabiele kragtoevoer en 'n bietjie filterkapasitor. So ek hou dit eenvoudig.

Stap 1: Koop onderdele

Koop onderdele
Koop onderdele
Koop onderdele
Koop onderdele
Koop onderdele
Koop onderdele

Die eerste ding om te doen is om die onderdele te koop. Omdat aflewering baie lank is.

GPS-module: ek gebruik 'n ublox neo-6m. Ek het hierdie een op eBay gekoop. Soek, dit kos ongeveer 7 tot 10 dollar.

Hierdie ontvanger het standaard die 1 puls deur die tweede geaktiveer. Ons hoef niks te doen nie.

U kan enige GPS -module met 'n 1 Hertz -pulsuitset gebruik. Jy het een. Gebruik dit!

OCXO: Ek het 2 ossillators probeer. 'N Dubbele oond stp2187 12v sinusgolfuitset. En 'n ISOTEMP 131-100 5V, vierkantgolfuitset. Albei kom van radioparts16 op eBay. Ek het 'n baie goeie diens van hulle gekry en die prys was goedkoper.

AVR: Kode pas op 'n bietjie atmega48. Maar ek stel voor om 'n atmega88 of atmega328p te koop. Dit is amper dieselfde prys. Koop dit op digikey of ebay. Ek gebruik die dip -weergawe. U kan 'n weergawe op die oppervlak kry, maar let op: penne is nie dieselfde as die skematiese nie.

Lcd -skerm: enige 4x20 HD44780 -versoenbare skerm sal werk. Raai waar ek myne gekoop het:) Ja op eBay 'n paar jaar gelede. Nou is dit duurder as voorheen. Maar beskikbaar onder $ 20 VSA.

Miskien sal ek in die nabye toekoms 'n kode doen vir 'n 2x16 -skerm. Die uitstallings kos slegs $ 4. En tussen u en my is 'n vertoning van 2 reëls voldoende.

U moet 'n AVR ISP -programmeerder hê. Die programmering van 'n AVR is nie soos 'n Arduino nie. Arduino is reeds geprogrammeer om op die seriële poort te kommunikeer. 'N Splinternuwe avr moet geprogrammeer word met ISP of Parallel High Voltage Programmer. Ons gebruik ISP hier.

'N 74hc04 of 74ac0, voltreguleerder 7812 en 7805, weerstande, kapasitor … digikey, ebay

Stap 2: Hier is skematiese en Gpsdo_YT_v1_0.hex

Image
Image
Hier is skematiese en Gpsdo_YT_v1_0.hex
Hier is skematiese en Gpsdo_YT_v1_0.hex
Hier is skematiese en Gpsdo_YT_v1_0.hex
Hier is skematiese en Gpsdo_YT_v1_0.hex

Ek dink dat die skematiese al wat u nodig het om hierdie projek te verwesenlik. U kan 'n koperplank met 'n etsmetode gebruik of net 'n geperforeerde bord as u wil.

U kan enige boks wat u wil gebruik, maar ek stel 'n metaalkas voor. Of net op 'n broodbord vir die pret soos myne:)

Ek wag vir antenna -uitbreiding en bnc -aansluiting om my projek in 'n boks te plaas.

U moet die regte sekuriteitsbits kies. Maak seker dat die eksterne ossillator gekies is. Probeer External Crystal as u probleme ondervind met die eksterne ossillator. En die low.ckdiv8 -horlosie is ongemerk. Sien prentjie. Let op, as die eksterne klok versmelt, moet u 'n eksterne klok verskaf om die kode te programmeer of uit te voer. Met ander woorde, koppel die ossillator in xtal1 -pen.

Terloops … u kan dieselfde kode gebruik om 'n frekwensieteller met 1 sekonde hek te doen. Voer die horlosie in om met die xtal1-pen gemeet te word, en u sal 'n +-1 Hz frekwensieteller hê.

Ek sal die projek opdateer sodra ek nuwe goedere het.

In die tussentyd, as die projek u interesseer, het u genoeg materiaal om dit voor my te begin en selfs af te handel

Ek het 2 video's opgelaai, u kan fase een en die laaste sien.

Ek is beskikbaar vir enige vrae of kommentaar. Dankie.

26 Februarie 2017 … Weergawe 1.1 beskikbaar.

-atmega48 word nie meer ondersteun nie. Nie genoeg spasie nie.

-Bygevoeg aantal satelliete gesluit.

-Ondersteun 2x16 lcd. As u 'n 4x20 het, werk dit ook. Maar twee laaste reëls sal niks wys nie.

Stap 3: Meld aan by Eeprom

Teken in op Eeprom
Teken in op Eeprom

Hier is die storting van eeprom na 'n paar uur se uurtyd. Ek sal verduidelik hoe om dit te lees. Weereens, dit is maklik:)

By adres 00 word 01 die pwm -waarde gestoor. Sodra fase 5 9 miljard tel, word die pwm -waarde bygewerk elke keer as die toonbank presies 10 miljard bereik.

Sodra ons in fase 5. Alle tellings word in eeprom gestoor na pwm -waarde. Begin by adres 02, na 03 ensovoorts.

Hierdie voorbeeld kom van my 5 volt ocxo. Ons kan die pwm -waarde van 0x9A73 = 39539 desimale lees op 65536. = 60, 33% of 3.0165 Volt.

Die adres 00:01 is dus 0x9A73

Vervolgens kan u 03 lees. Vir 9, 000, 000, 003 word Pwm met 3 verlaag omdat ons nog in fase 5 is

00 vir 10, 000, 000.000 pwm verblyf is onaangeraak en ons gaan oor na die loopmodus (fase 6)

02 vir 10, 000, 000.002 In hierdie geval word die pwm -waarde van 2 verlaag

01 vir 10, 000, 000.001 pwm waarde word verlaag van 2

01 vir 10, 000, 000.001 pwm waarde word weer van 2 verlaag

00 vir 10, 000, 000.000 pwm verblyf is onaangeraak

00 vir 10, 000, 000.000 pwm verblyf is onaangeraak

00 vir 10, 000, 000.000 pwm verblyf is onaangeraak

Nou weet u hoe u die eeprom moet lees. Elke 1000 sekondes nuwe waarde word in eeprom geskryf. As eeprom vol is, begin dit weer vanaf adres 2.

FF -waarde beteken 9, 999, 999.999

Met hierdie vulling kan u die akkuraatheid opspoor sonder 'n LCD -skerm.

U kan die eeprom -lêer met 'n ISP -programmeerder dump.

Ek hoop dat ek u genoeg inligting gegee het. Indien nie, laat weet my. Raad, fout, enigiets.

Yannick

Aanbeveel: