Přesnost krystalu

Zdravim všechny, nedávno jsem potřeboval hodiny na stěnu, tak jako správný elektrotechnik jsem si je postavil, všechno funguje jak má a hodiny běži, ale problém je s přesností, používam PIC16F628 a krystal 3,2768MHz , jako kondenzátory ke krystalu mam 33nF (zkoušel jsem i 22nF a asi tři krystali, ale výsledek byl stejne). Podle přibližných odhadů krystal běží na 3,2765MHz, s čehož vyplívá, že se hodiny seknou CCA o 1,5s za 6h. Potřeboval bych poradit co stim, koukal jsem po netu a veškerý hodiny co jsem viděl, tam maj krystal stejně jako já a tendle problém neřeší. Pokud by nikdo veděl jak změnit kmitočet na kterym krystal kmitá, dost by mi to pomohlo. Jinak po SW stránce by to mělo bejt na 99,9% OK, simulace v MPLABu vyšla na cyklus přesně a to i po nasimulování CCA 60h. Za jakoukoliv reakci děkuji

Rozumnejsi je pouzit kondy v hodnotach 33 (22) ale pF,ne nF, jak je udano i v datasheetu PICu. Jinak se na studeny konec Q PICu, ( znaceno CLKOUT ), zaradi kond cca10pF a paralelne k nemu kapac. trimr např. 25pF a tim se kmitocet oscilatoru jemne doladi

Ty kondenzáory tam mam pF , akorát jsem se upsal, jinak díky za radu, skusim to stim trimrem a dam vedět.

Kdyby to s trimrem neslo, da se to udelat i softwarove… predpokladam, ze krystal mas zvolen tak, aby pocet preteceni citace za vterinu bylo cele cislo… da se to doladit napriklad tak, ze v preruseni od citace si 1x za vterinu prectes jeho hodnotu a podle toho, zda se hodiny predbihaji nebo spozduji tam bud odectes nebo prictes nejaky drobny :wink: reakce na preruseni se sice muze menit (delka probihajici instrukce), ale obsluha bude vzdy stejna… nacist, upravit a zapsat zpatky… nedoporucuji do citace zapisovat stale konstantni hodnotu, ale skutecne si novo vypocitat prave kuli ruzne rychle odezve na preruseni :wink:

PS: PICy neznam, treba je tam odezva na preruseni konstantni, ale u x51 a myslim, ze ani u AVR neni a toto reseni funguje…

Úvahy o přerušení jsou naprosto správné i pro PIC. I tady je rozptyl v čase odezvy na IRQ. Dokonce si myslím, že krystal je přesný dostatečně, ale program není napsán dobře. Při vhodně zvoleném algoritmu a přerušovacím intervalu je možné dosáhnout toho, že jitter obsluhy přerušení nemá na přesnost vliv. A to tehdy, když časovač poběží bez nutnosti obnovy časovací konstanty. Například při krystalu 3276800Hz pro TMR0 zvolím předděličku :32 a získám přerušení každých 10ms. Vlastní TMR0 běží volně od 0 do FFh, bez toho, že bych přepisoval jeho časovou konstantu. Intervaly mezi přerušením nebudou vlivem rozptylu odezvy zcela přesné, ale střední kmitočet přerušení bude přesně 100Hz a získaný čas bude dán jen použitým krystalem.

Ja mam na picu nastavenou předděličku a čítam do TMR0 , takže mi vznikne kmitočet přerušení 400Hz, podle mě je tadle metoda po softwarové stránce 100% přesná, problém je na 99,9% v frekvenci krystalu.

To je chyba cca 70ppm a je to normální pro neladěný krystal. Je potřeba jej doladit nejprve hrubě kondenzátory a pak nějakých 10ppm kapacitním trimrem jak radí pan Hava.
Pro hodiny se používají krystaly 32,768kHz nebo 4,194304MHz. Není krystal jako krystal. A pokud jde o oscilátor, který je součástí nějakého MCU, nevykazuje příliš velkou stabilitu. Takže pokud chcete mít přesnost hodin někde kolem 0,1s/den, použijte hotový obvod RTC (je jich na trhu dost dokonce i teplotně kompenzované), nebo oscilátor realizujte pomocí tranzistorů.

Já použivam krystal s 30ppm, takže by tam měla bejt přesnost lepši. BTW co znamená to ppm? :smiley:

ppm = Parts per million, tedy miliontina z celku tj. 0,000 001 = 0,0001%

Tak to jestli dobře počitam, tak max odchylka krystalu s 30 pmm a základní frekvencí 3,2768MHz je CCA 4Hz , což by způsobilo chybu 1,5s za 10 dní !!! , což vmém připadě nepřipadá v úvahu (1,5 s za 6h). Ještě mě napadá, jak velký vliv by mohlo mít to že celé začizení je postavené na bezkontaktním poly?

Zklamu tě, ale dobře nepočítáš.

10dní * 24hod * 3600s * 0,000030 = 25,92s

Dost značný! Bezkontaktní pole má vysoké parazitní kapacity, řádově desítky pF. Už jsem na tom několikrát pohořel. U krystalu je velmi důležitá CL (load capacity), kterou je nutno dodržet, aby krystal kmital na své jmenovité frekvenci při 25°C. Proto je nutné ho dolaďovat trimrem. Těch 30 ppm je zřejmě výrobní tolerance, protože krystaly nelze nabrousit všechny stejně přesně na jmenovitou frekvenci. Bohužel jsem nenašel technické podmínky, za jakých je to definováno.

Čau všichni, tak jsem to po dlouhém jednání domluvil měření na ethanolu a výsledky jsou takové:
Měřil jsem krystal 3,276800MHz při teplotě 25°C a dostal jsem následující kmitočet: 3276880,400MHz.
Výsledek není ani tak podstatnej jako spíš to že oscilátory na mikroprocesorech PIC běží v šíleným režimu, kde rozkmit mezi špičkami je pouhých 200mV a měření se muselo provádět s aktivní kapacitní sondou, jinak se oscilátor zastavil a procesor nepracoval.
A jak se tady psalo o vlivu kapacity vývodů atd… tak ty se ukázali docela dost zanedbatelný oproti původní odchylce krystalu. Kmitočet se držel dost stabilně, i když byl krystal přímo u procesoru, i když k němu vedlo CCA 5cm drátu (odchylka jednotky Hz), co se ukázalo jako opravdu devastující faktor byla teplota, kde i pár stupňů znamenalo posun frekvence o desítky Hz. Proto bych řek že krystal použitý na taktování procesoru je dost nevhodný na generování přesných časů.

Pokud to chceš pro nástěnné hodiny, tak neřeš přesnost krystalu a použij modul DCF.

To by bylo asi nejideálnější řšení, ale asi jedno z nejdražších, přemejšlim nad tim že použiju obvod RTC, nebo postavím externí oscilátor s krystalem 3,2768Khz který jsou určený do hodin a maj lepší kmitočtovou i teplotní stabilitu.
BTW co jsem koukalm, použití DCF modulu by mi hodiny prodražilo CCA 2X-3X :smiley:

Ovšem odchylka kmitočtu 100Hz znamená chybu cca 2,5s za 24hod. To se mi nezdá zas tak hrozně moc. Mimochodem, z hlediska stability je naprosto v pořádku, že na krystalu PIC je nízká amplituda.

Pokud jde o hodiny, stavěl jsem si hodiny s PIC a krystalem 3,2768Mhz a dělalo mi to 2 vteřiny za den, nakonec jsem tam dal RTC obvod, konkrétně DS1302, kterej jsem měl doma a udělá mi to 1 vteřinu za měsíc.

Je pátek, dneska jdu s kamarádama taky na ethanol ! :smiley:

Taky si dám dnes svých xx půllitrů chmelového nektaru a zítra mi bude :mrgreen:

I ja :smiley:

Takovej postreh ze stolnich hodin zalohovanych baterii: Hodiyn maji sice vlastni krystal, ale ten je pouzit jen pro chod jejich procesoru(nebo jak tomu rikat). Pro casovani hodin se vyuziva jen kdyz vypnou proud a jede to na baterky. Pokud jsou pripojeny k siti, je zdroj taktu pro cas sitova frekvence 50Hz (kterou museji elektrarny velice presne dodrzovat, aby nevznikaly zbytecne ztraty).