Documente Academic
Documente Profesional
Documente Cultură
Obiectivul lucrării
Studiul structurii hardware şi al funcţionării unui instrument multifuncţional
cu microcontroler pentru măsurarea tensiunii, curentului, puterilor activă,
reactivă și aparentă, şi temperaturilor în două puncte utilizând traductoare
termice rezistive şi generatoare.
Traductorul de curent
Varianta aleasă este cea cu senzor Hall în varianta în buclă închisă. Tensiunea
de ieşire a senzorului Hall este preluată, amplificată şi convertită în curent
cu care se alimentează o înfăşurare cu mai multe spire dispusă pe miezul
feromagnetic al senzorului. Fluxul magnetic produs de conductorul în care se
măsoară curentul este contracarat de fluxul magnetic al înfăşurării astfel că
traductorul de curent funcţionează la flux nul. Mărimea curentului injectat în
înfăşurarea „secundară” este măsura curentului primar care trebuie măsurat.
Înfăşurarea secundară este înseriată (prin terminalul de ieşire) cu rezistenţa
de sarcină. Se obţine astfel conversia curent-tensiune. Ieşirea senzorului fiind
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Traductorul de tensiune
Traductorul de tensiune utilizat este unul cu senzor Hall, asigurând
instrumentului izolare galvanică faţă de circuitul care furnizează tensiunea
măsurată.
Structura intern[ a senzorilor de tensiune este aceea]i cu cea a senzorilor de
curent, cu deosebirea că înfăşurarea primară are mult mai multe spire, permiţând
scăderea curentului nominal până la valori compatibile cu intrările de tensiune.
În cazul particular al acestei aplicaţii, curentul nominal al traductorului este
I1n=10mA.
Conversia RMS-DC
Pentru măsurarea valorilor efective ale curentului şi tensiunii s-a recurs la
conversia c.a.-c.c. cu convertoare de valoare efectivă adevărată pe canalele de
curent şi de tensiune. Această conversie poate fi realizată prin intermediul
circuitelor dedicate – convertoarele RMS-DC.
AD636 este un circuit integrat analogic specializat pentru conversia valorii
efective (true RMS) a semnalului alternativ de intrare în tensiune continuă.
Pentru AD636 singura componentă externă critică este condensatorul de integrare,
care trebuie să fie de înaltă calitate. Semnalul de ieşire (tensiune continuă)
poate fi filtrat suplimentar utilizând un amplificator-tampon (buffer) pentru
minimizarea ondulaţiei tensiunii de ieşire (ripple). În plus, pe lângă funcţia
de filtru, buffer-ul are o impedanţă de ieşire suficient de mică pentru a
furniza curentul maxim de ieşire 5mA.
AD636 poate funcţiona într-un domeniu larg al tensiunii de alimentare, atât
unipolare (+5V până la +24V) cât şi bipolare (±2,5V... ±16,5V).
Convertoarele RMS_DC sunt realizate conform schemei de mai jos.
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Secţiunea numerică
Controlul funcţiilor multimetrului este realizat cu un microcontroller pe 8 biţi
fabricat în tehnologie CMOS, de tip PCB80C552 , derivat din familia 80C51.
Circuitul 80C552 include:
- memorie RAM statică internă de 256 x 8 care poate fi citită şi scrisă
- cinci porturi bidirecţionale de 8 biţi
- un port de intrare de 8 biţi
- două numărătoare/timer-e de 16 biţi
- un timer adiţional pe 16 biţi pentru achiziţii de date
- un controller de întreruperi cu 15 linii structurate pe 2 niveluri
- un convertor analog numeric ADC pe 10 biţi cu 8 intrări analogice multiplexate
- două ieşiri DAC modulate în lăţimea impulsului ( PWM)
- două interfeţe seriale full duplex (UART şi I2C-bus)
- un timer "watchdog"
- un oscilator de ceas intern cu 3 intervale de frecvenţă: 1,2…16 MHz ; 1,2…24
MHz; 1,2…30 MHz
Microcontrolerul 80C552 poate fi interfaţat cu circuite standard TTL şi are 2
moduri de lucru economice: "idle mode” şi „power-down mode".
Microcontroller-ul funcţionează şi ca procesor aritmetic putând opera cu numere
binare în format de octet sau la nivel de bit, având 49 de instrucţiuni de un
octet, 45 de doi octeţi şi 17 de trei octeţi. La frecvenţa de ceas de 16MHz (24
MHz), 58% dintre instrucţiuni se execută în 0,75µs (0,5µs) iar 40% în 1,5µs
(1µs). Instrucţiunile de înmulţire şi de împărţire necesită câte 3µs (2µs).
Portul P5 este port de intrare pentru ADC, dar poate fi folosit şi ca port de
intrare de date pentru semnale cu nivele TTL. Toate celelalte porturi sunt
bidirecţionale.
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Consumul de curent al circuitului este maxim 30mA la 11MHz şi 5Vcc, scăzând mult
în oricare din cele două moduri de lucru economice. Frecvenţa de rezonanţă a
cristalului de cuarţ utilizat la circuitul de ceas determină ratele de transfer
pentru comunicaţia internă şi pentru interfaţa serială. Pentru usurinţa
obţinerii ratelor standard de transfer pe linia serială s-a ales frecvenţa
ceasului de 11,0592MHz.
Modul de lucru
Se realizează un montaj simplu (figura de mai jos) care va include sursa de
energie, instrumentul multifuncţional, un consumator şi o sursă de căldură.
Tabelul de date
Nr. UDMM UV γU IDMM IA γI PDMM PW γP ΘDMM Θref γΘ Obs.
det. (V) (V) (A) (A) (W) (W) o o (%)
(%) (%) (%) ( C) ( C)
Întrebări
1. Ce mărimi măsoară instrumentul multifuncţional ?
2. Ce domenii de măsurare are instrumentul multifuncţional ?
3. Care sunt modulele componente ale instrumentului ?
4. Ce traductoare utilizează instrumentul studiat ?
5. Ce adaptoare include instrumentul ?
6. Ce structură are secţiunea numerică a instrumentului ?
7. Ce rezultă din analiza datelor experimentale privind precizia instrumentului
?
T Şerban Bazele sistemelor de achiziții de date lucrări practice
1/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
2/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
3/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
4/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
1/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Module componente
a) Secţiunea analogică
Interfaţa analogică a perturbografului include 5 canale de intrare pentru
curent, 4 canale pentru tensiune şi 8 canale pentru mărimile numerice (piste),
toate cu izolare galvanică pe intrare (fig.2).
b) Secţiunea numerică
Controlul funcţionării sistemului de înregistrare este realizat cu un
microcontroler PCB80C552 al cărui achizitor încorporat (rezoluţie 10 biţi) este
neutilizat, fiind înlocuit cu sistemul extern de achiziţie de 12 biţi descris
anterior.
2/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Microcontrolerul este inclus într-un sistem numeric format din memorie program
(EPROM), memorie de date (RAM), porturi şi interfaţa serială de comunicaţie.
c) Secţiunea de alimentare
Alimentarea secţiunilor analogică şi numerică se realizează cu o sursă în
comutaţie, prin care se asigură izolarea galvanică a secţiunilor componente faţă
de reţeaua monofazată de 220Vca.
d) Legătura cu PC
Transferul informaţiei între PDM şi PC se realizează pe linie serială, printr-un
cablu serial cu 3 fire, cu terminale DB09. Rata de transfer este 9600 bauds.
e) Software
PDM include un program (software) dedicat, care asigură funcţionarea, conexiunea
cu PC şi interfaţa-utilizator. În PC se instalează interfața-utilizator și
programele pentru calculul ulterior achiziției (off-line) al mai multor mărimi
parametrice și complexe. Odată instalată, această interfaţă permite
identificarea PDM cuplate pe linia serială, în configuraţiile specificate mai
jos, şi oferă ferestre de configurare şi de măsurare care reprezintă obiectul
studiului din lucrarea de laborator.
3/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
transferate și către alte sisteme de calcul prin modem, prin internet (LAN) sau
rețea extinsă (WAN) - premisă pentru includerea PDM în sisteme SCADA.
4/4
T Şerban Bazele sistemelor de achiziții de date lucrări practice
1/3
T Şerban Bazele sistemelor de achiziții de date lucrări practice
2/3
T Şerban Bazele sistemelor de achiziții de date lucrări practice
3/3
T Şerban Bazele sistemelor de achiziții de date lucrări practice
1/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
2/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Observație:
Dacă semnalul /RD este multiplexat cu semnalul ALE, memoria RAM poate fi
utilizată şi pentru stocarea codului maşină. În această situaţie, placa poate
fi utilizată ca sistem de dezvoltare, dacă în EPROM se instalează programul
MONITOR, care realizează mai multe funcţii:
- scrierea în RAM a codurilor unui program executabil, preluate din PC în cod
HEX prin interfaţa serială;
- lansarea programului executabil din memoria RAM;
- accesul la registrele µC;
- citirea sau scrierea în RAM;
- funcţii de gestionare a resurselor, detectarea și corectarea erorilor din
programe
3/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
4/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
+15V
1
R64
+15V
1k6 7 1
U10
2 3 +
2 6 Vref
1
1 2 -
C7 D1 TL071 R63
+ 2 5.115V
4 5 1
10u ROZ82 -15V C8
2 1 10k +
3 10u
2
5/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
6/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
7/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
+15V
1
1
R69 R68 R67
1k 1k 1k1
3
3
12
12
2 2
200R 200R
1k 1k
2
2
1
Q2 Q3 Q4
U11 3 R65
1
7
Ie1 Ie2 + 3 2
Q1 6 100k
2N2222 - 2
1
1
TL071
5
4
R66 -15V
1k
2
7
1
R35 100k U4 U5 03
1 1 2 3 + R41 100k 3 +
2 6 1 2 6
3 R36 100k 2 - 2 -
3
4
5
8/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
+15V
J5 +15V
7
1
1 R56 5k6 U8 05
2 2 1 3 +
3 6
2 -
1
TL071 R58
LM35_1
R57 7k5 30k
4
5
2 1 -15V
2
R55 100k
2
1 3
+15V
1
C2 C3 10u
Au = 120.682 2 1
4
100n
+
3 + U1A R6 10k R5 100k R12 50k R13 75k
2
1
R16 1 1 2 1 2 1 2 1 2
2 - -15V
10k TL074 -15V
11
11
11
2
-
1 3 1 2 9 - TL074 R9 100k 14 Out TC_1
8 1 2 12
J1
+
1 2 1 2 10 + U1D
-15V U1C
2 R2 10k R4 56k
4
1 +15V Au = 2.5
11
2
+15V R10 R11
6 - TL074 Vref
1
R17 10k 7 1 2 1 2 200k 100k R15
TC_1 1 2 5 +
U1B R7 10k R8 100k 10k
U2
1
C1
1
21
+15V 1 R14 1k
4
100n +15V Vc 2 1 23
Out
2
3 500mV
Gnd
LM35
9/9
T Şerban Bazele sistemelor de achiziții de date lucrări practice
1/3
T Şerban Bazele sistemelor de achiziții de date lucrări practice
2/3
T Şerban Bazele sistemelor de achiziții de date lucrări practice
3/3
T Şerban Bazele sistemelor de achiziții de date lucrări practice
2. Schema de lucru
1/2
T Şerban Bazele sistemelor de achiziții de date lucrări practice
4. Structura programului
- "declaraţii";
- rutine vitale şi iniţializări:
- transmiterea unui caracter la display;
- citirea tastaturii;
- conversie binar-ASCII;
- trecere la rând nou;
- interfaţa utilizator;
- iniţializarea transmisiei seriale;
- programul de achiziţie propriu-zisă:
- “citirea” tastaturii;
- iniţializarea ADCON;
- selectarea canalului de intrare;
- declanșarea achiziţiei şi conversiei;
- recepţia rezultatului conversiei;
- aşezarea biţilor în ordinea naturală;
- afişarea rezultatului bit-cu-bit.
5. Modul de lucru
Se verifică la sursa de alimentare poziţiile de minim ale potențiometrelor de
reglare a tensiunilor şi curenților de ieşire, apoi se realizează montajul de
alimentare cu tensiune continuă de intrare a sistemului de achiziţie. Acesta
include sursa reglabilă de tensiune continuă stabilizată şi divizorul de
tensiune (rezistenţele R1, R2). Tensiunea de ieşire din divizor este adusă la
intrarea sistemului de achiziţie pe canalul 1 (primul canal) care este alocat
intrării unipolare. Se montează voltmetrul etalon în paralel cu sistemul de
achiziţie. Se porneşte sursa de tensiune reglând valoarea tensiunii de ieşire
până la o valoare în jurul a 0,1V. Când tensiunea de ieşire a sursei şi
indicaţia voltmetrului etalon se stabilizează, se comandă o achiziţie prin
apăsarea tastei 1 a PC cu care este realizată interfaţa utilizator a sistemlui
de achiziţie. Se citeşte valoarea binară a cuvântului de ieşire din convertorul
A/D şi se converteşte prin calcul în valoare de tensiune înmulţind echivalentul
în bază 10 al acestei valori cu rezoluţia convertorului analog-numeric. Eroarea
absolută de conversie rezultă ca diferenţă între valoarea tensiunii de intrare
indicată de voltmetrul etalon şi valoarea tensiunii de intrare calculată din
valoarea numerică a ieşirii convertorului.
Se modifică tensiunea de ieşire a sursei reglabile de tensiune continuă
stabilizată până la o valoarea de cca. 0,2V şi se repetă operaţiile pentru
obţinerea celei de-a doua valori a tensiunii evaluate cu convertorul A/D. Se
repetă cele de mai sus pentru tensiuni crescătoare din 0,1 în 0,1V până la
tensiunea nominală de intrare în ADC (4092mV).
Se calculează erorile absolute în fiecare punct de măsurare şi se reprezintă
grafic în funcţie de tensiunea de intrare pentru care s-a făcut determinarea.
6. Tabelul de date
UV(mV) ~100 ~200 ............ ~ 4000
(NADC)16 .............
(NADC)10 .............
Umăs(mV) .............
∆U(mV) .............
2/2
T Şerban Bazele sistemelor de achiziții de date lucrări practice
1. Chestiuni de studiat
Utilizând un sistem de achiziţie cu microcontroller cu achizitor de date inclus
se achiziţionează un fragment din evoluţia unei tensiuni unipolare variabile în
timp, urmărind corelarea duratei achiziţiei cu durata tranziției semnalului.
Se studiază structura programului de achiziţie şi afişare a unei salve de valori
măsurate corespunzând încărcării unui condensator de la o sursă de tensiune
continuă.
2. Schema de lucru
1/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
4. Structura programului
- declaraţii;
- rutine vitale şi iniţializări:
- transmiterea unui caracter la display;
- citirea tastaturii;
- conversie binar-ASCII;
- trecere la rând nou;
- interfaţa utilizator;
- iniţializarea transmisiei seriale;
- iniţializarea contorului de eşantioane;
- programul de achiziţie propriu-zisă:
- citirea tastaturii;
- iniţializarea ADCON;
- setarea canalului de intrare;
- start achiziţie şi conversie;
- recepţie rezultat;
- aşezarea biţilor în ordinea naturală;
- afişarea rezultatului bit-cu-bit;
- verificarea contorului de eşantioane.
Schema logică a programului de achiziţie este reprezentată în fig.3.
5. Modul de lucru
Observație: Prima valoare din şirul celor 23 nu este (000H) deoarece programul
conţine un trigger soft pentru eliminarea zgomotului şi a declanşărilor false
ale salvelor de achiziţie.
2/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
6. Tabelul de date
t (SP) 1 2 ........................ 23
(NADC)16 000H ........................ 3FFH
(NADC)10 0 ........................ 1 024
UC(mV) 0 ........................ 4 096
7. Observaţii şi concluzii
3/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
_______________________
(*)
1023 unități CA/N x rezoluția absolută 4mV; factorul de transfer al CA/N:
4mV/bit
4/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
;**************************************************************************
;PROGRAM PENTRU MĂSURAREA TENSIUNILOR UNIPOLARE PE UN SINGUR CANAL
;**************************************************************************
;declarații
;titlul programului (HLP)
;rutine de tratare a întreruperilor
;caracter la display (CHR)
;rând nou (PRGRF)
;citirea tastaturii (PCKey)
;conversie binar-ASCII (BINASC)
;inițializarea interfeței seriale
;*************************************************
; PROGRAMUL DE ACHIZIȚIE
;*************************************************
call HLP ;antetul programului
INCEP: call PRGRF ;linie nouă
call PCKey ;citesc tastatura PC
cjne A, #'s', INCEP ;aștept apăsarea tastei "s"
trig1: MOV ADCON, #08 ;lansez conversia
trig: MOV A, ADCON ;citesc ADCON
JNB ACC.4,trig ;aștept EOC
mov a,adch ;citesc rezultatul conversiei
cjne a,#1,trig1 ;compar cu pragul de triggerare
MOV R1, #23 ;prescriu numărul de eșantioane în R1
ADSET: MOV ADCON, #00 ;reset ADCON
MOV ADCON, #08 ;lansez conversia
ADEOC: MOV A, ADCON ;citesc ADCON
JNB ACC.4, ADEOC ;aștept EOC
call String ;rând nou
MOV A, ADCON ;citesc ADCON
ANL A, #11000000B ;validez LSB din rezultatul conversiei
RL A ;poziționez corect LSB
RL A
MOV R2, A ;memorez LSB
MOV A, ADCH ;citesc ADCH
ANL A, #00111111B ;invalidez primii 2 MSB
RL A ;poziționez corect în noul octet inferior
RL A
ADD A, R2 ;adun cei 2 LSB
MOV R3, A ;memorez octet nou
MOV A, ADCH ;citesc ADCH
ANL A, #11000000B ;validez 2 MSB
RL A ;poziționez pentru afișare
RL A
CALL BINASC ;convertesc în ASCII
CALL LITERA ;transmit prima cifra hexa
MOV A, R3 ;citesc octet inferior
ANL A, #11110000B ;validez MS nibble
SWAP A ;poziționez pentru afișare
CALL BINASC ;convertesc în ASCII
CALL LITERA ;transmit a doua cifră hexa
MOV A, R3 ;citesc octet inferior
ANL A, #00001111B ;validez LS nibble
CALL BINASC ;convertesc în ASCII
CALL LITERA ;transmit ultima cifra hexa
DJNZ R1, SALT ;decrementez R1, iar dacă este 0,
LJMP INCEP ;aștept lansarea unei noi salve
SALT: LJMP ADSET ;dacă nu este zero, achiziționez eșantionul următor
END
5/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
//***************************************************************
// "declararea" variabilelor
int bin,Uadc,Umas,mV;
float out;
// "librarii"
#include <LiquidCrystal.h>
void setup()
//"declar" tipul lcd
{
lcd.begin(16, 2);
}
void loop()
{
6/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
7/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
2. Modalităţi de conversie
Convertoarele analogic-numeric (CAN) din microcontrolerele specializate pentru
achiziţia datelor sunt de tip unipolar, fiind alimentate din aceeaşi sursă ca
secţiunea numerică. Pentru achiziţia semnalelor alternative, este necesară
aducerea acestora în domeniul de variaţie unipolar admisibil la intrarea CAN.
Numărul binar rezultat în urma conversiei va avea, în acest caz, două părţi:
- o parte (1bit) care descrie semnul tensiunii de intrare: bitul de semn;
- o parte care descrie mărimea tensiunii de intrare.
Pentru semialternanţele negative, scara este inversată, pentru că valorile mici
negative sunt reprezentate prin corespondente numerice mari. Soluţia este
complementarea părţilor din numerele de ieșire care reprezintă mărimile
eşantioanelor.
1/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Uin + UrefCAN
Uosum =
2
2.2. A doua variantă este utilizarea unui redresor de precizie. Cea mai des
întâlnită schemă este cea cu două amplificatoare operaţionale, reprezentată în
figura de mai jos.
2.3. A treia variantă este utilizarea unui convertor RMS-DC, într-una din
variantele cu modelare analogică: - cu circuit multifuncțional (AD636);
- log-antilog (LH0091)
2/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
3. Schema de lucru
Echipamente utilizate:
Sistem de achiziţie cu microcontroler PCB80C552 cu achizitor încorporat;
E1, E2 - surse reglabile de tensiune continuă stabilizată;
R1 - rezistor în decade; C – condensator electrolitic 1000µF;
1
V - voltmetru numeric, minim 4 /2 cifre;
PC - sistem de calcul cu interfață serială RS232;
5. Modul de lucru
Se verifică poziţiile de minim la butoanele de reglare a tensiunii şi curentului
de ieşire la sursa de alimentare, apoi se realizează montajul după schema expusă
anterior. Acesta include sursele reglabile de tensiune continuă stabilizată, un
rezistor reglabil în decade şi un condensator electrolitic. Tensiunea de la
bornele condensatorului este adusă la intrarea sistemului de achiziţie pe
canalul 2 (al doilea canal), alocat intrărilor bipolare.
Se porneşte sursa dublă de tensiune reglând valorile tensiunilor de ieşire la -
4,096V, respectiv +4,096V, urmărind indicaţiile voltmetrului etalon cuplat la
intrarea sistemului de achiziţie. Se verifică, prin lansarea unei salve de
achiziţie, includerea valorilor eşantioanelor în domeniul -1FFH , +1FFH.
Valoarea din stânga nu va fi atinsă niciodată datorită aceluiaşi trigger soft
3/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
4/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Anexa 1
PROGRAM ÎN LIMBAJ DE ASAMBLARE PENTRU MĂSURAREA TENSIUNILOR BIPOLARE PE UN CANAL
;******************************************************************************
;"DECLARAȚII"
*******************************************************************************
;titlul programului
;rutine de tratare a întreruperilor
;transmiterea unui caracter la display
;trecerea pe un rând nou
;citirea tastaturii
;conversia binar-ASCII
;inițializarea interfeței seriale
;*************************************************
; PROGRAMUL DE ACHIZIȚIE
;*************************************************
call Hlp ;lansez rutina pt afișarea titlului programului
Incep: call Prgrf ;scriu pe rând nou
call PCKey ;citesc tastatura PC
cjne A, #'p', Incep ;aștept apăsarea tastei "p"
trig1: MOV ADCON, #09 ;lansez conversia
trig: MOV A, ADCON ;citesc ADCON
JNB ACC.4,trig ;aștept EOC
mov a,ADCH ;citesc rezultatul conversiei
cjne a,#1,trig1 ;compar cu pragul de triggerare
MOV R1, #23 ;prescriu în R1 numărul eșantioanelor
ADSET: MOV ADCON, #00 ;resetez registrul ADCON
MOV ADCON, #09 ;lansez conversia
ADEOC: MOV A, ADCON ;citesc conținutul registrului ADCON (pt flag-ul EOC)
JNB ACC.4, ADEOC ;dacă nu s-a terminat, continui să aștept flag-ul EOC
call String ;trec la rând nou pe ecran
MOV A, ADCON ;citesc conținutul ADCON
ANL A, #11000000B ;validez cei doi LSB din rezultatul conversiei
RL A ;poziționez corect LSB
RL A
MOV R2, A ;memorez LSB
MOV A, ADCH ;citesc conținutul registrului ADCH
ANL A, #00111111B ;invalidez primii 2 MSB
RL A ;îi poziționez corect >>
RL A >>în noul octet inferior
ADD A, R2 ;adun cei doi LSB
MOV R3, A ;memorez noul octet
MOV A, ADCH ;citesc conținutul ADCH
anl a, #10000000b ;validez bitul cel mai semnificativ
jnb acc.7, minus ;dacă nu e 1, apelez rutina de afișare a n-relor negative
mov a, #'+' ;dacă e 1, afișez semnul pozitiv
call litera ;trimit la display codul pt simbolul +
mov a, ADCH ;citesc conținutul registrului ADCH
ANL A, #01000000B ;validare 2 MSB
RL A ;pozitionare >>
RL A ;>>pentru afisare
CALL BINASC ;conversie în ASCII
CALL LITERA ;transmisie prima cifra hexa
MOV A, R3 ;citire octet inferior
ANL A, #11110000B ;validez MS nibble
SWAP A ;pozitionare pentru afisare
CALL BINASC ;conversie in ASCII
CALL LITERA ;transmisie a doua cifra hexa
MOV A, R3 ;citire octet inferior
ANL A, #00001111B ;validare LS nibble
CALL BINASC ;conversie in ASCII
CALL LITERA ;transmisie ultima cifra hexa
5/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
Anexa 2
#include <LiquidCrystal.h>
LiquidCrystal lcd(3,2,4,5,6,7);
int i = 0;
const int multip = 201;
int pin_RMS = 11;
int RMS_but=0;
int but_2=0;
int val_buton = 0;
int val_buton_veche = 0;
int stare_buton = 0;
int trig = 0;
int pin_buton = 12;
int comut = 8;
/*const double AmplitudeA0 = 5.0;*/
const double VMultiplier = 5.00 / 1023.0;
const double nCyclesToMeasure = 2;
const int nSamplesPerCycle = 100;
const double sineFrequency = 50;
const int maxSamples = nSamplesPerCycle * nCyclesToMeasure;
const int samplePeriod = ((1 / sineFrequency) * nCyclesToMeasure * 1000000) / maxSamples;
float VFinal[maxSamples];
float buff[maxSamples];
float buff2[maxSamples];
float add;
float RMS;
long start = 0;
long End = 0;
void setup() {
Serial.begin(115200);
pinMode(pin_buton, INPUT_PULLUP);
pinMode(pin_RMS,INPUT_PULLUP);
lcd.begin(16, 2);
}
6/7
T Şerban Bazele sistemelor de achiziții de date lucrări practice
void loop() {
RMS_but = digitalRead(pin_RMS);
val_buton = digitalRead(pin_buton);
if (val_buton != val_buton_veche) {
if (val_buton == HIGH) {
stare_buton++;
}
else {
stare_buton = 0;
}
}
val_buton_veche = val_buton;
if (stare_buton >= 1) {
trig = analogRead(A1);
if (trig < 515) {
if (trig >= 509) {
for (i = 0; i < maxSamples; i++)
{
start = micros();
VFinal[i] = (VMultiplier * double(analogRead(A1))-2.49);
End = micros();
delayMicroseconds( samplePeriod - (End - start) );
}
if(RMS_but == 1){
for(i=0;i<99;i++)
{
buff[i]= VFinal[i]* VFinal[i]*multip*multip;
}
add=0;
for(i=0;i<99;i++)
{
add +=buff[i];
}
RMS=sqrt(add/maxSamples);
Serial.print("\n RMS =");
Serial.print(RMS);
lcd.setCursor(0,0);
lcd.print("Uef=");
lcd.print(RMS);
lcd.print("V");
}
else{
for (i = 0; i < maxSamples; i++)
{
Serial.println(multip*VFinal[i]);
Serial.print(" ");
delayMicroseconds(samplePeriod);
}
}
stare_buton = 0;
}
}
}
delay(10);
}
7/7