Ceas in timp real? Ce inseamna asta? Un ceas care functioneaza precis si nu are abateri sesizabile intr-o perioada mare de timp. Este o utopie dar totusi se poate. Am incercat multe scheme de ceasuri care sa afiseze si temperatura. Scheme mai mult sau mai putin sofisticate, cu PIC sau AVR dar am fost dezamagit de faptul ca nu am gasit un ceas care sa nu intarzie sau sa nu grabeasca semnificativ. De aceea am hotarat sa-mi fac propriul meu ceas digital, unul care sa afiseze si ceasul si temperatura ambianta in "Timp-Real". Am folosit un micro-procesor foarte bun cum este Atmega8, care are o functie foarte buna si anume poate fi pilotat de un cristal de quartz cu frecventa de 32768Hz, frecventa care prin divizare cu 2^15 rezulta o perioada de timp de EXACT o secunda! Frumos nu? Iata schema de principiu pe care am adoptat-o:
Astfel, am obtinut un ceas extrem de precis, fara sa grabeasca, fara sa intarzie si fara sa fie nevoie de ajustare sau calibrare. O idee buna ar fi ca sa selectati quartz-ul din mai multe mostre pentru a gasi pe cel mai precis, care garanteaza cea mai mica eroare. Display-ul este un afisaj cu anod-comun achizitionat de la: TME. Viziteaza link-ul alaturat:.
Pe langa informatia ceasului am implementat in soft si afisarea temperaturii ambiante, citita cu un senzor tip LM35. Temperatura masurata astfel este cu valoare pozitiva, deci nu se va afisa temperatura negativa. Am implementat in soft si o intarziere de 5 secunde intre afisarea ceasului si afisarea temperaturii. Acest interval de timp nu se poate modifica de catre utilizator la acest model de ceas. Ce se poate ajusta, sunt numai minutele si orele, pentru care s-au prevazut pe panou doua butoane distincte.
Un lucru deranjant la alte ceasuri asemanatoare, a fost afisarea cifrei ZERO inaintea orei, atunci cand aceasta este cu valori sub 10. Adica orele diminetii, erau afisate de forma 07:32 sau 09:27, etc. Astfel am implementat in soft un argument care stinge primul digit din partea stanga, daca ora este sub 10.
Am construit un update la acest ceas, foarte asemanator cu prima versiune, care are ca si baza de timp un cip Real Time Clock tip DS1302z. Acest cip se afla plantat pe un modul achizitionat de pe Ebay. Motivul pentru care am adoptat aceasta configuratie este ca un ceas se deregleaza in momentul in care pierde tensiunea de alimentare. In cazul utilizarii acestui modul, care are si baterie de back-up, ceasul continua sa functioneze mai departe fara nici o problema. Schema ceasului se modifica putin in sensul ca dispare cristalul de 32768Hz de pe bornele uC-lui Atmega8, si se conecteaza modulul cu DS1302z pe trei fire, transmisia de date fiind seriala.
Functionarea ceasului nu s-a scimbat absolut deloc. Afiseaza la fel, timp de 5sec ora apoi se schimba si afiseaza timp de 5sec temperatura. Totusi, softul pentru Atmega8 este diferit si l-am modificat corespunzator. Am compilat ca si inainte doua variante pentru diferite tipuri de afisaje folosite: clasic cu digiti separati si KINGBRIGHT cu 4 digiti intr-un bloc comun. Cablajul imprimat ramane acelasi, se elimina doar cristalul de 32768Hz.
Am facut un update in aprilie 2014 care consta in:
Diferiti constructori de astfel de aparate poseda unele afisaje care sunt cu Anod-Comun sau cu Catod-Comun. Astfel am conceput un model nou de ceas care poate folosi pe aceeasi schema si acelasi cablaj, ambele tipuri de afisaje AC - CC. Comutarea se face cu ajutorul unui JUMPER. De notat este faptul ca pentru diferitele tipuri de afisaje folosite trebuie inlocuite tranzistoarele de comanda:
Acest model de ceas l-am conceput pentru a fi montat intr-un foisor din curte. Noile schimbari aduse proiectului sunt:
Aceasta versiune de ceas este un Up-date care aduce un plus de adaptabilitate si are urmatoarele caracteristici:
Aceasta versiune este de fapt o restaurare a unui ceas chinezesc pe care l-am primit si care avea procesorul ars. Am trecut la restaurarea sa si am construit dupa schema de mai sus un modul procesor de adaptare cu Atmega8A_TQFP32 pe care l-am introdus in caseta veche si am refacut cablarea LED-urilor ca sa fie multiplexate pe 4 biti. Iata ce a iesit:
Un lucru interesant este ca am renuntat la senzorul de temperatura LM35 pe care l-am inlocuit cu un termistor de 8,7K la 20C configuratie pe care am imprumutat-o de la vechea schema a ceasului chinezesc. Merge destul de precis! E chiar simplu si frumos. Back-up-ul in cazul intreruperii alimentarii exterioare, este facut cu 3 baterii de 1,5V, Scade putin iluminarea dar ceasul isi continua mersul fara probleme.