Depanatoru Postat Septembrie 17, 2014 Partajează Postat Septembrie 17, 2014 Va prezint un proiect de ceas complex , original , a se citi "neplagiat de pe internet" pentru cei ce au grija asta , pentru "nostalgicii" seriei AT89 de la Atmel . De ce am folosit tipul asta ? Nu pentru ca nu stiu cu Atmega modern ci pentru ca am o multime de asemenea microcontrolere care stau degeaba . Poate mai aveti si unii dintre voi . Din pacate microcontrolerele AT89S8252 ca si altele din serie au pinii slabi , nici vorba sa poata duce afisajul direct , asa ca e nevoie de "cativa" tranzistori care complica schema fata de una moderna . Ce stie ceasul asta ? Clasicul ceas cu afisaj cu 4 digiti anod comun multiplexat ( ore , minute ) , 5 butoane cu functii multiple , alarma cu sunet asemanator cu a ceasurilor din comert pe un mic difuzor precum si starea acesteia , activata sau dezactivata cu memorare in EEPROM si in plus termometru cu senzorul digital 1wire DS18B20 , unul dintre cei mai exacti si accesibili senzori de temperatura. Ceasul are corectii soft si un "mod service" , daca se porneste alimentarea cu butonul "Zero sec" tinut apasat aprox 1 sec se poate regla cu butoanele "HUP" si "MUP" o variabila de calibrare stocata in EEPROM intre 160 si 1000 ca sa fie exact in domeniul +-2 sec pe zi aprox . Cu valoarea actuala 440 din fisierul ceas.eep.hex dupa 1 zi nu se observa cu ochiul nici o diferenta la secunda fata de ceasul calculatorului cu update facut de pe internet . Ca sa fie probabil mult mai exact trebuie urmarit saptamani intregi si schimbata usor variabila , mai mare scade secunda , mai mica creste. Dupa ce se ajusteaza variabila se apasa din nou "Zero sec" , aceasta se memoreaza in EEPROM si porneste ceasul normal . Minutele se ajusteaza cu "MUP" , iar orele cu "HUP" . In plus mai are butonul "Zero sec" cu care se reseteaza secundele la zero urmarind ceasul dupa care trebuie reglat . Butonul "Alarm" comuta meniul de setare a alarmei , de unde se poate ajusta cu "MUP" si "HUP" ora la care sa sune aceasta . Afisajul clipeste o data pe secunda pentru a indica ca e in meniul alarmei . Cu butonul "Zero sec" se aprind sau se sting punctele afisajului , ceea ce inseamna alarma activata sau inactiva . La iesire ( tot cu butonul "Alarm" ) se memoreaza in EEPROM noua ora la care s-a reglat sa sune alarma precum si starea acesteia , activata sau dezactivata. Cand alarma incepe sa sune se opreste cu butonul "TEMP" , altfel suna la nesfarsit , ca la ceasurile din comert. Butonul "TEMP" comuta intre afisarea ceasului si termometru , temperatura e afisata in modul 25,3 cu punctele ceasului indicand virgula , iar pe ultimul digit se aprinde un cerc cu segmentii din partea de sus reprezentand "grade" . Rezolutia senzorului DS18B20 este cea maxima de 12bit adica 0,0625 grade , improspatarea citirii se face la 3sec destul de OK , chiar daca senzorul e mai rapid putin sub 1sec conversia , a trebuit sa "imprastii" instructiunile 1wire pe parcursul a 3sec ca sa nu interfereze cu multiplexarea afisajului si mai ales sa nu pice intreruperea timerului care face secunda ceasului peste ele . Poate afisa tot domeniul de masura al senzorului -55 +125 grade , la temperaturi negative ( verificate cu spray de racire ) se aprinde sub cercul de la grade segmentul de jos indicand "minus" , iar la peste 100 grade , neincapand , nu se mai afiseaza zecimala de dupa virgula stingandu-se si punctele afisorului . Pentru intrebari si detalii constructive va stau la dispozitie. Pe cablaj se observa cateva piese lipsa , mai ales un releu deasupra afisajului , pentru ca e cablaj universal folosit de mine si pentru un Timer expunere PCB , daca e interes pun si softul cu el. Ceas cablaj.pdf Ceas cu AT89S8252.zip 1 Link spre comentariu
XAN77 Postat Septembrie 19, 2014 Partajează Postat Septembrie 19, 2014 Arată frumos montajul. Din pacate microcontrolerele AT89S8252 ca si altele din serie au pinii slabi , nici vorba sa poata duce afisajul direct , asa ca e nevoie de "cativa" tranzistori care complica schema fata de una moderna . De asta m-am lovit și eu cînd am făcut ceasul cu 2051, eu unul nici nu știam. Aceste MCU dau ”0” destul de puternic, comparabil cu MCU normale, însă cînd scot ”1” sunt anemice tare, musai pull-up extern. Eu am 3 ceasuri prin casă cu MCU iar de ceva timp a început să mă deranjeze, la cele care afișează și temperatura, acea basculare ceas/temperatură. Link spre comentariu
Depanatoru Postat Septembrie 19, 2014 Autor Partajează Postat Septembrie 19, 2014 (editat) Da sunt asimetrice absorb mai mult curent pe 0 decat debiteaza pe 5V , dar AT89S8252 nu poate sa absoarba mai mult de 3mA , deci pentru LED-uri direct nici gand . Asta e facut , cu niste imbunatatiri , practic identic cu batranul 8051. Dupa cum se vede in schema toti pinii folositi ca sa debiteze curent au rezistenta de pull-up , altfel fara ea pe 5V nu ajunge curentul nici pentru a comanda un tranzistor obisnuit ( poate darlington sau selectate cu beta f mare ). Si incarcat cu 100K scade zdravan nivelul de 5V , fara pull-up poate comanda numai vreo trei porti TTL , practic impedanta infinita , cum scrie in datasheet. Pentru termometru se poate face usor ceva automat sa alterneze indicatia ceasului cu temperatura , depinde de preferintele fiecaruia . Eu prefer manual deocamdata . Pentru termometru foarte serios as face un montaj de sine statator , cu mai multi senzori , etc . In fine , senzorii astia 1wire se pot pune f multi in paralel daca complici codul ca sa le citeasca adresele Editat Septembrie 19, 2014 de Depanatoru Link spre comentariu
XAN77 Postat Septembrie 19, 2014 Partajează Postat Septembrie 19, 2014 e bună și varianta cu manual. Eu am început să agreez varianta cu mai mulți digiți, eventual culori și/sau dimensiuni diferite. Link spre comentariu
Depanatoru Postat Septembrie 19, 2014 Autor Partajează Postat Septembrie 19, 2014 (editat) Prea complicat nu merita pentru un ceas , parerea mea , evident ca se poate face ... daca ar fi accesibile afisoare multiplexate "dintr-o bucata" cu mai multi digiti si eventual anumite simboluri folositoare , poate alta ar fi situatia Editat Septembrie 19, 2014 de Depanatoru Link spre comentariu
XAN77 Postat Septembrie 19, 2014 Partajează Postat Septembrie 19, 2014 Eu am făcut ceasul cu 89c2051 cu 4 digiți roșii pentru ceas + 2 digiți albaștri pentru a afișa setarea alarmei. Am folosit tranzistori doar la anozii comuni, pe segmente am doar rezistori. Nu mi-a părut prea complex. Link spre comentariu
Depanatoru Postat Septembrie 19, 2014 Autor Partajează Postat Septembrie 19, 2014 Idei pot fi multe , in primul rand sa afiseze si secundele ... apoi si data , anul , eventual si un ceas de pe alt fus orar , etc , etc Link spre comentariu
Marin1960 Postat Ianuarie 15, 2015 Partajează Postat Ianuarie 15, 2015 Ceas interesant, frumos lucrat, bravo! In urma cu mai bine de 17 ani am facut si eu cateva ceasuri, unul cu 89C2051 cu ore si minute, alarma, data si un altul cu 89C51 care avea secunde si temperatura in plus. La acea vreme, temperatura era masurata cu un LM335 si ca ADC foloseam un C520! La un moment dat setarea ceasului cu 89C51 am facut-o cu un modul GPS. Cred ca era pentru un ceas public cu setare automata. Imi aduc aminte ca am folosit ULN2803 in loc de tranzistori, mi s-a parut mai simplu! Cred ca sunt undeva pe forum. Acum am trecut pe AVR (2313 si atmega 8). Link spre comentariu
Marin1960 Postat Ianuarie 16, 2015 Partajează Postat Ianuarie 16, 2015 Dom'le m-am uitat si astazi pe lucrarea ta, si nu pot sa nu te felicit pentru minutiozitate si eleganta. Aseara ma lovise nostalgia! Acum o intrebare de baraj, ca vad ca postul este destul de vechi: cat de stabil/precis este ceasul tau pe o perioada de, sa zicem o saptamana? Link spre comentariu
Depanatoru Postat Ianuarie 16, 2015 Autor Partajează Postat Ianuarie 16, 2015 (editat) Sincer n-am avut rabdare sa-l urmaresc incontinuu numai 2 - 3 zile , atat l-am reglat sa fie exact dupa ochi cu ceasul de pe calculator cu update facut de pe internet ca sa nu intre precizia lui in ecuatie . Dar nu stiu daca ai citit cu atentie , are un "mod service " in care iti poti ajusta singur secunda din soft . Daca ai rabdare saptamani intregi sa-l urmaresti , fara variatii mari de temperatura , probabil ca se poate face f f exact . Oricum cateva secunde pe luna sunt acceptabile , ca nu e nevoie de ceas atomic Editat Ianuarie 16, 2015 de Depanatoru Link spre comentariu
rosmarin Postat Ianuarie 16, 2015 Partajează Postat Ianuarie 16, 2015 Daniel ,felicitari! Nu uita un microcontroler de acest tip si pentru mine.Pastram legatura pentr o intalnire Link spre comentariu
Depanatoru Postat Ianuarie 16, 2015 Autor Partajează Postat Ianuarie 16, 2015 Da , sigur am retinut Link spre comentariu
Marin1960 Postat Ianuarie 16, 2015 Partajează Postat Ianuarie 16, 2015 Fii sigur ca daca nu asi fi remarcat modul "service" nu te-as fi deranjat cu o intrebare la care stiu de ani buni raspunsul! Am incercat si eu diferite metode de ajustare, reglare a preciziei si stabilitatii unui ceas pilotat de uc si cuart, dar din pacate rezultatele mele au fost mediocre. Daca ceasul tau are o abatere de "cateva secunde pe luna", presupun ca cel mult 3-5 secunde, asta inseamna o precizie foarte buna, precizie pentru care meriti toate felicitarile! Se vede ca ai lucrat cu pasiune ceasul asta, asa mi se pare din detaliile pe care le-ai descris, si felul cum ai lucrat cablajul! Apropo de "imprastierea" comenzilor pentru 18b20, ce frecventa de multiplexare ai folosit? Ai intampinat probleme de interferenta intre comanda catre senzor si intreruperi (pp ca multiplexarea o faci prin intreruperi)? Link spre comentariu
Depanatoru Postat Ianuarie 17, 2015 Autor Partajează Postat Ianuarie 17, 2015 Multumesc de aprecieri . Reglajul din soft permite o exactitate mare ... dezavantajul e timpul exponential pierdut de tine cu reglajul pana o obtii . Multiplexarea nu e cu intreruperi , tocmai ca sa nu am o problema suplimentara cu senzorul de temperatura . Sincer nu-mi amintesc daca i-am masurat frecventa , atata ca am ajustat softul ca sa nu se observe palpairea afisajului . Daca frecventa microcontrolerului e destul de mare ca sa fie executat rapid programul se poate face f bine si asa . Probleme au fost chiar cu intreruperile timerului care genereaza secunda ceasului , cum comenzile 1wire sunt cam lungi pot aparea erori urate si ciudate daca pica unde nu trebuie intreruperile ... am avut initial erori aleatoare de citire a senzorului , la 10-15min prindea 1 , 2 citiri eronate , pana mi-am dat seama de unde vin era sa zic ca acesti senzori DS nu sunt de incredere . Multi se plang pe internet de asemenea citiri eronate din cand in cand ... probabil in majoritatea cazurilor sunt probleme legate de intreruperi. 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