Stránka 1 z 2

Krystalový oscilátor u procesorů AVR

Napsal: 07 pro 2015, 17:15
od Neniu
Zkouším si něco s procesorem AT tiny 2313 a zkouším u něj nastavit přesnou frekvenci. To se vlastně hezky podařilo, ale přesto mám dotaz :)

Oscilátor je zapojený podle DS, krystal mezi nožičky XTAL1 a XTAL2, z každé z nich na zem malý kondenzátor. Když se jeden nebo druhý nahradí trimrem, dá se kmitočet krásně doladit.

No a teďka ty dotazy:

- Kam zapojit trimr? Je lépe jej zapojit na vstup nebo na výstup vnitřního invertoru? Funguje na obou nožičkách, ale možná je jedna z nich vhodnější. A pokud tomu tak je, proč?

- Kmitočet se dá trochu doladit i změnou napětí procesoru. Je správnější jej doladit trimrem a nebo napětím? Měření mi ukazuje, že pokud se napětí nemění, je kmitočet stabilní. Na čítači připojeném na oscilátor již několik hodin svítí 4000,000 kHz.

Napsal: 07 pro 2015, 17:50
od serviceman
Určitě neladit napětím procesoru. Pokud máš extrémní nároky na stabilitu oscilátoru, použij externí, možná termostatovaný. Nevím co od toho chceš.

Napsal: 07 pro 2015, 17:57
od frpr666
Já bych dal trimr na vstup (XTAL1). Mrkni tu:
http://avrprogrammers.com/howto/crystal-accuracy
Žijeme ve světě, kde nic není ideální. Navíc kondenzátory a trimry mají svůj ppm/C. Takže to bude trochu chodit s teplotou...
Jinak na internetu najdeš trik, jak z libovolného krystalu dostat konstantní tik např. 1Hz.

Napsal: 07 pro 2015, 19:56
od Neniu
serviceman píše:Nevím co od toho chceš.


Je to do hodin, extrémní přesnost není nutná, ale pokud půjdou přesně, je to jen dobře.

serviceman píše:Určitě neladit napětím procesoru.


Proč?

Napsal: 07 pro 2015, 19:58
od Neniu
frpr666 píše:Já bych dal trimr na vstup (XTAL1). Mrkni tu:
http://avrprogrammers.com/howto/crystal-accuracy
Žijeme ve světě, kde nic není ideální. Navíc kondenzátory a trimry mají svůj ppm/C. Takže to bude trochu chodit s teplotou...


Toto všechno vím a počítám s tím. A také proto se ptám, kam je lepší dát trimr. Jistě, nebude to dokonalé, ale pokud je ze dvou možností jedna lepší, chci ji využít. Ale já nevím, která z možností zapojení trimru je lepší a proto se ptám.

frpr666 píše:Jinak na internetu najdeš trik, jak z libovolného krystalu dostat konstantní tik např. 1Hz.


Ten trik by mne zajímal, já to řeším asi primitivně pomocí čítače/časovače a přerušení v procesoru :-)

Napsal: 07 pro 2015, 21:26
od frpr666

Napsal: 09 pro 2015, 06:51
od AB1
No a teďka ty dotazy:
- Kam zapojit trimr?

Nejlépe nikam.
U hodin je důležitější stabilita kmitočtu, než jeho přesná hodnota.
A stabilita se trimrem zhorší.

Odchylka kmitočtu oscilátoru se velmi snadno vykompenzuje v programu procesoru.

Napsal: 09 pro 2015, 07:39
od termit256
Nebude rozumnejsi tam dat za par kacek RTC a nemusis se babrat s vypocty casu, datumu apod.? Treba maxim dela RTC s teplotne kompenzovanym oscilatorem s odchylkou +-2ppm coz je nahony vzdalene krystalum. Navic se da do obvodu jednoduse nahrat korekce.

Pokud cas chces opravdu zpracovavat v AVR, dej tam oscilator, za rozumnou cenu se daji koupit se stabilitou kolem +-0,5ppm

Jak psal AB1, na nejake doserizovani krystalem se vykasli, tady jde opravdu jen o to ulitavani s teplotou/dlouhodobou stabilitu. Doladeni si udelej softwarove.

Napsal: 09 pro 2015, 17:56
od Neniu
Jeden člověk říká, že SW korekce je nadraka a je lepší trimr, druhý (zde) říká, že HW je nadraka a je lepší korekce v SW. To si pak má člověk vybrat :D

Můžu poprosit o tip na typ RTC obvodu s tolerancí ±2ppm? A případně kde splašit oscilátor s přesností ±0,5ppm za rozumnou cenu? Do těch hodin je to asi zbytečné, ale hodil by se jinam. Já nacházím jen velmi drahé a nebo ty běžné, ale ty mají rozhodně horší přesnost.

Napsal: 10 pro 2015, 08:55
od rob_brno
Neniu píše:Můžu poprosit o tip na typ RTC obvodu s tolerancí ±2ppm? A případně kde splašit oscilátor s přesností ±0,5ppm za rozumnou cenu? Do těch hodin je to asi zbytečné, ale hodil by se jinam. Já nacházím jen velmi drahé a nebo ty běžné, ale ty mají rozhodně horší přesnost.


Do hodin jednoznačně RTC, např. http://www.santy.cz/moduly-c22/mini-rtc-pro-3231-i157/
Na ebayi ten stejný za 35kč.
Modul má výstup signálu 1Hz, ten když připojíš na interupt vstup a podle něj budeš přičítat vteřiny, tak se na ladění krystalu můžeš vykašlat. Na převod vteřin(od roku tuším 1980) na datum a čas lze pak použít knihovnu time.h

Napsal: 10 pro 2015, 16:42
od Neniu
Díky za tip, vypadá to docela zajímavě. Jen tedy přesnost toho teplotního čidla je úžasná :D

Každopádně si myslím, že pokud stavím hodiny s MCU tak tam dávat ještě RTC je plýtvání strojovým výkonem. Něco jiného je, když ten procesor řídí hromadu dalších věcí a potřebuji i hodiny, tam RTC obvod patří, ale pokud procesor má řídit jen hodiny, je to to prostě mrhání.

A uznávám, že se může najít někdo, kdo bude tvrdit, že používat na hodiny procesor je mrhání, protože na to stačí několik obvodů klasické logiky. Což je také pravda, ale procesor je jedno pouzdro.

Takže RTC by bylo Teďka ještě prosím ten kompenzovaný oscilátor s přesností 0,5 ppm za rozumnou cenu ;-)

Napsal: 10 pro 2015, 17:49
od termit256

Napsal: 10 pro 2015, 18:04
od Neniu
Děkuju. A jen valím koukadla, protože ty ceny jsou skutečně velmi zajímavé a příznivé. Přiznám se, že vzdor očekávání.

Budu muset Mousera zkusit :)

Napsal: 11 pro 2015, 10:31
od petrfilipi
RTC má tu výhodu, že poskytuje kompletní čas i po připojení napájení. Protože to stejně nějak musíš vyřešit - buď jednou nastavíš externí RTC s baterií nebo musíš zálohovat uP a ten musí stále běžet, abys po připojení napájení měl aktuální čas.
Dalším řešením je použít GPS modul - teď to řeším pro přesné stopky. Buď poskytuje přímo výstup času v digitální podobě (to by bylo pro hodiny) nebo má výstup 1pps (1 puls za sekundu). On to nemusí být jen 1pps, ale 1-1000 pps podle typu. Pokud najdeš typ, který má 1pps opravdu z družice (všechny totiž mají 1pps, ale některé si to generují jen SW), tak získáš za pár korun "absolutně" přesný zdroj impulsu 1s. A pak Ti může být jedno, na jaké frekvenci běží procesor, 1pps přivedeš na vstup přerušení a už jen čítáš a "probubláváš" přechody sekund na minuty apod.
Když bys chtěl např. jako já přesné stopky 1/100s, tak je možné použít oscilátor, jehož frekvenci lze měnit (OCXO apod.) napětím 0-5V v rozmězí např. +/- 2ppm. No a není nic jednoduššího, než použít nějaký procesor, který sejme náběžnou hranu 1pps signálu z družice a začne čítat frekvenci OCXO. Když napočítá do další náběžné hrany třeba 9 999 990 impulzů, tak trochu přidá napětí pro OCXO. Tím lze získat "absolutně" přesnou frekvenci i mimo 1pps.
Něco o tom je např. tady: http://ok1uga.nagano.cz/gps_normal.htm

Petr

Napsal: 11 pro 2015, 10:36
od rnbw
A k hodinam antenu?