ArticlePDF Available

Abstract and Figures

Pothuajse të gjitha sinjalet në botën reale janë analoge, si drita, zëri, temperatura dhe dukuritë tjera të ngjashme. Prandaj këto sinjale duhet të konvertohen në sinjale digjitale duke përdorur qarqe të quajtura konvertues analog-digjital apo ADC (Analog-to-Digital Converter) para se ato të mund të përdoren nga pajisjet digjitale. Në brendi të këtij punimi do të tregohet se çka janë ADC-të, më pas do të përshkruhet principi i përgjithshëm i punës së tyre. Po ashtu do të tregohen gjendjet e ndryshme të punës dhe do të bëhet përshkrimi në detaje për këto gjendje të punës. Fokus i veçantë do ti kushtohet konvertuesit në ATMEGA128. Fjalët çelës: Atmega 128, A/D konvertuesi, Principi i punës, konvertuesi analog-digjital, clock.
Content may be subject to copyright.
Principi i punës së A/D konvertuesit në Atmega128
RAMADAN DERVISHI
VEHBI NEZIRI
Fakulteti i Inxhinierisë Elektrike dhe Kompjuterike
Universiteti i Prishtinës
Kodra e Diellit
10000 Prishtinë, Kosovë
dervishi@gmail.com
vehbineziri@gmail.com
I. ABSTRAKT
Pothuajse gjitha sinjalet botën reale janë analoge, si
drita, zëri, temperatura dhe dukuritë tjera ngjashme.
Prandaj këto sinjale duhet të konvertohen në sinjale digjitale
duke përdorur qarqe quajtura konvertues analog-digjital
apo ADC (Analog-to-Digital Converter) para se ato të mund
përdoren nga pajisjet digjitale. brendi këtij punimi
do të tregohet se çka janë ADC-të, më pas do të përshkruhet
principi i përgjithshëm i punës tyre. Po ashtu do
tregohen gjendjet e ndryshme të punës dhe do bëhet
përshkrimi në detaje për këto gjendje të punës. Fokus i
veçantë do ti kushtohet konvertuesit në ATMEGA128.
Fjalët çelës: Atmega 128, A/D konvertuesi, Principi i
punës, konvertuesi analog-digjital, clock.
II. HYRJE
Shpesh është e nevojshme dhënat e marra nga një
sistem fizik konvertohen formë digjitale. dhënat e
tilla do të shfaqen zakonisht në formën analoge elektrike[1].
ADC është një pajisje sinjalet e vazhdueshme i
konverton vlera diskrete digjitale. ADC nevojitet
gjitha ato aplikacione të cilat kanë ndërlidhje me botën
analoge, ndërsa shfrytëzojnë procesimin digjital
informacioneve. Procesimi digjital ka shumë përparësi
se ai analog, për këtë rëndësia e ADC- është rritur.
Përdorimi i ADC- gjen zbatim shumë fusha jetës
përditshme sidomos në ato procese ku ndonjë fenomen i
caktuar ka natyrë analoge, ndërsa procesimi i dhënave
bëhet në mënyrë digjitale si p.sh matja e temperaturës, dritës,
procesimi i zërit etj. Pasi bëhet konvertimi nga sinjali
analog digjital atëherë kjo informatë mund përpunohet
lehtë dhe paraqitet formë përshtatshme për
njeriun, apo edhe për komunikim me pajise tjera. Sinjalet
analoge janë vështirë për tu ruajtur sepse kërkojnë memorie
analoge si p.sh kondensatorët [2].
III. PRINCIPI I PUNES SË A/D KONVERTUESIT
Ashtu siç u cek edhe hyrje sinjalet botën reale janë
analoge. P.sh kur skanohet një fotografi apo dokument,
skaneri e bën konvertimin nga analog digjital. Po ashtu
edhe kur bëhet regjistrimi i zërit ndodh procesi i konvertimi
sinjalit nga analog digjital. Ky proces ndodh edhe
shume procese tjera si gjatë bisedës telefonike, gjatë
regjistrimi CD-ve si de shumë e shumë procese tjera
ndodhin natyrë. Nëse dëshirohet sinjali analog
kthehet përsëri pas konvertimit digjital, atëherë përdoren
konvertuesit digjital-analog apo DAC[3].
Ka disa arsye pse bëhet konvertimi i sinjaleve nga analog në
digjital, një nga këto janë edhe zhurmat. Sistemet digjitale
kuptojnë vetëm dy vlera, 1 dhe 0 derisa sistemet analoge
mund të marrin secilën vlerë, prandaj aty mund ketë edhe
zhurma. Një avantazh tjetër i sistemeve digjitale është se ato
kanë mundësinë e kompresimit dhënave. Konvertuesi
analog-digjital mund konsiderohet si një kuti e mbyllur
siç shihet edhe në Fig. 1.
Konvertus analog-digjital
ADC
Vin
Hyrja analoge
D0
D1
D2
D3
D5
D6
D4
Dn
...
Dalja digjitale
Fig. 1 Konvertuesi analog-digjital ADC[3]
Ekzistojnë lloje ndryshme A/D konvertuesve. Ata
vijnë shpejtësi ndryshme, përdorin ndërfaqe
ndryshme dhe përkrahin shkallë ndryshme saktësisë.
Punimi do fokusohet dy llojet popullarizuara:
Konvertuesit “Flash” dhe konvertuesit “successive
approximation”[4].
A. Konvertuesit Flash
Konvertuesit Flash janë më shpejtë sesa llojet e tjera
konvertuesve, por janë më të shtrenjtë se konvertuesit e tjerë.
ADC Flash përdorin komparatorët dhe një varg
rezistorëve. ADC- 4-bitësh kanë 16 komparatorë; ADC 8-
bitësh kanë 256 komparatorë. gjitha daljet e
komparatorëve lidhen tek një bllok logjik që determinon
daljen bazuar se cili komparator është i ultë e cili i lartë.
Një konvertues flash përbëhet nga një numër i
komparatorëve të lidhur prej hyrjeve të invertuara (-).
3R
2
+
-
+
-
+
-
+
-
+
-
+
-
+
-
R
R
R
R
R
R
R
2
Enkoduesi 8/3
VREF
VIN
D0
D1
D2
Dalja digjitale
Hyrja analoge
Fig. 2 Konvertuesi Flash analog-digjital[1]
Vargu i rezistorëve është e lidhur në një njërën anë në një
tension 0V dhe anën tjetër një tension referent i cili
prodhon një rang fiks tensionit përgjatë zinxhirit
rezistorëve. Ky tension hyrës është ushqim për hyrjet e jo
invertuara (+) gjithë komparatorëve. Çdo komparator
krahason këtë tension me tensionin ai pranon nga
zinxhiri[3].
Për shembull, qoftë se është tension referent prej 5V,
kjo do thotë se kulmi i sinjalit analog do jetë 5V.
ADC-në 8-bitësh kur sinjal hyrës arrin 5V, atëherë në daljen
e ADC-së do kemi 255 apo binar 11111111, pra vlera
maksimale e mundshme[3].
B. Konvertuesit Successive approximation
Këta konvertues përdorin dizajnin e DAC. Janë më preciz
dhe kanë një kosto më të ulët se sa konvertuesit Flash.
Control logic Clock
+
-
DAC
Regjistri
successive approximation
D0D1D2
Komparatori
D3
Dalja
Vin
Fig. 3 Konvertuesi Successive appoximation[3]
Konvertimi me succsesive approximation behet disa
hapa, çdo hap në një cikël të clock-ut, ku edhe sipas emrit të
këtij konvertuesi, konvertori punon duke e kërkuar
gradualisht daljen e saktë. pari vendoset vlera 1 në MSB
(1000) SAR, pastaj kjo vlerë konvertohet DAC dhe
krahasohet komparator me vlerën do matet. Nëse
vlera është e vogël apo me e madhe atëherë vazhdohet
duke e vendosur vlerën tjetër për krahasim kështu deri sa ta
arrihet vlera e barabartë me vlerën që do të matet.
IV. OPERIMI I A/D KONVERTORIT NË ATMEGA128
Konvertori A/D ATMega 128 është i llojit succsesive
approximation. ADC konverton tensionin hyrës analog
vlerë digjitale 10-bitëshe me successive approximation.
Vlera minimale është GND dhe vlera maksimale është
tensioni pinin AREF. ADC aktivizohet duke vendosur
bitin ADEN (ADC enable bit)[5]. Tensioni referues dhe
përzgjedhësi i kanaleve hyrëse nuk kanë efekt deri sa të
vendoset ADEN. ADC gjeneron rezultatin në 10 bit që ruhet
regjistrat e ADC ADCH dhe ADCL. ADC ka
interruptet e tij mund shkrepin (trigger) kur
përfundon konvertimi. Nëse qasja e ADC në regjistrat e
dhënave është e ndaluar në mes leximit të ADCH edhe
interrupti ADCL do të shkrep edhe nëse rezultati ka humbur.
Qarku me successive approximation punon me
frekuencën e clock-ut prej 50kHz deri 200kHz, për
arritur rezolucion maksimal. Nëse nevojitet rezolucion me i
ultë, atëherë frekuenca e clock-ut mund jetë e madhe
se 200kHz, mënyrë kemi frekuencë lartë
mostrimit. Moduli ADC e ka një përshkallëzues (prescaler) i
cili gjeneron një frekuencë të pranueshme të clock-ut të
ADC prej çfarëdo frekuence CPU mbi 100kHz.
Përshkallëzues vendoset bitët ADPS regjistrit
ADCSRA.
Rezultatet e konvertimit. Pas kryerjes konvertimit
(ADIF është gjendje lartë), rezultati i konvertimit
mund gjendet regjistrin e rezultateve ADC (ADCL,
ADCH). Për konvertimin single-ended rezultati është[5]:
ADC=
ref
IN
V
V 1024*
Regjistrat e ADC
Regjistri i përzgjedhjes së multiplekserit ADMUX
4
3
2
1
Bit
7
6
5
0
MUX4
MUX3
MUX2
MUX1
Emri
REFS1
REFS1
ADLAR
MUX0
R/W
R/W
R/W
R/W
Read/Write
R/W
R/W
R/W
R/W
0
0
0
0
Vlera inic.
0
0
0
0
Bitët 7:6 janë bitët e përzgjedhjes tensionit referues,
nëse bitët 7 dhe 6 ndryshojnë gjatë konvertimit, atëherë nuk
do ketë efekt deri sa përfundojë konvertimi. Tabela
vijim paraqet vlerat e bitëve 7 dhe 6 për zgjedhjen e
tensionit referent.
REFS1
REFS0
0
0
0
1
1
0
1
1
Biti 5, ADLAR është bit konfiguron ruajtjen e
rezultatit të ADC në regjistra. Nëse ADLAR është 1, atëherë
rezultati është i vendosur prej pjesës majtë,
kundërtën është prej pjesës djathtë. Ndërrimi i vlerës
këtij regjistri ndikon menjëherë në regjistrin e të dhënave pa
marrë parasysh se a është duke u kryer ndonjë konvertim.
Bitët 4:0, MUX4:0 janë bit me cilët përzgjidhen nyjat
analoge që do të lidhen në ADC, gjithashtu bëhet edhe
përzgjedhja e shkalles përforcimit sinjalit kanalet
diferenciale.
Regjistri i kontrollit dhe statusit të ADC: A-ADCSRA
4
3
2
1
Bit
7
6
5
0
ADIE
ADPS2
ADPS1
MUX1
Emri
ADEN
ADSC
ADFR
ADPS0
R/W
R/W
R/W
R/W
Read/Write
R/W
R/W
R/W
R/W
0
0
0
0
Vlera inic.
0
0
0
0
Biti 7-ADEN: ADC Enable, momentin e shkrimit
vlerës 1 këtë bit aktivizohet ADC dhe me shkrimin e
vlerës 0, ADC ndalet. Nëse gjatë konvertimit ADC ndalet
atëherë edhe konvertimi ndërpritet.
Biti 6 ADSC: ADC Start Conversation, modin Single
conversation këtë bit duhet shkruhet 1 për çdo
konvertim, ndërsa modin Free Running këtë bit
shkruhet 1 vetëm për filluar konvertimin e parë.
Konvertimi i parë fillon pasi është shkruar 1 ADEN
pastaj edhe në bitin ADSC. Nëse shkruhet 1 në të dy këta bit
njëkohësisht, atëherë konvertimi i parë do fillojë pas 25
cikleve clockut. Pasi kryhet konvertimit vlera e ADSC
kthehet në zero. Shkrimi i vlerës 0 në këtë bit nuk ka efekt.
Biti 5-ADFR: ADC Free Running Select, me shkrimin e
vlerës 1 në këtë bit, ADC operon modin Free Running
(për me shumë në pjesën V).
Biti 4-ADIF: ADC Interrupt Flag, ky bit vendoset me
rastin e përfundimit konvertimit dhe regjistrat e
dhënave ndryshohen. Interrupti i kompletimit të konvertimit
ekzekutohet nëse biti ADIE dhe biti I në SREG vendosen.
Biti 3-ADIE: ADC Interrupt Enable, nëse në këtë bit
shkruhet 1 dhe biti 1 i SREG është vendosur, atëherë
interrupti i kompletimit të konvertimit aktivizohet.
Biti 2:0-ADPS2:0: ADC Prescaler Select Bits, këta bita
mundësojnë përzgjedhjen e përshkallëzuesit. Faktori ndarës
përcaktohet varësisht prej vlerës së këtyre bitëve si në tabelë:
ADPS2
ADPS1
ADPS0
Faktori ndarës
0
0
0
2
0
1
0
4
0
0
1
2
0
1
1
8
1
0
0
16
1
1
0
64
1
0
1
32
1
1
1
128
Regjistri i dhënave i ADC- ADCL dhe ADCH, kur
përfundon konvertimi, rezultati gjendet këta dy regjistra.
Nëse përdoren kanale diferenciale, atëherë rezultati gjendet
në formën e 2 komplementit (2’).
ADLAR=0
4
3
2
1
Bit
7
6
5
0
-
-
-
ADC9
ADCH
-
-
-
ADC8
R/W
R/W
R/W
R/W
Read/Write
R/W
R/W
R/W
R/W
0
0
0
0
Vlera inic.
0
0
0
0
ADC4
ADC3
ADC2
ADC1
ADCL
ADC7
ADC6
ADC5
ADC0
ADLAR=0
4
3
2
1
Bit
7
6
5
0
ADC6
ADC5
ADC4
ADC3
ADCH
ADC9
ADC8
ADC7
ADC2
R/W
R/W
R/W
R/W
Read/Write
R/W
R/W
R/W
R/W
0
0
0
0
ADCL
ADC1
ADC1
0
0
V. MODET E OPERIMIT TË A/D KONVERTORIT ATMEGA128
Modet e operimit të A/D konvertorit janë[3]:
a) Modi Free running
b) Modi Single Conversion
a) Modi Free running, ketë mod ADC
vazhdimisht bën mostrimin dhe azhurnimin e
regjistrave dhënave. Ky mod zgjidhet duke
vendosur ‘1’ logjik në bitin ADFR regjistrin
ADCSRA. Konvertimi fillon doke shkruar 1
logjik në bitin ADSC në regjistrin ADSCRA.
Nëse gjatë konvertimit zgjidhet ndonjë kanal
tjetër ADC pari e përfundon konvertimin
pastaj e ndërron kanalin. Kanali hyrës këtë
mod duhet të zgjidhet para fillimit të konvertimit
apo duhet pritet deri sa përfundojë
konvertimi pastaj zgjidhet kanali. modin
free running konvertimi i ri nis menjëherë pas
përfundimit konvertimi paraprak pasi biti
ADSC mbetet ‘1’.
b) Modi Single Conversion, konvertimi fillon duke
e shkruar ‘1’ logjik ne bitin ADSC (ADC Start
Conversion bit). Ky bit do te mbetet ‘1deri sa
te përfundon konvertimi dhe pastaj pastrohet
prej hardueri. Konvertimi normal të ky mod i
punës zgjat 13 cikle të clock-it ADC.
Konvertimi i parë bëhet pasi ADC
aktivizohet (vendoset 1 ADEB
regjistrin ADSCEA) i cili zgjat 25 cikle
clock-ut ADC. Pasi kryhet konvertimi
rezultati ruhet regjistrat e ADC-së dhe
vendoset bit ADIF. këtë mod biti ADSC
pastrohet pasi përfundon konvertimi dhe
për të filluar konvertimin tjetër duhet
vendoset prapë ky bit dhe pas vendosjes do
fillon konvertimi.
ADIF mund të vendoset edhe përmes softuerit.
VI. PËRDORIMI I INTERRUPTEVE NË ADC NË ATMEGA128
ADC ka interruptin e tij i cili shkrep me rastin e
kompletimit konvertimit. Aktivizimi i interruptit
kompletimit në ADC Atmega128 bëhet nëse vendoset
vlera logjike ‘1’ në bitin ADIE (ADC Interrupt Enable)
regjistrit ADCSRA dhe biti I i SREG është vendosur. Me
rastin e përfundimit të konvertimit biti 4 ADIF vendoset dhe
vlera e regjistrave dhënave ndryshohet. Biti I mund
vendoset dhe të fshihet me instruksionet SEI dhe CLI.
Me shkrepjen e interruptit, ekzekutohet një Interrupt
Service Routine (ISR), ku pas përfundimit këtij
ekzekutimi vazhdon ekzekutimi i programit aty ku ka
mbetur. ISR shkruhen veprimet duhet bëhen me
rastin e shkrepjes një interrupti caktuar[6]. shtojcë
është një shembull i përdorimit të interruptit në ADC.
VII. KONKLUZION
Konvertimi i sinjaleve analoge ato digjitale
ATmega128 bëhet kryesisht konvertimin e temperaturës
apo edhe konvertimin e intensitetit të dritës. Pas konvertimit
rezultati mund paraqitet ndonjë formë
lexueshme për njeriun si p.sh LED, indikator 7
segmentesh apo edhe LCD Display. Saktësia e matjes
këtyre fenomeneve natyrore nuk do thotë është e saktë
100%, por kjo varet prej karakteristikave të konvertuesit AD.
bazë dokumentacionit ATmega128 për matjen e
temperaturës, senzori i temperaturës bën matje rangun
prej -40
o
C deri +100
o
C. Varshmëria e ndryshimit
temperaturës ndryshimin e tensionit është 10mV për
o
K
(Kelvin), ku 0mV do thotë 0
o
K, ku saktësia e konvertimit
varet direkt prej karakteristikave elementeve e
përbejnë këtë proces.
REFERENCES
[1] Jacob Millman, Arvin Grabel, MICROELECTRONICS Second
edition.
[2] Behzad Razavi, Fundamentals of Microelectronics; ISBN: 978-0-
471-47846-1
[3] http://www.hardwaresecrets.com/article/317
[4] Owen Bishop, Microelectronics Systems and Devices; ISBN 0
7506 4723 X
[5] ATMEL AVR, 8-bit Microcontroller with 128K Bytes In-
System Programmable Flash, ATMega128 Datasheet, Rev.
2467RAVR06/08
[6] http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewto
pic&t=56429
ANNEX
#include <avr/io.h>
#define BV(bit) (1<<(bit))
#define vendos_bit(reg, bit) reg |=
(BV(bit))
#define largo_bit(reg, bit) reg &=
~(BV(bit))
void inic_ADC(char modi);
int main(void)
{
unsigned short vleraH,vleraL;
DDRE = 0xff; // vendos LED1 si
//dalje
DDRG = 0xff; // vendos LED2 si
//dalje
inic_ADC(1);//inicializon ADC dhe
// vendos modin e punes
//0-Single Conversion,
//tjera vlea free
running
vendos_bit(ADCSRA,ADSC);
while(true)
{
while(ADCSRA & 0b01000000);
vleraH=ADCH;
vleraL=ADCL;
//vendosja e vleres se konvertimit ne
//LED1 dhe LED2
PORTE=vleraH;
PORTG=vleraL
if (!(ADCSRA & BV(ADFR)))//nese
//nuk eshte ne modin Free
//Runninf ,vendos bit ne ADSC
//te rexhistrit ADCSRA
{
vendos_bit(ADCSRA,ADSC);
}
}
return 0;
}
void inic_ADC(char modi) //inicializimi
//i ADC dhe vendosja e modit te punes
{
vendos_bit(ADCSRA,ADEN); //enable
//ADC
if(modi==0) //ne modin e punes
//Single conversation
{
largo_bit(ADCSRA,ADFR);
}
else //per vlera tjera, ne modin
//free running
{
vendos_bit(ADCSRA,ADFR);
}
ADCSRA = ((ADCSRA & 0b11111000) |
0b00000110);
ADMUX = ((ADMUX & 0b00111111) |
0b01000000);
ADMUX &= 0b11100000;
largo_bit(ADMUX,ADLAR);
}
Shembull i përdorimit të interruptit[6].
#include <avr/io.h>
#include <avr/interrupt.h>
int main (void)
{
DDRE = 0xff; // vendos portin si
//dalje
DDRG = 0xff; // vendos portin si
//dalje
ADCSRA |= (1 << ADPS2) | (1 << ADPS1)
| (1 << ADPS0); // Vendos ADC prescaler
//128 - 125KHz me frekuencë të
//mostrimit @ 16MHz
ADMUX |= (1 << REFS0); // vendos
//referencën e ADC ne AVCC
ADMUX |= (1 << ADLAR); // Left adjust
//ADC rezultatin
ADCSRA |= (1 << ADFR); // vendos ADC
//ne modin free running
ADCSRA |= (1 << ADEN); // Aktivizo
//ADC
ADCSRA |= (1 << ADIE); // Aktivizo
//ADC Interruptin
sei(); // Aktivizo Global
//Interruptat
ADCSRA |= (1 << ADSC); // Starto
//konvertimin
for(;;) // Loop forever
{
}
}
ISR(ADC_vect) // Interrupt Service
//Routine
{
if(ADCH < 128)
{
PORTE |= (1 << 2); // ndez LED1
PORTG &= ~(1 << 0); // fik LED2
}
else
{
PORTE &= ~(1 << 2); // Fik LED2
PORTG |= (1 << 0); // ndez 1
}
}
ResearchGate has not been able to resolve any citations for this publication.
X [5] ATMEL AVR, 8-bit Microcontroller with 128K Bytes In- System Programmable Flash, ATMega128 Datasheet, Rev
  • Owen Bishop
Owen Bishop, Microelectronics – Systems and Devices; ISBN 0 7506 4723 X [5] ATMEL AVR, 8-bit Microcontroller with 128K Bytes In- System Programmable Flash, ATMega128 Datasheet, Rev. 2467R–AVR–06/08 [6] http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewto pic&t=56429
MICROELECTRONICS Second edition. [2] Behzad Razavi, Fundamentals of Microelectronics
  • Arvin Jacob Millman
  • Grabel
[1] Jacob Millman, Arvin Grabel, MICROELECTRONICS Second edition. [2] Behzad Razavi, Fundamentals of Microelectronics; ISBN: 978-0- 471-47846-1 [3] http://www.hardwaresecrets.com/article/317
Fundamentals of Microelectronics
  • Behzad Razavi
Behzad Razavi, Fundamentals of Microelectronics; ISBN: 978-0471-47846-1