briobit Postat Mai 11, 2012 Autor Partajează Postat Mai 11, 2012 Acum am gasit si eu un acumulator incarcat de 12 volti incarcat prin casa am pus ceasul pe el si ramane sa vad cum se misca la cat e de mare acumulatorul cred ca 3-4 saptamani ma tine lejer, ramane sa comunic rezultatele. Link spre comentariu
XAN77 Postat Mai 12, 2012 Partajează Postat Mai 12, 2012 ...vreau sa va spun ca pana nu veti pilota acel ceas cu un cristal care sa aiba frecventa de takt exact o valoare de forma Frecv=2^x unde x trebuie sa poata fi divizat de catre prescalerul uC-ului folosit si sa dea exact valoarea 1, pana atunci veti avea un ceas care arata APROXIMATIV ora "exacta" ...deduc ca dvs nu ati inteles principiul software roman black (zero cumulative error). Precizia ceasului cu cristal de 32768 merge atat de bine pe cat de bun este cristalul, si sunt cristale si cristale. Eu am fost mai ghinionist ca dvs si am facut ceasuri cu ds1307+Q32768 care au abateri peste limita mea de acceptare. Link spre comentariu
yo6pir Postat Mai 12, 2012 Partajează Postat Mai 12, 2012 Intr-adevar nu folosesc in softurile mele acea metoda "roman black" care mi se pare foarte greu de implementat. Mult mai simplu mi se pare sa setez prescalerul uC-ului sa divida cu 2^15 si sa incrementez o variabila "secunda" in ISR, nu?Asa e, nu toate cristalele sunt precise dar mie nu mi s-a intamplat sa gasesc unul prost, cel putin pana acuma. Link spre comentariu
10vid Postat Mai 12, 2012 Partajează Postat Mai 12, 2012 Nu exista asa prescaler 2^15. Pentru cristal de 32kHz, prescaler 128 si Timer0 liber sa numere 256.Metoda asta "roman black" e exagerata, iar metode mai simple si la fel de exacte exista pentru Timer0.Nu de metode ducem lipsa, ci de implementarea lor corecta.De exemplu, metoda folosita in primul soft postat e una foarte buna (in ciuda abaterii de 12min/zi din cauza proastei implementari):1.000.000 / 4000 / 250 = 1unde 4000 = prescaler 16 x Timer0 250, iar 250 e o variabila soft.Problema apare la incarcarea timerului, unde intervin trei surse de intarziere: latenta intrerupere (3 ciclii), sincronizare timer dupa incarcare (2 ciclii) si numarul de instructiuni dintre momentul intreruperii pana ce timerul a fost updatat (care tre numarate).Atunci va fi asa:1.000.000 / (3984 + 16) / 250 = 1adica 3984 = prescaler 16 x Timer0 249, si ne raman 16 ciclii care trebuie irositi, 5 ciclii se duc pe cele doua latente hardware iar restul pe instructiunile inerente de la inceputul intreruperii (eventual se poate completa cu cateva NOP-uri pana la 16, daca sunt prea putine). Link spre comentariu
MatyC Postat Mai 12, 2012 Partajează Postat Mai 12, 2012 Daca ar fi vorba de un ceas utilizat in situatii unde timpul este critic nu m-as complica cu astfel de ceasuri. In ziua de zi cu zi este ok acesta. Intradevar cuartul de 32768 Hz ( 2 la puterea 15) este usor de implementat hardware, insa sa luam in calcul efectul temperaturi. La cel de 32768Hz se simte direct pe cand la cel de 4 Mhz deviatia frecventei ajunge si ea sa fie divizata asa ca in final efectul este redus. Studiasem asta la sinteza de frecventa cu bucla PLL. Eu am crezut ca este usor sa faci un ceas cu un uC insa m-am inselat. Este o provocare pe care am reusit sa o rezolv si asta ma bucura, am invatat cateva aspecte legat de programare si oricum nu am nevoie de un ceas dupa care sa-mi reglez bataile inimi. Pentru oscilatorul de 4 Mhz in regim de amator ne putem permite un TXCO in capsula de metal care isoleaza cat de cat cuartul de mediul inconjurator si de bine de rau este la o valoare de 4.000.000 Hz.Ceasul acesta, cel facut de Bruno Gavand si un altul proiectat de mine ( 2 algoritmi diferiti) m-au multumit ca precizie. Referinta este ceasul de pe receptorul de satelit.Codul sursa l-am mai curatit cat de cat, foloseste din RAM cam 29 de locatii (47%) cam mult totusi. Ideea principala a fost sa vad cum iese un multithread pe PIC16F84. Ma gandesc cum sa implemetez o fotorezistenta pentru autodimming la afisoare sa nu deranjeze noaptea. :( ceas4digit.zip Link spre comentariu
XAN77 Postat Mai 12, 2012 Partajează Postat Mai 12, 2012 te referi la preincarcarea registrului timarului cu o anume valoare, pentru ca el sa nu mai incrementeze de 256 de ori pana la overflow. Metoda roman black imi place tocmai pentru ingeniozitatea ei. Desi teoria pare complicata pana o intelegi, punerea in practica e chiar simpla. Link spre comentariu
briobit Postat Mai 12, 2012 Autor Partajează Postat Mai 12, 2012 Ma gandesc cum sa implemetez o fotorezistenta pentru autodimming la afisoare sa nu deranjeze noaptea. :( exact asta spunea nevasta aseara ca lumineaza prea tare Pana acum merge la secunda si din acumulator a scazut foarte putin aveam 12,40 volti ieri si acum am 12,35 volti. Link spre comentariu
briobit Postat Mai 17, 2012 Autor Partajează Postat Mai 17, 2012 ceasul meu are astazi 7 zile de functionare neintrerupta si o eroare de 5 secunde in avans fata de timpul setat la pornire.... MatyC Link spre comentariu
briobit Postat Mai 17, 2012 Autor Partajează Postat Mai 17, 2012 am incercat sa fac o schema mai clara(sper si un cablaj) daca vedeti ceva greseli va rog frumos sa ma atentionati pentru corectare Link spre comentariu
tuborgx2 Postat Mai 18, 2012 Partajează Postat Mai 18, 2012 Emitorul tranzistoarelor nu este alimentat. Link spre comentariu
MatyC Postat Mai 18, 2012 Partajează Postat Mai 18, 2012 1. Pentru oscilator a ma gandesc la o varianta cu TXCO in capsula metalica pe soclu DIP14 si in PCB sa fie prezenta ambele variante( cuartz+conds sau txco). Modificarea softului pentru TXCO este simpla.2. Alimentarea sa fie cu alternativa pe baterie doar pentru uC fara afisoare ( vezi varianta aleasa de Bobtech).3. In pinul RA4 ma gandesc sa folosesc un divizor rezistiv cu fotorezistenta pentru zi-noapte. Abia am cumparat componenta si poate am timp serile acestea pentru implemetare. Link spre comentariu
briobit Postat Mai 20, 2012 Autor Partajează Postat Mai 20, 2012 am refacut schema si am gasit si librariile necesare afisajelor mele sper sa fie bine acum Link spre comentariu
MatyC Postat Mai 22, 2012 Partajează Postat Mai 22, 2012 Am facut cateva modificari in program legat de modul de setare sa nu reseteze minutele cand la reglarea orei se trece peste 23. O facilitate in plus este ca in momentul alimentari ceasul clipeste la la fiecare 0,5 sec. Asta ca nu cumva sa te bazezi pe ora afisata desi intre timp a fost luat curentul electric. ceas4digit_v02.hex.txt Link spre comentariu
briobit Postat Iunie 17, 2012 Autor Partajează Postat Iunie 17, 2012 Azi am prins un pic de timp liber si cu ocazia demolarii a 2 televizoare am gasit si materia prima pentru carcasa ceasului ( plastic din carcasa televizoarelor) si am crosetat ceva la ele zilele acestea sper sa fac o cutiuta.Ceasul meu merge cu penultimul hex de la ultima postare brici tinand cont cum arata placa Intentionez sa ii fac o cutie la acesta si sa mai fac 1 cu ultimul hex.Multumesc inca o data tuturor persoanelor pentru ajutorul acordat. Link spre comentariu
briobit Postat Iunie 20, 2012 Autor Partajează Postat Iunie 20, 2012 am mai avansat cu minunea :daorice observatie e binevenita Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum