Innehållsförteckning:

GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Noggrann .: 3 steg
GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Noggrann .: 3 steg

Video: GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Noggrann .: 3 steg

Video: GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Noggrann .: 3 steg
Video: BG7TBL GPSDO (GPS Disciplined Oscillator) and 10 MHz Distribution Amplifier 2024, Juli
Anonim
GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Exakt
GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Exakt
GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Exakt
GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Exakt
GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Exakt
GPSDO YT, disciplinerad oscillator 10 MHz referensfrekvens. Låg kostnad. Exakt

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Detta är ett föråldrat projekt.

Kontrollera istället min nya 2x16 lcd -displayversion som finns här:

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

Jag lämnade den gamla versionen här för dokumentation.

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

Tjena, Vad är en GPSDO? GPSDO betyder: GPS -disciplinerad oscillator. GPS för globalt positioneringssystem. Alla GPS -satelliter är utrustade med synkroniserad atomur. GPS -modulen tar emot dessa signaler från flera satelliter. Och genom triangulering vet han sin plats. Men här är det som intresserar oss pulsen per sekund som finns på modulen. Med denna exakta puls (från atomur) kan vi göra en mycket mycket exakt oscillator. Varför då ? För referens, för kalibrering av frekvensräknare eller bara för skojs skull att ha en i sitt labb.

De är många schematiska på internet. Jag har provat några. Vissa är bra, en med en liten 2313 var 5 hertz för långsam. Men min är den mest enkla, användbara och bekvämaste. Och jag ger dig.hex -koden. De är ingen VCO och ingen avdelare. Kretsen med VCO går bra. Men den måste ha en pulssignal på 10 kHz eller mer kontinuerligt. Om antennen blir för svag, saknar puls eller ingen puls alls, körs oscillatorn (ocxo) av sig själv och VFC (Voltage Frequency Control) är inte exakt längre. VCO -feedbacken behöver referensfrekvens för att hålla fast. Om inte, varierar det från 1 till 2 Hertz! Dessutom fungerar inte den billigare GPS -modulen i den här konfigurationen. Vi måste ha minst 10 kHz för att göra en VCO. Jag försökte med 1000 hertz. Klyftan var för stor. Frekvensen varierade. Så med en ublox neo-6m kan du inte göra en bra vco gpsdo eftersom maximal utgångsfrekvens är 1000Hz. Du måste köpa en neo-7m eller överdel.

Så här fungerar min GPSDO YT. Styrenheten hittade den bra justeringen för alla OCXO med vfc 0 till 5v. Om vi tappar husläkaresignaler rör sig frekvensen inte alls. När signalen återkommer tar regulatorn sitt senaste kända goda värde och fortsätter som tidigare. På omfattning, med en referensoscillator. Vi kan inte säga när signalen går förlorad eller när den kom tillbaka. Signalen är densamma.

Efter kalibrering kan du använda gpsdo utan antenn om du vill. Några fästen senare kommer du att ha en mycket liten drift. Men…. hur mycket större? Det är dags för lite förklaring.

Här är lite matte … Lätt matte, följ mig med det här är lätt. Hittills har algoritmen 6 faser. Varje fas tar ett prov på 1 till 1000 sekunder, hittade den bra pwm -justeringen och gå till de flesta längre proverna för mer noggrannhet.

Noggrannhet = (((Antal andra x 10E6) + 1)/antal andra) - 10E6

Fas 1, 1 sekund prov för 10 000 000 räknas för +- 1 Hz noggrannhet

fas 2, 10 sekunder prov för 100, 000, 000 räknas för +-0,1 Hz noggrannhet

Fas 3, 60 sekunder prov för 600, 000, 000 räknas för +-0,01666 Hz noggrannhet

Fas 4, 200 sekunder Prov för 2, 000, 000, 000 räknas för +-0,005 Hz noggrannhet

Fas 5, 900 sekunder prov för 9, 000, 000, 000 räknas för +-0,001111 Hz noggrannhet

Fas 6, 1000 sekunders prov för 10 miljarder räknas för +-0,001 Hz noggrannhet

Värsta fall. När vi får fas 6. Detta nummer kan förändras lite var 1000: e sekund eller inte. någon gång kommer det att vara 10, 000, 000, 001 eller 9, 999, 999, 999 Så, +eller - 0, 000, 000.001 variation för 1000 -tal. Nu måste vi veta värdet i 1 sekund.

10Mhz = 1 sekund

För 1 sekund = 10.000, 000, 001 count/1000s = 10.000, 000.001 Hz (värsta fallet i 1 sekund)

10, 000, 000.001 - 10, 000, 000 = 0.001 Hz/s snabbare eller långsammare

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

Så kom ihåg att 10Mhz är 1 sekund, 31536Hz X 1 / 10E6 = 0, 0031536 sekund / år

En annan snabbare metod för beräkning. en miss för 10E9Mhz är 1/10E9 = 1E-10

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

Är det tillräckligt noggrant för dig?

du måste dock ha en bra OXCO. Jag föredrar Double Oven 12v Sinus -utgång. Mer stabil, tyst och exakt. Men jag har samma resultat med enkel 5V. Exempelvis har en stp 2187 en stabilitet kort tid (allan avvikelse) på 2x10-12 = 0,000, 000, 000, 002 Hz stabilitet. Samtidigt, när gps -puls är tillgänglig, kommer Avr alltid att korrigera pwm (frekvens). UC räknar alltid … alltid. Det betyder att du inte kommer att se datum och tid på displayen. När uC samplar 900 -talet är den här upptagen i 900 sekunder. Det måste räkna alla klockor. Problemet är att uC körs på 10 Mhz. Varje klocka måste räknas. Det räknar sig själv. Om bara en klocka saknas är provet inte bra och pwm -justering kommer inte att vara rätt. Jag kan inte uppdatera displayen varje sekund.

När provtagningen påbörjas. Uc börjar räkna timer0. Varje 256 klocka genererar ett avbrott. X -registret ökas. när det är fullt Y -registret ökas och X återställs till 0 och så vidare. I slutet, vid den sista gps -pulsen, stoppas räkningen. Och nu och bara nu kan jag uppdatera displayen och göra lite matte för pwm -beräkning.

att veta att jag bara har 25, 6 oss (256 klocka före avbrott) för att läsa och visa tid eller annat. Det är omöjligt. Ett avbrott kan buffas, inte 2. Jag kunde uppdatera tiden efter 1000 -talet … men det är inte praktiskt att se tid med 15, 16 minuters intervall. Jag har en klocka, en klocka, en mobiltelefon för att veta tid:) Jag gör en 10Mhz referens. Inte en klocka.

Ett annat problem jag hade, en del avr -instruktioner har 2 cykler. Inklusive rjmp -instruktionen. Detta betyder att om den första eller sista gps -pulsen kom upp samtidigt med en 2 -cykel instruktion, kommer uC att missa en klocka. Eftersom uC avslutar instruktionen innan avbrottet påbörjas. Så räknaren startar eller stoppar en cykel senare. Så jag kan inte vänta en gång … Men jag har faktiskt inget annat val. Jag behövde slinga någonstans !! I Så jag använder rjmp och nop (det här gör ingenting) instruktion. Nop är en encykelinstruktion. Jag har lagt 400 nop instruktion för en rjmp på atmega48. 2000 på atmega88 och atmega328p version. Så chansen är mindre att första eller sista pulsen kommer vid rjmp -instruktion. Men ja det är möjligt och om detta händer kommer detta fel att rättas till vid nästa provtagning.

Displayen är valfri. Du kan bara göra krets med, uC, OCXO och lågpassfilter (motståndskondensator), slå på och vänta. Efter 1 timme har du en acceptabel frekvens. Men för att nå fas 6. Det tar ett par timmar.

Pwm är 16 bitar. 65535 steg. 5v/65535 = 76, 295 uV

OCXO -variationen är 2Hz med 1V. 1v/76, 295uV = 13107 steg i 2 hz. 2/13107 = 152,59uHz för steg av pwm

Fas 5, ändrar pwm med 3, fas 6 är 2. steg … Varför 3? eftersom 3 ändrar frekvens med 0,000, 000, 000, 4 i 15 minuters skala. och 4 är mitt magiska tal i min algoritm. Till exempel, i fas ett, är den första frekvensen som hittats 10.000, 003Mhz. Jag sänker med 0 000 000 000,4 steg.

För stort steg kan passera från 10.000003 till 10.000001 och efter 9, 999998Hz. Jag saknar målet.

Med 0, 0000004. Det är snabbare än 0, 1 och jag är mer säker på att inte kringgå ett nummer. Och så vidare. Jag gör detsamma med 10 sekunder, 60 sekunder och 200 -tal fas och 900 -tal. 1000s körs och använder ett pwm -steg på 2

Observera att fas 5 är längre att uppnå. Klyftan mellan 4 och 5 är större. Men det hjälper att passera från 5 till 6 snabbare.

När fas 6 har räknat exakt 10 miljarder sparas pwm -värdena i eeprom. Nu är det dags för körläge. Denna räknar 1000 sekunder prov men endast med 2 steg pwm. I driftläge visas och uppdateras den verkliga frekvensen med 1000 sekunders intervall. Om signalen tappas i driftläge går den i självkörning. Ingen förändring av pwm i detta läge. När signalen kommer tillbaka går den tillbaka till fas 5 för att åter synkronisera.

Om kretsen kopplas ur efter att eeprom har sparats. Den här börjar i fas 5 vid påslagning med eeprom pwm -värde.

För att radera eeprom-värde, tryck bara på knappen vid start. Pwm 50% kommer att belastas och kalibreringen startar från fas 1.

Jag går många timmar för att prova olika saker, konfiguration av kretsen. Jag gjorde många tester, med OP -förstärkare, buffert och annat chip. Och i slutet … det bästa resultatet jag fick behöver det inte. Bara en bra stabil strömförsörjning och lite filtreringskondensator. Så jag håller det här enkelt.

Steg 1: Köp delar

Köp delar
Köp delar
Köp delar
Köp delar
Köp delar
Köp delar

Det första du ska göra är att köpa delarna. För ofta är frakten väldigt väldigt lång.

GPS-modul: Jag använder en ublox neo-6m. Jag köpte den här på ebay. Gör en sökning, det kostar cirka 7 till 10 dollar.

Som standard har denna mottagare 1 puls för sekund aktiverad. Vi behöver inte göra någonting.

Du kan använda vilken GPS -modul som helst med en 1 Hertz pulsutgång. Du har en. Använd det!

OCXO: Jag försökte 2 oscillatorer. En dubbel ugn STP2187 12V sinusvåg. Och en ISOTEMP 131-100 5V, fyrkantig utgång. Båda kommer från radioparts16 på ebay. Jag hade en mycket bra service från dem och priset var billigare.

AVR: Kodpassning på lite atmega48. Men jag föreslår att du köper en atmega88 eller atmega328p. Det är nästan samma pris. Köp detta på digikey eller ebay. Jag använder dip -versionen. Du kan köpa ytmonterad version, men var uppmärksam, stift är inte samma sak som schemat.

LCD -skärm: Alla 4x20 HD44780 -kompatibla skärmar fungerar. Gissa var jag köpte min:) Ja på ebay för ett par år sedan. Nu är det dyrare än tidigare. Men tillgänglig under $ 20 US.

Kanske inom en snar framtid ska jag göra en kod för en 2x16 -skärm. Dessa skärmar kostar bara 4 $. Och mellan dig och mig räcker det med en 2 -raders display.

Du måste ha en AVR ISP -programmerare. Att programmera en AVR är inte som en Arduino. Arduino har redan programmerats för att kommunicera på seriell port. En helt ny avr måste programmeras med ISP eller Parallel High Voltage Programmer. Vi använder isp här.

En 74hc04 eller 74ac0, voltregulator 7812 och 7805, motstånd, kondensator…. digikey, ebay

Steg 2: Här är schematisk och Gpsdo_YT_v1_0.hex

Image
Image
Här är schematisk och Gpsdo_YT_v1_0.hex
Här är schematisk och Gpsdo_YT_v1_0.hex
Här är schematisk och Gpsdo_YT_v1_0.hex
Här är schematisk och Gpsdo_YT_v1_0.hex

Jag tror att schemat är allt du behöver för att förverkliga detta projekt. Du kan använda en kopparklädd bräda med etsningsmetod eller bara perforerad skiva om du vill.

Du kan använda vilken låda du vill, men jag föreslår en metalllåda. Eller bara på en brödbräda för skojs skull som min:)

Jag väntar på antennförlängning och bnc -kontakt för att lägga mitt projekt i en låda.

Du måste välja rätt säkringsbit. Se till att extern oscillator är vald. Om du har problem med External Oscillator, prova External Crystal. Och klockan low.ckdiv8 är avmarkerad. Se bild. Var uppmärksam, när den externa klockan smälter ihop måste du tillhandahålla en extern klocka för att programmera eller köra koden. Med andra ord, anslut oscillatorn i xtal1 -stift.

Förresten … du kan använda samma kod för att göra en frekvensräknare med 1 sekunders grind. Ange bara klockan som ska mätas i xtal1-stift så får du en +-1 Hz frekvensräknare.

Jag kommer att uppdatera projektet så snart jag har nya grejer.

Under tiden, om projektet intresserar dig, har du tillräckligt med material för att börja och till och med avsluta det inför mig

Jag laddade upp 2 videor, du kan se fas ett och det sista.

Jag är tillgänglig för frågor eller kommentarer. Tack.

26 februari 2017…. Version 1.1 tillgänglig.

-atmega48 stöds inte längre. Inte tillräckligt med utrymme.

-Lagt antal satelliter låsta.

-Stöd 2x16 lcd. Om du har en 4x20, kommer det att fungera också. Men två sista raden visar ingenting.

Steg 3: Loggar in Eeprom

Loggar in i Eeprom
Loggar in i Eeprom

Här är dumpningen av eeprom efter ett par timmar uf körtid. Jag ska förklara hur man läser detta. Återigen, det är lätt:)

På adressen 00 lagras 01 pwm -värde. Så snart fas 5 räknar 9 miljarder uppdateras pwm -värdet varje gång räknaren når exakt 10 miljarder.

Så snart är vi i fas 5. Alla räkningar lagras i eeprom efter pwm -värde. Börja på adress 02, efter 03 och så vidare.

Detta exempel kom från min 5 volt ocxo. Vi kan läsa pwm -värdet 0x9A73 = 39539 decimal på 65536. = 60, 33% eller 3.0165 Volt.

Så adress 00:01 är 0x9A73

Därefter kan du läsa 03. För 9, 000, 000, 003 sänks Pwm med 3 eftersom vi ännu är i fas 5

00 för 10, 000, 000.000 pwm vistelse är orörd och vi går över till driftläge (fas 6)

02 för 10, 000, 000.002 I så fall sänks pwm -värdet från 2

01 för 10.000, 000.001 pwm -värdet sänks från 2

01 för 10.000, 000.001 pwm -värdet sänks från 2 igen

00 för 10 000 000 000 000 pwm vistelse är orörd

00 för 10 000 000 000 000 pwm vistelse är orörd

00 för 10 000 000 000 000 pwm vistelse är orörd

Nu vet du hur du läser eeprom. Varje 1000 sekunders nytt värde skrivs i eeprom. När eeprom är fullt startar det om från adress 2.

FF -värde betyder 9, 999, 999,999

Du kan med denna dump spåra noggrannheten, utan någon LCD -skärm.

Du kan dumpa eeprom -filen med en isp -programmerare.

Jag hoppas att jag gav dig tillräckligt med information. Om inte, låt mig veta. Råd, fel, vad som helst.

Yannick

Rekommenderad: