Indholdsfortegnelse:
Video: GPSDO YT, Disciplineret Oscillator 10Mhz referencefrekvens. Lavpris. Nøjagtig .: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
*******************************************************************************
STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP
Dette er et forældet projekt.
Tjek i stedet min nye 2x16 lcd -skærmversion tilgængelig her:
www.instructables.com/id/GPSDO-YT-10-Mhz-L…
Jeg forlod den gamle version her for dokumentation.
*******************************************************************************
Hej fyre, Hvad er en GPSDO? GPSDO betyder: GPS -disciplineret oscillator. GPS til globalt positioneringssystem. Alle GPS -satellitter er udstyret med synkroniseret atomur. GPS -modul modtager disse signaler fra flere satellitter. Og ved triangulering kender han sin placering. Men her er det, der interesserer os, den puls pr. Sekund, der findes på modulet. Med denne præcise puls (fra atomur) kan vi lave en meget meget nøjagtig oscillator. Hvorfor ? Til reference, til kalibrering af frekvensmåler eller bare for sjov at have en i sit laboratorium.
De er mange skematiske på internettet. Jeg har prøvet nogle. Nogle er gode, en med en lille 2313 var 5 hertz for langsom. Men min er den mest enkle, nyttige og bekvemme. Og jeg giver dig.hex -koden. De er ingen VCO og ingen divider. Kredsløb med VCO klarer sig godt. Men den skal have et pulssignal på 10 kHz eller mere kontinuerligt. Hvis antennen bliver for svag, mangler puls eller slet ingen puls, kører oscillatoren (ocxo) af sig selv, og VFC (Voltage Frequency Control) er ikke nøjagtig længere. VCO -feedbacken kræver referencefrekvens for at blive ved. Hvis ikke, varierer det fra 1 til 2 Hertz! Det billigere GPS -modul fungerer heller ikke i denne konfiguration. Vi skal have mindst 10 khz for at lave en VCO. Jeg prøvede med 1000 hertz. Afstanden var for stor. Frekvensen varierede. Så med en ublox neo-6m kan du ikke gøre en fantastisk vco gpsdo, fordi maksimal udgangsfrekvens er 1000Hz. Du skal købe en neo-7m eller overdel.
Sådan fungerer min GPSDO YT. Controlleren fandt den gode justering for enhver OCXO med vfc 0 til 5v. Hvis vi mister praktiserende læger, flytter frekvensen sig slet ikke. Når signalet dukker op igen, tager controlleren sin sidste kendte gode værdi og fortsætter som før. På omfang, med en referenceoscillator. Vi kan ikke vide, hvornår signalet er tabt, eller hvornår det kom tilbage. Signalet er det samme.
Efter kalibrering kan du bruge gpsdo uden antenne, hvis du vil. Et par mounts senere vil du have en meget lille drift. Men…. hvor meget større? Det er tid til en forklaring.
Her er lidt matematik … Let matematik, følg mig med dette, det er let. Hidtil har algoritmen 6 faser. Hver fase tager en prøve på 1 til 1000 sekunder, fandt den gode pwm -justering og gå til de fleste længere prøver for mere nøjagtighed.
Nøjagtighed = (((Antal sekund x 10E6) + 1)/antal sekund) - 10E6
Fase 1, 1 sekund prøve for 10.000.000 tæller for +- 1 Hz nøjagtighed
fase 2, 10 sekunder prøve for 100.000, 000 tæller for +-0.1Hz nøjagtighed
Fase 3, 60 sekunders prøve for 600.000.000 tæller med +-0.01666 Hz nøjagtighed
Fase 4, 200 sekunder Prøve for 2, 000, 000, 000 tæller med +-0,005 Hz nøjagtighed
Fase 5, 900 sekunder prøve for 9.000.000.000.000 tæller med +-0.001111 Hz nøjagtighed
Fase 6, 1000 sekunder prøve for 10 milliarder tæller for +-0,001 Hz nøjagtighed
Værste tilfælde. Når vi får fase 6. Dette tal kan ændre sig lidt hvert 1000 sekund eller ej. et eller andet tidspunkt vil det være 10, 000, 000, 001 eller 9, 999, 999, 999 Så, +eller - 0, 000, 000.001 variation for 1000'ere. Nu skal vi kende værdien i 1 sekund.
10Mhz = 1 sekund
I 1 sekund = 10, 000, 000, 001 count/1000s = 10, 000, 000.001 Hz (værste tilfælde i 1 sekund)
10, 000, 000.001 - 10, 000, 000 = 0.001 Hz/s hurtigere eller langsommere
0,001Hz X 60 X 60 X24 X365 = 31536 Hz/år
Så husk, 10Mhz er 1 sekund, 31536Hz X 1 / 10E6 = 0, 0031536 sekund / år
En anden hurtigere beregningsmetode. en miss for 10E9Mhz er 1/10E9 = 1E-10
1E-10 x 60x60x24x365 = 0, 0031536 sekund/år.
Er det præcist nok for dig?
du skal dog have en god OXCO. Jeg foretrækker Double Oven 12v Sinus output. Mere stabil, stille og præcis. Men jeg har samme resultat med simpel 5V. For eksempel har en stp 2187 en stabilitet kort tid (allan afvigelse) på 2x10-12 = 0,000, 000, 000, 000, 002 Hz stabilitet. På samme tid, når gps -puls er tilgængelig, vil Avr altid rette pwm (frekvens). UC tæller altid … altid. Det betyder, at du ikke kan se dato og klokkeslæt på displayet. Når uC sampler 900'er, er denne optaget i 900 sekunder. Det skal tælle alt ur. Problemet er uC kører på 10Mhz. Hvert ur skal tælles. Det tæller sig selv. Hvis der kun mangler et ur, er prøven ikke god, og pwm -justering vil ikke være korrekt. Jeg kan ikke opdatere skærmen hvert sekund.
Når prøvetagningen startes. Uc begynder at tælle timer0. Hvert 256 ur genererer en afbrydelse. X -register øges. når det er fuldt Y registret øges og X nulstilles til 0 og så videre. I slutningen, ved den sidste gps -puls, stoppes tællingen. Og nu og kun nu kan jeg opdatere skærmen og lave noget matematik til pwm -beregning.
vel vidende, at jeg kun har 25, 6 os (256 ur før afbrydelse) til at læse og vise tid eller andet. Det er umuligt. Én afbrydelse kan buffes, ikke 2. Jeg kunne opdatere tiden efter 1000'erne … men det vil ikke være praktisk at se tiden med 15, 16 minutters interval. Jeg har et ur, et ur, en mobiltelefon for at vide tid:) Jeg laver en 10Mhz reference. Ikke et ur.
Et andet problem jeg havde, nogle avr instruktioner har 2 cykler. Inklusiv rjmp instruktion. Dette betyder, at hvis den første eller sidste gps -puls kom op på samme tid af en 2 cyklusser instruktion, vil uC gå glip af et ur. Fordi uC vil afslutte instruktionen, inden afbrydelsen begynder. Så tælleren starter eller stopper en cyklus senere. Så jeg kan ikke lave en ventetid … Men faktisk har jeg ikke noget andet valg. Jeg havde brug for at sløjfe et sted !! I Så jeg bruger rjmp og nop (dette gør ingenting) instruktion. Nop er en enkelt cyklus instruktion. Jeg har lagt 400 nop instruktion for en rjmp på atmega48. 2000 på atmega88 og atmega328p version. Så chancerne er mindre til første eller sidste puls ved rjmp instruktion. Men ja det er muligt, og hvis dette sker, vil denne fejl blive rettet ved den næste prøveudtagning.
Displayet er valgfrit. Du kan kun lave kredsløb med, uC, OCXO og lavpasfilter (modstandskondensator), tænde og vente. Efter 1 time har du en acceptabel frekvens. Men for at nå fase 6. Det tager et par timer.
Pwm er 16 bits. 65535 trin. 5v/65535 = 76, 295 uV
OCXO variation er 2Hz ved 1V. 1v/76, 295uV = 13107 trin i 2 hz. 2/13107 = 152,59uHz i trin af pwm
Fasen 5 ændrer pwm med 3, fase 6 er 2. trin … Hvorfor 3? fordi 3 ændrer frekvens med 0,000, 000, 000, 4 i 15 minutters skala. og 4 er mit magiske tal i min algoritme. For eksempel, hvis den i første fase er den første frekvens, der er fundet, er 10.000, 003Mhz. Jeg sænker med 0, 000, 000,4 trin.
For stort trin kan passere fra 10.000003 til 10.000001 og efter 9, 999998Hz. Jeg mangler målet.
Med 0, 0000004. Det er hurtigere end 0, 1, og jeg er mere sikker på ikke at omgå et tal. Og så videre. Jeg gør det samme med 10 sekunder, 60 sekunder og 200'er fase og 900'er. 1000s kører tilstand, og brug et pwm -trin på 2
Bemærk, at fase 5 er længere at opnå. Afstanden mellem 4 og 5 er større. Men det hjælper at passere fra 5 til 6 hurtigere.
Når fase 6 har talt præcis 10 milliarder, gemmes pwm -værdierne i eeprom. Nu er det tid til kørselstilstand. Denne tæller 1000 sekunder prøve, men kun med 2 trin pwm. I driftstilstand vises den reelle frekvens og opdateres med 1000 sekunders interval. Hvis signalet går tabt i driftstilstand, passerer det i selvkørende. Ingen ændring af pwm i denne tilstand. Når signalet kommer tilbage, vender det tilbage til fase 5 til resynkronisering.
Hvis kredsløbet er trukket ud, efter at eeprom er gemt. Denne vil begynde i fase 5 ved tænding med eeprom pwm -værdi.
For at slette eeprom-værdi skal du bare trykke på knappen ved opstart. Pwm 50% vil være belastning, og kalibrering starter fra fase 1.
Jeg bruger mange timer på at prøve forskellige ting, konfiguration af kredsløbet. Jeg lavede mange tests med OP -forstærker, buffer og anden chip. Og i slutningen … det bedste resultat, jeg fik, behøver det ikke. Bare en god stabil strømforsyning og noget filtreringskondensator. Så jeg holder det enkelt.
Trin 1: Køb dele
Det første du skal gøre er at købe delene. Fordi forsendelse ofte er meget meget lang.
GPS-modul: Jeg bruger en ublox neo-6m. Jeg købte denne på ebay. Søg efter, det har kostet omkring 7 til 10 amerikanske dollars.
Som standard har denne modtager 1 puls ved anden aktiveret. Vi behøver ikke at gøre noget.
Du kan bruge ethvert GPS -modul med en 1 Hertz pulsudgang. Du har en. Brug det!
OCXO: Jeg prøvede 2 oscillatorer. En dobbelt ovn STP2187 12V sinusbølgeudgang. Og en ISOTEMP 131-100 5V, firkantbølgeudgang. Begge kommer fra radioparts16 på ebay. Jeg havde en meget god service fra dem, og prisen var billigere.
AVR: Kode passer på lidt atmega48. Men jeg foreslår at købe en atmega88 eller atmega328p. Det er næsten den samme pris. Køb dette på digikey eller ebay. Jeg bruger dip -versionen. Du kan købe overflademonteret version, men vær opmærksom, stifter er ikke det samme som skematisk.
LCD -skærm: Enhver 4x20 HD44780 -kompatibel skærm fungerer. Gæt hvor jeg købte min:) Ja på ebay for et par år siden. Nu er det dyrere end før. Men tilgængelig under $ 20 US.
Måske vil jeg i den nærmeste fremtid lave en kode til en 2x16 -skærm. Disse skærme koster kun 4 $. Og mellem dig og mig ville et display med 2 linjer være tilstrækkeligt.
Du skal have en AVR ISP -programmerer. Programmering af en AVR er ikke som en Arduino. Arduino er allerede programmeret til at kommunikere på seriel port. En helt ny avr skal programmeres med ISP eller Parallel High Voltage Programmer. Vi bruger isp her.
En 74hc04 eller 74ac0, voltregulator 7812 og 7805, modstande, kondensator…. digikey, ebay
Trin 2: Her er skematisk og Gpsdo_YT_v1_0.hex
Jeg tror, at skematikken er alt hvad du behøver for at realisere dette projekt. Du kan bruge et kobberbeklædt bræt med ætsningsmetode eller bare perforeret bræt, hvis du vil.
Du kan bruge en hvilken som helst æske, men jeg foreslår en metalkasse. Eller bare på et brødbræt for sjov som min:)
Jeg venter på antenneudvidelse og bnc -stik for at lægge mit projekt i en kasse.
Du skal vælge den rigtige sikringsbit. Sørg for, at ekstern oscillator er valgt. Hvis du har problemer med ekstern oscillator, kan du prøve External Crystal. Og uret low.ckdiv8 er ikke markeret. Se billede. Vær opmærksom, når det eksterne ur smelter lidt, skal du levere et eksternt ur til at programmere eller køre koden. Med andre ord, tilslut oscillatoren i xtal1 pin.
Forresten … du kan bruge den samme kode til at lave en frekvensmåler med 1 sekunders gate. Indtast bare uret, der skal måles i xtal1 pin, og du får en +-1 Hz frekvensmåler.
Jeg opdaterer projektet, så snart jeg har nye ting.
I mellemtiden, hvis projektet interesserer dig, har du nok materiale til at starte og endda afslutte det før mig
Jeg har uploadet 2 videoer, du kan se fase en og den sidste.
Jeg er tilgængelig for spørgsmål eller kommentarer. Tak skal du have.
26. februar 2017…. Version 1.1 tilgængelig.
-atmega48 understøttes ikke længere. Ikke nok plads.
-Tilføjet antal satellitter låst.
-Støtte 2x16 lcd. Hvis du har en 4x20, vil den også fungere. Men 2 sidste linje viser ingenting.
Trin 3: Logger på Eeprom
Her er dumpen af eeprom efter et par timers uf driftstid. Jeg forklarer, hvordan du læser dette. Igen er det let:)
På adressen 00 er 01 gemt pwm -værdi. Så snart fase 5 tæller 9 milliarder, opdateres pwm -værdien hver gang tælleren når præcis 10 milliarder.
Så snart vi er i fase 5. Alle tællinger gemmes i eeprom efter pwm -værdi. Start på adresse 02, efter 03 og så videre.
Dette eksempel kom fra min 5 volt ocxo. Vi kan læse pwm -værdien på 0x9A73 = 39539 decimal på 65536. = 60, 33% eller 3.0165 Volt.
Så adresse 00:01 er 0x9A73
Dernæst kan du læse 03. For 9, 000, 000, 003 sænkes Pwm med 3, fordi vi endnu er i fase 5
00 for 10.000.000.000.000 pwm ophold er uberørt, og vi går videre til driftstilstand (fase 6)
02 for 10.000, 000.002 I så fald sænkes pwm -værdien fra 2
01 for 10.000, 000.001 pwm -værdi sænkes fra 2
01 for 10.000, 000.001 pwm -værdi sænkes fra 2 igen
00 for 10.000.000.000.000 pwm ophold er uberørt
00 for 10.000.000.000.000 pwm ophold er uberørt
00 for 10.000.000.000.000 pwm ophold er uberørt
Nu ved du, hvordan du læser eeprom. Hver 1000 sekunders ny værdi skrives i eeprom. Når eeprom er fuld, genstarter det fra adresse 2.
FF -værdi betyder 9, 999, 999,999
Du kan med denne dump spore nøjagtigheden uden LCD -display.
Du kan dumpe eeprom -filen med en isp -programmerer.
Jeg håber, at jeg gav dig nok information. Hvis ikke, lad mig det vide. Råd, fejl, alt muligt.
Yannick
Anbefalede:
Arduino præcis og nøjagtig voltmåler (0-90V DC): 3 trin
Arduino præcis og nøjagtig voltmeter (0-90V DC): I denne instruktive har jeg bygget et voltmeter til at måle højspændinger DC (0-90v) med relativ præcision og nøjagtighed ved hjælp af en Arduino Nano. De testmålinger, jeg tog, var præcise nok, for det meste inden for 0,3 v af den faktiske spænding målt med en
3d Trykt Endgame Arc Reactor (film nøjagtig og bærbar): 7 trin (med billeder)
3d Printed Endgame Arc Reactor (Movie Accurate and Wearable): Fuld Youtube -vejledning: Jeg kunne ikke finde nogen særlig filmnøjagtige 3d -filer til Mark 50 -buereaktoren/huset til nanopartikler, så min kammerat og jeg lavede nogle søde. Det tog masser af finjusteringer for at få tingene til at se præcise og fantastiske ud
Nøjagtig YouTube -abonnenttæller: 4 trin
Nøjagtig YouTube -abonnenttæller: Jeg begyndte at forberede mig på dette projekt for cirka en måned siden, men så blev jeg afsporet af YouTube, da de meddelte, at de ikke længere vil give det rigtige abonnentantal, men det nærmeste afrundede nummer. I øjeblikket er det ikke et problem for
En nøjagtig model af en Cepheid -variabel stjerne: 5 trin (med billeder)
En nøjagtig model af en Cepheid -variabel stjerne: Rummet er stort. Meget stor. Astronomisk set kan man endda sige. Det har ingen betydning for dette projekt, jeg ville bare bruge ordspillet. Det kommer ikke som en overraskelse, at der er mange stjerner på nattehimlen. Det kan dog overraske nogle, der er nye inden for området
Sådan laver du en nøjagtig luftmængdesensor med Arduino til under 20 £ COVID-19-ventilator: 7 trin
Sådan laver du en nøjagtig luftstrømningssensor med Arduino til under £ 20 COVID-19-ventilator: Se denne rapport for det nyeste design af denne åbningssensor: https://drive.google.com/file/d/1TB7rhnxQ6q6C1cNb. ..Denne instruktion viser, hvordan man opbygger en luftmængdesensor ved hjælp af en differensialtryksføler til lave omkostninger og let en