Klocka med hög precision
Klocka med hög precision
Jag sitter och klurar på en applikation där jag behöver två timers som går väldigt lika. De får inte vara alltför känsliga för temperatur osv, och får inte diffa mer än säg, en hundradel på en kvart. Lite taget ur luften, men jag vet inte vad som är realistiskt...
Båda två ska vara anslutna till varsin PIC-processor som ska kunna läsa av tiden. Upplösningen bör vara 10ms.
Funderade först på någon högprecisions klockgenerator via en binär räknare. Är detta knasigt tänkt? Någon som har något tips?
Båda två ska vara anslutna till varsin PIC-processor som ska kunna läsa av tiden. Upplösningen bör vara 10ms.
Funderade först på någon högprecisions klockgenerator via en binär räknare. Är detta knasigt tänkt? Någon som har något tips?
Jag tänkte göra två st "moduler" med varsin klocka och PIC16F877A. Synkningen görs väl som sagt enklast genom att ansluta dem till varandra och göra en reset. Kanske görs enklast via någon utgång på den ena PIC-processorn för att få en brant puls.grym skrev:borde klaras med standard 10ppm kristaller, och dom kan man lätt göra bättre genom att grovt temperaturkontrollera dom, funkar med en ptcuppvärmning, eller något bättre
frågan. hur ska du synkronisera dom?, ha dom ihop och köra en reset ?
Kan någon rekommendera någon räknare? Den måste väl vara minst 16 bit. Går väl förstås att kaskadkoppla två st 8-bits räknare.
Är inte kristallerna mycket snabba? Vill ju inte köra flera MHz,,,
> och får inte diffa mer än säg...
Alltså diffa från *varandra* ? Eller från någon slags absolut tid ?
> en hundradel på en kvart.
En hundradel av *VADÅ* ??
Av en kvart ? Av en sekund ??
Om det är en hundradel av en kvart, sä låter det väl inte speciellt avancerat.
En hundradel av en sekund är lite mer "spännande"...
Jag gör också det vågade antagandet att "en kvart" = 15 minuter.
> Är inte kristallerna mycket snabba? Vill ju inte köra flera MHz,,,
Vad har det med det hela att göra !?
Det tas om hand i programvaran.
> Kan någon rekommendera någon räknare?
PIC16F877A.
> Synkningen görs väl som sagt enklast genom att ansluta dem till varandra
I så fall (om de i alla fall är anslutna till varandra), så kan de lika
gärna köra med *samma* klocka. Varför ska du ha två klockor ?
Lår den ena PIC'en vara "master" och trigga den andra på något sätt.
Sedan (när den andra signalerar) så är dete bara att stoppa (eller
läsa av) klockan för den.
"Diffen" kommer att utgöras av tiden det tar för själva signaleringen
mellan de två PIC'arna.
Sen, *om* du dessutom vill ha tider som är noggranna m.a.p absolut
tid, så kan du köra master-PIC'en från en bättre klocka än en
standard 50 ppm kristall. Men det är en annnan fråga...
Alltså diffa från *varandra* ? Eller från någon slags absolut tid ?
> en hundradel på en kvart.
En hundradel av *VADÅ* ??
Av en kvart ? Av en sekund ??
Om det är en hundradel av en kvart, sä låter det väl inte speciellt avancerat.
En hundradel av en sekund är lite mer "spännande"...
Jag gör också det vågade antagandet att "en kvart" = 15 minuter.

> Är inte kristallerna mycket snabba? Vill ju inte köra flera MHz,,,
Vad har det med det hela att göra !?
Det tas om hand i programvaran.
> Kan någon rekommendera någon räknare?
PIC16F877A.
> Synkningen görs väl som sagt enklast genom att ansluta dem till varandra
I så fall (om de i alla fall är anslutna till varandra), så kan de lika
gärna köra med *samma* klocka. Varför ska du ha två klockor ?
Lår den ena PIC'en vara "master" och trigga den andra på något sätt.
Sedan (när den andra signalerar) så är dete bara att stoppa (eller
läsa av) klockan för den.
"Diffen" kommer att utgöras av tiden det tar för själva signaleringen
mellan de två PIC'arna.
Sen, *om* du dessutom vill ha tider som är noggranna m.a.p absolut
tid, så kan du köra master-PIC'en från en bättre klocka än en
standard 50 ppm kristall. Men det är en annnan fråga...
Om vi antar att "en kvart" är 15 minuter och "en hundradel" avser 1/100 sek måste det bli inom 11ppm, alltså ±5,5ppm.
detta är helt säkert möjligt att åstadkomma med de kretsar jag länkade till, DS4000 är bra mycket bättre än detta krav!
Men hur vill du synka dom? Om de ska passa sådär skitnoga med varandra även på avstånd kan du ha ett problem, all synkronisering har en viss reaktionstid och du ska klura en del för att få det precist.
Jag vet ett sätt där du kan synkronisera över radio men det kräver en del extra och tanka på timing.
detta är helt säkert möjligt att åstadkomma med de kretsar jag länkade till, DS4000 är bra mycket bättre än detta krav!
Men hur vill du synka dom? Om de ska passa sådär skitnoga med varandra även på avstånd kan du ha ett problem, all synkronisering har en viss reaktionstid och du ska klura en del för att få det precist.
Jag vet ett sätt där du kan synkronisera över radio men det kräver en del extra och tanka på timing.
Alltså, om båda PIC'arna använder *samma* "klocka" så blir det ju
(i princip) 0 ppm diff mellan dom...
> Men hur vill du synka dom?
De ska ju vara (eller i alla fall *kan* vara) anslutna till varandra,
så det borde inte vara något problem.
Igen, om båda PIC'arna i alla fall ska vara kopplade till varandra,
så ser jag inte varför de ska använda separata klockor.
(i princip) 0 ppm diff mellan dom...

> Men hur vill du synka dom?
De ska ju vara (eller i alla fall *kan* vara) anslutna till varandra,
så det borde inte vara något problem.
Igen, om båda PIC'arna i alla fall ska vara kopplade till varandra,
så ser jag inte varför de ska använda separata klockor.
vfr har rätt.
Det var precis så jag menade. Ber om ursäkt för att jag var lite otydlig, men jag menade alltså en hundradels sekunds fel på en kvart.
Har för övrigt skaffat mig lite bättre kunskap om PIC-processorns funktion så jag har en idé om hur jag kan lösa detta m.h.a prescalern. Jag tackar för tipsen om kristaller.
Ser ut som om DS32KHZ är en riktigt schysst pryl. Beställer några sådana.
Det var precis så jag menade. Ber om ursäkt för att jag var lite otydlig, men jag menade alltså en hundradels sekunds fel på en kvart.
Har för övrigt skaffat mig lite bättre kunskap om PIC-processorns funktion så jag har en idé om hur jag kan lösa detta m.h.a prescalern. Jag tackar för tipsen om kristaller.
Ser ut som om DS32KHZ är en riktigt schysst pryl. Beställer några sådana.
skall kristallerna jobba ännu stabilare och mindre känslig för omgivande miljö som brus, intefrens på matningarna, komponentvärdes variationer etc. så bör kristallen jobba i serieresonans (tex colpitt-oscillator) istället för de MCU-världen allmänt använda paralellresonansoscillatorerna (pierce-oscillator)grym skrev:borde klaras med standard 10ppm kristaller, och dom kan man lätt göra bättre genom att grovt temperaturkontrollera dom, funkar med en ptcuppvärmning, eller något bättre
frågan. hur ska du synkronisera dom?, ha dom ihop och köra en reset ?
dock bör man beställa kristaller för just serieresonans om frekvensstämplingen skall stämma med faktiskt genererad frekvens - med temperaturkontroll enligt grym och liten trimkondensator/induktans så kan det justeras till väldigt hög stabilitet och frekvensnoggranhet.
kristalloscilatorer fins till nära cecium-atomurs precision om man är villig att betala lite...
Beror på om applikationen används utomhus eller inte, alternativt kan matas med antenn utifrån.
GPS ger onekligen väldigt hög absolutnogranhet när den ser satelliterna, men kräver en hel del klur om man av dessa 1 Hz flanker skall tillverka sig en 10 MHz referens-signal eller typ 10 ms räknarsnurra med väldigt lite tidsgitter/fasbrus - inställningstiden brukar vara väldigt långa just för att 'korrektionen' bara kommer med 1-sek intervall.
Det bero på vad som skall göras...
GPS ger onekligen väldigt hög absolutnogranhet när den ser satelliterna, men kräver en hel del klur om man av dessa 1 Hz flanker skall tillverka sig en 10 MHz referens-signal eller typ 10 ms räknarsnurra med väldigt lite tidsgitter/fasbrus - inställningstiden brukar vara väldigt långa just för att 'korrektionen' bara kommer med 1-sek intervall.
Det bero på vad som skall göras...
Känns som att gå över ån efter vatten att skapa en 10 MHz referens ur 1-PPS signalen från GPS.
Absolut enklaste är ju att ha en intern höghastighetsräknare som man nollställer vid varje 1-PPS flank och en räknare som räknar 1-PPS signalerna (håller reda på antal hela sekunder)
Tiden man får då håller ju en absolutnoggrannhet som är beroende på kristallen som höghastighetsräknaren kör på. T.ex. 100 ppm ger ett max absolutfel på 100 µs.
Det fina i kråksången är att man mycket lätt kan förbättra de där 100 ppm genom att mäta det verkliga antalet cykler som räknaren hinner med mellan två 1-PPS pulser. Multiplicerar man sitt höghastighetsräknarvärde med (teoretiskt antal räknarvärden på 1 sekund)/(faktiska antal räknarvärden på 1 sekund) får man lätt en absolutnoggrannhet < 1µs.
Absolut enklaste är ju att ha en intern höghastighetsräknare som man nollställer vid varje 1-PPS flank och en räknare som räknar 1-PPS signalerna (håller reda på antal hela sekunder)
Tiden man får då håller ju en absolutnoggrannhet som är beroende på kristallen som höghastighetsräknaren kör på. T.ex. 100 ppm ger ett max absolutfel på 100 µs.
Det fina i kråksången är att man mycket lätt kan förbättra de där 100 ppm genom att mäta det verkliga antalet cykler som räknaren hinner med mellan två 1-PPS pulser. Multiplicerar man sitt höghastighetsräknarvärde med (teoretiskt antal räknarvärden på 1 sekund)/(faktiska antal räknarvärden på 1 sekund) får man lätt en absolutnoggrannhet < 1µs.