microcontrolere
Prezentare
Aparatul de fata este un ceas de timp real ce se sincronizeaza cu un ceas de mare precizie din Germania. Acesta este prezent intr-o caseta de plastic ce se poate agata de perete sau poate fi asezat in pozitie oblica sustinut de un suport inclus in pachet.
Aparatul afiseaza succesiv ora si data curenta, precum si temperatura mediului ambiant, pe un ecran vizibil de la o distanta de maxim 10 metri.
Ceasul nu necesita reglare, aceasta facandu-se automat, o data pe zi.
Pentru montare necesita desigilarea atenta, inlaturarea protectiei impotriva socurilor si alimentarea la o sursa de 220V de la distanta prevazuta de cablul de alimentare (2,5 metri).
Caseta in care se afla ceasul este impermeabila, putand fi scoasa si pe un perete exterior, dar atentie acesta trebuie ferit de o furtuna sau fenomene puternice ale naturii (producatoul nu raspunde pentru defectiuni provocate in conditiile de mai sus). Este rezistent la socuri de intensitate medie. Poate fi curatat foarte usor cu o carpa usor umeda. Caseta este prinsa cu suruburi cu terminatii in cruce.
Afisaj:
Ora este afis ata in format "ora : minute : secunde";
Data este afisata in format "zi : luna : an";
Temperatura este afisata in format "grade C (Celsius)
Marimea digitilor
Ecuatia pentru calcularea marimii optime a unui digit in functie de unghi si distanta:
H=2*D*tg (A/2)
Unghiul optim este de 20-22 de minute.
Pentru A=22' si D=10m avem: H=5.8cm
Raportul dintre grosimea unui segment si inaltimea unui digit trebuie sa fie de 1/8 pentru caractere luminate pe un fond intunecat. Pentru H=5.8cm rezulta o grosime de 0.725cm.
Raportul dintre distanta dintre doi digiti si inaltimea lor trebuie sa fie de 1/4. Pentru H=5.8cm avem un spatiu de 1.45cm.
Comparare intre sincronizari
1. Radio
Transmisunea radio se realizeaza prin modularea undelor electromagnetice cu frecvente mai mici decat cea a luminii vizibile.
Avantaje:
echipament ieftin
usor de instalat
antena nu trebuie neaparat sa fie instalata inafara cladirii
consumul de energie este relativ mic
Dezavantaje:
semnalul poate sa interfereze cu alte dispozitive care folosesc o frecventa similara
influentat de conditiile meteo
2. GPS
Un receiver GPS isi calculeaza pozitia folosind informatii de la patru sau mai multi sateliti. Fiecare satelit transmite ora la care incepe transmisia mesajului si parametrii pozitiei satelitului. Receiver-ul calculeaza distanta in functie durata transmisiunii.
Avantaje:
datorita satelitilor din jurul pamantului semnalul poate fi receptionat in orice parte a lumii
Dezavantaje:
pret ridicat
dificil de instalat
antena trebuie sa se afle sub cerul liber
consum mare de curent
3. Internet
Cu ajutorul unui soft PC-ul se sincronizeaza de la un ceas atomic dupa care transmite ora exacta prin cablu, IrDa, Bluetooth sau Wi-Fi.
Avantaje:
nu este influentat de conditiile meteo sau de alte dispozitive
Dezavantaje:
necesita prezenta unui PC
Concluzie: Pentru construirea acestui ceas s-a ales sincronizarea prin radio datorita pretului redus al unui receiver radio, dar si datorita simplitatii acestuia fata de alte mijloace de sincronizare.
Comparatie intre microcontrolere
PIC12
Avantaje:
modalitate simpla de inscriere a programului ( seriala, necesitata doar 3 fire);
memoria program continuta in aceeasi capsula;
tehnologia CMOS de realizare( deci consum redus);
pretul relativ scazut;
chip de dimensiuni mici;
Dezavantaje:
un numar destul de redus de instructiuni;
un numar insuficient de pini (8 pini);
exista posibilitatea ca microcontrollerul sa nu aiba viteza suficienta pentru aceasta aplicatie;
optenabilitatea (acest microcontroller este primul din familia PIC si nu mai exista pe piata sau e foarte greu de obtinut);
MC14500(Motorola)
Avantaje:
tehnologia CMOS ce implia un consum redus;
capsula mica;
un numar de 16 pini;
memorie incapsulata;
posibilitatea de a fi alimentat de la o baterie;
pret scazut;
Dezavantaje:
fiind primul microcontroler produs de Motorola, a fost eliminat de pe piata de noile MC RISC;
posibilitatea ca viteza microcontrollerului sa fie insuficienta;
ATMEGA16
Avantaje:
este necesara folosirea doar a microcontrollerului, fara alte circuite suplimentare;
liniile I/0 sunt suficiente (32 de linii I/O);
exista capacitate suficienta de memorare: RAM si ROM;
consum redus (fabricat prin tehnologia CMOS);
microcontrolerul are viteza suficienta pentru aceasta aplicatie;
alimentarea poate fi facuta din aplicatie (de la o baterie);
fiabilitatea si stabilitatea;
microcontrolerul se poate obtine usor, el fiind in productia actuala;
suport din partea constructorului ATMEL (documentatie tehnica, software de utilizare);
seriozitatea constructorului demonstrata intr-un numar indelungat de ani si prin rezultatele financiare pozitive;
Dezavantaje:
pretul mai mare decat microcontrolere anterioare, dar cu un raport bun performante/pret;
Facand o comparatie intre aceste trei microcontrollere echipa a decis folosirea pentru acest proiect a microcontrolerului ATMEGA16 datorita caracteristicilor tehnice avansate si a raportului pret/performante bun.
Descrierea microcontrolerului ATMega16
Unitatea aritmetica logica
Cea mai inalta performanta a AVR ALU( Unitatea Aritmetica Logica) este aceea ca lucreaza direct cu cele 32 de registre. In timpul unui singur ciclu de ceas se efectueaza operatii aritmetice intre registre sau intre registre si o constanta, acestea sunt executate imediat.
Porturile
ATmega 16 este un microcontroler care ofera 32 de linii de I/O organizate in patru porturi (PA, PB, PC, PD).
Port-ul A (PA7PA0) serveste drept port de intrari analogice pentru Convertorul A/D si ca port bidirectional I/O de 8 biti. In cazul in care Convertorul A/D nu este folosit, pinii de port pot fi conectati optional la Vcc prin rezistori interni.
Portul B (PB7PB0) este un port bidirectional cu rezistori interni.
Portul C (PC7PC0) este un port I/O de 8 biti bidirectional cu rezistori interni. Daca interfata JTAG(de depanare) este activata, rezistorii pinilor PC5 (TDI), PC3 (TMS) si PC2 (TCK) vor fi activati, chiar daca are loc o resetare.
Portul D(PD7PD0) este un port I/O de 8 biti bidirectional cu rezistori interni conectati optional la VCC. Portul D indeplineste functii speciale. Buffer-ele de iesire ale celor 4 porturi au caracteristici de amplificare.
Registrele
Registrele R26R31 au cateva functiuni adaugate pe langa cele generale. Aceste regitre au 16 biti de adresa pentru accesarea indirecta a datelor. Cele trei registre pentru adresarea indirecta sunt registrele X, Y, Z.
Registrul de stare contine informatii despre ultima operatie aritmetica efectuata. Aceasta informatie poate fi folosita pentru a alterna de la un program la executarea unei alte operatii prioritare. Situatia registrului este
actualizata dupa fiecare executie a unei operatii aritmetice, asa cum se specifica in setul de instuctiuni.
Memoria
Atmega 16 AVR are doua spatii de memorie principala, spatiul pentru Memoria de Date si pentru Memoria de Program.
Atmega 16 contine o memorie flash reprogramabila de 16 Ko pentru programe care suporta cel putin 10000 de cicluri scriere/stergere. Memoria flash de program impreuna cu intreg blocul de extragere a instructiunilor, decodare si executie comunica printr-o magistrala proprie, separata de magistrala de date mentionata mai sus. Acest tip de organizare este conform principiilor unei arhitecturi Harvard si permite controlerului sa execute instructiuni foarte rapid. Memoria flash (On-chip) permite sa fie reprogramata printr-o interfata seriala SPI, de catre un programator de memorie nonvolatila conventional, sau de catre un program de boot On-chip ce ruleaza pe baza AVR. Primele 96 de locatii ale memoriei de date SDRAM se refera la fisierul de registre, si urmatoarele 1024 de locatii sunt dedicate datelor interne SDRAM.. Atmega 16 contine 512 octeti de memorie de date EEPROM. Este organizata ca spatiu separat de date, in care pot fi cititi si scrisi biti individual. EEPROM-ul are o durata de viata de cel putin 10000 de cicluri scriere /stergere.
Numaratoarele
Acest microcontroler contine doua timere (numaratoare) de 8 biti si un timer de 16 biti. Modulul timer pe 8 biti poate fi utilizat pentru realizarea de temporizari, numararea evenimentelor externe sau generarea de forme de unda. Dintre cele mai importante caracteristici ale modulului Timer pe 8 biti se pot mentiona: un prag independent de comparatie, numararea impulsurilor externe, posibilitatea de auto-initializare si de generare facila a semnalelor Pulse With Modulation(PWM).
Modurile principale ale Timer-ului sunt:
-functionare normala ;
-re-initializare la atingerea valorii de prag(CTC);
-semnal PWM rapid;
-semnal PWM corect in faza.
Modulul timer pe 16 biti poate fi utilizat pentru realizarea de temporizari, numararea evenimentelor externe sau generarea de forma de unda. Dintre cele mai importante caracteristici se poate mentiona faptul ca lucreaza cu registre de 16 biti, are doua praguri independente de comparatie, unitate de captura evenimente, exista posibilitatea de auto-initializare si de generare facila a semnalelor Pulse Width Modulation(PWM).
Modurile de functionare principale ale timer-ului pe 16 biti sunt:
-functionare normala;
-re-initializare la atingerea valorii de prag(CTC);
-semnalul PWM rapid;
-semnalul PWM corect in faza ;
-semnalul PWM corect in faza si frecventa.
Oscilatorul intern
Microcontrolerul Atmega16 dispune si de un oscilator intern RC. Oscilatorul intern functioneaza in timp ce restul dispozitivului este oprit. Acest lucru permite un start foarte rapid combinat cu un consum redus de energie. In modul standby extins (Extended Standby Mode), atat oscilatorul principal cat si cel al timer-ul asincron continua sa functioneze. Modul Power-down salveaza continutul registrelor, dar blocheaza oscilatorul, dezactivand toate celelate functii ale chip-ului pana la urmatoarea intrerupere externa sau Reset hardware. In modul Power-save, timer-ul asincron continua sa mearga , permitand user-ului sa mentina o baza de timp in timp ce restul dispozitivului este oprit.
Convertorul Analog/Digital
Modulul de conversie A/D (ADC - Analog to Digital Convertor) permite transformarea semnalelor analogice aplicate pe anumiti pini ai microcontrolerului in valori numerice. Principalele lui caracteristici sunt:
- mod de lucru pe baza de aproximatii succesive ;
- alimentare separata pe pinul AVCC;
- viteza maxima de 15kbps;
- rezolutie de 10 biti;
- 8 canale multiplexate, ADC0ADC7 corespunzatoare pinilor PA0PA7;
- rezultatul conversiei poate fi aliniat la stanga, simplificand calculele cu pretul reducerii rezolutiei la 8 biti;
- poate genera intrerupere la finalizarea conversiei;
- se pot selecta trei tipuri de nivele de referinta;
- se pot selecta mai multe surse pentru initierea unei conversii, incluzand un mod de functionare permanenta.
Descrierea receiver-ului DCF77
Ceasurile DCF77 controlate prin radio primesc timpul oficial al Germaniei de la Psysikalisch technischen Bundensanstalt (PTB) din Braunschewung si il transmit la calculatoare si sisteme prin diverse interfete.
Sincronizarea radio a transmititorului DCF77 ajunge din Mainfliger (50 01 N, 9 00 0) la o acuratetea pe termen lung a calibrarii standard a PTB de 1x10 E-13 pe saptamana sau mai putin de o secunda in 300.000 de ani. Datorita acuratetii sale, doar acest timp este acceptat ca legatura legal in Germania (Bundesgesetzbtlatt 42/1978, pagina 1110).
Aceasta statie transmite in continuu, exceptand scurtele intreruperi datorate defectiunilor tehnice sau intretinerii. Pauzele mai lungi pot aparea intimpul furtunilor cu tunete care pot "ataca" locatia transmitatorului.
Semnale temporale
Exceptand marcatorul secundei 59, purtatorul este modulat de marcatori de secunda, fiecare minut simbolizand ca marcatorul urmator va fi cel al minutului. La inceputul fiecarei secunde, amplitudinea semnalului se reduce la 25% pentru 100ms sau 200ms. Startul descresterii amplitudinii semnalului marcheaza exact inceputul secundei. Marcatorii secundei sunt sincronizati la faza cu semnalul DCF77. In general, lipsa de acuratete a receptorului DCF77 este comparata cu timpul semnalului emis.
Receptia depinde in principiu de limitarea benzii de unda a transmitatorului semnalului temporal si de alte interferente naturale. La o distanta de cateva sute de kilometri se poate atinge o incertitudine a semnalului temporal mai mica de 0.1 ms.
Caracteristici speciale ale receptorului DCF77, receptorul selectiv DCF77 cu un circuit potential fara antena
Un traductor AM/FM in receptor creste considerabil acuratetea atinsa, compativ cu receptoarele IF. Acuratetea care poate fi atinsa este mai buna decat ±2ms.
Imbatranirea componentelor, fluctuatia de temperatura si puterea campului sunt compensate in metoda de analiza, de un control intern foarte bun ce imbunatateste caracteristicile functionarii in cazul in care transmitatorul se inchide sau sunt probleme de receptie.
Toate valorile de control sunt stocate intr-o memorie sigura. Un ceas de sustinere integrat, suplimentat de un condensator cu folie aurita, sustine sistemul in cazul caderii de tensiune.
Intretinerea este complet gratuita.
Urmatoarele informatii temporale sunt disponibile pentru client:
CEST - Ora de vara din Europa Centrala cu schimbarea si corectia salturilor de secunde sporadic inserate.
CET - Ora din Europa Centrala cu schimbarea la ora de vara si corectie a salturilor de secunda sporadic inserate.
UTC - Coordonarea Timpului Universal (timpul pe glob, inainte GMT) cu corectie a salturilor de secunde inserate sporadic.
Radioemitatorul nostru DCF77 are o raza de functionare de aproximativ 2000 km distanta fata de transmitatorul din Frankfurt (Main). Ceasurile de referinta opereaza si in Islanda, Turcia, Maroc si Moscova.
Senzorul de temperatura DS1820
DS1820 este un circuit integrat produs de firma Dallas Semiconductor cu functionare specializata pentru masurarea temperaturilor mediului ambiant sau a suprafetei cu care se afla in contact. Dintre caracteristicile acestui circuit se pot mentiona:
este disponibil si in capsula de mici dimensiuni tip TO92 cu mumai 3 pini;
interfata de comunicatie se bazeaza pe un protocol "1-Wire" care necesita o conexiune de date cu un singur fir, in afara de masa, la care se pot conecta simultan mai multe dispozitive;
poate fi telealimentat prin conexiunile de date;
gama de masurare cuprinsa intre -55sC si +125sC cu pas la 0,5sC;
poate memora intr-o memorie nevolatila valori de temperatura la depasirea carora va genera automat stare de alarma.
Modul de functionare
Conversia temperaturii se realizeaza dupa un mecanism hardware proprietar imediat dupa ce se primeste o comanda de initiere a acesteia. La finalizarea conversiei, care dureaza aproximativ 200ms, rezultatul va fi reprezentat in forma binara pe un numar total de 16 biti.
Primul octet al rezultatului indica semnul conversiei. Astfel, valoarea FFh semnifica o temperatura negativa care va fi reprezentata in cel de-al doilea octet in complement fata de doi. Indiferent de semnul temperaturii, doar bitii 17 din octetul cel mai putin reprezinta valoare efectiva a conversiei, in timp ce bitul 0 este indicator pentru jumatate de grad.
Protocolul de comunicatie
Comunicatia intre DS1820 si alte dispozitive este de tip serial si necesita conexiune bidirectionala pe care se pot conecta mai multe echipamente. Dintre acestea, unul va avea rolul de master si toate celelalte vor fi slave. Dispozitivul master este cel care initiaza comunicatia iar dispozitivele slave raspund la comenzile primite, fiind identificate prin intermediul unei adrese unice astfel ca la un moment dat comunicatia se desfasoara numai intre un master si un singur slave, cel care a fost adresat.
Din punct de vedere hardware, protocolul necesita o rezistenta de pull-up pe linia de date si respectarea stricta a unor secvente de generare a urmatoarelor tipuri de semnale, privite din punctul de vedere al dispozitivului master:
puls de reset la care dispozitivul slave raspunde prin aducerea liniei in 0 logic;
bit 0 logic;
bit 1 logic;
citire bit de la slave.
Display-ul electronic
Display-ul este format din sase digiti de cate sapte segmente fiecare, segmente construite cu led-uri de 3mm de culoare rosie, ce suporta in regim normal o tensiune de 2,1V si un curent de 20mA, iar in regim fortat un curent maxim de 30mA. Un led ofera o luminozitate de 3000mcd.
Un segment este format din patru led-uri, fiecare inseriat cu cate o rezistenta de 25 Ohmi. Acestea sunt legate in paralel la o distanta de 10mm.
Fiecare segment este legat la colectorul unui tranzistor bipolar pnp de silicon-BD206, pentru a putea fi selectate de catre microcontroler.
La baza tranzistorului este inseriata o rezistenta da 4Ohmi pentru echilibrarea impulsului dat de microcontroler prin pin ul respectiv.
Digitii 2 si 4 au in plus un doua puncte formate fiecare din cate un led, pentru delimitarea orelor, minutelor si secundelor, respectiv a zilei, lunii si anului.
Digitii sunt legati in paralel la colectorul unui tranzistor bipolar npn-SWW 1156-223. Prin intermediul acestui tranzistor ce are inseriata la baza o rezistenta de 7,5 Ohmi, microcontrolerul este capabil sa selecteze cate un digit.
Digitii sunt selectati prin intermediul a sase pini ai portului B, iar segmentele sunt selectate prin intermediul intregului port C (8 pini).
Digitii si segmentele sunt selectate succesiv dar microcontrolerul lucreaza la o viteza mare si se foloseste de unitatile sale de intarziere (timere) astfel incat ochiul uman nu sesizeaza acest lucru si percepe o imagine statica a intregului display.
Display-ul este acoperit cu un ecran de plastic transparent ce il fereste de praf si umiditate.
Transformatorul de retea
Acest circuit are ca scop transformarea tensiunii de alimentare de la priza de curent continuu de 220V/240V in tensiune alternativa de 5V necesara alimentarii circuitului electronic al ceasului.
Bobina din interiorul transformatorului are rolul de a converti tensiunea de la priza in tensiune alternativa de 9V, dupa care se face o limitare in amplitudine a tensiunii cu ajutorul puntii cu diode (redresare), urmand ca stabilitatea sa fie oferita de cele doua condensatoare polarizate.
Transformatoarele de acest tip sunt intalnite la sonerii, televizoare sau alte aparate electronice care nu suporta o diferenta de potential mare, precum si multe alte aparate de uz casnic, jucarii, console de jocuri, DVD play-ere, video play-ere s.a.m.d.
Este necesar ca spirele bobinelor sa nu prezinte pierderi de tensiune ce pot afecta intreg circuitul.
Transformatorul este inchis intr-o carcasa de plastic cu iesire pentru prizele pe stil european, iar la iesirea acestuia un fir de 1m face alimentarea circuitului electronic la tensiunea de 5V.
Cablajul imprimat
Programul sursa
.include 'm16def.inc'
.def digit1 = r1
.def digit2 = r2
.def digit3 = r3
.def digit4 = r4
.def digit5 = r5
.def digit6 = r6
.def select = r23
.def k1=r24
.def an=r25
.def luna=r26
.def zi=r27
.def ora=r28
.def min=r29
.def scnd=r30
.def temp=r31
.macro us
nop
nop
nop
nop
nop
nop
nop
nop
.endmacro
.macro scrie1
sbi ddrb,pb6
cbi portb,pb6
us
us
us
us
us
us
sbi portb,pb6
ldi r16,50
bucla_scrie1:
us
dec r16
brne bucla_scrie1
.endmacro
.macro scrie0
sbi ddrb,pb6
cbi portb,pb6
ldi r16,50
bucla_scrie0:
1us
dec r16
brne bucla_scrie0
sbi portb,pb6
us
us
us
us
us
us
us
us
us
us
us
.endmacro
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp prag1sec
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
simbol: .DB 0b00111111, 0b00000110 //0, 1
.DB 0b01011011, 0b01001111 //2, 3
.DB 0b11100110, 0b01101101 //4, 5
.DB 0b01111101, 0b00000111 //6, 7
.DB 0b01111111, 0b01101111 //8, 9
.DB 0b01100011, 0b00111001 //grad, C
reset:
ldi r16, high(ramend)
out sph,r16
ldi r16, low(ramend)
out spl,r16
ldi r16, 0xff //initializare porturi//
out ddrc,r16
ldi r16, 0b01111111
out ddrb,r16
main:
cli
ldi r16,0
out tccr1a,r16
ldi r16, 0x08
out tccr1b,r16
in r16,timsk
andi r16,0b11000011
ori r16,0b00010000
out timsk,r16
ldi r16,0x7a
out ocr1ah,r16
ldi r16,0x12
out ocr1al,r16 //31250/(8MHz/256)=1s
ldi r16,0
out tccr0,r16
in r16,timsk
andi r16,0x01
out timsk,r16
in r16,tccr0
andi r16,0b11111101
ori r16,0b00000101
out tccr0, r16
sei
bucla:
rjmp bucla
prag1sec:
sbi ddrc,pb6
sbi portc,pb6
clr digit1
clr digit2
clr digit3
clr digit4
clr digit5
clr digit6
ldi r16,0b00001000
inceput:
cli
ldi r16,0b00001000 ;setare timer modul ctc cu prag
out tccr0,r16
in r16,timsk
andi r16,0b11111100
ori r16,0b00000010
out timsk, r16
ldi r16,0b00000010 ;setare timer 16b modul ctc
out tccr1a,r16
ldi r16,0b00001000
citire_temp:
in r20,sreg
call wire_reset
ldi temp,0xCC
call scriere_senzor ;trimite temp la senzor
ldi temp,044
call scriere_senzor
cbi ddrb,pb6
temp_wait:
sbis pinb,pb6
rjmp temp_wait
call wire_reset
ldi temp,0xCC
call scriere_senzor
ldi temp,0xbe ; citire scratchpad
call scriere_senzor
call citire_senzor
call wire_reset
wire_reset:
sbi ddrb,pb6
cbi portb,pb6
cli
ldi r16,34
ldi r24,10
bucla_temp1:
us
dec r24
brne bucla_temp1
ldi r24,10
dec r16
brne bucla_temp1
cbi ddrb,pb6
ldi r16,50
bucla_temp2:
us
dec r16
brne bucla_temp2
ldi r16,29
ldi r24,10
bucla_temp3:
us
dec r24
brne bucla_temp3
ldi r24,10
dec r16
brne bucla_temp3
sei ret
scriere_senzor:
cli
ldi r24,0x08
trimite1:
lsr r24
brcs pc+2
rjmp et1
//macro
//sf macro
rjmp et2
et1:
//macro2
//sf macro2
et2: dec r24
breq pc+2
rjmp trimite1
sei ret
citire_senzor:
cli
ldi r24,0x88
et3:
sbi ddrb,pb6
cbi portb,pb6
us
us
us
us
us
us
us
cbi ddrb,pb6
us
us
us
us
us
us
us
us
us
sec
sbis pinb,pb6
clc
ror temp
ldi r16,50
bucla_citire_senzor:
us
dec r16
brne bucla_citire_senzor
dec r24
breq pc+2
rjmp et3
sei
ret
////Se verifica daca trebuie facuta sincronizarea
cpi ora,5
brne incrementare
cpi min,37
brne incrementare
cpi scnd,8
brne incrementare
///////////////////////////////////INCREMENTARE
incrementare:
cpi scnd,59 // verificare daca este secunda 59
breq pc+2
inc scnd // daca NU se incrementeaza secunda
rjmp ver_afisare
clr scnd // daca DA secunda devine 0
cpi min,59 // verificare daca este minutul 59
breq pc+2
inc min // daca NU se incrementeaza minutul
rjmp ver_afisare
clr min // daca DA minutul devine 0
cpi ora,23 // verificare daca este ora 23
breq pc+2
inc ora // daca NU se incrementeaza ora
rjmp ver_afisare
clr ora // daca DA ora devine 0
cpi luna,4 // se verifica cate zile are luna curenta
breq zile_30
cpi luna,6
breq zile_30
cpi luna,9
breq zile_30
cpi luna,11
breq zile_30
cpi luna,2
breq februarie
breq zile_31
zile_30:
cpi zi,30
breq pc+2
inc zi
rjmp ver_afisare
rjmp verificare_luna
zile_31:
cpi zi,31
breq pc+2
inc zi
rjmp ver_afisare
rjmp verificare_luna
februarie:
ldi r17,28
ldi r18,4
clr r16
bucla_feb: // verificare an bisect
cp an,r16
in r0,SREG
sbrc r0,7
ldi r17,29
add r16,r18
cpi r16,100
brne bucla_feb
cp zi,r17
breq pc+2
inc zi
rjmp ver_afisare
verificare_luna:
ldi zi,1
cpi luna,12 // se verifica daca este luna dec
breq pc+2
inc luna // daca NU se incrementeaza luna
rjmp ver_afisare
ldi luna,1 // dca DA luna devine 1
inc an // si se incrementeaza anul
////////////////////////////////SELECTARE AFISARE
ver_afisare:
cpi k1,7
brlt copiere_ora
cpi k1,12
brlt copiere_data
cpi k1,15
brlt copiere_temp
////////////////////////////////////COPIERE ORA
copiere_ora:
mov r16,ora
clr r17
scadere_h:
cpi r16,10
brlt pc+4
subi r16,10
inc r17
rjmp scadere_h
mov digit1, r17
mov digit2, r16
mov r16,min
clr r17
scadere_m:
cpi r16,10
brlt pc+4
subi r16,10
inc r17
rjmp scadere_m
mov digit3, r17
mov digit4, r16
mov r16,scnd
clr r17
scadere_s:
cpi r16,10
brlt pc+4
subi r16,10
inc r17
rjmp scadere_s
mov digit5, r17
mov digit6, r16
ldi r16,0b10000000
and digit2,r16 // se aprind cele doua seturi de cate doua puncte
and digit4,r16
////////////////////////////////////COPIERE DATA
copiere_data:
mov r16,zi
clr r17
scadere_z:
cpi r16,10
brlt pc+4
subi r16,10
inc r17
rjmp scadere_z
mov digit1, r17
mov digit2, r16
mov r16,luna
clr r17
scadere_l:
cpi r16,10
brlt pc+4
subi r16,10
inc r17
rjmp scadere_l
mov digit3, r17
mov digit4, r16
mov r16,an
clr r17
scadere_a:
cpi r16,10
brlt pc+4
subi r16,10
inc r17
rjmp scadere_a
mov digit5, r17
mov digit6, r16
ldi r16,0b10000000
and digit2,r16 // se aprind cele doua seturi de cate doua puncte
and digit4,r16
///////////////////////////////COPIERE TEMPERATURA
copiere_temp:
ror temp
scadere_t:
cpi r16,10
brlt pc+4
subi r16,10
inc r17
rjmp scadere_t
mov digit3,r17
mov digit4,r16
ldi r16,10
mov digit5,r16
ldi r16,11
mov digit6,r16
/////////////////////////////////////AFISARE
ldi r19,15
afisare:
ldi r18,5
repetare:
in r20,sreg
out portb,select
cpi select,0b00100000
brne pc+3
mov r17,digit1
rjmp selectare
cpi select,0b00010000
brne pc+3
mov r17,digit2
rjmp selectare
cpi select,0b00001000
brne pc+3
mov r17,digit3
rjmp selectare
cpi select,0b00000100
brne pc+3
mov r17,digit4
rjmp selectare
cpi select,0b00000010
brne pc+3
mov r17,digit5
rjmp selectare
mov r17,digit6
selectare:
ldi zh,high(2*simbol)
ldi zl,low(2*simbol)
ldi r19,0
add zl,r17
adc zh,r19
lpm r19,z
out portc,r19
ror select
dec r18
brne repetare
dec r19
brne afisare
reti
Bibliografie
8. https://www.alldatasheet.com componente electronice
9. www.vitacom.ro leduri
10. www.discovercircuits.com transformator alimentare
11. www.giangrandi.ch schema dcf77
12. www.dcf77.com dcf77
13. www.atmel.com Uc Atmega16
DCF77 Information
How the DCF77-receiver works
D = german; C = long wave signal; F = frankfurt; 77 = frequency
The DCF77 radio controlled clocks receive the official time of the Federal Republic of Germany from Physikalisch-Technischen Bundesanstalt (PTB) in Braunschweig and transmit it to computers and systems via various interfaces. The radio synchronisation of the DCF77 transmitter in Mainflingen (50 01 N, 9 00 0) reaches a longterm accuracy of the PTB-calibration standard of 1 x 10 E-13 per week or less than 1 second in 300,000 years. Due to its high accuracy only this time is accepted as legally binding in the Federal Republic of Germany. (Bundesgesetzblatt 42/1978, page 1110).
This station transmits continuously, except for short interruptions due to technical faults or maintenance. Longer breaks may be experienced during thunderstorms attaching the location of the transmitter.
Time Signals
Except of the second marker 59, the carrier is modulated by second markers each minute signifying that the next marker will be the minute one. At the beginning of each second the signal amplitude is reduced to 25% for 100 ms or 200ms. The start of the decrease of the signal amplitude marks the exact beginning of the second. The second markers are phase- synchronous with the DCF77-signal. In general: the inaccuracy of the received DCF77 timesignal is large compared to the emitted time signal.
The reception depends largely on the limited wave band of the time signal transmitter and other natural interferences. At a distance of some 100 kilometres, a time signal uncertainty of less than 0.1 ms is achievable.
Special features of the DCF77-receiver
selective DCF77-receiver with potential-free antenna circuit
An AM/FM transducer in the receiver increases the achievable accuracy considerably compared to the common straight or IF-receivers.
Achievable accuracy better than ± 2 msec.
Aging of the components, fluctuation of temperature and field strength are compensated by an internal crystal control in our analyzing method, which improves the freerunning characteristics in case of transmitter shutdowns or reception failures.
Frequency drift at freerunning max. ± 2 ppm
All control values are stored in a fail-safe memory. A integrated backup clock, supplied by a gold foil capacitor, bridges the system time in case of voltage failures.
completely maintenance free
The following time information are available to the user:
CEST = Central European Summertime with automatic changeover and correction of the sporadically inserted leap seconds
CET = Central European Time without changeover to summertime and with correction of the sporadically inserted leap seconds
UTC = Universal Time Coordinated (world-time, previously GMT ) with correction of the sporadically inserted leap seconds
Our DCF77-radio receiver has a working radius of about 2,000 km from the transmitter Frankfurt (Main). Reference clocks operate e.g. in Iceland, Turkey, Marocco and Moscow.
Product Specification
LED 3mm red 3000mcd - 10 pcs.Technical Data:
Case: 3mm waterclear
Viewing Angle: 20°
Power: 2,1V
Current: 20mA typ., 30mA max.
Wave Length: 620nm (red)
Maximum Intensity / Brightness: 3000mcd
Power Recommended Resistors
5V 150 Ohm
9V 470 Ohm
12V 560 Ohm
13,8 V (car) 620 Ohm
The DCF77 time signal transmitter
The DCF77 is a long wave transmitter situated in Mainflingen near Frankfurt am Mein (Germany, 50.02° North, 9.00° West) that transmits time signals on 77.5 kHz with a power of 50 kW and can be received in a radius of about 15002500 km (about the central Europe as shown in the picture below). This signal (and its carrier) is generated from a cesium-clock situated in Braunschweig (Germany) with a precision better than 1 second over 300'000 years.
The transmitted time information is the CET (Central European Time) and DST (Daylight Savings) is also added in summer.
The frequency of the signal is in the long wave band: this ensures that reflections on the ionosphere can be neglected and that the signal arrives to all receivers by using a unique path: the surface wave. The reception is possible 24 hours a day.