Newsgroup: it.hobby.elettronica.digitale
Titolo: sulla precisione dei timer

Ciao, sembra collegato ad un posto che ho fatto precedentemente ma in 
realta' lo e' solo in parte.
Mi trovo nella situazione di dover cronometrare dei tempi: il segnale di 
star e stop viene triggerato da una linea apposita. Quello che mi preme 
e' poter misurare in modo preciso al decimillesimo di secondo tempi di 
circa dieci minuti all'incirca. Occorre una certa precisione.
Il circuito conterrebbe un PIC (o simili) che svolge varie funzioni. Non 
so se fidarmi del timer incorporato che conta i cicli di clock, oppure 
se fornire un segnale esterno dedicato a 10KHz di frequenza. La 
tolleranza deve essere appunto sufficiente a garantire una precisione 
tale che venga perso meno di un decimillesimo di secondo ogni sei 
milioni (i famosi dieci minuti). Voi come vi comportereste? Io 
sinceramente non so se i quarzi mi garantiscono tale precisione...
grazie e ciao
Alessio Sangalli

 sinceramente non so se i quarzi mi garantiscono tale precisione...
in generale i quarzi hanno buone prestazioni in termini di stabilità in
frequenza (poche ppm) ma a temperatura costante. quando questa cambia, la
frequenza può slittare di decine di ppm. potrei consigliarti il DS32KHz che
è un oscillatore a 32KHz della Dallas compensato in temperatura che
garantisce + o - 1 min su un anno, ovvero + o - 1 sec su 525.600 sec.
considerando i us avresti 100 us ( = 1/10.000 di s) su 52,56 s. sicuramente
esistono TCXO più performanti ma siamo ancora lontani dai 10 minuti da te
richiesti. tu vorresti praticamente 0.17 ppm e non credo che esistano
oscillatori (almeno rimanendo su componenti commerciali) così precisi.
un barbatrucco che potresti usare sarebbe quello di realizzare un circuitino
hardware che si occupa della misurazione del tempo. in questo caso potresti
usare si un TCXO in HF tipo a 10 MHz o più su. se il componente ti
garantisce un'incertezza di 1 ppm, dividendo la frequenza per arrivare a un
periodo di 100 us (o quello che ti serve) aumenterai dello stesso ordine di
grandezza la precisione. a questo punto usi un contatore a 24 bit e alla
fine del conteggio leggi da PIC il valore del registro del contatore: quelli
sono i 1/10000 di secondo passati tra lo start e lo stop. consiglio di usare
un circuito e non il PIC per contare perchè visto che già farà altre cose e
visto che la precisione che ti serve è così elevata non riuscirai mai
(attendo smentite in caso contrario...) a raggiungerla.
ciao!
Marco

 precisione...
Se non sto commettendo un errore grossolano di
valutazione dovrebbe bastarti perfino un quarzo da
32KHz ed il contatore di un PIC... (soprattutto nel
caso tu sia interessato a misurare tempi relativi e
non assoluti). Anche le derive dovute alle variazioni
di temperatura dovrebbero essere trascurabili
nell'arco di 10 minuti!
Se vuoi ottenere una precisione ancora maggiore usa un
quarzo da qualche MHz e dividi il conteggio, otterrai una
precisione molto maggiore di quella che ti serve...
Ovviamente se usi il timer del PIC, e se fai in modo da non
farlo andare in overflow (usando il prescaler per esempio),
il conteggio è indipendente dall'esecuzione del programma,
salvo per un contributo fisso dovuto alle istruzione per
dare lo start e lo stop.
Ciao,
A.D.