Sari la conținut
ELFORUM - Forumul electronistilor

Ceas cu PIC-16F876A


MirceaM

Postări Recomandate

Vizitator VanHauser

TIMER1 poate lucra cu un cristal extern, de 32768 Hz sa zicem. Timer-ul fiind pe 16 biti, un overflow va avea loc la exact 2 secunde. Setand valoarea timer-ului in fiecare intrerupere la 0x8000 va fi un overflow la exact o secunda. Totul depinde de precizia cristalului de ceas. Mai multe detalii in datasheet.

Link spre comentariu
  • Răspunsuri 38
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • MirceaM

    10

  • cirip

    9

  • Abram Burel

    3

  • Pasare Dan

    2

Top autori în acest subiect

Baieti, imi pare rau ca ma repet. Datasheet deci. Iata ce scrie acolo (fisier: PIC16F87X DataSheet - 30292.PDF). 20 MHz, EPSON CA-301 20.000M-C, ? 30 PPM.?30 la un milion inseamna ?3 la 100 mii. ?3 secunde la 100 mii secunde. 100000 / 86400 = 1.157 zile. Adica intr-o zi poate sa o ia inainte cu 3 secunde? La 20 de zile cu un minut? Este corect acest calcul? In cazul in care se iau anumite masuri ca sa fie mai bine (eroare mai mica) care sunt acestea si care sunt valorile concrete, testate, ale preciziei obtinute?Fara a utiliza alt circuit integrat decat pic-ul.

Link spre comentariu
:) eu am facut un ceas de camera cu PIC16F84A folosind TMR0 (singurul disponibil la 16F84) si merge foarte precis (10 sec / luna), insa aceasta precizie poate fi obtinuta numai prin ajustare dupa punerea in functie a bazei de timp a ceasului, permisa printr-o programare adecvata. Cuartul este de 4 MHz si are nativ o dispersie de fabricatie care poate duce la erori mari la un ceas fara posibilitatea de ajustare sau de selectie a cristalelor folosite.daca folosesti TMR0 une din probleme poate fi prescalerul care se reseteaza la fiecare rescriere in TMR0 si astfel pierzi microsec. Cand l-am pus prima data in functie ramanea in urma peste 20 minute / zi care depasea plaja sistemului de ajustare deci rau de tot, apoi am fixat problema si am putut sa-l ajustez in jur de 10 sec /luna.
Link spre comentariu

MirceaM,Calculul mi se pare corect, dar ceea ce cred eu ca trebuie luat in consideratie este ca cei 30ppm sunt limta maxima pe tot intervalul de temperatura. Temperatura intr-o casa e relativ constanta si asta ajuta. Cred ca asta este explicatia preciziei mai mari pe care au obtinut-o cei care au facut montajul.Daca cerintele sunt mai dure, probabil ca ar trebui un TCXO sau ceva asemanator, adica mai precis.Cirip

Link spre comentariu

Da, cerintele sunt mai dure, trebuie sa mearga pe masina, in limite largi de temperatura. Scopul nu este sa fac un ceas pur si simplu. Este vorba de o aplicatie care face lucruri mai importante si careia vreau sa-i adaug aceasta functie: sa fie si ceas. De fapt aplicatia (programul) are deja variabile pt sec, min, ora deci este destul de simplu, ca soft. Vreau insa sa fie la fel de bun precum ceasurile uzuale de pe masini, care sunt bune. Altfel, utilizatorul (pe buna dreptate) va stramba din nas. Luni si luni de zile constati ca un ceas de pe masina arata ora corect (pana la minut).

Link spre comentariu

mai baieti precizia este data de quartzceasul de pe dacia parca este facut cu un mmc351 si mergea foarte binese poate face foarte precis si cu pic cu i in coada ptr gama extinsa de temperaturaeu am facut unul si merge foarte bine toata smecheria este in program

Link spre comentariu
  • 3 săptămâni mai târziu...

Daca doresti o precizie mai mare se poate ajusta frecventa prin comparatie cu un ceas extern, este modul pe 77Khz folosit de ceasurilegermane controlate prin radio sau daca este nevoie de precizie mai marese poate folosi un sistem GPS, la care se pot lega si alte aplicatii.

Link spre comentariu
  • 9 luni mai târziu...

MirceaM,Calculul mi se pare corect, dar ceea ce cred eu ca trebuie luat in consideratie este ca cei 30ppm sunt limta maxima pe tot intervalul de temperatura. Temperatura intr-o casa e relativ constanta si asta ajuta. Cred ca asta este explicatia preciziei mai mari pe care au obtinut-o cei care au facut montajul.Daca cerintele sunt mai dure, probabil ca ar trebui un TCXO sau ceva asemanator, adica mai precis.Cirip

Cirip,multumesc pt explicatii. M-ar interesa sa despicam firul in continuare. Deci max 30 ppm. Este adevarat ca el fabricant de controllere se refera la aceasta valoare "intre un exemplar de controller si altul"? Adica daca avem un exemplar concret in mana este posibil ca acesta sa fie caracterizat (de exemplu) de +10ppm si, daca un sistem facut cu acest exemplar de controller merge la o temp constanta (la 20 de grade, la temp camerei) putem aplica o corectie prin soft a acestei valori de +10ppm precum si o corectie a erorii provocate de frecventa cuartului (corectie cam ca la anii bisecti) si putem obtine un ceas foarte precis? Daca da, ar mai ramane doar dependenta de temperatura.
Link spre comentariu

Desigur, se poate face o astfel de "compensare custom" pentru un anumit exemplar. Numai că "preţul" timpului consumat pentru o astfel de operaţiune (dezvoltare de cod, tatonarea propriu-zisă) e cu siguranţă mai mare decât cel al unei referinţe mai bune (evident, până la un... punct).Corecţia temperaturii se face de regulă prin termostatare la o temperatură mai mare decât cea ambientală.

Link spre comentariu

mai oameni buni eu am facut ceas cu quartz de 4.194304 MHz, este super precis acea valoare impartita la 4 cat are ciclu instruictiune, inpartit la 256 prescaler si la 256 cat numara temporizatoru da valoare 16 care o contorizez soft si la trecerea prin 0 incrementez secunda. Este valoarea de quartz care prin acele impartiri da o valoare rotunda. Si datorita picului/alimentarii/quartzului tot am o abatere de 11 secunde la 24 ore in sensul ca ramane in urma si la 03 dimineata o corecteaza soft, atunci cand nu-l vede nimeni sa nu se simta picu prost :yawinkle:

Link spre comentariu

11 secunde la 24 de ore este foarte mult >0,1 la mie. Nu poate fi de la toleranţe (decât dacă ai folosit un cuarţ de geam de termopan :) ), ci mai degrabă din program.

Link spre comentariu

nu cred, adica sunt sigur ca nu e din program. Nu am pierderi de intreruperi, iar acele 11 secunde sunt batutencuie de 3 ani de zile. Deci daca ar pierde vreo intrerupere care se produce la 62,5 milisecunde (interval in care are timp picu suficient sa faca ce vrea muschiu lui) deci 16 pe secunda, s-ar decala cu mai mult . Eu zic ca sigur este de la quartz etc. Si nu inteleg de ce te miri ca doar matematic este exact, practic este altceva :smt003 atunci cum iti explici ca o gramada de ceasuri de pe piata au quartz de 32,768 deci matematic tot perfecte dar in practica ..... daca quartzul meu luat de la telezimex e de calitate indoielnica, asta e , teapa mea .

Link spre comentariu

Este adevarat ca el fabricant de controllere se refera la aceasta valoare "intre un exemplar de controller si altul"?

Nu. Eu vorbeam de cuart, nu de controler. Controlerul nu are nici o treaba. Poate cel mult prin contributia capacitiva la incarcarea cuartului, dar asta se compenseaza prin condensatorii externi.Controlerul primeste un cloc si "i se spune" prin soft (constante) ca e de 4MHz. Daca cei 4MHz nu sunt de fapt 4, controlerul habar n-are si putin ii pasa.Pe de alta parte, ceea ce se pierde de multe ori din vedere la calificarea cuarturilor drept "proaste" este ca frecventa scrisa pe orice cuart este legata de o anumita incarcare capacitiva sau un anume mod de oscilatie. Daca nu sunt respectate, cuartul o ia prin papusoi. Si e normal sa fie asa, daca ne uitam la schema echivalenta a unui cuart. In particular, la oscilatoarele ptr controlere, cele cu 2 conzi si un cuart, cuartul functioneaza dezacordat inductiv. Frecventa de oscilatie se afla undeva intre rezonanta serie si cea derivatie si trebuie sa poata fi reglata f aproape de cea scrisa pe capsula.Mai demult, cand imi construiam transceivere de scurte, facusem rost cu mare greutate de un XF9 si un purtator. Spre disperarea mea, frecventa era cu 2.5-3KHz mai departe decat cea ideala, raportata la gabaritul filtrului. Mai tarziu am inteles ca nu foloseam cuartul cum trebuie, adica trebuia sa folosesc rezonanta serie; eu foloseam cuartul in zona inductiva. Schimband schema oscilatorului, cuartul s-a tras f aproape de pozitia corecta.Revenind, cei 30ppm sunt ai cuartului. Cand am nevoie de taiming f precis, fac oscilatorul si vad daca e mai sus sau mai jos. De obicei e mai sus si maresc capacitatile de acord. Aia de pe intrarea portii o pun trimer. Daca marirea capacitatii nu e suficienta, pun o bobinuta in serie cu cuartul.Cirip
Link spre comentariu

Bun, mersi din nou.

Una peste alta, aflandu-ne in fata unui montaj concret cu cuart de 16000 KHz, 2 conzi de 22 pF si un 16F876A este posibila strategia mentionata?

Anume:

- vad incotro o ia ceasul dupa cateva zile sau o saptamana (in sus sau in jos si cu cate secunde) si aplic o corectie ca la anii bisecti (adica la nu stiu cate intreruperi, desi ar trebui sa incrementez ceva, NU incrementez). Sau, dimpotriva, adun 2 in loc sa adun 1.

- pun un senzor de temperatura pe placa si aplic o corectie cu temperatura.

Se poate asa ceva sau nu? Numai cu aceste piese.

 

Scopul (anuntat initial in acest topic) este sa obtinem un ceas precis cat ceasurile obisnuite de pe masini (care si dupa 1 an arata minutele corect, "trecand" printr-un range larg de temperatura).

 

Ca "depinde" inteleg dar nu cumva dependenta este previzibila, inteligibila, anticipabila si corectabila prin soft? :)

Link spre comentariu

Eu până acum n-am văzut un ceas de maşină care să nu devieze vara şi iarna.

Merge o compensare soft, inclusiv cu temperatura, dacă ai un senzor.

Algoritmul de compensare trebuie însă studiat cu atenţie, deoarece ai procese de-a face cu procese rapide (tactul) influenţate de procese lente (variaţia temperaturii). Ar merge poate o mediere a temperaturii pentru un anumit interval de corecţie şi apoi corectarea timpului cu valori luate dintr-un tabel.

Chiar dacă nu se doreşte utilizarea unui RTC (de exemplu DS1307) consideraţiile din nota asta de aplicaţie http://www.maxim-ic.com/appnotes.cfm/an_pk/58 pot fi utile.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări