Sunteți pe pagina 1din 74

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia

experimental LabVolt 3522-05


_________________________________________________________________________________________________

UNIVERSITATEA DIN CRAIOVA


FACULTATEA DE AUTOMATIC, CALCULATOARE I ELECTRONIC
Specializarea: Automatic i Informatic Aplicat

PROIECT DE DIPLOM
Tem de proiect:

UTILIZAREA MICROCONTROLLER-ULUI DSPIC N


CONDUCEREA PROCESULUI DE REGLARE A
TEMPERATURII I DEBITULUI LA INSTALAIA
EXPERIMENTALA LABVOLT 3522-05

Student,

Coordonator tiinific,

Lucian APOSTOL

Prof. Dr. Ing. Cosmin IONETE

IULIE 2009
4

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

CUPRINS
Capitolul 1. Concepte generale ale reglrii automate ........................................................pag. 4
1.1

Structura general a unui sistem de conducere ...............................................pag. 4

1.2

Legi tipizate de reglare ....................................................................................pag. 6

1.3

1.2.1

Prezentare general...............................................................................pag. 6

1.2.2

Element Proporional Integrator Derivator ideal ( PID ideal ).............pag. 7

1.2.3

Element Proporional Integrator Derivator real....................................pag. 7


1.2.3.1 Conexiune paralel dintre un element I si un element PD real.....................pag.

1.2.3.2 Conexiune paralel dintre un element PI i un element D real..................... pag.

1.2.3.3 Conexiune serie dintre un element PID real i un filtru trece-jos...............pag.

Discretizarea funciei de transfer a unui element PID .....................................pag. 8

Capitolul 2. Prezentarea instalaiei de laborator LabVolt 3522-05 ..................................pag. 9


2.1

Noiuni teoretice .............................................................................................pag. 9

2.2

Componentele instalaiei de reglare a temperaturii/debitului .........................pag. 11

2.3

Calibrarea traductorului de temperatur..........................................................pag. 13

2.4

Calibrarea traductorului de debit.....................................................................pag. 14

2.5

Conducerea procesului de reglare a temperaturii i a debitului.......................pag. 15

Capitolul 3. Prezentarea plcii de dezvoltare dsPIC PRO4 ...............................................pag. 17


3.1

Prezentare general ..........................................................................................pag. 17


3.1.1

Principalele caracteristici ale dsPIC PRO4.....................................pag. 17

3.1.2

Comutatoare....................................................................................pag. 19

3.1.3

Microcontroller-ul...........................................................................pag. 20

3.1.4

Alimentarea.....................................................................................pag. 21

3.1.5

Conector USB.................................................................................pag. 21

3.1.6

Interfaa serial RS-232..................................................................pag. 22

3.1.7

Interfaa Ethernet...........................................................................pag. 23

3.1.8

Convertorul digital-analogic...........................................................pag. 23

3.1.9

Ceas de timp real............................................................................pag. 24

3.1.10

LED-uri..........................................................................................pag. 25

3.1.11

Butoane..........................................................................................pag. 26

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

3.2

3.1.12

Afiajul LCD..................................................................................pag. 26

3.1.13

Afiaj LCD graphic...........................................................................pag. 27

3.1.14

Touch Panel......................................................................................pag. 28

3.1.15

Convertoare analog-numerice........pag. 28

3.1.16

Pini pentru acces direct la microcontroller.........pag. 29

Programarea microcontroller-ului dsPIC30F6014A .......................................pag. 30


3.2.1

Instalarea programelor i a driverelor pentru dsPIC......pag. 30

3.2.2

Folosirea dsPIC Flash....pag. 31

3.2.3

Scrierea i compilarea unui program folosind mikroC dsPIC...........pag. 32

3.2.4

Concepte generale ale limbajului C.......pag. 33

3.2.5

Cuvinte cheie importante ale mikroC dsPIC.....................................pag. 36


3.2.5.1 Cuvntul cheie ASM................................................................................pag. 37
3.2.5.2 Cuvntul cheie ABSOLUTE....................................................................pag. 37
3.2.5.3 Cuvntul cheie ORG.................................................................................pag. 37

3.2.6

Variabile i constante globale.............................................................pag. 38

3.2.7

Scrierea unui program simplu pentru microcontroller-ul dsPIC.......pag. 38

3.2.8

Scrierea unui ir de caractere pe afiajul alfanumeric.......................pag. 39

3.2.9

Citirea unei valori de la convertorul analog-numeric........................pag. 41

3.2.10

Convertorul numeric-analogic...........................................................pag. 43

3.2.11

Modulare n durat de impulsuri ......................................................pag. 45

3.2.12

Generarea de ntreruperi de ctre ceasul de timp real.......................pag. 50

Capitolul 4. Realizare practic..............................................................................................pag. 53


4.1

Prezentare.........................................................................................................pag. 53

4.2 Principiul realizrii...........................................................................................pag. 54


4.3 Modul de lucru.................................................................................................pag. 54

4.3.1 Programarea microcontroller-ului.......................................................pag. 55


4.3.1.1 Generarea unei ntreruperi la 10 milisecunde....................................... pag. 55
4.3.1.2 Citirile pe intrrile analogice.................................................................pag. 56
4.3.1.3 Implementarea software a funciei de transfer...................................... pag. 57
4.3.1.4 Transmiterea comenzii pe canalele PWM...........................................pag. 58

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

4.3.1.5 Afiarea variabilelor pe afisjul grafic LCD........................................pag. 59

4.3.2 Accesorii.pag. 60
4.3.2.1 Tastatur numeric KB304.pag. 60
4.3.3

Conexiuni realizate.............................................................................pag. 63

4.3.4

Lansarea n execuie..........................................................................pag. 64

Bibliografia...........................................................................................................................pag. 71

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

REZUMAT
n lucrarea de diplom cu titlul: Utilizarea microcontroller-ului dsPIC n conducerea
procesului de reglare a temperaturii i debitului la instalaia experimental LabVolt sunt descrise
principiile pentru implementarea regulatoarelor pe microcontroller-ul dsPIC.
Consider conducerea proceselor cu ajutorul microcontroller-elor o soluie foarte bun
pentru era automatizat ce bate la u, deoarece acestea sunt relativ uor de folosit pentru diverse
scopuri i nu este necesar spaiu foarte mare pentru plasarea lor, dimensiunile lor putnd varia,
dar se pot obine performane excelente la dimensiuni mici. n acelai timp acestea sunt pregtite
pentru procesele reale de automatizare fiind dotate cu convertoare analog-numerice, numericanalogice, ceas de timp real, avnd i posibilitatea atarii altor dispozitive precum ar fi afiaje
sau tastaturi pentru a realiza o interfa om-main prietenoas i foarte uor de folosit.
Industria microcontroller-elor este deja ntr-o faz avansat de dezvoltare asta fiind un
avantaj mare n lucrul cu microcontroller-ul deoarece sunt disponibile posibiliti ct mai simple
de programare i se pot gsi foarte uor soluii pentru probleme.
Pentru a realiza o imagine complet a modului de imlementare a unui regulator software pe
un microcontroller n capitolul I sunt prezentate concepte generale ale reglrii automate, precum
i discretizarea funciei de transfer a unui regulator PID.
n capitolul II este prezentat instalaia LabVolt 3522-05 pe care se va realiza experimtal
reglarea temperaturii i a debitului de aer cu ajutorul microcontroller-ului dsPIC.
n capitolul III este prezentat n detaliu placa de dezvoltare dsPIC PRO4 cu toate
facilitile ei necesare pentru conectarea la instalaie dar i pentru a realiza o bun interfa cu
utilizatorul. Deasemenea sunt prezentate concepte de baz ale limbajului C, folosit la
programarea microcontroller-ului, precum i modaliti de programare a componentelor necesare
pentru conducerea proceselor i pentru interfaa cu utilizatorul.
Capitolul IV este dedicat prezentrii realizri practice, funcionarea instalaiei i a
regulatorului implementat software pe microcontroller-ul dsPIC30F6014.

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Capitolul 1
- Conceptele reglrii automate 1.1 Structura general a unui sistem de conducere
n orice sistem de conducere automat se deosebesc urmtoarele patru elemente
interconectate ca n Fig. 1.1. :

Fig. 1.1 Structura general a unui sistem de conducere

a) Obiectul condos;
b) Dispozitivul de conducere;
c) Elemente de execuie;
d) Sistemul informatic de culegere i transmitere a informaiilor privind obiectul condus;
Dispozitivul de conducere elaboreaz decizii care se aplic obiectului condus, prin intermediul
elementelor de execuie pe baza mrimilor msurate. Deciziile de conducere au ca scop respectarea
9

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

unor criterii de calitate, a satisfacerii unor restricii cnd asupra obiectului acioneaz o serie de
factori perturbani.
Structura de mai sus este o structur de conducere n circuit nchis, deoarece la elaborarea
deciziilor se ine cont de mrimile msurate. Dac ar lipsi legtura de reacie sistemul ar fi n circuit
deschis.
Un sistem de conducere n structura de mai sus se poate numi sistem de conducere automat
deoarece este capabil s elaboreze decizii de conducere folosind mijloace proprii de informare.
Un caz particular de sisteme de conducere automat l constituie sistemele de reglare
automat.
Prin sistem de reglare automat se nelege un sistem de conducere automat la care scopul
conducerii este exprimat prin anularea diferenei dintre mrimea condus i mrimea impus,
diferen care se mai numete abatere sau eroarea sistemului.
Procesul de anulare a erorii ntr-un sistem de reglare automat se efectueaz folosind dou
principii:
1. Principiul aciunii prin discordan - n acest caz, aciunea de reglare apare numai dup ce
abaterea sistemului s-a modificat datorit variaiei mrimii impuse sau a variaiei mrimii de
ieire provocat de variaia unei perturbaii.
2. Principiul compensaiei una sau mai multe mrimi perturbatoare sunt msurate i se aplic
la elementele de execuie, comenzi care trebuie s compenseze pe aceast cale efectul acestor
perturbaii asupra mrimii de ieire transmis pe cale natural. Are avantajul c poate realiza,
n cazul ideal, compensarea perfect a anumitor perturbaii fr ca mrimea de ieire s se
abat de la programul impus. Are dezavantajul compensrii numai a anumitor perturbaii, nu a
oricror perturbaii . 1
Un sistem de reglare care mbin cele dou principii se numete sistem de reglare combinat.

Marin Constantin, Structuri i legi de reglare automat, 2005;

10

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

1.2 Legi tipizate de reglare


1.2.1

Prezentare general

n practica industrial a reglrii automate s-au impus aa numitele legi de reglare de tip PID
( proportional integrator derivator ) care satisfac n majoritatea situaiilor cerinele tehnice
impuse sistemelor de reglare convenional.
Se pot utiliza diverse combinaii ale celor trei componente: proportional, integrator sau
derivator.
Prin utilizarea acestor legi tipizate n cadrul unor regulatoare tipizate, proiectarea
dimensional valoric a legii de reglare se reducere la alegerea tipului de lege i poziionarea unor
butoane prin care se prescriu valorile parametrilor acestor legi rezultate n urma proiectrii analitice
a sistemului.
Nu se poate stabili precis efectul fiecrei componente a unei legi de reglare asupra calitii
unui sistem de reglare automat deoarece acestea depinde de instalaie.2
Componenta proporional, cu factorul de proporionalitate K P , determin o comand
proporional cu eroarea sistemului.
Componenta integral, exprimat prin constanta de timp de integrare T I , determin o
comand proporional cu integrala erorii sistemului . Un regim staionar este posibil numai dac
aceast eroare este nul.
Componenta derivativ, exprimat prin constanta de timp de derivare TD , determin o
comand proporional cu derivata erorii sistemului.

Marin Constantin, Structuri i legi de reglare automat, 2005;

11

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

1.2.2 Element Proporional Integrator Derivator ideal ( PID ideal )


Funcia de transfer a unui element PID ideal are forma:
H ( s ) K P [1

1
TD s ]
TI s

K P - factorul de proporionalitate

TI - constanta de timp de integrare


TD - constanta de timp de derivare

1.2.3 Element Proporional Integrator Derivator real

Dup modul de realizare fizic se deosebesc mai multe structuri.

1.2.3.1 Conexiune paralel dintre un element I si un element PD real

Funcia de transfer are forma:

H (s) K P [

1
T s 1
D
]
TI s T s 1

1.2.3.2 Conexiune paralel dintre un element PI i un element D real

Funcia de transfer realizat este:


H ( s ) K P [1

1
TD s

]
TI s T s 1

1.2.3.3. Conexiune serie dintre un element PID real i un filtru trece-jos

12

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

H ( s ) K P [1

1
TD s

]
TI s T s 1

1.3 Discretizarea funciei de transfer a unui element PID


n urma masivei dezvoltri a sistemelor numerice a venit i necesitatea de realizare a
regulatoarelor sub form numeric. Avantajele folosirii sistemelor numerice pentru implementarea
regulatoarelor sunt:

Posibilitatea de realizare software a regulatoarelor;

Uurina de modificare a regulatoarelor;

Flexibilitate;

Posibilitatea de pstrare a evoluiei n memorie;


Pentru a putea implementa un regulator numeric pentru a controla un proces continuu

semnalele primite de la traductoare trebuie s fie eantionate ( discretizate ).


Aceasta nseamn c semnalul nu mai este continuu, ci este construit dintr-o multitudine de puncte
msurate la anumite intervale de timp bine determinate.
Perioada dintre dou masurtori se numete perioad de eantionare
Te

n urma acestor modificri apare necesitatea de a calcula o form discret a funciei de transfer
pentru regulatoarele numerice.
Funcia de transfer discretizat are forma:
u (t ) u (t 1) K P [e(t ) e(t 1)]

K p Te
Ti

e (t )

K p TD
Te

[e(t ) 2 e(t 1) e(t 2)] 3

Capitolul II
3

Tahm M. , Discretised PID Controllers,

13

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

- Prezentarea instalaiei LabVolt 3522-05

2.1 Noiuni teoretice


Scopul primar al controlului este meninerea unei variabile fizice, numit variabil
controlat, la o valoare specific cerut sau ntr-o gam cerut. Aceast variabil ar putea fi, de
exemplu, temperatura, debitul, etc. Pentru a controla procesul, pot fi utilizate controlul sistemului n
bucl deschis sau controlul sistemului n bucl nchis.
Instalaia are dou pri, una pentru controlul temperaturii i cealalt pentru controlul
debitului de aer. Cele dou componente pot fi folosite simultan pentru diferite configuraii.
Partea de reglare a temperaturii este alctuit dintr-o rezisten electric i un traductor de
temperatur. Rezisten electric poate fi comandat prin tensiune ntre 0-5V sau curent 4-20mA.
Traductorul de temperatur transmite o tensiune ntre 0-5V sau curent 4-20mA.
Pe lng traductor i elementul de execuie se mai gsesc i dou poteniometre pentru
calibrarea senzorului de temperatur.

14

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Partea de reglare a temperaturii este prezentat n fig. 2.1.

Fig. 2.1 Reglarea temperaturii

Pentru reglarea debitului de aer instlaia folosete un traductor de debit ce msoar debitul de
aer trecut printr-un tub venturi. Ca element de execuie se folosete un ventilator.
La fel ca la partea de reglare a temperaturii sunt folosite semnale unificate de tensiune 0-5V i
curent 4-20mA.
Partea de reglare a debitului arat ca n figura 2.2.

Fig. 2.2 Reglarea debitului de aer

Pentru a se face reglarea corect, masa instalaiei trebuie conectat la masa regulatorului.

15

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

2.2. Componentele instalaiei de reglare a temperaturii/debitului


Instalaia de control a proceselor de temperatur sau debit LabVolt permite controlul
temperaturii i debitului. Mai mult, temperatura procesului poate fi controlat fie n modul
nclzire fie n modul rcire.
n esen instalaia const dintr-un tub ce permite trecerea aerului, un ventilator utilizat
pentru circularea aerului, un amortizor utilizat pentru modificarea de sarcini sau generarea
perturbaiilor, un element de nclzire i traductoare de temperatur i debit.
Figura 2.3 arat interiorul instalaiei. Identificarea i descrierea fiecrei componente a
instalaiei este prezentat mai jos.
1. Canalul de intrare: deschidere cu grilaj prin care aerul intr n tub.
2. ncalzitorul: const dintr-un element de nclzire care convertete energia electric n
caldur i un radiator pentru disiparea cldurii.
3. Tub Venturi: seciune ngustat a tubului de-a lungul creia este creat o presiune
diferenial cnd este parcurs de aer. Cu ct debitul de aer care trece prin tub este mai
mare, cu att presiunea diferenial este mai mare.
4. Amortizorul: un orificiu n tub care este utilizat pentru crearea de perturbaii prin
modificarea debitului de aer care curge prin tub.
5. Ventilatorul: este utilizat pentru a crea un debit de aer prin tub. Cnd ventilatorul se
rotete, el trage aerul n tub prin orificiul de intrare i l trimite ctre ieire.
6. Ieirea tubului: deschidere cu grilaj prin care aerul prsete tubul.
7. Motorul ventilatorului: convertete tensiunea sau curentul de la intrarea de control a
ventilatorului ntr-o putere proporional utilizat pentru antrenarea ventilatorului.
8. Traductorul de debit: msoar presiunea diferenial de-a lungul tubului i produce o
tensiune standardizat (0-5 V) sau un curent ( 4-20 mA) proporionale cu presiunea ce pot
fi transmise la regulator.
9. Traductorul de temperatur: produce o tensiune ( 0-5 V) i un curent (4-20 mA)
proporionale cu temperatura radiatorului. n acest scop, traductorul msoar o tensiune
generat de un senzor semiconductor i o convertete ntr-una util, tensiune sau curent
standardizate care pot fi transmise la regulator.
16

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

10. Motorul nclzitorului: convertete tensiunea sau curentul de la intrarea de control a


nclzitorului ntr-o putere proporional utilizat pentru antrenarea nclzitorului.

Fig. 2.3 Instalaia de control a proceselor de temperatur i debit

Aa cum se observ n Figura 2.3, ventilatorul face ca aerul s circule prin crearea unei
presiuni foarte mici la ieirea din tub. Acest lucru face ca presiunea atmosferic de la intrarea
tubului, s foreze circulaia aerului prin tub. Cu ct viteza ventilatorului este mai mare, cu att
diferena de presiune este mai mare i deci cu att debitul de aer ce va circula prin tub va fi mai
mare.
Conform legii conservrii masei, masa de aer ce intr n tub n orice moment de timp este
egal cu masa aerului care prsete tubul. Acest lucru implic faptul c debitul de aer este constant.
Pentru a menine un debit constant, viteza aerului trebuie s creasc atunci cnd aerul trece
prin tubul Venturi, datorit scderii seciunii transversale a canalului. Acest lucru nseamn c viteza
aerului la intrarea tubului Venturi, v1, este mai mic dect viteza aerului din interiorul acesteia.

Cartea tehnic a instalaiei LabVolt 3522-05

17

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Conform ecuaiei lui Bernoulli, dac viteza aerului crete, atunci presiunea aerului este n
descretere. Acest lucru nseamn c presiunea aerului pe partea de intrare a tubului Venturi, este mai
mare dect presiunea aerului din tubul Venturi. Cu ct viteza aerului prin tubul Venturi este mai
mare, cu att presiunea diferenial va fi mai mare de-a lungul tubului Venturi.
Cnd nu se alimenteaz elementul de nclzire, radiatorul se afl la temperatura camerei
indiferent de viteza ventilatorului. Cnd ventilatorul funcioneaz, temperatura radiatorului va scadea
odat cu creterea vitezei ventilatorului. Aceast descretere are loc deoarece creterea vitezei
ventilatorului face s creasc rata schimbului de caldur dintre radiator i aer.

2.3. Calibrarea traductorului de temperatur


Traductorul de temperatur al instalaiei are dou poteniometre, ca n Fig. 2.4 utilizate
pentru a seta domeniul debitului n care ieirea lor va trece de la tensiune sau curent minim la
maxim:
-

poteniometrul zero seteaz cea mai mic msuratoare posibil pentru temperatur, adic,
temperatura pentru care tensiunea sau curentul de la ieirea traductorului vor fi minime;

Poteniometrul span seteaz cea mai mare msuratoare posibil pentru temperatur, adic,
debitul sau temperatura pentru care tensiunea sau curentul de la ieirea traductorului vor fi
maxime;

Fig. 2.4 Poteniometre pentru calibrarea temperaturii

n domeniul instrumentaiei pentru control termenul span indic diferena algebric dintre
tensiunea sau curentul minim i maxim, generat de traductor. Dac, spre exemplu, ieirea
traductorului variaz ntre 0 i 5V, atunci traductorul are un span de 5V.

18

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

n mod uzual, poteniometrele zero i span ale traductoarelor industriale interacioneaz unul
cu celalalt. Ca urmare, cnd se ajusteaz aceste poteniometre, este necesar s repetm procedura
de ajustare de mai multe ori pentru a obine o ajustare precis a traductorului.
Pentru instalaia noastr poteniometrele zero i span ale traductoarelor de temperatur
au fost proiectate s interacioneze ct mai puin posibil. Ca urmare, cnd se ajusteaz aceste
poteniomete, nu este necesar s repetm procedura de ajustare de mai multe ori.

2.5 Calibrarea traductorului de debit


Procedura de calibrare a traductorului pentru debitul de aer este similar cu calibrarea
senzorului de temperatur. Deosebirea este c n acest caz, nu este nevoie s ateptm pentru a
obine valoarea maxim a debitului de aer deoarece la comand maxim pentru ventilator, n
foarte scurt timp debitul prin tubul venturi va fi maxim. Tot ce avem de fcut este s punem
poteniometrele zero i span n poziiile corespunztoare pentru a avea la ieire tensiune 0 pentru
cea mai mic turaie a ventilatorului, i 5V pentru cea mai mare turaie.
Poteniometrele pentru calibrarea traductorului pentru debit se pot vedea n Fig. 2.5.

Fig. 2.5 Poteniometre pentru calibrarea traductorului de debit

19

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

2.5 Conducerea procesului de reglare a temperaturii i debitului


n cazul unui sistem de reglare n bucl deschis, variabila controlat nu rmne la valoarea
dorit n cazul apariiei unei perturbaii, deoarece sistemul controleaz puterea aplicat
elementului de execuie i nu temperatura sau debitul.
Adugarea unui regulator i a unei bucle cu reacie invers reduce variaiile variabilei
controlate. Acest tip de sistem, prezentat n Fig. 2.6, este numit sistem de conducere n bucl
nchis. Acesta poate menine variabila controlat aproape constant peste o gam dat de sarcini
sau perturbaii:
-

bucla cu reacie invers conine un senzor ce masoar valoarea variabilei controlate i


genereaz un semnal proporional care este trimis napoi la regulator;

regulatorul calculeaz eroarea ce reprezint diferena dintre valoarea de referin i variabila


msurat i corecteaz aceast diferen prin reajustarea elementului de control pn este
atins o stare de echilibru. Eroarea este diferit de zero cnd operatorul schimb valoarea de
referin n mod intenionat sau cnd schimbrile de perturbaii sau sarcina modific variabila
controlat;

Fig. 2.6 Conducerea in bucla inchisa a proceselor de debit ale instalatiei.

20

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 2.6 prezint conducerea n bucl nchis a sistemului de reglare a debitului de aer ce
trece prin incinta instalaiei:
-

bucla cu reacie invers const dintr-un traductor de presiune care msoar debitul de aer ce
trece prin instalaie i genereaz o tensiune proporional cu acesta. Aceast tensiune, numit
tensiune de reacie, este transmis la regulator;

regulatorul compar tensiunea de reacie, tensiunea referinei i corecteaz orice diferen


dintre cele dou prin modificarea puterii aplicate la ventilator pn ce este atins o stare de
echilibru. Dezavantajul principal al utilizrii sistemelor de conducere cu reacie invers este
faptul c trebuie s aib loc o schimbare n variabil controlat nainte ca orice aciune
corectiv s poat fi luat. n schimb, sistemele de conducere a proceselor utiliznd reacia
invers au avantajul c sunt relativ simplu de utilizat.

Capitolul III
- Prezentarea Plcii de dezvoltare dsPIC PRO4 3.1 Prezentare general

Placa de dezvoltare dsPIC PRO4 este produs de MikroElectronika i reprezint o soluie bun
pentru implementarea regulatoarelor deoarece este construit cu port-uri pentru intrri i ieiri
analogice.
Este uor de programat prin cablu USB de la calculator, i poate fi alimentat separat de la o
sursa a crei tensiune poate varia ntre 9 i 32V.

21

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Este echipat cu microcontroller dsPIC30F6014. Folosirea microcontroller-elor n procese de


reglare automat este o metod din ce n ce mai folosit n ziua de azi.

3.1.1

Principalele caracteristici ale dsPIC PRO4

n continuare sunt prezentate unele dintre facilitaile oferite de placa de dezvoltare dsPIC
PRO4. Ele se pot vedea pe Fig. 3.1.

1. Alimentare extern 9-32V , curent continuu sau alternativ;


2. Conector USB 2.0 prin intermediul cruia poate fi programat i alimentat;
3. Conector serial RS232-A;
4. Conector serial RS232-B;
5. Referina voltajului 4.096V;
6. Conector Ethernet;
7. Afiaj alfanumeric LCD 2x16;
8. Poteniometru pentru stabilirea contrastului afiajului LCD;
9. Convertoare analog-digitale i poteniometre pentru testarea acestora, sau pentru simularea
unor semnale;
10. Conector pentru senzor de temperatur tip DS1820;
11. Stabilirea rezistenei pentru fiecare port n parte;
12. Ceas de timp real;
13. Convertor numeric-analogic;
14. Conector serial RS485;
15. Conector CAN;
16. LED-uri corespunznd fiecrui pin al microcontroller-ului;
17. ntreruptoare pentru activare/dezactivare LED-uri;
18. Suport pentru microcontroller-e cu 64 sau 80 pini;
19. ntreruptoare pentru activarea/dezactivarea componentelor plcii;
20. Connectori pentru accesul direct la pinii microcontroller-ului;

22

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

21. Cititor card-uri de memorie tip MMC i SD;


22. Buton pentru resetarea circuitului;
23. Butoane corespunznd fiecarui pin al microcontroller-ului;
24. Conector pentru Touch Panel;
25. Conector pentru afiaj LCD grafic;
26. Poteniometru pentru stabilirea contrastului afiajului LCD grafic;
27. Controller pentru Touch Panel;
28. Jumperi pentru stabilirea rezistenelor port-urilor;

Fig. 3.1 Placa de dezvoltare dsPIC PRO4.

23

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

3.1.2

Comutatoare

Placa dsPIC PRO4 este prevzut cu o serie de comutatoare ce pot activa sau dezactiva
anumite faciliti ale plcii. Ele se mpart n 5 grupuri de comutatoare, ele gsindu-se pe plac cu
denumirea SW, numerotate de la 1 la 5.
SW1 activeaz/dezactiveaz LED-urile;
SW2 activeaz/dezactiveaz afiajele, CAN-ul i interfaa serial;
SW3 activeaz/dezactiveaz conectorul Touch Panel i interfaa ethernet;
SW4 activeaz/dezactiveaz slotul pentru card i convertorul digital-analogic;
SW5 activeaz/dezactiveaz rezistorii pentru portul B;

Fig. 3.2 Comutatorul SW5

3.1.3

Microcontroller-ul

Placa de dezvoltare dsPIC PRO 4 folosete microcontroller-ul dsPIC30F6014A


( Fig. 3.3 ), ns acesta se poate schimba cu oricare alt microcontroller cu 64 sau 80 de pini.
Schimbarea microcontroller-ului de pe plac se face uor, avnd grij ca pinii s nu fie ndoii
sau rupi.
Pinii microcontroller-ului sunt conectai la diferite periferice ale plcii (interfa serial,
ethernet, convertoare, etc).
Toi pinii sunt conectai la LED-uri, asta fcnd foarte uoar monitorizarea strii acestora n
timpul aplicaiilor.

24

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.3 Microcontroller-ul dsPIC30F6014A

3.1.4

Alimentarea

Placa dsPIC PRO4 poate fi alimentat direct de la o surs cu tensiunea ntre 9 i 32 V, curent
continuu sau alternativ, dar i prin port-ul USB conectat la calculator.
Pentru selectarea alimentrii jumper-ul J10 trebuie s fie in poziia corect, dreapta pentru USB
i stnga pentru surs extern, dup cum se vede n fig 3.4.

Fig. 3.4 Jumper-ul pentru selectarea alimentrii

3.1.5

Conector USB

25

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Programarea dsPIC se face direct de la calculator prin intermediul interfeei USB, far s fie
nevoie de circuite suplimentare pentru programare. Programarea concret a microcontroller-ului se
va descrie n capitolele urmtoare.
Deasemenea, placa dsPIC PRO 4 conine un depanator integrat ( Fig. 3.5 ), acesta comunicnd
cu calculatorul pentru ajutorul depanrii programelor scrise pentru acesta.

Fig. 3.5 Conector USB i depanator integrad mkroICD ( In Circuit Debugger )

3.1.6

Interfaa serial RS-232

Comunicaiile pe interfaa serial sunt folosite de obicei n aplicaiile de achiziie de date


facilitnd transferul de date dintre microcontroller i calculator.
Placa dsPIC PRO4 este prevzut cu 2 conectoare seriale, acestea putnd fi activate prin
intermediul jumperilor J12-J15.

26

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.6 Infertaa serial

3.1.7

Interfaa Ethernet

Ethernet este cea mai utilizat tehnologie pentru reele locale. Staiile ethernet comunic
trimind pachete de date ntre ele. Fiecare staie are atribuit o adresa MAC unic, de 48 de bii,
care este folosit pentru a specifica sursa i destinaia unui pachet.
Placa dsPIC PRO4 este prevzut cu o interfa ethernet i cu o memorie tampon de 8 kilo
octei.

Fig. 3.7 Interfaa Ethernet

3.1.8

Convertorul digital-analogic

27

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Convertorul digital-analogic opereaz pe 12 bii, transformnd valoarea digital n curent


analogic la ieire. Tipul convertorului este MCP4921.

Fig. 3.8 Convertor digital-analogic

3.1.9

Ceas de timp real

Ceasul de timp real PCF8583P este folosit pentru a mbunti performanele microcontrollerului n aplicaii n timp real. Acesta are o frecven de 10MHz i trimite microcontroller-ului
ntreruperi cnd acesta este activat din program.
n aplicaiile de reglare automat, ceasul de timp real este folosit pentru alegerea perioadei de
eantionare pentru discretizarea semnalului analogic. n funcie de perioada de eantionare, ceasul de
timp real poate fi programat printr-un registru pentru a da ntreruperi ncepnd de la 10 7 secunde,
pn la o secund.
Pentru a activa ceasul de timp real, comutatorul 8 al grupului de comutatoare SW2 i
comutatoarele 7 si 8 ale grupului de comutatoare SW 4 sa fie n starea ON.

28

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.9 Ceas de timp real

3.1.10

LED-uri

LED-urile ( Light emitting diode ) , diode emitoare de lumin, sunt componente folosite n
principal pentru a vizualiza starea pinilor microcontroller-ului.
LED-urile sunt n numr de 67 i pot fi activate/dezactivate prin intermediul grupului de
comutatoare SW1. Fiecare comutator din acest grup i corespunde un grup de LED-uri
corespunztoare port-urilor microcontroller-ului.
Pinii microcontroller-ului se mpart n 9 grupuri de pini numite port-uri. Aceste porturi sunt
denumite astfel: PORTA, PORTB low, PORTB high, PORTC, PORTD low, PORTD high, PORTF,
PORTG low, PORTG high.

29

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.10 Dispunerea LED-urilor

3.1.11

Butoane

Placa de dezvoltare dsPIC PRO4 conine deasemenea 67 butoane de apasare corespunztoare


fiecarui pin al microcontroller-ului i implicit, fiecrui LED de pe plac. La apsarea unuia dintre
butoane, prin pin-ul corespunztor al microcontroller-ului trece o tensiune echivalent cu starea 1
logic, adica 5V i implicit, LED-ul corespunztor se aprinde.

30

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.11 Butoane

Dup cum se observ n figurile 3.11 i 3.10 repartiia butoanelor pe plac este similar cu cea a
LED-urilor.

3.1.12 Afiajul LCD

Afiajul LCD 2x16 ( 2 rnduri i 16 coloane ) poate afia caractere standard i este cea mai
rspndit component pentru vizualizare a datelor. Poate afia mesaje pe 2 linii, caractere
alfanumerice. Fiecare caracter este construit din 5x8 pixeli. Afiajul comunic cu microcontroller-ul
printr-o magistral de date pe 4 bii.

31

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.12 Afiaj LCD alphanumeric


Contrastul afiajului alfanumeric LCD poate fi modificat prin intermediul unui poteniometru ca
n Fig. 3.13.

Fig. 3.13 Poteniometru pentru selectarea contrastului afiajului LCD

3.1.13 Afiaj LCD graphic

Afiajul LCD grafic reprezint o metod avansat pentru afiarea mesajelor vizuale. n timp
ce display-ul LCD poate afia doar caractere alfanumerice, afiajul grafic poate afia mesaje sub
form de poze sau desene.
Rezoluia este de 128x64 pixeli, iar contrastul poate fi modificat prin intermediul unui
poteniometru similar cu cel din Fig. 3.13.

32

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.14 Afiaj LCD grafic

3.1.14 Touch Panel


Touch panel-ul este o folie subire, transparent care poate fi pus peste display-ul grafic. El este
format din dou folii separate formnd o structur de tip sandwich .
Este foarte sensibil la atingere, pn i cea mai uoara apsare va modifica voltajul de ieire.
3.1.15

Convertoare analog-numerice

Placa de dezvoltare dsPIC PRO 4 este prevzut cu 8 porturi ce pot realiza conversia analog
numeric. Aceti pini corespund portului PORTB high al microcontroller-ului. Tensiunea de intrare
poate fi ntre 0 i 5V, valoare transformat ntr-un numr pe 12 bii, adic ntre 0 i 4096.
Pe lng convertoarele analog-numerice, placa este prevzut i cu dou poteniometre ce pot
produce un semnal ntre 0 i 5V pentru testarea programelor ce folosesc convertorul analog-numeric.
Deasemenea aceste poteniometre pot avea diferite aplicaii, spre exemplu pentru a specifica
referina unui regulator implementat pe aceasta plac.

33

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.15 Convertoare analog-numerice i testere


Convertoarele analog numerice sunt foarte importante la folosirea microcontroller-ului ca
regulator sau pentru conducerea proceselor, deoarece nu mai este nevoie de folosirea de circuite
suplimentare pentru msurarea mrimilor procesului ce trebuie controlat.

3.1.16

Pini pentru acces direct la microcontroller

Pinii port-urilor microcontroller-ului pot fi accesate direct prin intermediul pinilor pentru acces
direct aflate n extremitatea dreapt a plcii de dezvoltare dsPIC PRO 4. Acestea au aceleai
denumiri ca pinii microcontroller-ului, LED-urile i butoanele de pe plac. Aplicarea unei tensiuni
de 5V la unul dintre aceti pini va face ca LED-ul corespunztor pin-ului s se aprind. Analog,
apsarea unui buton va face ca pe pinul corespunztor acelui buton sa poat fi msurat o tensiune
de 5V.
Aceti pini sunt direct conectai la microcontroller i pot fi accesai i modificai direct n urma
programrii microcontroller-ului.
Fiecare pin este numerotat corespunztor, dup cum se poate vedea n Fig. 3.16.
Pinii corespunztori fiecrui PORT sunt grupai, i mpreun cu acetia, pentru fiecare port sunt
ataai pini pentru referina de tensiune Vcc , la o tensiune de 5V, i mas ( GND ).

34

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.16 Port-uri pentru accesul direct la pinii microcontroller-ului

3.2

Programarea Microcontroller-ului dsPIC30F6014A

3.2.1 Instalarea programelor i a driverelor pentru dsPIC


Pentru programarea microcontroller-ului dsPIC30F6014A este nevoie de drivere pentru USB,
dsPIC flash pentru transmiterea programului ctre microcontroller, i compilator pentru
transformarea programelor scrise ntr-un limbaj de nivel nalt n limbaj cod-main pentru
microcontroller. Limbajul de nivel nalt folosit poate fi C, Pascal sau Basic. n aceast lucrare ne
vom concentra pe compilatorul pentru limbajul C.
Pai necesari pregatirii unui calculator pentru a scrie cod pentru microcontroller:

35

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

a. Se introduce CD-ul n unitate i se instaleaz dsPIC flash programmer, programul necesar


pentru scrierea codului n memoria microcontroller-ului.
b.

Se instaleaz driverul pentru USB care se gsete n directorul drivers pe CD, n funcie
de sistemul de operare folosit.

c. Se conecteaz placa de dezvoltare la calculator prin cablu USB, i apoi se pornete. Pe


calculator va aprea o fereastr care va ntreba de drivere. Se alege ca driverele s se
instaleze automat.

3.2.2 Folosirea dsPIC Flash

Programul dsPIC Flash se folosete pentru transmiterea programelor pre-compilate ctre


microcontroller. Pentru a realiza acest lucru, dup deschiderea dsPIC Flash, din colul din dreapta
sus se alege tipul microcontroller-ului, n acest caz PIC30F6014A, aa cum apare n Fig 3.17.
Dup aceasta programul care vrem s fie scris trebuie ncrcat, aceasta se realizeaz apsnd
butonul Load HEX. O alt fereastr va aprea i va trebui sa alegei programul pe care dorii s l
ncrcai. El trebuie s fie n format hex. Pe CD-ul microcontroll-erului vei gsi exemple de
programe pentru dsPIC. Cel mai concludent exemplu pentru verificarea dac totul s-a instalat i
funcioneaz cum trebuie este led_blinking. Se deschide i apoi se scrie pe microcontroller cu
butonul WRITE.
Dac totul a fost instalat cum trebuie, LED-urile de pe microcontroller ar trebui s se aprind
i s se sting, n caz contrar, se reia paii de la 3.2.1 .

36

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.17 Fereastra dsPIC Flash

3.2.3

Scrierea i compilarea unui program folosind mikroC dsPIC

Programul mikroC dsPIC este un mediu de programare n limbaj C, cu compilator pentru


micrcontrollere dsPIC. El se instaleaz de pe CD-ul primit mpreun cu placa de dezvoltare dsPIC.
Dup instalare, se copiaz ntr-un director considerat spaiu de lucru exemplele corespunztoare
microcontroller-ului dsPIC30F6014A. Pentru testare se deschide Open Project din meniul
Project i se alege deschide led?blinking.dpc. Din meniul Project se alege Build. n acest
moment programul este compilat i transformat n cod HEX. Acum el se poate ncrca n memoria
microcontroller-ului cu ajutorul dsPIC Flash.
Din meniul Tools se alege mE Programmer. Aceast unealt deschide dsPIC Flash i ncarc
programul tocmai construit n memoria microcontroller-ului automat.
Codul C folosit pentru scrierea programelor pentru microcontroller nu difer cu nimic de
codul C scris n alte medii de programare.

37

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Pentru utilizarea funciilor microcontroller-ului, spre exemplu setarea biilor, sau pornirea
ceasului de timp real, trebuie schimbat prin programare valoarea unor registrii, care n codul C vor
avea forma unor variabile, ns ele nu trebuie declarate.
Pentru folosirea funciilor plcii de dezvoltare trebuie apelate funcii din librria mikroC
dsPIC.
Prezentarea registrilor ce trebuie modificai pentru diferitele funcii ale microcontroller-ului
sau a plcii de dezvoltare se gsete n capitolele ce urmeaz.
3.2.4

Concepte generale ale limbajului C

Limbajul C este un limbaj structurat pe funcii. O funcie poate fi considerat un subprogram, ea


este declarat atribuindu-se un nume, iar apoi este apelat cu ajutorul numelui i cu parametrii
specificai. La apelul funciei se execut instruciunile din interiorul acesteia.
Orice program scris n C trebuie s aib o funcie main, funcie la care se face referire i prin
programul principal. n momentul rulrii programului scris, instruciunile din aceast funcie vor
ncepe automat s se execute, la terminarea lor care implic i ieirea din funcia main, programul se
termin.
Exemplu de program doar cu funcia main i fr nici o instruciune:

void main() {
}

Acesta poate fi considerat un program, ns el nu face nimic.


Din interiorul acestui program pot fi apelate alte funcii, apriori definite, spre exemplu:

void functie() {
}
void main() {
functie();
}

38

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Dup cum se observ, caracterele { i } sunt folosite pentru nceperea unui bloc de instruciuni i
pentru nchiderea blocului.
Instruciunile pot fi atribuiri, operaii matematice (adunare, scdere, nmulire, mprire, ridicare
la putere, etc). O instruciune trebuie s aib cel puin un operator. Aceti operatori sunt variabile sau
constante. Orice variabil trebuie s aib un tip de date. Tipurile de date din C sunt prezentate n
tabelul 3.1.

Tabelul 3.1 Tipuri de date n C

Declararea variabilelor se face punnd naintea numelui ales tipul de date. La declararea
variabilelor se poate specifica i valoarea iniial a acestora.

unsigned long variabila;


int variabila=20;

Cu aceste variabile se pot face aproape orice fel de operaii. Pentru a face o operaie cu 2 sau mai
muli operatori, tipul acestora nu trebuie s fie acelai, dar valoarea ce va fi introdus n variabila
care pstreaz rezultatul va fi convertit la tipul de date al acestei variabile.
float a=5,b=7,c;
c=a+b;

39

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Mai multe valori de acelai tip de date pot fi reunite ntr-un vector, care poate fi considerat ca o
mulime de numere de acelasi tip. Exemplu de declarare i iniializare a unor vectori.
int vector_one[10]; /* se declar un vector de ntregi */
int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

Exemplu de declarare a unui ir de caractere:

char txt[6] = "mikro";

Pe lng variabile i funcii, o alt component foarte important a limbajului C sunt structurile
decizionale i cele repetitive.
Structura decizional if

int a,b,c;
a=2; b=3;
if (a<b) {
c=a;
}
else {
c=b;
}

Se evalueaz logic valoarea expresiei de dup if. Dac rezultatul evalurii logice este adevrat se
va executa instructiunea din primul bloc de instruciuni, n caz contrar se va executa ceallalt.
Niciodat nu se vor executa ambele n acelai timp.
Structura repetitiv for. Sintaxa este puin mai complex dect la if. Structura for conine o
iniializare de variabil, o condiie de continuare, i o incrementare.

n=1;
for(i=2;i<20;i++){
n = n * i;
}

40

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Acest bloc de cod va avea ca rezultat calculul lui 20 factorial, care va fi pus n variabila n. Acest
bloc se va repeta de 19 ori.
Operaia ++ este o operaie de incrementare, i are ca efect incrementarea lui i cu 1.
Structura repetitiv while este similar cu for doar c n sintaxa ei are doar condiia de ieire din
bucl.

i=2;
while(i<20) {
n = n * i;
i++;
}

Acest bloc de cod are acelai efect cu cel de mai sus, cu singura diferen c a fost folosit structura
repetitiv while n loc de for.
Structura do . Este similar cu for i cu while cu singura deosebire c i atunci cnd condiia de
continuare nu este satisfcut de la nceput, instruciunile din blocul de instruciuni al structurii
repetitive do vor fi executate cel puin o dat.

i=2;
do {
n=n*i;
i++;
}
while(i<20);

3.2.5

Cuvinte cheie importante ale mikroC dsPIC

Cuvintele cheie sunt concepte n limbajele de programare care au semnificaii aparte. Variabilele
declarate de ctre utilizator nu pot avea numele cuvintelor cheie.
Cuvinte cheie n limbajul C sunt de obicei numele structurilor repetitive, decizionale, sau a
altor elemente importante ale limbajului.
41

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

3.2.5.1 Cuvntul cheie ASM


Cuvndul cheie ASM specific nceputul unui bloc de instruciuni scris n limbaj de asamblare.
Este folosit atunci cnd o poriune din cod necesit o vitez mai mare, iar scrierea direct n limbaj de
asamblare ar putea oferi asta.

asm {
MOVLW 10
MOVLW _myvar
MOVLW 0
MOVLW _myvar+1
}

3.2.5.2 Cuvntul cheie ABSOLUTE


Cuvntul cheie ABSOLUTE este folosit atunci cnd este necesar ca o variabil s fie scris la o
adres de memorie specific, cunoscut nc din timpul programrii. Folosirea acestui cuvnt cheie
este justificat doar n cazuri speciale.

int coef[10] absolute 0x0900;


double series[16] absolute 0x1900;

3.2.5.3 Cuvntul cheie ORG


Cuvntul cheie ORG este folosit atunci cnd o funcie trebuie scris la o adres specific n
memorie. Este folosit atunci cnd se scriu funcii pentru tratarea ntreruperilor. Aceste rutine de
tratare a ntreruperilor trebuie s se afle n memorie la locuri specifice pentru a fi apelate atunci cnd
apare ntreruperea.
void ADC1_Int() org 0x2A{
int s;
IFS0.F11 = 0;
s = ADCBUF0;
}

42

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

3.2.6

Variabile i constante globale

La compilare, compilatorul mikroC dsPIC declara anumite variabile globale ce pot fi folosite n
program. Prin aceste variabile globale se pot activa/dezactiva unele faciliti ale microcontroller-ului
sau ale plcii de dezvoltare.
De exemplu fiecare port al microcontroller-ului are asignat o variabil global prin care i pot fi
setai pinii.

LATB = 0;

Instruciunea de mai sus face ca toi pinii port-ului B s fie setai la valoarea 0 logic.

LATB = 0xFFFF;

Aceast instruciune face ca toi pinii portului B s aib valoarea 1 logic. Dup cum se observ,
valoarea alocat variabilei globale LATB este n format hexazecimal.
Alt exemplu ar fi setarea frecvenei de lucru al unui ceas de timp real. Aceasta se poate face
simplu prin atribuirea unei valori variabilei globale T1CON, ce reprezint un registru pentru ceasul
de timp real. Fiecare bit al registrului are o anumit semnificaie.

T1CON = 0x8030;

3.2.7

Scrierea unui program simplu pentru microcontroller-ul dsPIC

O trstur general a programelor pentru microcontroller-e este c acestea trebuie s ruleze n


continuu. Pentru a realiza acest lucru se folosete o structur repetitiv while, cu condiia 1,
aceast condiie fiind ntotdeauna adevrat.
Un program scris pentru microcontroller nu are nimic deosebit, ca de exemplu antet special. Nu
trebuie importate librrii deoarece funciile folosite sunt cutate i ncrcate automat de ctre

43

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

compilatorul mikroC. Exist ns o deosebire: la scrierea unui program pentru microcontroller, toate
variabilele trebuie declarate la nceputul programului.
Exemplu de program simplu pentru microcontroller care la un interval de o secund aprinde
LED-urile corespunztoare portului B, iar apoi le stinge.

void main() {
ADPCFG = 0xFFFF;
LATB = 0;
TRISB = 0;
while(1) {
LATB = ~LATB;
Delay_ms(1000);
}
}

Funcia Delay_ms din exemplul anterior provoac o ntrziere de 1000 milisecunde pn la


executarea urmtoarei instruciuni.

3.2.8

Scrierea unui ir de caractere pe afiajul alfanumeric

Cel mai eficient mod de a urmri evoluia unor variabile n timpul rulrii pentru microcontroller,
este afiarea acestora pe display. Deasemenea, display-ul LCD poate fi folosit pentru a afia un
mesaj pentru a cunoate n orice moment evoluia regulatorului, spre exemplu valoarea msurat,
comant, eroare sau referina curent.
Folosind acest mijloc de urmrire a procesului nu mai este nevoie de aparate suplimentare,
multimetru/osciloscop pentru a urmri dac regulatorul implementat pe placa dsPIC funcioneaz aa
cum ne dorim.
Pentru folosirea afiajului alfanumeric LCD, comutatorul corespunztor trebuie trecut n starea
ON. Acesta se gsete n grupul de comutatoare SW2, dup cum se poate observa n Fig. 3.18.

44

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.18 Comutatorul pentru activarea afiajului alfanumeric LCD

Dup ce afiajul alfanumeric a fost activat, acesta trebuie iniializat prin program. Pentru a fi
iniializat, se poate folosi o funcie deja existent n librria de funcii mikroC dsPIC.

Lcd_Custom_Init_DsPicPro2();

Dup iniializare, display-ul este pregtit pentru a primi textul care urmeaz a fi afiat. Funcia
pentru afiare este Lcd_Custom_Out care accept ca parametri 2 valori de tip integer pentru a fi
specificate linia i coloana unde se ncepe s se scrie i apoi o valoare de tip ir de caractere care
reprezint textul ce urmeaz a fi scris.

Lcd_Custom_Out(1,3, LCD Test);

n practic este nevoie de afiarea valorilor iniial stocate n variabile de tip ntreg sau float. Pentru
aceasta trebuie folosite funcii de convertire a unei valori de tip ntreg sau float n ir de caractere.

IntToStr(x,txt);
FloatToStr(y,txt);

n exemplul precedent variabila x este de tip integer, iar variabila y este de tip float. Dac se
ncearc convertirea unei valori de tip float ntr-un ir de caractere compilatorul nu va da nici o
eroare, numai c va fi convertit doar partea ntreag a variabilei de tip float.
Exemplu complet de folosire pentru afiajul alfanumeric LCD:

45

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
char txt[15] = "Acesta este un";
char txt2[7] = "Test";
char txt3[2];
int i=0;
void main() {
ADPCFG = 0xFFFF;
Lcd_Custom_Init_DsPicPro2();
Lcd_Custom_Out(1,1, txt);
Lcd_Custom_Out(2,1, txt2);
while (1) {
IntToStr(i,txt3);
Lcd_Custom_Out(2,10, txt3);
i++;
}
}

3.2.9

Citirea unei valori de la convertorul analog-numeric

Placa de dezvoltare dsPIC PRO4 este prevzut cu convertoare analog-numerice. Acestea


transform un semnal analogic n tensiune 0-5V ntr-un semnal numeric. Convertorul poate lucra pe
o rezoluie de 10 sau 12 bii.
Atunci cnd lucreaz pe 12 bii semnalul analogic va fi transformat ntr-un numr ntre 0 i 4096.

Fig. 3.19 Convertor analog-numeric i testere pentru simularea unui semnal

46

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

n figura 3.19 sunt prezentai pinii pentru convertoarele analog-numerice, mpreun cu testerele
pentru simularea unui semnal analogic.
Pinii corespunztori convertoarelor analog-numerice sunt pinii 8-15 ai portului B, mai exact
PORTB high. Ei corespund cu pinii portului B ai microcontrollerului. Pentru aplicarea unei tensiuni
la convertoarele analog-numerice se folosesc pinii de pe partea de sus. Cei din partea de jos
corespund testerelor i sunt conectai la cele dou poteniometre, 4 pentru cel din stnga i 4 pentru
cel din dreapta. Pentru aplicarea semnalului analogic de la tester la pinii corespunztori
convertoarelor se pune un jumper ntre pinul pe care vrem s se aplice i pinul corespunzator
simulatorului.
Funcia pentru citirea valorii numerice venite de la convertorul analog-numeric este Adc_Read
care primete ca parametru canalul pe care se va face citirea, adic numerele pinilor port-ului B, de
la 8 la 15.

adcRes = Adc_Read(10);

n variabila adcRes se va afla valoarea pe 12 bii corespunztoare valorii analogice transmise


pinului 10 al portului B.
Exemplu complet pentru testarea intrrilor analogice de pe plac i apoi afiarea valorii numerice
pe 12 bii pe afiajul grafic:

47

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
unsigned adcRes;
char txt[6];
void main() {
ADPCFG = 0xFFFF;
Lcd_Custom_Init_DsPicPro2();
TRISBbits.TRISB10 = 1; // Se seteaz PIN-ul 10 al portului B ca intrare
while (1) {
adcRes = Adc_Read(10);
WordToStr(adcRes, txt);
Lcd_Custom_Out(2,1, txt);
Delay_ms(500);
}
}

Acest program va afia pe LCD un numr ntre 0 i 4095, valoarea 0 corespunznd unui semnal
analogic de 0V, iar valoarea 4095 unui semnal analogic de 5V.
Pentru a afia valoarea n voli numrul pe 12 bii trebuie transformat ntr-o valoare ntre 0 i 5. n
urma unui simplu calcul, mprindu-l pe 5 la 4095 observm c pentru fiecare diviziune a numrului
pe 12 bii corespund 0,00122, adic 1,22mV.
Numrul obinut de la convertorul analog numeric trebuie nmulit cu 0,00122 i apoi stocat ntr-o
variabil de tip float.

3.2.10

Convertorul numeric-analogic

Pentru ca placa de dezvoltare s fie complet pregtit pentru a conduce procese automate, pe lng
convertorul analog-numeric, dsPIC PRO4 este echipat i cu un convertor numeric-analogic.
Pe plac exist un singur convertor numeric-analogic, dar n capitolul urmtor va fi prezentat o
soluie pentru a transmite semnale pe care instalaia le va considera analogice, pe ieirile numerice.
Pentru a putea folosi convertorul numeric-analogic, comutatoarele corespunztoare convertorului
trebuie puse n poziia ON. Acestea se gsesc n grupul de comutatoare SW4 i sunt referite ca
DAC ( Digital to Analog Converter ).

48

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.20 Comutatoarele pentru convertorul numeric-analogic

Convertorul numeric-analogic se gsete n partea stng a plcii de dezvoltare, i are un trebuie


conectat fir pentru semnal i fir pentru mas, dup cum se poate vedea n Fig. 3.21.

Fig. 3.20 Convertorul numeric-analogic

Funciile pentru programarea convertorului numeric-analogic nu se gsesc n librriile mikroC


dsPIC, de aceea n programul creat pentru conversia numeric-analogic trebuie s scriem corpul
funciilor ce vor fi apelate ulterior din program.
Urmtoarele dou funcii trebuie scrise, una pentru iniializarea interfeei SPI i cealalt pentru
funcia care transmite valoarea convertorului numeric-analogic.

const char CS_PIN = 1;


const char LD_PIN = 2;
unsigned int value;
void InitMain() {
ADPCFG = 0xFFFF;

49

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
Spi2_Init();

// Initialize SPI2 module

TRISC.CS_PIN = 0;
TRISC.LD_PIN = 0;

// Se seteaz pinul CS ca ieire


// Se seteaz pinul LD ca ieire

}
void DAC_Output(unsigned int valueDAC) {
char temp;
PORTC.CS_PIN = 0;
PORTC.LD_PIN = 0;

// Se selecteaz modulul convertor


// Se activeaz transferul de date

temp = (valueDAC >> 8) & 0x0F;


temp |= 0x30;
Spi2_Write(temp);
temp = valueDAC;
Spi2_Write(temp);
PORTC.LD_PIN = 1;
PORTC.CS_PIN = 1;
}
void main() {
InitMain();
value = 2047;

// Funcia creata poate primi valori ntre 0-4095

while (1) {
// Programul principal
DAC_Output(value++);
if (value > 4095)
value = 0;
Delay_ms(5);
}
}

Programul de mai sus simileaz un semnal pe convertorul numeric-analogic. Valoarea semnalului


va fi transmis funciei DAC_Output . Valoarea trebuie s fie ntre 0 i 4095. Dac se transmite 4095
valoarea analogic a tensiunii la ieirea convertorului numeric-analogic va fi 5V.

3.2.11

Modulare n durat de impulsuri

50

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

O alt soluie pentru a transmite semnale pe care instalaia s le considere analogice este
modularea n durat de impulsuri. Prin aceast metod nu se transmit semnale analogice, ci se
transmite cu o frecven mare succesiv ori semnal 1 logic, cruia i corespunde valoarea de 5V ori
semnal 0 logic cruia i corespunde valoarea 0V. D
De exemplu dac jumtate din perioad va fi transmis 0V, iar cealalt jumtate va fi transmis
semnal de 5V, puterea echivalent va fi ca la transmiterea unui semnal analogic de 2,5V. Dac
frecvena este destul de mare, instalaia tehnologic ( procesul condus ) nu va sesiza diferena i va fi
echivalent cu transmiterea unui semnal analogic.
Dac n schimb vom avea doar 20% din perioad 5V i restul 0V, instalaia tehnologic va
considera aceast valoare ca fiind un semnal analogic echivalent cu 20% din 5V, care nseamn 1V.
n concluzie, modularea n durat de impulsuri are doi parametri principali: perioada i factorul
de umplere ( ct la sut din perioad este 1 logic, adica 5V )
n majoritatea cazurilor instalaia e destul de lent s sesizeze variaiile, iar pentru ele semnalul va
fi vzut ca n figura 3.21.

51

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 3.21 Modulare n durat de impulsuri

Programarea unui PWM pe microcontroller dsPIC este simpl, trebuie iniializat modulul PWM
cu frecvena dorit i apoi apelat funcia pentru stabilirea factorului de umplere.
Funcia de iniializare primete 4 parametrii: frecvena, canalul PWM ( de la 1 la 4 ), scara
ceasului de timp real, i numrul corespunztor ceasului de timp real pe care s l foloseasc.
Aceast funcie va returna un numr care va reprezenta perioada PWM-ului. Acest numr va fi n
funcie de frecvena dorit. Se va pstra aceast numr ntr-o variabil.
Funcia pentru stabilirea factorului de umplere, ce se poate face din mers va avea nevoie de 2
parametri: canalul PWM i factorul de umplere. Factorul de umplere va fi un numr ntre 0 i
numrul din variabila perioad returnat de funcia de iniializare. Pentru conversie este nevoie de
52

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

un calcul similar cu cel de la citirea pe intrrile analogice, doar c aici 5V este reprezentat de
perioada funcie de frecvena PWM-ului.
Funciile de configurare i iniializare:

pwm_period1 = Pwm_Init(5000, 1, 1, 2);


Pwm_Start(1);
Aceasta nseamn c iniializm un semnal PWM pe canalul 2, folosind ceasul de timp real 1
pentru calculul perioadei, scara 1 de amplificare i frecvena 5000Hz. n variabila pwm_period1 s-a
pstrat numrul corespunztor valorii maxime pe care o poate primi factorul de umplere.
Stabilirea factorului de umplere:

Pwm_Set_Duty(pwm_period1/2, 1);

Factorul de umplere a fost stabilit la jumtate, adica 2,5V. Pentru valoarea pwm_period1
rezultatul analogic va fi 5V. Cu aceste considerente putem scrie cteva instruciuni de calcul n
funcie de perioad, fr sa fie nevoie s le mai schimbm atunci cnd schimbm frecvena.
Considerm ca n variabila x este stocat o valoare n virgul mobil de la 0 la 5V.

factor=pwm_period/5;
Pwm_Set_Duty(x*factor,1);
Un exemplu complet de folosire al modulrii n durat de impulsuri:

void main() {
unsigned pwm_period1, pwm_period2, i1 = 0, i2 = 0;
pwm_period1 = Pwm_Init(5000, 1, 1, 2);
Pwm_Init(5000, 3, 1, 2);
pwm_period2 = Pwm_Init(10000, 2, 1, 3);
Pwm_Init(10000, 4, 1, 3);
Pwm_Start(1);
Pwm_Start(2);

53

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
Pwm_Start(3);
Pwm_Start(4);
Pwm_Set_Duty(pwm_period1/2, 1);
Pwm_Set_Duty(pwm_period2/2, 2);
while(1) {
Pwm_Set_Duty(i1, 3);
Pwm_Set_Duty(i2, 4);
if (i1++ == pwm_period1)
i1 = 0;
if (i2++ == pwm_period2)
i2 = 0;
Delay_ms(1);
}
}

n acest exemplu au fost folosite toate cele 4 calale PWM. Acest exemplu face ca ieirea pe
canalele PWM 1 i 2 s fie la jumtate, 2,5V, iar ieirea pe canalele 3 i 4 s creasc de la 0 la
valoarea maxim, 5V. Pentru observarea ieirii pe canalele PWM se poate folosi un voltmetru de
curent continuu. Acesta va percepe valoarea ca fiind analogic. La folosirea unui osciloscop setat pe
o frecven mare se pot vedea semnalele reale, adic impulsurile cu frecvena aleas, si se poate
observa factorul de umplere. n figura 3.22 este un canal PWM cu factor de umplere 80%.

Fig. 3.22 Modulare n durat de impulsuri 80%

n fig. 3.23 s-a nregistrat semnalul de ctre un osciloscop setat pe o frecven foarte mare.

54

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig 3.23 Modulare n durat de impulsuri vzut pe osciloscop

Dac frecvena de citire este mic, semnalul modulat nu se poate observa aa cum este el real, ci
va fi considerat ca n fig. 3.24.

Fig. 3.24 Semnal modulat n durat de impulsuri, citit la o frecven mic

Dac frecvena este i mai mic, semnalul va aprea ca fiind analogic.


3.2.12

Generarea de ntreruperi de ctre ceasul de timp real


55

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Programele fcute pentru microcontroller se fac pentru a rula continuu. Pentru a executa o
instruciune sau un bloc de insctruciuni la un moment precis de timp este nevoie s folosim un ceas
de timp real. Acest ceas de timp real va genera o ntrerupere, iar n acel moment microcontroller-ul
se va opri din executarea instruciunilor din programul principal, va pstra variabilele locale aa cum
sunt n acest moment ntr-o stiv, iar urmtoarele instruciuni executate vor fi cele de tratare a
ntreruperii. La terminarea rutinei de tratare a ntreruperii firul de execuie se ntoarce la cursul
normal acolo unde a rmas n momentul n care a aprut ntreruperea.
Pentru a pregti unul dintre ceasurile de timp real ale plcii pentru a trimite ntreruperi, acesta
trebuie configurat. Ceasul de timp se configureaz cu ajutorul biilor a doi registrii. Unul dintre ei
este registrul corespunztor ceasului de timp real, T1CON. Fiecare bit al acestui reprezint o anumit
setare a ceasului cu numrul 1. Pentru a stabili la ce timp s genereze ntreruperea registrul PR1
trebuie s conin o valoare care reprezint numrul semnalului de tact care va genera ntreruperea.
Ceasul de timp real 1 are o frecven de 10MHz, asta nseamn c va numra de 10 000 000 de ori
ntr-o secund. Dac ceasul este setat pe factor de scara 1, iar n registrul PR1 va fi valoarea 10 000,
ntreruperea va aprea de 1000 de ori ntr-o secund, adic exact la 1 milisecund.
Registrul T1CON este un registru pe 2 octei, adic 16 bii. Primul bit ( cel mai semnificativ , sau
bitul 15) va activa sau va dezactiva ceasul numrul 1. Daca valoarea primului bit este 1, ceasul va fi
activat, dac este 0, ceasul va fi oprit. Biii 5 i 4 reprezint factorul de scar. Pentru valoarea 00 a
acestor 2 bii, factorul de scar este 1, asta nsemnnd c ceasul numr normal cu frecvena de 10
MHz. Daca bitul 4 are valoarea 1, factorul de scara va fi 8, ceasul va lucra cu frecvena de 10Mhz
mprit la 8. Pentru valoarea 1 a bitului 5 factorul de scar va fi 64, iar cnd i bitul 5 i bitul 4 vor
fi 1 factorul de scar va fi 256. Acestea se pot vedea n tabelul urmtor.

bit 5 bit4
0 0
0 1
1 0
1 1

factor
1
8
64
256

56

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

n figura 3.25 se pot observa toi biii registrului T1CON. Pentru descriei mai detaliate se va
consulta manualul mikroC dsPIC.

Fig. 3.25 Biii registrului T1CON

Registrul PR1 este tot un registru pe 16 bii, ns numrul format din biii acestuia constituie un
numr ce reprezint momentul la care va fi generat ntreruperea. Spre exemplu un factor de scara 8
i valoarea FFFF, adic 65 535 n registrul PR1, va nsemna c ceasul va numra din 52 n 52 de
milisecunde. Frecvena ceasului de 10Mhz va fi mprit la factorul de scar, apoi la valoarea din
PR1 i va rezulta frecvena la care ceasul trimite o ntrerupere ctre microcontroller.
Ali registrii care trebuie modificai pentru activarea ntreruperilor de la ceas sunt:
-

bitul 8 al registrului IPC0 trebuie fcut 1 pentru a stabili nivelul de prioritate 1 al ntreruperii
venite de la ceas.

bitul 3 al registrului IEC0 trebuie fcut 1 pentru a activa ntreruperea venit de la ceas.

Dup setarea acestor registrii ntreruperea de la ceas va fi generat. n continuare trebuie scris
rutina de tratare a ntreruperii, care n cazul mikroC dsPIC este o funcie. Vom folosi cuvntul cheie
org pentru ca aceast funcie s fie scris la o adres de memorie specific i anume: 0x1A.
void Timer1Int() org 0x1A {
// Pentru a anuna c ntreruperea a fost generat i s-a intrat n
// subrutina de tratare registrul IFS0 trebuie resetat
IFS0 = IFS0 & 0xFFF7;
// Aici va fi scris codul ce trebuie executat pentru tratarea ntreruperii
}

Un exemplu complet pentru a testa ntreruperile de la ceasul 1:

57

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

void Timer1Int() org 0x1A {


IFS0 = IFS0 & 0xFFF7; // Clear TMR1IF
LATD = ~ PORTD;

// Se inverseaz semnalul portului D

}
void main() {
ADPCFG = 0xFFFF;
TRISD = 0;
// PORTD setat ca ieire
LATD = 0xAAAA;
// Se iniializeaz port-ul D
IPC0 = IPC0 | 0x1000; // Prioritate de nivel 1
IFS0 = IFS0 & 0xFFF7; // Se reseteaz IFS0
IEC0 = IEC0 | 0x0008; // Se activeaz ntreruperile
PR1 = 0xAAAA;
T1CON = 0x8030;
while (1)
;

// Se configureaz ceasul 1 cu scara 256


// Bucl infinit, ntrerupt de ceasul 1

Exemplul de mai sus va face ca LED-urile corespunztoare portului D s se aprind apoi s se


sting la infinit.
Precum T1CON i PR1 sunt registrii ceasului 1, exist PR2 i T2CON pentru ceasul cu numrul 2.

Capitolul IV
58

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

- Realizare Practic -

4.4Prezentare
Experimentul presupune reglarea temperaturii i a debitului de aer n instalaia experimental
LabVolt, folosint placa de dezvoltare dsPIC PRO4.
Echipamentele folosite pentru sistemul de reglare automat realizat sunt:
a) Instalaia LabVolt de reglare a temperaturii i debitului de aer prezentat n capitolul
II.
b) Placa de dezvoltare dsPIC PRO4
c) Tastatur numeric pentru modificarea referinei i a parametrilor regulatorului PID n
timpul rulrii.
Datrit faptului c totul este software coeficienii regulatorului PID se pot modifica foarte
uor, mai mult, acetia se pot schimba i n timpul lucrrii cu ajutorul tastaturii numerice.
Componentele plcii de dezvoltare folosite la acest exeriment sunt:
-

ceasul de timp real;

convertoare analog numerice;

modularea n durat de impulsuri;

afiajul alfanumeric LCD;

portul F pentru conectarea tastaturii;

4.5Principiul realizrii

59

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Se folosete ceasul de timp real pentru a genera o ntrerupere la fiecare 10ms. Acesta reprezint
i timpul de eantionare. La fiecare 10ms microcontroller-ul citete semnalele venite de la
convertoarele analog-numerice. Memoreaz citirea ntr-o variabil.
Urmtorul pas este cel de comparare al mrimilor msurate cu referina, adic eroarea, care se
pstreaz deasemenea ntr-o variabil. Cu aceti doi parametri se calculeaz comanda cu ajutorul
unui regulator PID implementat numeric. Parametrii regulatorului PID, Kp, Ti, Td au valori implicite
date software dar ele se pot modifica n timpul rulrii. Regulatorul PID este implementat software,
cu funcia de transfer discret:

u (t ) u (t 1) K P [e(t ) e(t 1)]

K p Te
Ti

e (t )

K p TD
Te

[e(t ) 2 e(t 1) e(t 2)]

Astfel la fiecare 10ms se calculeaz o valoare a comenzii care este transmis printr-unul din
porturile pentru modulare n durat de impulsuri. Comanda este aplicat instalaiei pe la intrrile de
tensiune ale acesteia.
S-au implementat 2 regulatoare PID, unul pentru reglarea debitului de aer, cellalt pentru
reglarea temperaturii. Debitul de aer nu depinde de temperatura de la rezistent, dar asupra lui
acioneaz factori perturbatori. Temperatura va depinde i de gradul de nclzire al rezistenei dar i
de detibul de aer.

4.6Modul de lucru
Se urmrete folosirea microcontroller-ului dsPIC ca regulator pentru reglarea debitului de aer
i a temperaturii.

4.6.1 Programarea microcontroller-ului

60

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

4.3.1.1 Generarea unei ntreruperi la 10 milisecunde


Pentru ca microcontroller-ul s funcioneze ca un regulator numeric este necesar alegerea
perioadei de eantionare Te. Pentru aceasta se folosete ceasul de timp real configurat pentru a da o
ntrerupere la fiecare 10 milisecunde. Scara de multiplicare a ceasului de timp real va fi aleas 8,
adic bitul 4 al registrului T1CON va fi 1.

T1CON = 0x8010;

Pentru a obine un timp exact de 10 milisecunde nmulim timpul n secunde, adic 0.01 secunde
cu frecvena ceasului, i apoi rezultatul l mprim la scara de multiplicare, adica 8, iar rezultatul l
vom scrie n registrul PR1. Pentru a uura modificarea ulterioar, acest calcul se va implementa sub
form de funcie pentru iniializarea ceasului de timp real care va calcula valoarea ce trebuie scris n
registrul PR1 n funcie de timpul n secunde pe care l punem ntr-o variabil.

void InitializareCeas(timp1) {
IPC0 = IPC0 | 0x1000;
IFS0 = IFS0 & 0xFFF7;
IEC0 = IEC0 | 0x0008;
presc=8;
frec=10000000;
timp2=(timp1 * frec) / presc;
PR1 = timp2;
T1CON = 0x8010;
}

n variabila timp1 se afl timpul n secunde pentru care trebuie s fie calculat valoarea ce va fi
scris n registrul PR1.
Rezultatul va fi pstrat temporar n variabila timp2 care va fi scris n registrul PR1.

61

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

n acest fel n programul principal vom avea iniializarea variabilei timp1 cu timpul dorit n
secunde i apelul funciei IniializareCeas.

timp1=0.010;
InitializareCeas();

Dup iniializarea ceasului urmeaz scrierea procedurii de tratare a ntreruperii, aceasta va folosi
cuvntul cheie ORG pentru a fi scris la adresa de memorie 0x1A. Este necesar ca la nceputul
acestei proceduri s se reseteze flag-ul IFS0.

void Timer1Int() org 0x1A {


IFS0 = IFS0 & 0xFFF7;
// Aici vor fi scrise instruciunile
}

ntreruperea apare la un interval considerat perioad de eantionare. La fiecare ntrerupere


trebuie msurat ieirea procesului i apoi regulatorul implementat software va calcula comanda pe
care o transmite napoi procesului.

4.3.1.2 Citirile pe intrrile analogice


Pentru a citi datele de la proces se folosesc intrrile convertoarelor analog-numerice ce
corespund pinilor 10 i 12 ai portului B. Acestea se conecteaz direct la instalaie, ea furniznd
semnale n tensiune de 0-5V.
Funcia pentru citirea intrrilor analogice este Adc_Read ce are ca parametru numrul pinului
port-ului B i returneaz o valoare numeric pe 12 bii.

adcRes = Adc_Read(10);

Cea mai mare valoare a numrului returnat, 4095 corespunde unui semnal analogic de 5V. n felul
acesta putem face uor conversia napoi n voli. Valoarea numeric se nmulete cu 0,00122 i vom
obine o valoare de tensiune ntre 0 i 5V.

62

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
x=(adcRes * 0.0012207);

n felul acesta n variabila x vom avea valoarea n voli msurat la intrrile convertorului analognumeric.
4.3.1.3 Implementarea software a funciei de transfer
Pentru calculul comenzii vom implementa fucia de transfer discret a unui regulator PID.
Parametrii Kp, Td i Ti ai regulatorului vor fi iniializai la nceputul programului.

u = um1 + Kp * ( e - em1 ) + ( ( Kp * Te ) / Ti ) * e + ( ( Kp * Td ) / Te ) * * ( e - 2 * em1 + em2 );

Variabilele folosite la calculul comenzii sunt cele din tabelul 4.1.

um1
e
em1
em2

u(t-1)
e(t)
e(t-1)
e(t-2)

Tabelul 4.1

Eroarea va fi rezultatul scderii a valorii msurate din referin. Valorile erorii i comenzii de la
paii anteriori vor fi memorate n variabilele um1,em1,em2. Dup calculul comenzii valorile acestor
variabile vor fi reactualizate:

em2=em1;
em1=e;
um1=u;

4.3.1.4

Transmiterea comenzii pe canalele PWM

Dup ce regulatorul calculeaz comenzile pentru rezisten i pentru ventilator, acestea sunt
transmise prin canalele de modulare n durat de impulsuri. Pentru a transmite comanda dorit pe
canalele PWM trebuie fcute calcule. Funcia pentru PWM va accepta pentru factorul de umplere o
valoare ntre 0 i valoarea din variabila returnat de funcia de iniializare a canalului respectiv, care
este funcie de frecvena pentru PWM aleas. Pentru a gsi valoare ce trebuie transmis prima dat
63

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

mprim comanda n voli pe care vrem s o transmitem la 5, care este maximul comenzii, i vom
obine un numr subunitar care apoi l vom nmuli cu valoarea maxim ce poate fi transmis funciei
PWM.

y=u/5;
z=y*pwm_period1;
Pwm_Set_Duty(z, 1);

n variabila u este pstrat comanda care este mprit la 5 i apoi nmulit cu variabila
pwm_period1 ce reprezint perioada PWM-ului, adic valoara maxim ce trebuie transmis prin
funcia de PWM pentru a factor de umplere 100%, adic 5V.
4.3.1.5

Afiarea variabilelor pe afisjul grafic LCD

Pentru a observa variabilele procesului n timpul rulrii este necesar afiarea acestora pe
display. Variabilele ce vor fi afiate sunt referina, mrimea msurat, eroarea i comanda.
Variabilele noastre conin valori ntre 0 i 5V, pentru o afiare corect vom nmuli aceste valori cu
100 i vor fi afiate ca un numr ntre 0 i 500, ultimele 2 cifre fiind partea fracionar. Apoi acest
numr este convertit ntr-o variabil de tip ir de caractere i apoi afiat pe LCD.
Pentru a deosebi ulterior ce reprezint fiecare numr, trebuie ca naintea lui s scriem iniialele
valorii pe care o reprezint. n consecint avem Ref,Mas,Err i Com.

IntToStr(Ref,txt);
Lcd_Custom_Out(1,2, txt);
Lcd_Custom_Out(1,1, "R");
Lcd_Custom_Out(1,2, "e");
Lcd_Custom_Out(1,3, "f");
Lcd_Custom_Out(1,4, "=");
IntToStr(x*100,txt);
Lcd_Custom_Out(1,10, txt);
Lcd_Custom_Out(1,9, "M");
Lcd_Custom_Out(1,10, "a");
Lcd_Custom_Out(1,11, "s");
Lcd_Custom_Out(1,12, "=");
IntToStr(e*100,txt);
Lcd_Custom_Out(2,2, txt);

64

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Lcd_Custom_Out(2,1, "E");
Lcd_Custom_Out(2,2, "r");
Lcd_Custom_Out(2,3, "=");
IntToStr(u*100,txt);
Lcd_Custom_Out(2,10, txt);
Lcd_Custom_Out(2,9, "C");
Lcd_Custom_Out(2,10, "o");
Lcd_Custom_Out(2,11, "m");
Lcd_Custom_Out(2,12, "=");

Pentru claritate mazim am ales s trimit caracter cu caracter literele din numele variabilelor
procesului vizualizate.
Rezultatele vor fi afiate ca n fig. 4.1.

Fig. 4.1 Vizualizarea variabilelor procesului pe afiajul alfanumeric LCD

4.3.2 Accesorii
4.3.2.1 Tastatur numeric KB304
Pentru dinamica regulatorului am dorit s adaug opiunea de a schimba referina n timpul
funcionrii. Pentru asta am folosit o tastatur numeric KB304.

65

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 4.2 Tastatur numeric KB304


Pentru a programa tastatura trebuie s cunoatem pinii asociai fiecrei taste. Tastele funcioneaz
ca ntreruptoare care la apsare realizeaz legtura ntre cei 2 pini corespunztori.
Pentru tastatura KB304, pinii sunt asociai ca n figura 4.3

Fig. 4.3 Corespondena dintre taste i pini la KB304

Pentru programarea tastaturii s-au folosit funciile disponibile n librria mikroC dsPIC, i anume
funcia de iniializare a tastaturii pe portul F, i funcia care realizeaz citirea unui caracter.

Keypad_Init(&PORTF);
kpp = Keypad_Key_Click();

66

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Deoarece programul ruleaz o dat la 10 milisecunde, funcia care verific dac a fost vreo tast
apasat va fi rulat continuu, iar la apsare va pstra valoarea ntr-o variabil. Valoarea din acea
variabila va fi un numr pe 4 bii care trebuie verificat i apoi gsit tasta care a fost apsat.
Funcia de configurare a tastaturii va configura lucrul cu o tastatur 4x4, ca n fig. 4.4.

Fig. 4.4 Conectarea tastaturii la pinii microcontroller-ului

Nu s-a folosit portul B ci portul F deoarece port-ul B este folosit pentru intrrile analogice i
pentru afiajul alfanumeric.
Pinii au fost conectai ca n tabelul 4.2.

Pin microcontroller
F0
F1
F2

Pin tastatur
1
3
5
67

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

F4
F5
F6
F7

2
7
6
4

Tabelul 4.2 Conectarea pinilor tastaturii cu cei ai microcontroller-ului

Nu s-a folosit pinul 3 al portului F deoarece acesta era destinat pentru a patra coloan a unei
tastaturi numerice 4x4.

Fig. 4.5 Conectarea tastaturii

Corespondea valorii returnate de funcia Keypad_key_click i butonul urmtor este:

kpp = Keypad_Key_Click();
switch (kpp) {
case 1: kpp = 1; break;
case 2: kpp = 2; break;
case 4: kpp = 3; break;
case 5: kpp = 4; break;
case 6: kpp = 5; break;
case 8: kpp = 6; break;
case 9: kpp = 7; break;
case 10: kpp = 8; break;
case 12: kpp = 9; break;
case 13: kpp = 10; break;
case 14: kpp = 12; break;
case 16: kpp = 11; break;
}

68

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Pentru schimbarea referinei sau a parametrilor PID din tastatur, prima dat se apas tasta *
(asterix) succesiv, iar pe ecran vor apare succesiv mesaje pentru a introduce referina debitului de
aer, referina temperaturii, Kp, Ti, Td. Prin apsarea tastei diez se confirm valoarea introdus.
Pentru succesiunea transmisiei datelor de la tastatura numeric, se folosete o variabil care iniial
are valoarea 0. La o apsare a tastei diez aceast variabil va avea valoarea 1, asta nsemnnd c pe
display nu vor mai fi afiate variabilele procesului, ci numrul introdus, ateptnd tasta diez pentru a
confirma valoarea i pentru a reseta variabila k pentru a se reveni la afiarea variabilelor procesolui.
Dac nu se apas diez ci se apas din nou asterix, variabila k va lua valoarea 2 i va atepta referina
pentru temperatur, la o nou apsare va lua valoarea 3 i va atepta Ti i tot aa i pentru ceilali
parametri ai regulatorului PID.
4.3.2

Conexiuni realizate
Pentru a realiza reglarea, ieirile variabilelor procesului trebuie conectate la intrrile

convertoarelor analog-numerice, iar ieirile PWM la intrrile procesului conectate la elementele de


execuie. n plus s-au realizat i conexiunile portului F cu pinii tastaturii numerice.
Conexiunile au fost realizate ca n tabelul 4.3.
Proces
Ieire traductor temperatura
Ieire traductor debit aer
Intrare rezisten electric
Intrare ventilator

Plac de dezvoltare
B 10 analog-numeric
B 12 analog-numeric
D 0 PWM
D1 PWM

Tabelul 4.3 Conexiuni ntre instalaie i placa de dezvoltare

69

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Fig. 4.6 Conexiuni ntre instaatie i placa de dezvoltare

Fig. 4.7 Conexiunile pe placa de dezvoltare

4.3.3

Lansarea n execuie

70

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

Pentru reglarea debitului i a temperaturii s-a scris programul n mikroC dsPIC ataat la finalul
acestui subcapitol. Acest program pune mpreun tot ce a fost scris pn acum n subcapitolul
4.1. despre programarea microcontroller-ului pentru reglarea temperaturii i a debitului de aer.
S-au folosit accesoriile prezentate la subcapitolul 4.2 i s-au realizat conexiunile cu instalaia
prezentate n capitolul 4.3.
Parametrii regulatorului PI pentru reglarea debitului de aer sunt Kp=2 i Ti=2. Pentru
regulatorul temperaturii s-au folosit Kp=2 i Ti=1. Datorit faptului c sistemul de nclzire este
foarte lent, va dura mai mult pn temperatura se stabilizeaz. Pe msur ce eroarea se
micoreaz regulatorul ncepe s scad comanda pn cnd va gsi o comand care s in
temperatura pe loc.

Fig. 4.8 Ansamblul instalaie-plac de dezvoltare

Codul folosit pentru realizarea ntregului ansamblu: interfa, regulator, conectare este:

71

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
unsigned pwm_period1,pwm_period2;
int i,kpp,k=0;
float x,y,z,adcRes,timp1,presc,frec,timp2,fq;
float Kp,Ti,Td,Te,Ref;
float um1=0,u=0;
float e=0,em1=0,em2=0;
float contor1=2,tast=55,intr=0;
char txt[5];
float adcResv,xv,yv,zv;
float ev,evm1,evm2,uv,uvm1;
float Refv,Kpv,Tiv,Tdv;
void Timer1Int() org 0x1A { // Rutina de tratare a intreruperii venite de la ceasul de timp real
//** Este necesar ca flag-ul IFS0 s fie resetat manual
IFS0 = IFS0 & 0xFFF7;
kpp = Keypad_Key_Click();
switch (kpp) {
case 1: kpp = 1; break;
case 2: kpp = 2; break;
case 4: kpp = 3; break;
case 5: kpp = 4; break;
case 6: kpp = 5; break;
case 8: kpp = 6; break;
case 9: kpp = 7; break;
case 10: kpp = 8; break;
case 12: kpp = 9; break;
case 13: kpp = 10; break;
case 14: kpp = 12; break;
case 16: kpp = 11; break;

// Se apeleaz functia pentru tastatur

// Se citeste ce s-a introdus de la tastatura

}
if(kpp) {
tast=kpp;
if(tast==12) tast=0; // Daca a fost apasata tasta 0, aceasta se pune manual in noua variabila
if(tast==11) {
if(intr<10) { intr=intr*100; } // Se face verificarea numarului de cifre introdus
else if (intr<100) {intr=intr*10; } // si se fac adjustarile corespunzatoare
if(k==1) {
Refv = intr;
}
if(k==2) {
Ref = intr;
}
if(k==3) {
Kp = intr/100; // In acest bloc se introduce valoarea tastata in variabilele corespunzatoare
}
if(k==4) {
Ti = intr/100;
}
if(k==5) {
Td = intr/100;

72

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
}
intr=0;
k=0;
Lcd_Custom_Cmd(LCD_CLEAR); // Se curata display-ul pentru a afisa noi date
}
else {
if(tast==10) { intr=0;
Lcd_Custom_Cmd(LCD_CLEAR);
k++;
if(k>5) k=0;
}
else {
if(tast!=55) { intr = intr * 10 + tast; tast = 55; }
}
}
}
if(Ref>500) Ref=499; // Referinta maxima este 5V
adcRes = Adc_Read(10);
x=(adcRes* 1.2207/1000); // Se citeste valoarea temperaturii in V
e = ((Ref/100) - x); // Se calculeaza eroarea
// Calculul comenzii
u = um1 + Kp * ( e - em1 ) + ( ( Kp * Te ) / Ti ) * e + ( ( Kp * Td ) / Te ) * ( e - 2 * em1 + em2 );
em2=em1;
em1=e;
// Se initializeaza variabilele necesare iteratiilor urmatoare
if(u>5) u=5;
if(u<=0) u=0;
um1=u;
if(k==0) {

// Se afiseaza variabilele procesului

IntToStr(Ref,txt);
Lcd_Custom_Out(1,2, txt);
Lcd_Custom_Out(1,1, "R");
Lcd_Custom_Out(1,2, "e");
Lcd_Custom_Out(1,3, "f");
Lcd_Custom_Out(1,4, "=");
IntToStr(x*100,txt);
Lcd_Custom_Out(1,10, txt);
Lcd_Custom_Out(1,9, "M");
Lcd_Custom_Out(1,10, "a");
Lcd_Custom_Out(1,11, "s");
Lcd_Custom_Out(1,12, "=");
IntToStr(e*100,txt);
Lcd_Custom_Out(2,2, txt);

73

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
Lcd_Custom_Out(2,1, "E");
Lcd_Custom_Out(2,2, "r");
Lcd_Custom_Out(2,3, "=");
IntToStr(u*100,txt);
Lcd_Custom_Out(2,10, txt);
Lcd_Custom_Out(2,9, "C");
Lcd_Custom_Out(2,10, "o");
Lcd_Custom_Out(2,11, "m");
Lcd_Custom_Out(2,12, "=");
}
x=u;
y=x/5;
z=y*pwm_period1;
Pwm_Set_Duty(z, 1);

// Se transmite comanda la PWM

if(k==1) {
Lcd_Custom_Out(1,1, "R");
Lcd_Custom_Out(1,2, "e");
Lcd_Custom_Out(1,3, "f");
Lcd_Custom_Out(1,4, " "); // Se asteapta de la tastatura referinta
Lcd_Custom_Out(1,5, "v"); // debitului de aer
Lcd_Custom_Out(1,6, "e");
Lcd_Custom_Out(1,7, "n");
Lcd_Custom_Out(1,8, "=");
IntToStr(intr,txt);
Lcd_Custom_Out(1,10, txt);
}
if(k==2) {
Lcd_Custom_Out(1,1, "R");
Lcd_Custom_Out(1,2, "e");
Lcd_Custom_Out(1,3, "f"); // Se asteapta tastarea referintei
Lcd_Custom_Out(1,4, "="); // temperaturii
IntToStr(intr,txt);
Lcd_Custom_Out(1,10, txt);
}
if(k==5) {
Lcd_Custom_Out(1,1, "T");
Lcd_Custom_Out(1,2, "d");
Lcd_Custom_Out(1,3, "=");

// Se asteapta introducerea
// coeficientului Td

IntToStr(intr,txt);
Lcd_Custom_Out(1,10, txt);
}

74

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
if(k==3) {
Lcd_Custom_Out(1,1, "K");
Lcd_Custom_Out(1,2, "p");// Se asteapta introducerea coeficientului Kp
Lcd_Custom_Out(1,3, "=");
IntToStr(intr,txt);
Lcd_Custom_Out(1,10, txt);
}
if(k==4) {
Lcd_Custom_Out(1,1, "T");
Lcd_Custom_Out(1,2, "i"); // Se asteapta introducerea coeficientului Ti
Lcd_Custom_Out(1,3, "=");
IntToStr(intr,txt);
Lcd_Custom_Out(1,10, txt);
}
// Ventilator
adcResv = Adc_Read(12); // Preluarea masuratorilor si calculul
xv=(adcResv * 1.2207/1000); // comenzii pentru ventilator
ev = ((Refv/100) - xv);
uv = uvm1 + Kpv * ( ev - evm1 ) + ( ( Kpv * Te ) / Tiv ) * ev + ( ( Kpv * Tdv ) / Te ) * ( ev - 2 * evm1 +
evm2 );
evm2=evm1;
evm1=ev;
if(uv>5) uv=5;
if(uv<0) uv=0;
uvm1=uv;
xv=uv;
yv=xv/5;
zv=yv*pwm_period2;
Pwm_Set_Duty(zv,2);
}
void InitializareCeas(timp1) {

// Functie pentru initializare ceas de timp real

IPC0 = IPC0 | 0x1000; // Se seteaza nivelul 1 de prioritate


IFS0 = IFS0 & 0xFFF7; // Se reseteaz[ IFS0
IEC0 = IEC0 | 0x0008; // Se activeaza intreruperile de la ceasul de
// timp real
presc=8;
frec=0.0000001;
timp2=(timp1 * ( 1 / frec )) / presc;
PR1 = timp2;

75

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________
T1CON = 0x8010;
}
void main() {
ADPCFG = 0xFFFF; // Se initializeaza porturile
Lcd_Custom_Init_DsPicPro2(); // Se initializeaza afisajul LCD
Keypad_Init(&PORTF); // Se initializeaza programul pentru tastatura
// pe portul F
// Parametrii PID
Te = 0.010;
Kp = 2;
Ti = 2;
Td = 0;
Ref = 250;
Kpv=2;
Tiv=1; // Parametri PID pentru ventilator
Tdv=0;
Refv=250;
timp1=Te;
InitializareCeas();
pwm_period1 = Pwm_Init(5000, 1, 1, 2);
Pwm_Start(1);

// Initializare PWM

pwm_period2 = Pwm_Init(5000, 2, 1, 2);


Pwm_Start(2);
TRISBbits.TRISB10 = 1; // Initializare convertoare analog-numerice
TRISBbits.TRISB12 = 1;
while (1)
;

// Bucla infinita intrerupta de ceasul de timp real

- Bibliografie 1. Marin, Constantin, Structuri i legi de reglare automat, Ed. Sitech, Craiova, 2005;
76

Utilizarea microcontroller-ului dsPIC n conducerea procesului de reglare a temperaturii i debitului la instalaia


experimental LabVolt 3522-05
_________________________________________________________________________________________________

2. Marin, Constantin, Ingineria reglrii automate, Ed. Sitech, Craiova, 2004;


3. Marin, Constantin, Sisteme neconvenionale de reglare automat, Ed. Sitech, Craiova,
2004;
4. Ionete, Cosmin; Surlea Drago; Neagu Nicolae, Embedded Systems, Craiova, 2008;
5. Ionete, Cosmin, Sisteme integrate - Indrumar de laborator, Craiova, 2008;
6. Marin C.; Petre E; Popescu D; Ionete C.; Seliteanu D., Sisteme de reglare automat,
Lucrri practice I, Ed. Sitech, Craiova, 1997;
7. Mikroelektronika, Programming dsPIC (Digital Signal Controllers) in C - dsPIC PRO4 User
Manual
8. Mikroelektronika, Programming dsPIC (Digital Signal Controllers) in C - mikroC dsPIC User
Manual
9. Tahm M. , Discretised PID Controllers,
10. Cartea tehnic a instalaiei LabVolt 3522-05
11. http://en.wikipedia.org/wiki/Pulse-width_modulation
12. http://lorien.ncl.ac.uk/ming/digicont/digimath/dpid1.htm

77

S-ar putea să vă placă și