Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
L8 convertoare analog numerice cu comparare
1. Lucrarea de laborator nr. 8
Convertoare analog numerice cu comparare
Scopul lucrării
În lucrare se prezintă trei principii de implementare a convertoarelor analog
numerice (CAN) cu ajutorul convertoarelor numeric analogice (CNA): cu aproximaţii
succesive, cu tensiune de comparaţie crescătoare în trepte egale şi cu urmărire.
1. CAN realizate cu CNA
Schema de principiu de realizare a unui CAN cu ajutorul unui CNA este prezentată
în figura următoare:
STARE COMENZI
Ui
BLOC
STABILIRE f0 GENERATOR
C COD INTRARE DE TACT
CNA
D
Ur
Uc
CNA
Fig. 1. Schema bloc a unui CAN realizat cu CNA
Tensiunea Ui se aplică la una din intrările comparatorului C. La cealaltă intrare se
conectează tensiunea Uc de la ieşirea CNA:
Uc=k Ur(b1 2-1+b2 2-2+...+bN 2-N)=qD. (1)
b1...bN – valorile logice ale celor N biţi de la intrarea CNA
Ur – tensiunea de referinţă a CNA
D – valoarea numerică de la intrarea CNA
q – cuanta CNA.
1
2. Pe baza rezultatului comparării tensiunilor Ui şi Uc obţinut la ieşirea comparatorului
C, blocul de stabilire a codului de intrare pentru CNA determină, prin testări repetate,
valorile logice ale biţilor b1...bN pentru a se obţine o relaţie de tipul:
Ui≈Uc, Ui≥Uc.
În funcţie de procedura de determinare a codului de la intrarea CNA, există mai
multe tipuri de CAN:
- CAN cu aproximaţii succesive
- CAN cu tensiune de comparaţie în trepte egale
- CAN cu urmărire.
a) CAN cu aproximaţii succesive
Prin această tehnică, se realizează aproximarea tensiunii de intrare printr-o sumă de
tensiuni egale cu FSR/2, FSR/4, FSR/8,…,FSR/(2N), unde N este numărul de biţi pe care se
realizează conversia analog numerică. Tensiunile de forma FSR/(2k) reprezintă ponderile
fiecărui bit de la intrarea convertorului numeric analogic în tensiunea analogică de la ieşire.
O conversie analog numerică începe prin aducerea la intrarea CNA a unui cuvânt
binar la care bitul cel mai semnificativ este 1 iar ceilalţi biţi sunt 0. Tensiunea Uc de la
ieşirea CNA va fi FSR/2. Dacă această valoare a lui Uc este mai mare decât Ui, bitul cel mai
semnificativ este adus la 0. Dacă Uc este mai mic decât Ui bitul cel mai semnificativ rămâne 1.
Pentru stabilirea biţilor următori se repetă operaţia descrisă pentru bitul cel mai
semnificativ. Biţii care au fost stabiliţi rămân la valorile stabilite până la terminarea
conversiei analog numerice. Ponderea adusă de ultimul bit pus pe 1 se adaugă tensiunii Uc
existente.
Avantajul utilizării acestui tip de CAN este viteza ridicată de conversie.
Dezavantajul este complexitatea blocului de stabilire a codului de intrare pentru CNA.
Ui, Uc
7FSR
8
Ui
3FSR
4
FSR Uc
2 t
1 1 0 1
Fig. 2. Reprezentarea grafică a tensiunilor Ui şi Uc
b) CAN cu tensiune de comparaţie crescătoare în trepte egale
Acest tip de CAN realizează stabilirea codului de intrare pentru CNA prin
incrementarea valorii transmise CNA. Atunci când Uc depăşeşte Ui, se reţine ultima valoare
pentru care Uc<Ui ca fiind rezultatul conversiei analog numerice.
Avantajul utilizării acestui CAN constă în simplitatea blocului de stabilire a codului
de intrare pentru CNA.
2
3. Ui, Uc
Uc
Ui
t
Fig. 3. Reprezentarea grafică a tensiunilor Ui şi Uc
c) CAN cu urmărire
În cazul acestui tip de CAN blocul pentru stabilirea codului de intrare al CNA este
un numărător reversibil. Determinarea cuvântului binar de la ieşirea CAN se realizează prin
numărare în sens crescător (dacă Uc<Ui) sau descrescător (dacă Uc>Ui).
Avantajul utilizării acestui tip de CAN este viteza ridicată de conversie dacă intrarea
analogică a CAN este o tensiune continuă sau lent variabilă în timp.
Ui, Uc
Uc
Ui
t
Fig. 4. Reprezentarea grafică a tensiunilor Ui şi Uc
2. Circuitul utilizat în lucrare
Se utilizează sistemul cu microcontroler MC9S12xDP512 la care este conectat
sistemul cu CNA pe 8 biţi DAC08. Sistemul cu microcontroler realizează funcţia blocului
de stabilire a codului de intrare al CNA.
3
5. Pentru un cuvânt de 8 biţi (D) aplicat la intrarea CNA, curentul de la ieşirea acestuia
este:
Ur D
I0 = ⋅ (2)
R1 256
La intrarea comparatorului se obţine tensiunea:
R3 ⋅ R4 ⎛ Ui ⎞
U1 = ⎜ R − I0 ⎟
⎜ ⎟ (3)
R3 + R4 ⎝ 4 ⎠
R3 ⋅ R4 ⎛ U i U r D ⎞
U1 = ⎜ − ⋅ ⎟ (4)
R3 + R4 ⎜ R4 R1 256 ⎟
⎝ ⎠
Indiferent de tipul de convertor implementat se urmăreşte anularea tensiunii U1,
rezultând astfel funcţia de transfer a CNA:
256 R1
D= ⋅ ⋅U i (5)
U r R4
3. Lucrarea practică
Nu se vor aduce tensiuni mai mari de 6V la intrarea Ui a CAN.
1). Utilizând programul prezentat în lucrare să se realizeze un CAN cu aproximaţii
succesive şi să se verifice funcţionarea lui.
2). Modificaţi tensiunea Ui de la intrarea CAN astfel încât rezultatul conversiei analog
numerice să fie FEh şi calculaţi cuanta CAN:
U i (D = FEh )
q= (6)
254
3). Considerând o tensiune aplicată CAN, calculaţi rezultatul conversiei. Aplicaţi tensiunea
considerată la intrarea CAN şi verificaţi rezultatul calculat.
4). Să se vizualizeze şi să se deseneze formele de undă ale semnalelor de la intrarea
neinversoare a comparatorului (Uicomp) şi de la ieşirea comparatorului (Uocomp). Interpretaţi
cele două forme de undă pentru 3 valori diferite ale Ui.
5). Modificaţi perioada conversiilor analog numerice.
6). Modificaţi programul astfel încât să se obţină un CAN cu tensiune de comparaţie în
trepte egale.
7). Modificaţi programul astfel încât să se obţină un CAN cu urmărire.
Anexă. Programul utilizat
CAN_AS
Programul conţinut în proiectul can_as realizează conversii analog numerice cu
aproximaţii succesive cu ajutorul convertorului numeric analogic.
Declanşarea unei conversii analog numerice este realizată cu ajutorul circuitului
temporizator pentru întreruperi periodice (PIT).
5
6. După programarea circuitului PIT, execuţia programului continuă cu o buclă infinită
realizată cu linia de program INF: BRA INF. La primirea unei cereri de întrerupere de la
circuitul PIT va fi rulat programul care se găseşte în memorie la adresa conţinută în două
locaţii de memorie succesive începând cu adresa de 16 biţi formată din conţinutul
registrului IVBR (8 biţi mai semnificativi ai adresei de 16 biţi) şi o constantă (7Ah)
specifică pentru canalul PIT utilizat (canalul 0).
La primirea unei cereri de întrerupere se va face o conversie analog numerică cu
aproximaţii succesive.
Se utilizează o locaţie de memorie (locaţia cu adresa 1000h) pentru a memora un
număr care reprezentat în binar conţine o singură cifră 1. Iniţial acest număr are valoarea
80h. Iniţializarea locaţiei de memorie de la adresa 1000h cu valoarea 80h este realizată prin
linia de program MOVB #$80,$1000.
Rezultatul conversiei analog numerice se formează în acumulatorul A. În timpul
unei conversii analog numerice, fiecare bit al rezultatului temporar al conversiei
(acumulatorul A) este adus la valoarea 1 prin funcţia SAU între A şi conţinutul locaţiei cu
adresa 1000h (instrucţiunea ORAA $1000). După realizarea funcţiei SAU, se comandă
convertorul numeric analogic cu rezultatul temporar şi se testează ieşirea comparatorului,
care va avea valoarea 1 logic dacă tensiunea generată de convertorul numeric analogic este
mai mică decât tensiunea de intrare a convertorului analog numeric.
Ieşirea comparatorului este conectată la linia 0 a portului T (PTT) programat ca port
de intrare prin linia de program MOVB #$00,DDRT şi se testează prin instrucţiunile LDAB
#$01 şi BITB PTT. Prin instrucţiunea BITB PTT se realizează funcţia ŞI logic între
registrul de date al portului T şi acumulatorul B. Stările biţilor din registrul CCR vor fi
modificate conform rezultatului funcţiei ŞI.
Dacă ieşirea comparatorului are valoarea 1 logic, rezultatul funcţiei logice ŞI între
această ieşire şi 1 logic din bitul 0 al acumulatorului B va face ca bitul Z din registrul CCR
să fie adus la valoarea 0 logic. În acest caz instrucţiunea BNE BIT1 va face salt la
instrucţiunea LSR $1000 (saltul se face dacă Z=0), iar bitul din rezultatul temporar care a
fost adus la 1 logic prin funcţia SAU va rămâne pe 1. Dacă ieşirea comparatorului este 0
BNE BIT1 nu va face saltul iar bitul din rezultatul temporar care a fost adus la 1 logic prin
funcţia SAU este readus la 0 logic prin funcţia SAU EXCLUSIV între A şi valoarea
numerică de la adresa 1000h (instrucţiunea EORA $1000).
Conţinutul locaţiei cu adresa 1000h este deplasat la dreapta cu un bit prin
instrucţiunea LSR $1000. Valorile succesive de la adresa 1000h vor fi 80h, 40h, 20h, 10h,
08h, 04h, 02h şi 01h. Atunci când se ajunge la valoarea 01h, la următoarea rulare a
instrucţiunii LSR $1000 bitul C din registrul CCR va deveni 1, iar instrucţiunea BCC CC
nu va mai face salt la linia de program ORAA $1000.
LDS #RAMEnd+1 ; initializare contor de stiva
CLI ; validare intreruperi
MOVB #$FF,DDRB ;PORTB - iesire
MOVB #$00,DDRT ;PORTT - intrare
MOVB #$00,PITMUX
MOVB #$01,PITINTE
MOVB #199,PITMTLD0
MOVW #399,PITLD0
MOVB #$80,PITCFLMT
MOVB #$01,PITCE
6
7. MOVB #$20,IVBR
MOVW #$4050,$207A
INF: BRA INF
ORG $4050
MOVB #$01,PITTF
MOVB #$80,$1000 ;10000000
CC: ORAA $1000
STAA PORTB
LDX #$40 ;intarziere pentru comparator
CD: DBNE X,CD
LDAB #$01
BITB PTT
BNE BIT1 ;iesire comparator=1 => Uc<Ui
EORA $1000
BIT1: LSR $1000
BCC CC
STAA PORTB
RTI
7