Sunteți pe pagina 1din 13

Ministerul Educaiei i tiinei al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea de Calculatoare, Informatic i Microelectronic
Catedra de Microelectronic i Inginerie Biomedical

Disciplina: Microprocesoare

Lucrare de
curs
Tema: Voltmetru digital

A elaborat:
gr. ISBM 131 Moroi Ion

st.

A verificat:
lector asistent Lazari Eugen

Chiinu 2016

Cuprins
1

Tema Lucrrii
3
Obiective.
.4
Definiia problemei.
..5
Noiuni teoretice
...7
Mersul
Lucrrii..2
0
Concluzii.
...21
Bibliografie
..23

1.

Obiective

n cadrul cursului de Microprocesoare, pentru prima data am


fcut cunotin cu noiunea de microprocesor, i tot ce este legat
de ea. Pe parcursul avansrii n cunotine n domeniul dat, dorina
de a aplica n practic cunotinele acumulate cretea de la curs la
curs. Acest fapt, m-a motivat s ncerc pe viu sa aplic ceea ce am
nvat pe foaie.
Scopul lucrrii date este aplicarea pe viu a cunotinelor
acumulate pe parcursul semestrului, ceea ce va facilita consolidarea
i dobndirea abilitilor primare de lucru cu microprocesoarele. De
asemenea aceast lucrare ne va ajuta s trecem bariera dintre
domeniul teoretic ctre cel practic, ceea ce este o etap esenial n
devenirea unui inginer. De asemenea, lucrarea ne va ajuta la
lrgirea cunotinele despre seria de microprocesoare ATMega.

2.

Definiia problemei

Elaborarea unui voltmetru digital cu diapazonul de msurare 0


25 V pe baza microprocesorului AVR ATMega8. Dispozitivul va
permite afiarea datelor pentru utilizator n form digital pe un
afior cu 8 segmente pe 4 digii.

3.

Noiuni teoretice

n lucrarea data am proiectat i am realizat un Voltmetru


Digital pe baza unui microcontroler ATmega8 cu afiarea datelor pe
un afior cu 8 segmente pe 4 digii.
Modulul periferic GPIO
Orice Microcontroller are un set de pini, majoritatea dintre care care
pot fi configurai ca pini generici de intrare sau ieire (GPIO), astfel
nct s i se poat atribui o valoare logic ctre terminalul pinului
sau sa fie citit aceasta valoare logic de pe el, n cazul cnd pinul
este configurat ctre intrare.
Pinii de intrare/ieire sunt grupai n porturi a cte opt. Lucrul cu
portul se execut ca cu un tot ntreg, respectiv, dintr-o singur
operaie de transfer ctre port putem modifica configuraia la toi
opt pini deodat. Deci operaiile de transfer ctre port va afecta toi
pinii ce l constitiue.
Deoarece modulul GPIO este un modul periferic al
microcontrollerului, respectiv are rezervai un set de regitri n
spaiul de adrese a regitrilor periferici.

Fiecare modul GPIO a microcontrollerului cu arhitectura AVR va


avea la dispoziie trei registri de periferici PINx, DDRx si PORTx.
Pentru a explica modul de funcionare a modulului GPIO vom
prezenta urmtoarea figur:

PINx
- servete pentru citirea valorii logice de pe terminalul
fizic, acest registru este accesibil doar pentru citire. Operaia de
scriere ctre acest registru nu va afecta valoarea fizic a
terminalului fizic.

PORTx - registru de setare a valorii portului pentru cazul cnd


este setat catre ieire i activarea rezistentei de pull-up n cazul
cnd este setat ctre intrare.

DDRx - Registrul de setare a direciei portului, intrare sau


ieire.
n cazul cnd o locaie a DDRx va conine "1", pinul respectiv va fi
setat ctre ieire, iar valoarea logic din PORTx de la aceeai locaie
va fi tranferat ctre terminalul fizic.
n cazul n care o locaie a DDRx va conine "0" , terminalul fizic
respectiv va fi setat ctre intrare. n acest caz valoarea din registrul
5

PORTx va conecta rezistena de pull-up cu valoarea logic "1",


valoarea logic "0" va seta pinul n starea de impedan nalt "HiZ". Se recomand de a evita starea de HiZ pe terminal, fapt ce
are loc cnd terminalul nu este conectat la o sursa de semnal,
pentru a evita introducerea de zgomote n interiorul cipului
microcontrollerului, ce ar putea n cazurile critice duce pn la
defectarea circuitului.
n aa mod recomandarea pentru pinii neutilizai este de a seta
configuraia lor ca intrare cu rezistena de pull-up activat, ceea ce
va evita scurt-circuituri ntmpltoare atunci cnd este setat spre
ieire, i pentru cazul cnd este pe intrare, evitarea zgomotelor pe
intrare nedorite.

Modulul periferic Timer


Dup cum se observ din tabel, n toate modelele familiei ATmega
exist, cel puin, dou timere/contoare T0 i T1. Timer/contor T0
are setul minimal de funcii, care ns depinde de modelul
micorcontrollerului. n unele modele el poate fi utilizat doar pentru
numrarea i msurarea intervalelor de timp sau contor de
evenimente externe. n unele modele la aceste funcionaliti se
adaug i posibilatea generrii de semnale cu modulare n lungimea
pulsului (PWM - Pulse Width Modulation) cu o rezoluie fix, i
posibilitatea de lucru n regim asincron n calitate de ceas al
timpului real.
Timer/contor-ul T1 de asemenea poate fi utilizat pentru
numrarea intervalelor de timp i ca contor al evenimentelor
externe. n afar de aceea, el poate memora starea sa n
dependen de semnale externe. Ca i timer/contor-ul T0, el poate
lucra n regim PWM, dar deja cu o rezoluie variabil i cu mai multe
canale (numrul de canale depinde de model).
Timer/contor-ul T2 e absolut analogic timer/contor-ului T0. Dac
n microcontroller sunt prezeni ambii timer/contori, unul poate lucra
n regim asincron, altul n calitate de contor a evenimentelor
externe. Timer/contor-ul T3 dup posibilitile funcionale e identic
timer/contor-ului T1.
6

Modulul periferic ADC


Modulul ADC-ului de 10 bii cu aproximare n serie intr n
componena modelelor ATmega 8x, ATmega 163x, ATmega 32x,
ATmega 323x, ATmega 64x i ATmega128x. Parametrii de baz al
acestui ADC sunt:

toleran absolut: 2 LSB;

nelinearitatea integral: 5 LSB;


rapiditatea: pn la 15mii probe/s;
Modulul Convertor Analog-Digital este utilizat pentru conversia
tensiunii analogice ntr-o valoare digital (n AVR pe 10 bii). De
exemplu, poate fi utilizat pentru perceptarea ieirii de la un senzor
(de temperatur, presiune, etc.) n anumite intervale, sau pentru a
executa anumite aciuni n dependen de valoarea primit. Exist
mai multe tipuri de convertoare, dar cele utilizate n
microcontrollerele AVR sunt convertoarele cu aproximare succesiv.
Mai jos urmeaz o schem simplificat a convertorului analog-digital
prezent pe AVR:

Fig. 1 Schem simplificat a convertorului analog-digital

4.

Prezentarea soluiei cu pai de realizare

Intrarea ADC este pe pinul PC0 (ADCO), deoarece voltmetru


trebuie s msoare tensiunea la 25V, iar 25V i pentru portul
7

operator este foarte mult, n astfel de cazuri, utilizm un divizor de


tensiune. De exemplu, n cazul n care tensiunea de intrare este
schimbat de la 0 la 25V, atunci ieirea se va schimba de la 0 la 5V.
Calculm tensiunea maxim Uemax aplicat la intrarea ADC de
formula:
Uemax = 1,023 * Uref / 1024
Uemax = 2.56 * 1023/1024 = 2,5575V
Se calculeaz tensiunea maxima de intrare, pe baza parametrilor:
R1 = 100K, R2 = 10k, Uemax = 2,5575, se aplic urmtoarea
formul:
Uemax = Uin * R2 / R1 + R2
unde Uin Tensiune maxim aplicat la intrarea divizorului.
Uin = 2,5575 * 110k / 10k = 28,1325V
Din aceasta tim c mai mult de 28,1325V la intrare voltmetru nu
poate fi alimentat. De asemenea, este necesar s se cunoasc ce
rezultatul va fi stocat n ADC la schimbarea tensiunii de intrare a
ADC. Rezultatul conversiei este calculat dup cum urmeaz:
ADC = 1024 * Uemax / Uref
De exemplu, n cazul n care tensiunea maxim de intrare, rezultatul
conversiei 2,5575V va fi:
ADC = 1024 * 2,5575 / 2,56 = 1023
Cnd tensiunea la intrarea rezultat 2V:
ADC = 1024 * 2 / 2,56 = 800
Pentru a obine numerele reale de afiare n urma conversiei n voli,
rezultatul conversiei trebuie inmultit cu un coeficient egal cu
raportul dintre tensiunea maxim transmis la intrarea divizorului la
rezultatul maximal al conversiei ADC
8

k = 2813/1023 = 2.75
Programul de tratare a ntreruperii de la ADC rezultatul conversiei il
inmultim la acest coeficient si primim marimea tensiunii transisa la
intrarea divizorului, deoarece pentru operaie de multiplicare pe un
numr fracionar microcontrolerului va fi nevoie de multa memoriem
exista metoda de a prezenta numarul 2,75 altfel: de exemplu
ADC*11)/4. Configuram registrii ADC si ai Timer2, permitem
intreruperea globala, la fel ca in cod se calculeaz rezultatul mediu
a datelor de conversie i de afiare pe ecran.
Programul pentru microprocesor este scris n limbajul de
programare C, i compilatorul AVR GCC. Am realizat schema
electric n ISIS Proteus 7.1 i am ncarcat codul n procesor cu
ajutorul la AVR Studio.
1. Configurarea porturilor
PORTD = 0xFF;
PORTB = (1 << segcounter);

2. Cofigurarea TIMER2
void timer2_init(void)
TIMSK |= (1 << TOIE2); // Permiterea intreruperii pe timerul 2
TCCR2 |= (1 << CS21); // Prescaler la 8

3. Configurarea ADC-ului
// Configurare ADC
ADCSRA |= (1 << ADEN) // Permiterea ADC
|(1 << ADSC) // Pornirea convertarii
|(1 << ADFR) // Regim continuu de functionare ADC
|(1 << ADPS2)|(1 << ADPS1) // 64 prescaler (frecven ADC 125kHz)
|(1 << ADIE); // Permiterea intreruperii de la ADC

Micocontrolerul ATmega8
Am folosit resursele microcontrolerul ATmega8 (Fig.1) deoarece
parametrii lui sunt destul pentru realizarea sarcinii i cost redus,
- am folosit PORTB, PORTC i PORTD
- ADC
- GPIO

Fig. 1 Microprocesorul ATmega8

Afior cu 7 Segmente
Pentru afiarea datelor am folosit afiorul GNQ-5641AG-21 cu 8
segmente cu catod comun (Fig. 2, 3).

10

Fig. 2 Afiorul cu 7 segmente

Fig. 3 Afiorul cu anod comun


Lista de elemente
Tabelul 1

Nr.
1
2
3
4
5
6

5.

Elementul
Condensator
Rezistente
Rez. variabila
Microprocesor+soket
Afior
Placa

Denumirea
100n
R=10K, 100k
R=1K
Atmega8
GNQ-541AG-21
textolit

Cantitatea
1
2
1
1
1
1

Schema electric a sistemului proiectat

Am realizat schema electric n Proteus care este alcatuit din processor,


elementul principal unde am conectat afisorul cu anod comun, si restul
elemente (Fig 6),
11

condensatorul 100n
rezistentele 10k, 100k
rezistenta variabila 1k
afisorul GNQ-541AG-21
Microprocesorul ATMega8

Fig.4 Schema electric


Dup ace am realizat schema am ncarcat hex-ul i am simultat obinnd
rezultatele:

Fig.5 Valoarea afisata la RV1=97%


Rezistena variabil

Fig.6

12

Fig.7 Valoarea afisata la RV1=50%


Rezistena variabil

Fig.8

13