Documente Academic
Documente Profesional
Documente Cultură
PROIECT DE DIPLOM
Tem de proiect:
Student,
Coordonator tiinific,
Lucian APOSTOL
IULIE 2009
4
CUPRINS
Capitolul 1. Concepte generale ale reglrii automate ........................................................pag. 4
1.1
1.2
1.3
1.2.1
Prezentare general...............................................................................pag. 6
1.2.2
1.2.3
2.2
2.3
2.4
2.5
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
3.1.7
Interfaa Ethernet...........................................................................pag. 23
3.1.8
Convertorul digital-analogic...........................................................pag. 23
3.1.9
3.1.10
LED-uri..........................................................................................pag. 25
3.1.11
Butoane..........................................................................................pag. 26
3.2
3.1.12
Afiajul LCD..................................................................................pag. 26
3.1.13
3.1.14
Touch Panel......................................................................................pag. 28
3.1.15
Convertoare analog-numerice........pag. 28
3.1.16
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.2.7
3.2.8
3.2.9
3.2.10
Convertorul numeric-analogic...........................................................pag. 43
3.2.11
3.2.12
Prezentare.........................................................................................................pag. 53
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
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.
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. :
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
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.
10
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.
11
1
TD s ]
TI s
K P - factorul de proporionalitate
H (s) K P [
1
T s 1
D
]
TI s T s 1
1
TD s
]
TI s T s 1
12
H ( s ) K P [1
1
TD s
]
TI s T s 1
Flexibilitate;
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
Capitolul II
3
13
14
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.
Pentru a se face reglarea corect, masa instalaiei trebuie conectat la masa regulatorului.
15
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.
17
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.
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;
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
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.
19
20
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;
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
3.1.1
n continuare sunt prezentate unele dintre facilitaile oferite de placa de dezvoltare dsPIC
PRO4. Ele se pot vedea pe Fig. 3.1.
22
23
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;
3.1.3
Microcontroller-ul
24
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.
3.1.5
Conector USB
25
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.
3.1.6
26
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.
3.1.8
Convertorul digital-analogic
27
3.1.9
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
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
3.1.11
Butoane
30
Dup cum se observ n figurile 3.11 i 3.10 repartiia butoanelor pe plac este similar cu cea a
LED-urilor.
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
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
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
3.1.16
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
3.2
35
Se instaleaz driverul pentru USB care se gsete n directorul drivers pe CD, n funcie
de sistemul de operare folosit.
36
3.2.3
37
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
void main() {
}
void functie() {
}
void main() {
functie();
}
38
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.
Declararea variabilelor se face punnd naintea numelui ales tipul de date. La declararea
variabilelor se poate specifica i valoarea iniial a acestora.
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
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};
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
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
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
asm {
MOVLW 10
MOVLW _myvar
MOVLW 0
MOVLW _myvar+1
}
42
3.2.6
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
43
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);
}
}
3.2.8
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
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.
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
3.2.9
46
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);
47
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
49
TRISC.CS_PIN = 0;
TRISC.LD_PIN = 0;
}
void DAC_Output(unsigned int valueDAC) {
char temp;
PORTC.CS_PIN = 0;
PORTC.LD_PIN = 0;
while (1) {
// Programul principal
DAC_Output(value++);
if (value > 4095)
value = 0;
Delay_ms(5);
}
}
3.2.11
50
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
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
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_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
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%.
n fig. 3.23 s-a nregistrat semnalul de ctre un osciloscop setat pe o frecven foarte mare.
54
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.
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
n figura 3.25 se pot observa toi biii registrului T1CON. Pentru descriei mai detaliate se va
consulta manualul mikroC dsPIC.
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
}
57
}
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)
;
Capitolul IV
58
- 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:
-
4.5Principiul realizrii
59
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:
K p Te
Ti
e (t )
K p TD
Te
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.
60
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
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.
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
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.
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
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
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
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
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.
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
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
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.
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
F4
F5
F6
F7
2
7
6
4
Nu s-a folosit pinul 3 al portului F deoarece acesta era destinat pentru a patra coloan a unei
tastaturi numerice 4x4.
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
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
Plac de dezvoltare
B 10 analog-numeric
B 12 analog-numeric
D 0 PWM
D1 PWM
69
4.3.3
Lansarea n execuie
70
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.
Codul folosit pentru realizarea ntregului ansamblu: interfa, regulator, conectare este:
71
}
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
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
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
75
// Initializare PWM
- Bibliografie 1. Marin, Constantin, Structuri i legi de reglare automat, Ed. Sitech, Craiova, 2005;
76
77