microcontrolerul pic16f877

Page 1

Cuprins: Capitolul 1 : PROIECTAREA SISTEMELOR DE REGLARE A DEBITELOR 1.1 Noţiuni introductive.................................................................................................3 1.2 Inerţia obiectului reglat. .........................................................................................4 1.3 Inerţia traductoarelor de debit................................................................................7 1.4 Neliniarităţi în sistemele de reglare a debitului.....................................................8 1.5 Consideraţii privind alegerea regulatorului de debit............................................8 Capitolul 2 : ACORDAREA PRACTICĂ A LEGILOR DE REGLARE 2.1 Relaţii de acordarea a regulatoarelor tipizate............................................................10 2.1.1 Acordarea regulatoarelor după metoda Nichols....................................................10 2.1.2 Acordarea regulatoarelor dupa metoda Oppelt......................................................12 2.1.3 Acordarea regulatoarelor după metoda Chien-Hrones-Reswick..........................12 2.1.4 Acordarea regulatoarelor după metoda Kopelovici...............................................14 2.1.5 Acordarea regulatoarelor după metoda Cohen şi Coon ......................................15 2.1.6 Acordarea regulatoarelor după metoda Pessen....................................................16 2.1.7 Acordarea regulatoarelor după metoda Haazebroeck-Warden............................16 2.1.8. Acordarea regulatoarelor după metoda Grirrten-Haalman..................................17 2.2. Metode practice de acordare a regulatoarelor, direct pe instalaţie.......................18 2.2.1. Acordarea regulatoarelor cu metoda Ziegler-Nichools.......................................18 2.2.1.1. Acordarea regultoarelor PI.....................................................................18 2.2.1.2. Acordarea regultoarelor PD...................................................................18 2.2.1.3. Acordarea regultoarelor PID..................................................................19 2.2.2. Acordarea regultoareîor cu metoda Hokushin......................................................19 2.2.2.1. Acordarea regultoareîor PI......................................................................19 2.2.2.1. Acordarea regultoareîor PID...................................................................19 Capitolul 3: MICROCONTROLERUL PIC16F877 3.1 Introducere în lumea microcontrolerelor .................................................................21 3.2 Istoria microcontrolerelor............................................................................................21 3.3 Microcontrolerul contra microprocesorul .................................................................22 3.4 Registri..........................................................................................................................24 3.5 Funcţia Registrul Special ( SFR )...............................................................................24 3.6 Porturi de intrare / ieşire .............................................................................................25 3.7 Unitatea de memorie ...................................................................................................26 3.7.1 Read Only Memory – ROM .......................................................................................27 3.7.2 ROM mascat (Masked ROM) ...................................................................................27

1


3.7.3 One Time Programmable ROM (OTP ROM). .......................................................27 3.7.4 UV Erasable Programmable ROM (UV EPROM)..................................................28 3.7.5 Memoria Flash (Flash memory)...........................................................................28 3.7.6 Memorie cu acces aleator (RAM) .......................................................................28 3.7.7 Electric Erasable Programmable ROM (EEPROM)............................................29 3.8 Interuperea................................................................................................................29 3.9 Unitatea procesor central (CPU) ............................................................................29 3.9.1 Instruction Decoder .............................................................................................30 3.9.2 Unitatea aritmetică logică (ALU) .........................................................................30 3.9.3 Acumulatorul SFR ................................................................................................30 3.10 Magistrala................................................................................................................31 3.11 Comunicarea serială ............................................................................................31 3.12 Rata baud (Baud Rate )..........................................................................................32 3.13 Oscilator ..................................................................................................................34 3.14 Circuitul de alimentare...........................................................................................34 3.15 Resetarea PIN .........................................................................................................35 3.16 Timere / Contoare ...................................................................................................35 3.17 Convertor analogic-digital......................................................................................39 3.18 Arhitectura internă ...............................................................................................40 3.19 Microcontrolerul PIC...............................................................................................44 Capitolul 4: Sistemul de reglare a debitului 4.1 Placa de dezvoltare EasyPIC3.................................................................................48 4.1.1 Introducere................................................................................................49 4.1.2 Comutator ( Switch).................................................................................49 4.1.3 Jumper......................................................................................................51 4.1.4 Socketul MCU...........................................................................................52 4.1.5 Led.............................................................................................................53 4.1.6 Comutatoarele pushbutton......................................................................54 4.1.7 Ecranul LCD..............................................................................................55 4.1.8 Intrarea convertorului A-D.......................................................................56 4.1.9 Direct port access....................................................................................57 4.2 Instalaţia Labvolt.....................................................................................................58 4.2.1 Studiul instalaţiei Labvolt de control a debitului..................................58 4.2.2 Instalaţia de control a proceselui de temperatură / debit....................59 4.2.3 Caracteristicile proceselor de circulaţie a aerului şi schimbului de căldură prin instalaţie.......................................................................................61 4.2.4 Calibrarea traductoarelor de debit şi temperatură...............................62 4.2.5 Conducerea proceselor în buclă deschisă............................................63 4.2.6 Principiile de bază ale conducerii proceselor în buclă închisă...........65 4.3 Program....................................................................................................................67 Bibliografie.....................................................................................................................77

2


CAPITOLUL 1 PROIECTAREA SISTEMELOR DE REGLARE A DEBITELOR 1.1 Noţiuni introductive Reglarea debitului pare la prima vedere o problemă extrem de simplă, deoarece mărimea de ieşire a procesului este un debit iar mărimea de intrare este acelaşi debit şi ca atare funcţia de transfer a procesului ar fi egală cu unitatea.

F(s)

F(s) H(s)

Figura 1.1

Ventilatorul face ca aerul să circule prin crearea unei presiuni P 4 foarte mici la ieşirea din tub. Acest lucru face ca presiunea atmosferică de la intrarea tubului, P1, să forţeze circulaţia aerului prin tub. Cu cât viteza ventilatorului este mai mare, cu atât diferenţa de presiune ∆P1 dintre P1 şi P4 este mai mare şi deci cu atât debitul de aer ce va circula prin tub va fi mai mare. Conform legii conservării masei, masa de aer ce intră în tub în orice moment de timp este egală cu masa aerului care părăseşte tubul. Acest lucru implică faptul că debitul de aer este constant. Pentru a menţine un debit constant, viteza aerului trebuie să crească atunci când aerul trece prin tubul Venturi, datorită scăderii secţiunii

3


transversale a canalului. Acest lucru înseamnă că viteza aerului la intrarea tubului Venturi, v1 , este mai mică decât viteza aerului din interiorul acestuia,

v2 . Conform ecuaţiei lui Bernoulli, dacă viteza aerului creşte, atunci presiunea aerului este în descreşte. Acest lucru înseamnă că presiunea aerului pe partea de intrare a tubului Venturi, P 2, este mai mare decât presiunea aerului din tubul Venturi, P 3. Cu cât viteza aerului prin tubul Venturi este mai mare, cu atât presiunea diferenţială ∆P2 va fi mai mare de-a lungul tubului Venturi. Din aceste considerente sistemele de reglare a debitului, faţă de sistemele de reglare ale altor parametri industriali au două particularităţi importante: a) Inerţia obiectului reglat fiind relativ mică, la o modificare a poziţiei organului de reglare, noua valoare a debitului se stabileşte în câteva secunde. Ca atare, caracteristicile dinamice ale sistemului sunt determinate în principal de inerţia elementului de măsură, regulatorului, liniilor de impuls şi ventilului de reglare. În aceste procese durata regimului tranzitoriu este mai mică decât un minut. Dacă este necesară o reglare precisă a debitului, atunci durata regimului tranzitoriu trebuie să fie redusă până la câteva secunde şi deci constantele de timp ale elementelor ce intră în componenţa buclei de reglare trebuie reduse la valoarea minimă posibilă. b) Semnalul de la traductorul de debit conţine un înalt nivel de zgomot, având oscilaţii cu frecvenţe egale sau mai mari decât 1 Hz. 1.2 Inerţia obiectului reglat Se va analiza cazul unei conducte conţinând diafragma de măsură, ventilul de reglare şi de asemenea alte ventile şi mufe de cuplare ce pot fi considerate ca nişte rezistenţe hidraulice.

4


∆P1

∆P2

∆P3

∆P4

∆PV

R1

R2

R3

R4

R5

P2

P1 T

Figura 1.2 Structură de măsurare şi comandă a debitului

Lichidul ce parcurge conducta provine dintr-un rezervor al cărui nivel se va presupune constant, iar presiunea la ieşirea din conductă se presupune egală cu cea atmosferică. Pentru secţiuni de trecere ale ventilului relativ mici, diferenţa de presiune pe ventil nu se modifică şi atunci diferenţa dintre presiunea lichidului în rezervor şi căderea de presiune pe linie, conduce la modificarea vitezei v a fluxului de lichid pe o conductă, de lungime l şi secţiunea A, conform relaţiei: A lρ dv = A( −∆P f ) g dt

unde ρ este greutatea specifică a fluidului. Variaţia presiunii pe linie ∆Pf este o funcţie neliniară de variaţia vitezei fluidului şi poziţia tijei ventilului, dar se poate liniariza în jurul valorilor staţionare ale mărimilor respective:  d(ΔPt )   d(∆Pv )  ∆P f = f (∆v, ∆h ) =  ⋅ Δv +    ⋅ Δh  dv   dh 

(1.2)

în care diferenţa totală de presiune pe conductă P t este : ∆Pt = ∆Pv + ∆P1,2,3,4 + l ∆Pl = (1+ R) l ∆Pl 5

(1.3)


unde : ∆Pv - este diferenţa de presiune pe ventil ∆P1,2,3,4 - suma diferenţelor de presiune pe rezistenţele constante 1,2,3,4 R=

∆Pv + ∆P1.2.3.4 iar Pl este diferenţa de presiune pe un metru liniar de l ⋅ ∆Pl

conductă. Din relaţiile (4.3) şi (4.1) rezultă : d (∆Pl ) d (∆Pv ) lρ dv ⋅ + ( R + 1) ⋅ l ⋅ ∆v = − ∆h g dt dv dh

(1.4)

În cazul curgerilor turbulente, utilizând ecuaţia lui Fenning (vezi A 1,3,4) rezultă: ∆Pl =

λρ 2 v 2 gD

[ Kgf / m 3 ]

şi

∆P1, 2,3,4 =

ζρ 2 v 2g

[ Kgf / m 3 ]

d ( ∆Pl ) λρ = v dv gD

de unde :

din (4.4) rezultă : ρl d (∆F ) gA

dt

+

d ( ∆Pl ) d (∆Pv ) (1 + R )l v⋅ ∆F = − ∆h A dv dh

(1.5)

Adimensionalizând ecuaţia (4.5) (x = ∆F/F0 , u = ∆h/h0) rezultă : ρlF0 dx (1 + R)lF0 d (∆Pl ) d (∆Pv ) ⋅ + ⋅ F = F0 ⋅ x = − h = h0 ⋅ h0 ⋅ u gA dt A dv dh

(1.6)

Ecuaţiile pot fi utilizate sub forma variabilelor de stare notând ieşirea y = x, x' = - Kx x - Ku u

(1.7)

y=x unde :

Kx = −

λF0 (1 + R )h0 (1 + R ) g  d (∆Pl )  F=F0 = −   ρ AD  dv 

6


Ku = −

gAh0  d (∆Pv )  A2 D  d ( ∆Pv )  h =h0 = −     h =h0 2 lρF0  dh  λlF (1 + R ) ρ  dh 

(1.8)

0

sau, sub forma funcţiei de transfer, prin efectuarea transformatei Laplace în (4.5) în condiţii iniţiale nule : d (∆P1 )   gA ⋅ h =h0   ρ dx ⋅ s + 1 ⋅ ∆X ( s ) = − ∆U ( s) (1.9)  d (∆P1 )  g (1 + R) d (∆P1 )  ρ (1 + R) F = F0 F = F0   dv dv

Din (4.7) rezultă funcţia de transfer a procesului :

H ( s) =

unde :

T=

1 Kx

∆U ( s ) K = ∆X ( s ) 1 + Ts

;

(1.10)

K = −K u

(1.11)

Constanta de timp pentru o conductă cu diametrul de 50 mm şi viteza lichidului de 1,5 m/s este de circa 1,6 sec. dacă R = 0. Pentru instalaţiile industriale această constantă de timp variază între 0,1 şi 5 sec.

1.3 Inerţia traductoarelor de debit Măsurarea debitului se face de regulă prin intermediul căderii de presiune pe o diafragmă, pe un tub Venturi sau cu traductoare de debit de tip ajutaj. Pentru măsurarea diferenţei de presiune pe diafragmă se utilizează traductoare de presiune diferenţiale bazate pe principiul compensării forţelor, reprezentând dispozitive cu membrană, care transformă diferenţa de presiune în semnal unificat, electric sau pneumatic, iar constanta de timp este relativ mică, sub 1 sec. În cazul în care semnalul unificat este pneumatic cuplarea

7


traductorului şi elementului de execuţie (respectiv a convertorului) la regulator se face prin intermediul liniilor (conductelor) de impuls. Diametrul interior al acestei conducte este standardizat la 6,35 mm sau 9,36 mm iar lungimea variază de la caz la caz în funcţie de poziţia traductorului şi regulatorului. Fiind deci înseriate cu traductorul pe calea de reacţie, inerţia lor joacă un rol important în procesele de reglare a debitului, deoarece ea este mai mare decât inerţia procesului. Astfel, pentru o linie de 150 m constanta de timp este cuprinsă între 3 şi 6 sec. Pentru eliminarea acestor întârzieri se folosesc sau regulatoare electronice sau regulatoare pneumatice montate cât mai aproape de traductor şi de elementul de execuţie.

1.4 Neliniarităţi în sistemele de reglare a debitului Neliniaritatea dependenţei dintre căderea de presiune pe diafragmă şi debit conduce la faptul că la schimbarea debitului, coeficientul de transfer al obiectului se schimbă. Modificarea coeficientului de amplificare al diafragmei, cu debitul, teoretic ar putea fi compensată dacă valoarea efectivă a coeficientului de amplificare al ventilului se va schimba invers proporţional cu debitul. Dar ventile de reglare cu o asemenea caracteristică nu se realizează. Pentru a se obţine un semnal proporţional cu debitul este necesară introducerea unor dispozitive speciale de extragere a radicalului.

1.5 Consideraţii privind alegerea regulatoarelor de debit Orice măsurare de debit este totdeauna însoţită de perturbaţii. Dacă se alege banda de proporţionalitate mai mare aceste perturbaţii sunt atenuate şi se transmit deci automat ventilului de reglare. Dar pentru valori aleatoare ale perturbaţiilor se poate întâmpla ca ventilul de reglare să fie acţionat într-o asemenea măsură încât să producă variaţii reale ale debitului. 8


De aceea, în cazurile în care reglarea de debit este puternic influenţată de perturbaţii se preferă introducerea unui regulator neliniar care să nu sesizeze variaţiile mici ale debitului cauzate de perturbaţii şi se obţine în acest caz o deplasare mai lină a tijei ventilului de reglare şi o mai bună stabilitate a buclei de reglare.

CAPITOLUL 2

9


Acordarea practică a legilor de reglare 2.1 Relaţii de acordare a regulatoarelor tipizate În acest capitol se prezintă o serie de relaţii pentru determinarea valorilor optime ale parametrilor regulatoarelor tipizate, in raport cu diferite criterii , considerând parţile fixe ale sistemului cu sau fara timp mort, de ordinul 1 sau 2 si câteva cazuri particulare de ordin mai mare.

2.1.1 Acordarea regulatoarelor după metoda Nichols

Se determină experimental KRlim şi Tlim. Pentru aceasta având T i = ∞ şi Td = 0 , se măreşte factorul de proporţionalitate K R până apar oscilaţii întreţinute. Această valoare a lui KR este KR

lim

, ce înseamnă o bandă de

proporţionalitate BPlim %, iar perioada oşcilaţiilor este Tlim.

Regulator P :

Regulator PI:

KR=0.50*KR lim ;

KR=0.45* KR lim ;

BP%=2*BPlim%

BP%=2.22*BPlim%

Ti = 0.85*Tlim

Regulator PID:

KR=0.75*KR lim ; Ti = 0.60*Tlim Td=0.10*Tlim

10

BP%=1.33*BPlim%


Regulator PID cu factorul de interdependeţa 1+ KR=0.6*KR lim ;

Td , ( q=1) Ti

BP%=1.66*BPlim%

Ti = 0.50*Tlim Td=0.12*Tlim

Pentru instalaţia cu funcţia de transfer de forma :

Hf(s) =

Kf T f s +1

* e- τ

s

Parametrii de acordare sunt :

Regulator P: KRopt=

TF

τ

Regulator PI: KRopt=0.9*

TF

τ

TIopt=3.3* τ

;

Regulator PID: KRopt=(1.2 ÷ 2)*

TF

τ

;

TIopt=2* τ ;

Pentru Ti/Td = 4 zerourile sunt reale si egale.

11

Td=0.5*

τ


2.1.2 Acordarea regulatoarelor dupa metoda Oppelt

FuncţIa de transfer a instalaţiei este : K F * e −τs HF(s)= TF s + 1

Parametrii de acordare sunt:

Regulator P: KR=

TF K Fτ

Regulator PI: KR=0.8*

T 1 * F ; KF τ

Ti=3* τ

T 1 * F ; KF τ

Td=0.25* τ

T 1 * F ; KF τ

Ti=2* τ ;

Regulator PD: KR=1.2* Regulator PID: KR=1.2*

Td=0.42* τ

2.1.3 Acordarea regulatoarelor după metoda Chien-Hrones-Reswick Funcţia de transfer a instalaţiei este: HF(s)=

KF e −τs T F s +1

Relaţii de acordare pentru răspunsul la optim la variaţia mărimii impuse.

12


Sunt indicate pentru sistemele de urmărire: Tip regulator

P

Pentru obţinerea unui regim

Pentru obţinerea unui suprareglaj cu

aperiodic cu durata minimă

durata minimă a regimului tranzitoriu

KR=0.3*

PI

T 1 * F ; KF τ

KR=0.35*

T 1 * F ; KF τ

Ti=1.2* τ PID

KR=0.6*

KR=0.7*

T 1 * F ; KF τ

KR=0.6*

T 1 * F ; KF τ

Ti=1.0* τ

T 1 * F ; KF τ

KR=0.96*

Ti=1.0* τ ; Td=0.5* τ

T 1 * F ; KF τ

Ti=1.35* τ ;

Td=0.47* τ

Relaţii de acordare pentru răspunsul optim al variaţiei perturbaţiei Sunt indicate pentru sistemele de stabilizare. Tip

Pentru obţinerea unui regim

Pentru obţinerea unui suprareglaj cu

regulator

aperiodic cu durata minimă

durata minimă a regimului tranzitoriu

P PI

KR=0.3*

T 1 * F ; KF τ

KR=0.7*

T 1 * F ; KF τ

KR=0.6*

T 1 * F ; KF τ

KR=0.7*

T 1 * F ; KF τ

Ti=4.0* τ PID

KR=0.95*

Ti=2.3* τ T 1 * F ; KF τ

KR=1.2*

Ti=2.4* τ ; Td=0.42* τ

T 1 * F ; KF τ

Ti=2.0* τ ;

Td=0.42* τ

2.1.4 Acordarea regulatoarelor după metoda Kopelovici Instalaţia are funcţia de transfer : K F * e −τs HF(s)= TF s + 1

13


Relaţiile Kopelovici permit acordarea optimă la perturbaţii. Se obţin trei tipuri de comportări: 1.

Proces tranzitoriu aperiodic cu durată minimă

2.

Proces tranzitoriu oscilant cu v 2=0.2*v1 şi durată minimă a primei

oscilaţii 3.

Proces tranzitoriu care minimilizează integrala erorii I 2l ∞

2 I21= ∫ε (t ) * dt 0

Tip

Proces tranzit

Pentru obţinerea

Pentru obţinerea

regulator aperiodic cu durată

v2=0.2v şi durată

valorii minime a

minimă

minimă a primei

integralei I2l

oscilaţii I

K R 2.222 1 = * KF TF Ti

P PI

K R 0.588 1 = * KF TF Ti

KR=

0.3 TF * ; KF τ

KR=

0.7 TF * ; KF τ

KR=

0.9 TF * ; KF τ

KR=

0.6 TF * ; KF τ

KR=

0.7 TF * ; KF τ

KR=

1. 0 T F * ; KF τ

Ti=0.8* τ + 0.5*TF PID

K R 0.588 1 = * KF TF Ti

KR=

0.95 TF * ;’ KF τ

Ti=1.0* τ + 0.3*TF KR=

1.2 T F * ; KF τ

Ti=1.0* τ + 0.35*TF KR=

Ti=2.4* τ ; Td=0.4*

Ti=2.0* τ ; Td=0.4*

Ti=1.3* τ ; Td=0.5*

τ

τ

τ

La alegerea modului de reglare se are in vedere că dacă :

τ TF

τ TF

1.4 TF * ; KF τ

<1

=>

Reglare continuă

<0.2

=>

Reglare bipoziţională

14


τ TF

>1

=>

Reglare numerică

2.1.5 Acordarea regulatoarelor după metoda Cohen şi Coon Se consideră variaţia treaptă deplasată la ieşirea sistemului . Partea fixă are funcţia de transfer : K F * e −τs HF(s)= TF s + 1

Se obţine un răspuns oscilant cu amortizarea ¼ , cu abaterea maximă minimă care minimizează integrala erorii absolute. Tip

KR*KF

Ti

Td

P

1 TF + 3 τ

____________

_____________

PD

1 5 T + + F 6 4 τ

____________

PI

1 9 TF + + 12 10 τ

τ*

30TF + 3τ 9TF + 20τ

PID

1 4 + 4 3

τ*

32TF + 6τ 13TF + 8τ

regulator

q=0

τ*

6TF − 2τ 22TF + 3τ

_____________

τ*

4TF 11TF + 2τ

2.1.6 Acordarea regulatoarelor după metoda Pessen Se determină KR lim şi Tlim ca in cazul metoden Nichols. Se recomandă valorile din tabelul de mai jos.

Tip regulator

KR

PID

5 * KR lim 8

q=0

Ti

5 * Tlim 6 15

Td

1 * Tlim 5


PID

q=1

3 * KR lim 8

1 * Tlim 2

1 * Tlim 3

2.1.7 Acordarea regulatoarelor după metoda Haazebroeck-Warden Se consideră variaţia treaptă a mărimii de referinţă şi se alege drept criteriu pentru instalaţia tehnologică cu autoreglare , minimul integralei erorii pătratice. ∞

2 I21= ∫ε (t ) * dt 0

unde ε

(t )

este eroarea sistemului de reglare, iar pentru procese fără

autoreglare minimul integralei duble. ∞

∞t

0

0

2 I22= ∫ε1 (t ) * dt , ε1 (t ) =

∫ ε (t ) * dt

Acordarea se referă numai la regulatoare PI şi instalaţii cu funcţia de transfer K F * e −τs HF(s)= TF s + 1

Se recomandă următoarele valori :

τ

/ TF

τ

KR*KF

Ti /

0.2

4.000

7.550

0.3

2.770

5.130

0.5

1.790

3.250

0.7

1.370

2.450

16


1.0

1.070

1.880

1.5

0.840

1.400

2.0

0.730

1.180

3.0

0.630

0.955

5.0

0.550

0.810

0.500

0.625

2.1.8. Acordarea regulatoarelor după metoda Grirrten-Haalman Se ţine seama de factorul r, denumit de autorii metodei controlabilitate şi efinit prin relaţia: r =eω0

τ

unde ω0 este pulsaţia de frângere, la care caracteristica logaritmică a zgomotului începe să scadă cu 20 dB/dec. Criteriul de optimizare constă în minimizarea integralei erorii pătratice. Se consideră pentru instalaţie o funcţie de transfer de forma HF τ (s)=H(s)*e τs unde H(s) este partea cu faza minimă a expresiei funcţiei de transfer a procesului. Grinten ajunge la concluzia că regulatorul optim este de forma: HR(s)=

r * H −1 ( s ) 1 − r * e −τs

Efectul reglării este maxim (100%) când r=l şi are loc când procesul nu are timp mort (x = 0) sau când perturbaţiile se aplică în punctul de referinţă Se observă că fiecare tip de regulator are eficacitatea maximă numai pentru un anumit proces.

17


Se recomandă valorile parametrilor determinate de Grinten şi Haalman pentru regulatoare cu q = 0 în cazul r = 1 (variaţia mărimii de intrare), criteriul fiind minimizarea erorii pătratice. 2.2. Metode practice de acordare a regulatoarelor, direct pe instalaţie 2.2.1. Acordarea regulatoarelor cu metoda Ziegler-Nichools Se bazează pe criteriul integralei pătratice la o perturbaţie treaptă aplicată la ieşire. 2.2.1.1.

Acordarea regultoarelor PI

Se aplică procedura de testare Ziegler-Nichools având numai regulator P şi se determină în modul cunoscut valoarea KR lim Se reţine valoarea: KR =0.45*KR lim .Se modifică apoi Ti până la apariţia oscilaţiilor, iar acordarea regulatorului se face la o valoare Ti de 3 ori mai mare ca aceasta din urmă. 2.2.1.2.

Acordarea regultoarelor PD

Cu Td = 0 se creşte KR la apariţia oscilaţiilor (KR lim). Se măreşte apoi Td . Dacă răspunsul devine mai prost, înseamnă că nu este nevoie de derivare; Dacă procesul se stabilizează se măreşte T d până ce oscilaţiile revin. Acordarea regulatorului se face luând Td de 3 ori mai mic decât această ultimă valoare. Se setează KR=0.45*KR lim 2.2.1.3.

Acordarean regultoarelor PID

Se determini mai întâi Td ca la regulatorul PD. După aceea se micşorează Ti până apar oscilaţiile. Acordarea se face luând Ti de 3 ori mai mare decât această valoare.

18


2.2.2. Acordarea regultoareîor cu metoda Hokushin Această metodă foloseşte ajustări succesive ale parametrilor. 2.2.2.1. Acordarea regultoareîor PI Se fixează banda de proporţionalitate BP şi timpul de integrare T, la maxim. Se micşorează BP până la apariţia oscilaţiilor în proces. Se măreşte BP că să dispară oscilaţiile, păstrându-se o mică rezervă. Se micşorează Ti până ce oscilaţiile apar (de data aceasta mai lente). Se măreşte Ti astfel ca să dispară oscilaţiile şi să existe o anumită rezervă. 2.2.2.1. Acordarea regultoareîor PID Se fixează BP şi Ti la maxim, iar timpul de derivare Td la minim. Se micşorează BP până apar oscilaţiile. Se măreşte Td până ce oscilaţiile dispar. Se micşorează din nou BP, iar după reapariţia oscilaţiilor se măreşte Td pentru ca oscilaţiile să dispară Td. Procedeul se repetă până ce oscilaţiile nu se mai disting prin mărirea lui Td. Atunci se măreşte BP astfel ca să existe o rezervă contra apariţiei oscilaţiilor. Se micşorează Ti până ce apar oscilaţii mai lente decât cele precedente. Se măreşte Ti până dispar oscilaţiile, apoi se fixează Ti la o valoare care asigură o anumită rezervă contra oscilaţiilor.

19


CAPITOLUL 3 MICROCONTROLERUL PIC16F877 3.1 Introducere în lumea microcontrolerelor Situaţia în care ne gasim azi în domeniul microcontrolerelor are rădăcinile în dezvoltarea tehnologiei de circuite integrate.

Acest lucru a

permis stocarea a sute de mii de tranzistori într-un singur cip. Aceasta a fost 20


o precondiţie pentru fabricarea microprocesoarelor. Primele calculatoare au fost făcute prin adăugarea de periferice ca memoria, linii de intrare / ieşire, cronometre şi altele asemanatoare. Creşterea în continuare a pachetului de densitate a dus la crearea unui circuit integrat, care conţinea atât procesor cât şi perifericele.

Acesta este modul în care primul cip conţinând un

calculator mai târziu s-a cunoscut ca un microcontroler.

3.2 Istoria microcontrolerelor În 1969, o echipa de ingineri japonezi de la BUSICOM a venit in Statele Unite cu o cerere de design de circuite integrate, dupa propriul lor plan. Cererea a fost trimisa la INTEL şi Marcian Hoff s-a ocupat de proiect acolo. Având experienţa în lucrul cu un computer, PDP8, el a venit cu ideea să sugereze soluţii fundamental diferite în locul designului prestabilit. Aceasta soluţie presupunea ca operaţiunea circuitului integrat urma sa fie determinată de programul stocat în circuit. Însemna ca aceasta configuraţie urma să fie mai simpla, dar ar presupune mult mai multa memorie decat proiectul propus de inginerii japonezi. Dupa o perioada, chiar daca inginerii japonezi incercau să gasească o solutie mai simplă, ideea lui Marcian a câstigat şi asa a luat naştere primul microprocesor. Federico Faggin a adus un mare aport la procesul de a transforma o idee intr-un produs finit. La noua luni dupa ce l-au angajat, cei de la INTEL au reusit sa creeze un astfel de produs din conceptul original. În 1971 INTEL a obţinut dreptul sa vânda acest circuit integrat. Inainte de asta Intel a cumparat licenta de la BUSICOM care nu stiau ce comoara deţineau pana în acel moment. În acel an, un microprocesor 4004 a aparut pe piaţă. Acesta a fost primul procesor de 4 biti cu viteza de 6000 de operaţii pe minut. Nu mult dupa aceasta, compania Americana CTC a cerut de la Intel si Texas 21


Instruments permisiunea sa produca un microprocesor de 8 biti pentru a fi aplicat in terminale. Chiard aca CTC a renuntat la acest proiect, Intel si Texas Instruments au continuat sa lucreze la microprocesor si in aprilie 1972 primul microprocesor de 8 biti, denumit 8008, a aparut pe piata. Putea sa proceseze 16 kb de memorie si avea 45 de instructiuni si viteza de 300000 de operatiuni pe secunda. Acest microprocesor a fost predecesorul tuturor microprocesoarelor de astazi. Intel a continuat sa il dezvolte si in aprilie 1974 a lansat microprocesorul de 8 biti, denumit 8080. Putea sa foloseasca 64 kb de memorie, avea 75 de instructiuni si pretul initial a fost de 360$.

3.3 Microcontrolerul contra microprocesorul Un microcontroler diferă de la un microprocesor în multe feluri. Prima şi cea mai importantă diferenţă este modul lor de funcţionare. Chiar dacă microprocesoare sunt considerate a fi maşini de calcul puternice , punctul lor slab este că ele nu sunt ajustate pentru a comunica cu echipamente periferice. Pur şi simplu, pentru a comunica cu mediul periferic, microprocesorul trebuie să utilizeze circuite specializate adăugate ca cipuri externe. Pe scurt microprocesoare sunt inima calculatoarelor. Asa a fost la inceput şi aşa a ramas şi în ziua de astăzi.

22


Fig. 3.1 Microcontroler contra microprocesor Pe de altă parte, microcontrolerul este proiectat pentru a îndeplini toate acestea. Nu este necezar de nici un fel de componenta exterioara specializata pentru punerea sa în aplicare pentru că toate circuite periferice sunt deja integrate în acesta. Se economiseşte timp şi spaţiu necesar pentru a concepe un aparat.

3.4 Registri

23


Un registru sau o celula de memorie este un circuit electronic care poate memora starea unui octet.

Fig. 3.2 Registru 3.5 Funcţia Registrul Special ( SFR ) În plus faţă de registre, care nu au nici o funcţie specială şi predeterminată, fiecare microcontroler are un număr de registre a căror funcţie este predeterminată de către producător. Biţi sunt conectaţi la circuite interne, cum ar fi cronometre, A / D Converter, oscilatoare şi altele, ceea ce înseamnă că acestea sunt în mod direct în comandă a operaţiunii de microcontroler.

24


Fig. 3.3 Funcţia Registrul Special 3.6 Porturi de intrare / ieşire În scopul de a face microcontrolerul util, acesta trebuie să fie conectat la circuite electronice suplimentare , adică periferice. Fiecare microcontroler are unul sau mai mulţi registrii (numite "porturi") conectate la pinii microcontrolerului. De ce de intrare / ieşire? Pentru că funcţia pinului se poate schimba cum dorim.

De exemplu, să presupunem că dorim ca

aparatul sa activeze trei semnale de LED-uri şi simultan să monitorizam cinci senzori sau butoane push. Unele din porturi trebuie să fie configurate astfel încât să existe trei ieşiri (conectate la LED-uri) şi cinci intrări (conectate la senzori). Aceasta se efectuează pe partea de soft, ceea ce înseamnă că funcţia pinilor poate fi schimbată în timpul funcţionării.

25


Fig. 3.4 Porturi de intrare/ieşire Una dintre cele mai importante specificaţii ale proturilor de intrare / ieşire (I / O) este maximul de curent pe care il pot manipula. De obicei, fiecare port I / O este sub controlul unui alt SFR, ceea ce înseamnă că fiecare bit de registru, determină starea corespunzătoare fiecăricărui pin al microcontrolerului. De exemplu, scriind 1 logic pe un bit de control al SFR-ului, prinul apropiat este configurat automat ca intrare. Aceasta înseamnă că tensiunea la pin poate fi citită ca 0 sau 1 logic. Altfel, scriind zero , prinul apropiat este configurat automat ca iesire .

3.7 Unitatea de memorie Memoria este o parte a microcontrolerului folosită pentru stocarea datelor. Cel mai uşor mod de a explica este compararea sa cu un dulap de acte cu multe sertare. Să presupunem, că sertarele sunt marcate clar, astfel

26


încât sunt uşor de accesat. Este usor de ajuns pentru a afla continutul de sertar citind eticheta de pe partea din faţă a sertarului.

Fiecărei adrese de memorie îi corespunde o locaţie de memorie. Conţinutul oricărei locaţii devine cunoscută prin adresare. Memoria poate fi scrisă sau citită. Există mai multe tipuri de memorie în microcontroler. 3.7.1

Read Only Memory – ROM ROM (Read Only Memory) este folosit pentru a salva definitiv

programul executat. Dimensiunea programului care poate fi scris depinde de dimensiunea acestui memorie.

Azi microcontrolere folosesc frecvent

abordarea 16-bit, ceea ce înseamnă că au posibilitatea de a adresa până la 64 KB de memorie, adică 65535 locatii. Există mai multe tipuri de ROM: 3.7.2ROM mascat (Masked ROM) . Microcontrolere care conţin aceast ROM sunt rezervate pentru cei mai mari producători. Programul este încărcat în chip de către producător. Dacă se produce pe scara largă preţul este foarte mic. 3.7.3

One Time Programmable ROM (OTP ROM).

27


În cazul în care microcontrolerul conţine această memorie , puteţi descărca un program în acestă memorie, dar procesul este “one-way ticket ", în sensul că aceasta se poate face doar o singură dată descărcarea. Dacă o eroare este detectată după descărcare, singurul lucru pe care îl putem face este de a descărca un alt program bun pe un alt chip.

3.7.4

UV Erasable Programmable ROM (UV EPROM). Procesul de fabricaţie şi caracteristicile acestei memorii sunt complet

identice cu OTP ROM. Cu toate acestea, pachetul acestui microcontroler are o "fereastra" pe partea superioară. Aceasta permite suprafeţei de siliciu a chipului din interior să fie luminată de o lampă UV, care şterge în mod eficient programul din ROM. 3.7.5

Memoria Flash (Flash memory). Acest tip de memorie a fost inventat în anii 80, în laboratoare INTEL şi

a fost reprezentată ca succesor la UV EPROM.

Din conţinutul acestei

memorie poate fi scris şi şters, practic, de un numar nelimitat de ori. Microcontrolerele . Din cauza popularitatii, cele mai multe microcontrolere sunt fabricate în versiun flash . Deci, dacă aveţi de gând să cumpăraţi un microcontroler, tipul căutat este categoric Flash! 3.7.6

Memorie cu acces aleator (RAM) . Acesta este utilizată pentru stocarea temporară a datelor şi a

rezultatelor intermediare create şi utilizate în timpul operaţiuniilor efectuate

28


de microcontroler. De exemplu, în cazul în care efectuează un program de plus (de ce), este necesar să existe un registru care reprezintă ceea ce în viaţa de zi cu zi este numit "suma". În acest scop, unul din registrele în RAM este numit "suma" şi utilizat pentru stocarea rezultatele plus. 3.7.7

Electric

Erasable

Programmable

ROM

(EEPROM)

Conţinutul EEPROM pot fi schimbat în timpul funcţionării (similar cu RAM), dar datele rămân permanent salvate chiar dacă sursa de alimentare se stinge (similar cu ROM). În consecinţă, un EEPROM este adesea utilizat pentru a stoca valori, create în timpul funcţionării, care trebuie să fi permanent salvate.

3.8 Interuperea Cele mai multe programe întrerup în mod regulat programul de executie. Scopul acestui microcontroler este în principal de a reacţiona la schimbările din jurul său.

De exemplu, când apasăm un buton pe un

controler de la distanţă, microcontrolerul va înregistra şi va răspunde la comandă, prin schimbarea unui canal. Microcontrolerul a învăţat în cursul evolutiei sale un truc. În loc de a verifica fiecare PIN, microcontrolerul delegat de "specialist" la "aşteptaţi problema" va reacţiona numai atunci când se întâmplă ceva care merită atenţie. Semnalul care informeaza procesorul central despre un astfel de caz este numit întrerupere. 3.9 Unitatea procesor central (CPU) După cum sugerează denumirea sa, aceasta este o unitate care monitorizează şi controlează toate procesele din interiorul microcontroler. Se compune din mai multe subunitati mici, dintre care cele mai importante sunt:

29


3.9.1 Instruction Decoder Este o parte a electronicii care recunoaste programul de instalare şi rulează alte circuite pe baza acestuia. "setul de instrucţiuni", care este diferit pentru fiecare familie a microcontrolerelor exprimă abilitaţile acestui circuit.

3.9.2 Unitatea aritmetică logică (ALU) Efectuează toate operaţiile matematice şi logice asupra datelor.

3.9.3 Acumulatorul SFR este o strânsă legătură cu modul de funcţionare al ALU. Este un fel de birou de lucru utilizat pentru stocarea tuturor datelor pentru operaţiunile care ar trebui să fie realizate (plus, schimbare / mutare etc.) De asemenea, magazinele de rezultatele sunt gata pentru a fi utilizate în prelucrarea ulterioară. Unul din SFR-uri, a cerut o stare Register (PSW), care este strâns legată de acumulator. Acesta arată la un moment dat de "statutul" de un număr stocat în acumulator ( Numărul este mai mare sau mai mic decât zero, etc.)

Fig. 3.5 Unitatea procesor central - CPU

30


3.10 Magistrala Fizic, magistrala este formată din 8, 16 sau mai multe fire. Există două tipuri de magistrale: magistrala adreselor şi magistrala datelelor. Această magistrală de adresă este formată din cât mai multe rânduri, după cum este necesar pentru abordarea memoriei. Este folosit pentru a transmite adresa de la CPU la memorie. Magistrala de date este la fel de mare ca datele, în cazul nostru este de 8 biţi. Acesta este utilizat pentru a conecta toate circuitele din interiorul microcontrolerului. 3.11 Comunicarea serială Conexiunea paralelă între microcontroler şi periferice prin porturile de intrare / ieşire este soluţia ideală pentru distanţe scurte, până la câteva metri. Cu toate acestea, în alte cazuri - atunci când este necesar să se stabilească comunicarea între două dispozitive pe distantele mari nu este posibil de a utiliza o conexiune paralelă . În aceste situaţii, comunicarea serială este cea mai bună soluţie.

Fig. 3.6 Comunicarea serială 31


Unul dintre cele mai importante lucruri în ceea ce priveşte comunicarea serială este protocolul, care ar trebui să fie strict respectat. Este un set de reguli care trebuie aplicate pentru ca dispozitivele să poată interpreta corect datele pe care le schimbă reciproc.

Din fericire,

microcontrolerul are grijă automat de acest lucru, astfel încât activitatea de programator / utilizator se reduce la simpla scriere (date care urmează să fie trimise) şi citire (date primite). 3.12 Rata baud (Baud Rate ) Termenul de rată baud este frecvent utilizat pentru a desemna numărul de biţi pe secundă transferaţi [bps]. Este de remarcat faptul că se referă la octeţi , nu biţi! Acest lucru este, de obicei, cerut de protocol ca fiecare octet sa fie transferat împreună cu mai mulţi biţi de control. Aceasta înseamnă că o serie de date, în byte stream poate fi formată din 11 biţi. De exemplu, în cazul în care rata baud este de 300 bps apoi maxim 37 şi minim 27 bytes pot fi transferaţi pe secundă, care depinde de tipul de conexiune şi de protocol, în uz. Cele mai frecvent utilizate sisteme de comunicare serie, sunt:

3 I2C - este un sistem folosit în cazul în care distanţa dintre microcontrolere este scurtă . Conexiunea este stabilită prin doi conductori , unul este utilizat pentru transferul de date , celălalt este utilizat pentru sincronizare (semnal de ceas). Aşa cum se vede în figura de mai sus, un dispozitiv este întotdeauna masterul. Realizează adresarea unui chip secundar (subordonat) , înainte de începerea comunicării. În acest fel, un microcontroler poate comunica cu dispozitive 112 diferite . Rata baud este, de obicei, 100 Kb / sec (modul 32


standard) sau 10 Kb / sec (modul lent). Sistemele cu rata baud de 3.4 MB / sec au aparut recent. Distanţa între dispozitivele care comunică prin intermediul unui circuit integrat, între magistrale este limitată la câteva metri.

3SPI (Interfaţa magistralei serial periferică) este un sistem de comunicare de serie care foloseşte până la patru conductori (de obicei trei) - unul pentru a primi date, unul pentru trimiterea de date, unul pentru sincronizare şi unul (alternativ) de selectarea aparatului cu care se va comunica. Este conexiune full duplex, ceea ce înseamnă că datele sunt trimise şi primite simultan. Rata baud maximă este mai mare decât în conexiunea I2C . 3.12

UART

(Receptor

/

emiţător

universal

asincronizat)

Această conexiune este asincronă, ceea ce înseamnă că o linie de semnal de ceas de transmisie nu este folosită. În unele situaţii această caracteristică este esenţială (de exemplu, conexiune radio în infraroşu sau valuri de control la distanţă). Din moment ce doar o linie de comunicare este utilizată, atât receptorul şi transmiţătorul funcţioneză la aceeaşi rată predefinită în scopul de a menţine necesară sincronizarea.

Aceasta este o modalitate foarte

simplă de a transfera date din moment ce, practic reprezinta conversia de 8 biţi de date de la paralel la formatul serial . Rata baud nu este mai mare de 1 Mbit / sec.

3 Oscilator

33


Impulsurile care vin din oscilator permit funcţionarea armonică şi sincronă a tuturor circuitelor microcontrolerului. Modul oscilatorului este, de obicei, configurat pentru utilizarea cuarţ cristal sau rezonator ceramic pentru stabilizarea frecvenţei. Mai mult, este posibila, de asemenea, funcţionarea fără elemente de frecvenţă de stabilizare (la fel ca şi oscilatorul RC). Este important de spus că instrucţiunile nu sunt executate la rata impusă de oscilator , ci de câteva ori mai lent. Aceasta se întâmplă deoarece fiecare instrucţiune este executată în mai multe etape. în unele microcontrolere, acelaşi număr de cicluri este necesar pentru a executa orice instrucţiune, în timp ce în altele, timpul de executare

nu este aceeaşi pentru toate

instrucţiunile. În consecinţă, în cazul în care utilizează sistemul cuarţ de cristal, cu o frecvenţă de 20 MHz, timp de execuţie a unei instrucţiuni nu este 50ns, ci 200, 400 sau 800 ns, în funcţie de tipul unitatăţii microcontrolerului (MCU 0 Microcontroller unit ). 3.14 Circuitul de alimentare Există două lucruri care merită atenţia cu privire la circuitul de alimentare al microcontrolerului: 3.15 Resetarea PIN

34


Este, de obicei, marcată ca MCLR (Master Clear Resetare) şi serveşte pentru resetarea externă a microcontrolerului prin aplicarea logica zero (0) sau unu (1), în funcţie de tipul de microcontroler. În cazul în care brown out-ul nu este construit în interiorul circuitului, un circuit extern simplu de brown out de resetare poate fi conectat la acest PIN.

3.16 Timere / Contoare Circuitul microcontroller oscilator utilizează cuarţ de cristal pentru funcţionarea sa. Chiar dacă nu este cea mai simplă soluţie, există mai multe motive să-l folosească.

Fig. 3.7 Timers / Contoare Anume, frecvenţa unui astfel de oscilator este foarte precis definită şi stabilă, impulsurile genereate sunt întotdeauna la aceeasi latime, ceea ce

35


le face ideale pentru măsurarea timpului. Astfel de oscilatoare sunt utilizate în ceasuri cu cuarţ . Dacă este necesară măsurarea timpul între două evenimente, este suficient să se contorizeze numarul de impulsuri provenite din acest oscilator. Asta este exact ceea ce face timerul. Cele mai multe programe utilizează aceste miniaturale electronice "stopwatches". Acestea sunt registrii speciali pentru fun.(SFR)cu 8 sau 16biţi,conţinutul acestora este incrementat în mod automat de fiecare când primeste semnal. Odată ce un registru este complet încărcat este generată o intrerupere! Daca registrul de timp foloseste un oscilator cu cuarţ intern, atunci este posibilă măsurarea timpului dintre două evenimente (în cazul în care valoarea registrului este T1 la momentul de început al măsurării, şi T2 în momentul in care se finalizează masurarea, apoi timpul trecut este egal cu rezultatul scaderii T2-T1). În cazul în care registrii utilizaţi primesc impulsuri dintr-o sursă externă, atunci un astfel de timer este transformat într-un contorizator. Aceasta este doar o simplă explicaţie a operaţiunii în sine. Cum funcţionează un timp? În practică, impulsurile care vin de la oscilatorul cu cuarţ sunt genrate pentru fiecare maşină de ciclu, direct sau prin intermediul unui prescalar adus în circuit care incrementeza numărul în registrul de timp.

36


Fig. 3.8 Timpul de funcţionare Este uşor să se măsoare intervale scurte de timp (până la 256 microsecunde) în modul descris mai sus, pentru că este cel mai mare număr pe care poate să îl conţină un registru. Acest dezavantaj evident poate fi uşor depăşit în mai multe moduri prin utilizarea unui oscilator mai lent, cu mai multi registrii de biţi, un prescalar sau o întrerupere. Primele două soluţii au unele puncte slabe, deci este de preferat să folosiţi un prescalar sau o interupere. Utilizarea unui prescalar în timpul de operare Un prescalar este un dispozitiv electronic folosit pentru a reduce o frecvenţă la un factor pre-determinat. Rezulta că, pentru a genera o un impuls pe ieşire, este necesara generarea a 1, 2, 4 sau mai multe impulsuri la intrare. Un astfel de circuit este construit in microcontroler şi rata de divizare poate fi schimbat din cadrul programului. Acesta este utilizat atunci când este necesar pentru a masura perioade mai mari de timp.

Fig. 3.9 Utilizarea unui prescalar în timpul de operare Funcţionarea in timpul întreruperii În cazul în care registrul cronometru este format din 8 biţi, cel mai mare număr care pot fi scris in acesta este 255 (pentru registrii de16-biţi

37


numărul maxim este 65.535). Dacă acest număr este depăşit, timeerul va fi în mod automat resetat şi va începe de la zero din nou. Această stare se numeşte overflow. Dacă este activat din cadrul programului, o astfel de supraaglomerare poate provoca o întrerupere, care dă complet noi posibilităţi. De exemplu, starea de registrii folosiţi pentru a număra secundele, minutele sau zilele poate fi schimbată într-o întrerupere de rutină. Întregul proces (cu excepţia întreruperii rutina) este efectuat în mod automat "în fundal", lucru care permite principalelor circuite ale microcontrolerului să realizeze alte operaţiuni. Această cifră ilustrează modul de funcţionarea intreruperii în timp. Întârzieri de arbitrare, cu durata minimă a interferenţei din programul principal de executie, pot fi uşor de obţinute prin atribuirea unei prescalar la timp.

Fig. 3.10 Functionarea intreruperii in timp

Countere

38


În cazul în care un timer furnizeaza impulsurile de intrare în microcontroler PIN atunci se transformă într-o counter. În mod evident, este acelaşi ca lacircuitele electronice. Singura diferenţă este că, în acest caz, impulsurile vin prin porturile şi durata acestora (lăţime) de cele mai multe ori nu este definita. Acesta este motivul pentru care nu pot fi utilizate pentru măsurarea timpului, dar pot fi utilizate pentru a măsura orice altceva: produse pe o linie de asamblare, numărul de rotatie de axă, pasageri etc.(în funcţie de senzorul în utilizare). 3.17 Convertor analogic-digital Semnalele externe sunt, de obicei, fundamental diferite de ceea ce intelege microcontrolerul(unu şi zero), aşa că ele trebuie să fie convertite pentru ca microcontroler sa le înţeleaga. Un analog la digital este un convertor circuite electronice care transformă continuu semnale discrete in numere digitale. Acest modul este folosit pentru a transforma, prin urmare, valoarea unui analog în număr binar şi îl înainteaza procesorului pentru prelucrarea ulterioară. Cu alte cuvinte, acest modul este folosit pentru introducerea unei tensiuni de măsurare (valoare anaogică). Rezultatul măsurării este un număr (valoare digitală) utilizat şi transformat ulterior în program.

39


Fig. 3.12 A / D Convertor 3.18 Arhitectura internă Toate microcontrolerele actualizate folosesc una din cele două modele de bază de design de arhitectură numite Harvard şi von-Neumann. Pe scurt, acestea sunt două moduri diferite de schimb de date între CPU şi memorie. Arhitectura von Neumann

40


Microcontrolere care folosesc acesta arhitectura au un singur bloc de memorie şi o magistrala de 8-biţi. Deoarece toate datele sunt schimbate prin utilizarea acestor 8 linii, acesa magistrala este supraîncărcată şi comunicarea în sine este foarte lentă şi ineficientă. Procesorul poate citi o instrucţiune de citire / scriere a datelor de la / la memorie. Ambele nu pot apărea, în acelaşi timp, deoarece instrucţiunile date utilizează acelaşi sistem de magistrale Arhitectura Harvard

Microcontrolere care folosesc acesta arhitectura au doua magistrale de date diferite. Una este de 8 biţi largă şi conectează procesorul central la RAM. Cealalta contine mai multe linii (12, 14 sau 16) şi conectează lprocesorul central la ROM. În consecinţă, prcesorul central poate citi o instrucţiune şi efectua accesare a memoriei de date în acelaşi timp. Din moment ce toţi registrii de memorie RAM sunt largi de 8 biţi , toate datele din microcontroler sunt schimbate în acelaşi format. În plus, în timpul programului de scriere, numai 8 biţi de date sunt luaţi în considerare. Cu alte cuvinte, tot ce se poate schimba din cadrul programului şi tot ce se poate afecta va fi lagrimea de 8 biţi. Un program scris pentru astfel de microcontrolere va fi stocat în memoria interna a microcontrolerului ROM. Cu toate acestea, aceste locatii de memorie, nu au 8, ci 12, 14 sau 16 biţi.

41


Restul de biţi - 4, 6 sau 8 - reprezinta instrucţiunile care specifică în sine procesorului ce să facă cu cei 8 biţi de date. Avantajele unui astfel de design, sunt următoarele: •

Toate datele într-un program sunt largi de un octet (8 biti).

Magistralele de date utilizate pentru programul de lectură au mai multe linii (12, 14 sau 16), astfel şi instrucţiunile de date poate fi citit în acelaşi timp, prin utilizarea acestor biţi de rezervă. Prin urmare, toate instrucţiunile sunt executate într-un singur ciclu de instrucţiuni. Singura excepţie este instructiunea jump, care este executata în două cicluri. •

Având în vedere faptul că programul (ROM) şi datele

temporare(RAM) sunt separate, procesorul poate executa două instrucţiuni simultan. Pur şi simplu, în timp ce RAM citeste sau a scrie (la sfârşitul unei instructiuni), următorul program de instructiuni este citit printr-o altă magstrala. •

Când utilizaţi microcontrolere cu arhitectura von Neumann niciodată

nu ştie cât de multă memorie este ocupata de unele programe. Practic, fiecare program de instruire ocupă două locaţii de memorie (una conţine informaţii cu privire la ceea ce trebuie făcut, iar celalta conţine informaţii cu care acesta ar trebui să se lucreze). Cu toate acestea, nu este o regulă riguroasă, dar este cel mai des întâlnită. În microcontrolere cu arhitectura Harvard, programul magistralei de date este mai larg de un octet, lucru care permite fiecarui cuvânt din program compus din instructiuni si din date. Cu alte cuvinte: un cuvânt de program -o instructine. Instrucţiunea SET

42


Instrucţiunile care pot fi înţelese de către microcontroler sunt cunoscute sub numele de un set de instrucţiuni. Când scrieţi un program în limbaj de asamblare, de fapt doar "este spusa o poveste", prin specificarea instrucţiunilor în ordinea în care ar trebui să fie executat. Principalele restricţii în acest proces sunt numărul de instrucţiuni disponibile. Producătorii au convenit la una din următoarele două strategii: RISC (Reduced Instruction Set Computer) În acest caz, microcontrolerul recunoaşte şi execută numai operaţiuni de bază (plus, scadem, copiatoare etc.) Toate celelalte operatiuni mai complicate sunt efectuate prin combinarea acestora (de exemplu, multiplicarea se realizează prin efectuarea succesivă ). Constrângerile sunt evidente (încercaţi prin doar câteva cuvinte, de a explica cuiva cum se ajunge la aeroport într-un alt oras). Cu toate acestea, există, de asemenea, câteva mari avantaje. Mai întâi de toate, acest limaj este uşor de învăţat. În afară de aceasta, microcontrolerul este foarte rapid, astfel încât nu este posibila vizualizare tuturor "acrobaţiilor" aritmetice efectuate. Utilizatorul poate vedea doar rezultatul final al tuturor acestor operaţiuni. Î final, nu este aşa de greu de explicat unde este aeroportul dacă folosiţi cuvintele potrivite. De exemplu: la stânga, la dreapta, km etc CISC (Complex Instruction Set Computer) CISC este opusul RISC! Microcontrolerele concepute pentru a recunoaşte mai mult de 200 de instrucţiuni diferite pot face mai multe şi sunt foarte

43


rapide. Cu toate acestea, trebuie să înţeleagă cum să ia toate instructiunile cu un astfel de limbaj bogat , lucru care nu este deloc usor.

3.19 Microcontrolere PIC Microcontrolere PIC proiectate de Microcip Tehnology probabil sunt o alegere bună pentru incepatori. Numele real al acestui microcontroler este PICmicro (interfaţa periferică a controlerului) , dar este mai bine cunoscut ca PIC. Primul său strămoş a fost conceput în 1975 de către General Instruments. Acest chip a fost numit PIC1650 destinat complet pentru diferite scopuri. Aproximativ zece ani mai târziu, prin adăugarea memoriei EEPROM, acest circuit a fost transformat intr-un adevarat microcontroler PIC. In prezent, Microcip Technology anunta o producţie de 5 miliarde. Toate microcontrolere PIC utilizeaza arhitectura Harvard , ceea ce înseamnă că programul lor de memorie este conectat la procesorul central prin mai mult de 8 linii. În funcţie de latimea magistralei, există microcontrolere cu12 -, 14 - si 16-biţi.

Cu excepţia "16-biţi monstrii" - PIC 24FXXX şi PIC 24HXXX-toate microcontrolerele PIC cu arhitectura Harvard cu 8-biţi şi aparţin unuia din cele trei mari grupuri. Prin urmare, în funcţie de dimensiunea unui cuvant de program există prima, a doua şi a treia categorie, şi anume microcontrolete cu 12 -, 14 - sau 16-biţi microcontrolere. Având deasemenea 8 - biţi de bază, toate utilizează acelaşi set de instrucţiuni şi hardware-ul de bază "scheletul" conectat la mai multe sau mai puţine unitati periferice. Este vorba despre PIC16F877-suficient de puternic pentru a ieşi in evidenţă şi simplu de ajuns pentru a fi uşor de prezentat la toata lumea.

44


Caracteristici PIC16F877:

Performanta ridicata de RISC CPU

Numai 35 de instructiuni formate dintr-un singur cuvant

Instructiuni ciclice singulare, exceptand partile de programme

care sunt bi-ciclice • •

Viteza de operare : DC – 20 Mhz timing DC – 200 ns ciclu de instructiuni

Pana la 8K x 14 cuvinte de memorie Program FLASH

Pana la 368 x 8 biti de memorie de Date (RAM)

Pana la 256 x8 biti de memorie de Date EEPROM

Compatibilitate de iesire cu PIC16C73B/74B/76/77

Capabilitate de intrerupere (pana la 14 surse)

Gama de Hardware pe 8 nivele 45


Modele de adresare directe, indirecte si relative

Resetare pornire (POR)

Timing pornire (PWRT) si timing pornire oscillator (OST)

Timing de supraveghere (WDT) cu propriul cip RC, oscilator

pentru operatiuni sigure •

Protectie de cod programabila

Mod de SLEEP pentru economisire energie

Optiuni de oscilator selectabile

Tehnologie low-power, de inalta viteza CMOS

FLASH/EEPROM •

Design static

Putere de programare in serie In-Circuit (ICSP) Prin doua ace

Putere de programare in serie de 5V

Debug In-Circuit prin doua ace

Processor de scriere/citire pentru accesarea memoriei de

program •

Putere de voltaj mare: 2.0V pana la 5.5V

Curent de inalta sursa : 25 mA

Valori de temperatura comerciala, industriala si extinsa

Economie energetica : - <0.6 mA tipica @3V, 4 Mhz

- 20 uA de tip @3V, 32 khz

- <1 uA de tip curent de standby

Caracteristici periferice : •

Timer0 : 8 biti timing/numarator cu prescala de 8 biti

Timer1 : 16 biti timing/numarator cu prescala. Poate fi

incrementat in timplu functiei de SLEEP prin ceas extern •

Timer2: 8 iti timing/numarator cu perioada de inregistrare 8 biti

si portscala 46


Dubla captura, comparare, module PWM – captura de 16 biti,

cu rezolutie maxima 12.5 ns, captura de 16 biti, cu rezolutie maxima de 200 ns, PWM maxim cu rezolutie de 10 biti •

Convertor analog-digital multi-canal

Port serial cu sincronizare cu SPI (Master mode) si I2C

(Master/Slave) •

Emitator/Receptor cu adresa de detectie de 9 biti

Port Slave paralel (PSP) cu largime de 8 biti cu RD extern, WR

si CS de control (40/44 PIN) •

Circuit de detectie Brown-out pentru reset Brown-out (BOR)

47


CAPITOLUL 4 Sistemul de reglare a debitului

Figura 4.1 . Sistemul de reglare. Sistemul de reglare a debitului de aer este compus din : 1. Placa de dezvoltare EasyPIC3 cu microcontrolerul PIC16F877 2. InstalaĹŁia LabVolt

48


4.1 Placa de dezvoltare EasyPIC3 4.1.1 Introducere Sistemul de dezvoltare EasyPIC3 este destinat microcontrolerelor din familia PIC. A fost concepută pentru a permite studenţilor si inginerilor a exersa sau explora capacităţiile microcontrolerelor PIC. Permite microcontrolerelor să facă legătura cu circuitele exterioare , permiţând utilizatorului să se concentreze asupra scrierii softului.

Figura 4.2 Placa de dezvoltare EasyPIC3

4.1.2 Comutator ( Switch) Placa de dezvoltare EasyPIC3 are un număr de dispositive periferice. Pentru a active aceste dispositive ȋnainte de programare trebuie să verificăm dacă jumperii sau convertoarele apropiate au fost setate corespunzător . Comutatoarele sunt dispositive care au două poziţii: pornit/oprit ( on/off ) , care au rolul de a face sau intrerupe legătura ȋntre două contacte .

49


Sistemul de dezvoltare EasyPIC3 are doua grupuri de comutatoare : SW1 şi SW2. Primul grup SW1 permite conexiunea ȋntre porturile microcontrolerului cu capacităţile analogice ( PORTA , PORTE ) şi rezistorii externi pullup/down. Rezistorii externi pull-up/down trebuie sa fie deconectaţi de la pinii analogici de intrare , altfel vor afecta nivelul tensiunii de intrare. Când pinii porturilor PORTA şi PORTE sunt folosiţi ca intrări / ieşiri digitale , rezistorul apropiat pull-up/down trebuie sa fie activate. Comutatoarele din partea de sus ale grupului SW2 sunt folosite pentru a active ledurile conectate la porturile PORTA/E , PORTB , PORTC şi PORTD. De exemplu dacă comutatorul portului PORTB este inactive atunci ledurile portului PORTB sunt oprite.

Figura 4.3 Grupul de 8 comutatoare.

50


Cele patru comutatoare din partea de jos sunt folosite pentru a active afisajul pe 7 segmente . Dacă nu este folosit comutatoarele trebuie să fie in strarea OFF. 4.1.3 Jumper Jumperiii ca şi comutatoarele pot opri sau activa o conexiune ȋntre doua puncte . Ȋn interioarul carcasei de plastic este un contact metallic care face conexiunea ȋntre doi pini deceonectaţi. De exemplu pinii JP15 şi JP16 sunt folosiţi pentru a conecta sau deconecta intrările analogice ale potenţiometrelor RA2 şi RA3.

Figura 4.4 Jumperul ca şi comutator.

Foarte des jumperii sunt folosiţi ca selectori ȋntre doua conexiuni posibile folosind un conector pe trei pini. După cum este ilustrat ȋn figura de mai jos contactul din mijloc poate fi conectat la pinul din stânga sau din dreapta depinzând de poziţia pinului.

51


Figura 4.5 Jumperul ca un multiplexor.

4.1.4 Socketul MCU. Placa de dezvoltare EasyPIC3 conţine cinci socketuri pentru microcontrolere: DIP40, DIP18, DIP14, şi DIP8. Toate porturile sunt conectate la leduri , comutatoarele push-button şi rezistorii pull-up/down care permite monitorizarea pinilor digitali. Unii pini sunt conectaţi la alte periferice ca senzorul de temperatură DS1820 , comicatorul RS 232, afisajul pe 7 segmente , ecranul LCD şi altele.

Figura 4.6 Sistemul de conectare

52


4.1.5 Led Ledurile sunt coponentele cele mai folosite , de obicei pentru a arăta starea pinului digital. Placa EasyPIC3 are 32 de leduri care sunt conectate la proturile microcontrolerului ( PORTA/E , PORTB , PORTC şi PORTD ) . Un grup de 8 leduri care poate fi activat folosind comutatorul SW2 . Conectarea pentru portul PORTA/E este arată ȋn figura 4.7.

Figura 4.7 Led ( Light emitting diodes )

53


Figura 4.8 Schema ledurilor 4.1.6 Comutatoarele pushbutton Placa EasyPIC3 are 32 de comutatoare pushbutton care pot fi folosite pentru a furniza intrări digitale la porturile microprocesorului. Există şi un comutator care funcţionează ca RESET.

54


Figura 4.9 Comutatorul RESET

Figura 4.10 Schema comutatorului RESET

Figura 4.11 Comutatoarele pushbutton

4.1.7 Ecranul LCD Poate afişa două linii de 16 caractere alfanumerice de 5x7 pixeli. LCDurile pe 4 biţi se conectează la placă diferit de cele pe 8 biţi.

55


Figura 4.12 Ecran LCD

Figura 4.13 Schema ecranului LCD.

4.1.8 Intrarea convertorului A-D

56


Place de dezvoltare EasyPIC3 are două potenţiometre pentru lucrul cu convertoarele analogic-digitale ( ADC ) . Potenţiometrul P1 este activ când SP15 este activate şi trimite semnalul anagolic la prinul PA2 al microcontrolerului iar potenţiometrul P2 este activ când JP16 este activate şi trimite semnal analogic la pinul RA3 . Ieşirile analogice ale potenţiometrelor au valori ȋntre 0V si 5V.

Figura 4.14 Intrarea convertorului A-D

4.1.9 Direct port access Toţi piniii de intrare/ieşire ai microcontrolerului pot fi accesaţi prin conectorii plasaţi dealungul părţii drepte a plăcii. Pentru fiecare port ( PORTA, PORTB , PORTC , PORTD sau PORTE ) sunt conectori cu 10 pini care au Vdd , GND şi 8 pini. La aceşti conectori se pot conecta plăci externe precum Compact flash , CAN şi altele.

57


Figura 4.15 Conectorii Direct port access

4.2 Instalaţia Labvolt 4.2.1 Studiul instalaţiei Labvolt de control a debitului

Scopul primar al controlului este menţinerea 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, nivelul, sau presiunea. Dacă obiectivul este să menţinem un anumit nivel de lichid într-un rezervor, variabila controlată va fi nivelul de lichid în rezervor. Pentru a controla procesul, pot fi utilizate controlul sistemului în buclă deschisă sau controlul sistemului în buclă închisă: - folosind controlul sistemului în buclă deschisă, procesul este controlat pe baza setpoint-ului (mărimea prescrisă), ca în Figura 4.15 (a). Valoarea actuală a variabilei controlate nu este luată în considerare. Dacă perturbaţiile fac ca variabila controlată să devieze de la valoarea cerută, nu este luată nicio contramăsură să corecteze această deviaţie. Acest tip de sistem,

58


aşadar, este utilizat în aplicaţiile unde cerinţele pentru controlul variabilei nu sunt critice. - folosind controlul sistemului în buclă închisă, sunt adăugate la sistem un regulator şi o buclă de reacţie inversă, ca în Figura 4.15 (b). Bucla de reacţie inversă transmite regulatorului valoarea actuală a variabilei controlate. Regulatorul decide ce acţiune se execută pentru ca valoarea aceastei variabile să devină egală cu valoarea mărimii prescrise. Deoarece se utilizează reacţia inversă, acest tip de sistem poate detecta şi corecta variaţiile variabilei controlate, variaţii cauzate de modificarea sarcinii sau perturbaţiilor. Acest tip de sistem este utilizat în aplicaţiile unde cerinţele pentru controlul variabilei sunt critice.

a) Controlul în buclă deschisă

b) Controlul în buclă închisă Figura 4.16 Controlul procesului în buclă deschisă şi închisă 4.2.2 Instalaţia de control a proceselui de temperatură / debit Instalaţia de control a proceselor de temperatură sau debit Lab-Volt permite controlul temperaturii şi debitului proceselor în buclă deschisă sau închisă. Mai mult, temperatura procesului poate fi controlată fie în modul ”încălzire” fie în modul ”răcire”. În esenţă instalaţia constă dintr-un tub ce permite trecerea aerului, un ventilator utilizat pentru circularea aerului, un amortizor utilizat pentru 59


modificarea de sarcinii sau generarea perturbaţiilor, un element de încălzire şi traductoare de temperatură şi debit. Figura 4.16 arată interiorul instalaţiei. Identificarea şi descrierea fiecărei componente a instalaţiei este arătată mai jos. 1. Canalul de intrare: deschidere cu grilaj prin care aerul intră în tub. 2. Încălzitorul: constă dintr-un element de încălzire care converteşte energia electrică în căldură şi un radiator pentru disiparea căldurii. 3. Tub Venturi: secţiune îngustată a tubului de-a lungul căreia este creată o presiune diferenţială când este parcursă de aer. Cu cât debitul de aer care trece prin tub este mai mare, cu atât presiunea diferenţială este mai mare. 4. Amortizorul: un orificiu în tub care este utilizat pentru crearea de perturbaţii prin modificarea debitului de aer care curge prin tub. 5. Ventilatorul: este utilizat pentru a crea un debit de aer prin tub. Când ventilatorul se roteşte, el trage aerul în tub prin orificiul de intrare şi îl trimite către ieşire. 6. Ieşirea tubului: deschidere cu grilaj prin care aerul părăseşte tubul. 7. Motorul ventilatorului: converteşte tensiunea sau curentul de la intrarea de control a ventilatorului într-o putere proporţională utilizată pentru antrenarea ventilatorului. 8. Traductorul de debit: măsoară presiunea diferenţială de-a lungul tubului şi produce o tensiune standardizată (0-5 V) sau un curent (4-20 mA) proporţionale cu presiunea ce pot fi transmise la regulator. 9. Traductorul de temperatură: produce o tensiune (0-5 V) şi un curent (420 mA) proporţionale cu temperatura radiatorului. În acest scop, traductorul măsoară o tensiune generată de un senzor semiconductor şi o coverteşte într-una utilă, tensiune sau curent standardizate care pot fi transmise la regulator. 10. Motorul încălzitorului: converteşte tensiunea sau curentul de la intrarea de control a încălzitorului într-o putere proporţională utilizată pentru antrenarea încălzitorului.

60


Figura 4.17 Instalaţia de control a proceselor de temperatură sau debit

4.2.3 Caracteristicile proceselor de circulaţie a aerului şi schimbului de căldură prin instalaţie

Figura 4.18 Viteza aerului şi profilele presiunii prin tub Aşa cum se observă în Figura 4.17, ventilatorul face ca aerul să circule prin crearea unei presiuni P 4 foarte mici la ieşirea din tub. Acest lucru face ca presiunea atmosferică de la intrarea tubului, P 1, să forţeze circulaţia aerului prin tub. Cu cât viteza ventilatorului este mai mare, cu atât diferenţa

61


de presiune ∆P1 dintre P1 şi P4 este mai mare şi deci cu atât debitul de aer ce va circula prin tub va fi mai mare. Conform legii conservării masei, masa de aer ce intră în tub în orice moment de timp este egală cu masa aerului care părăseşte tubul. Acest lucru implică faptul că debitul de aer este constant. Pentru a menţine un debit constant, viteza aerului trebuie să crească atunci când aerul trece prin tubul Venturi, datorită scăderii secţiunii transversale a canalului. Acest lucru înseamnă că viteza aerului la intrarea tubului Venturi, v1 , este mai mică decât viteza aerului din interiorul acestuia,

v2 . Conform ecuaţiei lui Bernoulli, dacă viteza aerului creşte, atunci presiunea aerului este în descreşte. Acest lucru înseamnă că presiunea aerului pe partea de intrare a tubului Venturi, P 2, este mai mare decât presiunea aerului din tubul Venturi, P 3. Cu cât viteza aerului prin tubul Venturi este mai mare, cu atât presiunea diferenţială ∆P2 va fi mai mare de-a lungul tubului Venturi. Când nu se alimentează elementul de încălzire, radiatorul se află la temperatura camerei indiferent de viteza ventilatorului. Când ventilatorul funcţionează, temperatura radiatorului va scădea odată cu creşterea vitezei ventilatorului. Această descreştere are loc deoarece creşterea vitezei ventilatorului face să crească rata schimbului de căldură dintre radiator şi aer. 4.2.4 Calibrarea traductoarelor de debit şi temperatură Traductoarele de debit şi temperatură ale instalaţiei au fiecare căte două potenţiometre utilizate pentru a seta domeniul debitului sau temperaturii în care ieşirea lor va trece de la tensiune sau curent minim la maxim: - potenţiometrul ”zero” setează cea mai mică măsurătoare posibilă pentru debit sau temperatură, adică, debitul sau temperatura pentru care tensiunea sau curentul de la ieşirea traductorului vor fi minime.

62


- potenţiometrul ”span” setează cea mai mare măsurătoare posibilă pentru debit sau temperatură, adică, debitul sau temperatura pentru care tensiunea sau curentul de la ieşirea traductorului vor fi maxime. În domeniul instrumentaţiei pentru control termenul ”span” indică diferenţa algebrică dintre tensiunea sau curentul minim şi maxim, generat de traductor. Dacă, spre exemplu, ieşirea traductorului variază între 0 şi 5V , atunci traductorul are un ”span” de 5V . În mod uzual, potenţiometrele zero şi span ale traductoarelor industriale interacţionează unul cu celălat. Ca urmare, când se ajustează aceste potenţiometre, este necesar să repetăm procedura de ajustare de mai multe ori pentru a obţine o ajustare precisă a traductorului. Pentru

instalaţia

noastră

potenţiometrele

zero

şi

span

ale

traductoarelor de temperatură şi debit au fost proiectate să interacţioneze cât mai puţin posibil. Ca urmare, când se ajustează aceste potenţiometre, nu este necesar să repetăm procedura de ajustare de mai multe ori. 4.2.5 Conducerea proceselor în buclă deschisă Un sistem de conducere în buclă deschisă este un sistem în care o variabilă fizică este controlată numai prin setpoint (referinţă), iar valoarea actuală a variabilei controlate nu este luată în calcul. Figura 1-8 prezintă diagrama bloc a unui sistem de control în buclă deschisă.

Figura 4.19 Diagrama bloc a sistemului de conducere a procesului în buclă deschisă.

63


-mărimea de referinţă (Setpoint) este valoarea dorită pentru variabila ce este controlată. Această referinţă poate fi setată în mod manual, automat sau poate fi programată de operator; -elementul de conducere (Control element) este un mecanism care manipulează o variabilă (mărimea de comandă) ce are influenţă directă asupra variabilei controlate; -sarcinile sau perturbaţiile (load/disturbance) acţionează asupra sistemului şi au ca efect o modificare nedorită a variabilei controlate; -variabila controlată (Controlled variable) este o funcţie de mărimea de comandă şi de sarcina sau perturbaţiile ce acţionează asupra sistemului. Spre exemplu, Figura 4.19 prezintă diagrama pentru controlul în buclă deschisă a debitului de aer ce trece prin instalaţie: -referinţa este o tensiune care poate fi setată manual între 0 şi 5V; -motorul converteşte tensiunea referinţei într-o putere proporţională ce acţionează ventilatorul; -ventilatorul

creează

o

presiune

diferenţială

(variabila

manipulată)

proporţională cu viteza de rotaţie, care induce un debit proporţional de aer prin tub. -perturbaţia corespunde oricărei pierderi de presiune ce poate apare în proces. Referinţa este setată iniţial astfel încât presiunea diferenţială creată prin ventilator menţine un anumit debit de aer prin instalaţiei. Dacă apar pierderi de presiune în timpul desfăşurării procesului, presiunea diferenţială se va modifica, ducând la modificarea debitului de aer. Deoarece sistemul operează în buclă deschisă, nu se face nimic pentru a corecta variaţiile debitului de aer. Operatorul va trebui să reajusteze referinţa prin încercări pentru a determina cât de mult trebuie crescută viteza ventilatorului astfel încât debitul de aer să rămână la valoarea dorită. Această procedură poate fi consumatoare de timp.

64


Figura 4.20 Conducerea în buclă deschisă a procesului de reglare a debitului 4.2.6 Principiile de bază ale conducerii proceselor în buclă închisă În exerciţiul anterior, am controlat debitul instalaţiei LabVolt folosind un sistem de reglare în buclă deschisă. Variabila controlată nu rămâne la valoarea dorită în cazul apriţiei unei perturbaţii, deoarece sistemul controlează puterea aplicată elementului de execuţie şi nu temperatura sau debitul. Adăugarea unui regulator şi a unei bucle cu reacţie inversă reduce variaţiile variabilei controlată. Acest tip de sistem, prezentat în Figura 1-13, este numit sistem de conducere în buclă închisă. Acesta poate menţine variabila controlată aproape constantă peste o gamă dată de sarcini sau perturbaţii: - bucla cu reacţie inversă conţine un senzor ce măsoară valoarea variabilei controlate şi generează un semnal proporţional care este trimis înapoi la regulator; - regulatorul calculează eroarea ce reprezintă diferenţă dintre valoarea de referinţă şi variabila măsurată şi corectează această diferenţă prin reajustarea elementului de control până este atinsă o stare de echilibru. Eroarea este diferită de zero când operatorul schimbă valoarea de referinţă în mod intenţionat sau când schimbările de perturbaţii sau sarcină modifică variabila controlată. Există mai multe tipuri clasice de regulatoare: proporţional, integrator, derivator sau o combinaţie dintre acestea.

65


Figura 4.21. Diagrama bloc a sistemelor de conducere a proceselor în buclă închisă. Figura 4.21 prezintă conducerea în buclă închisă a sistemului de reglare a debitului de aer ce trece prin incinta instalaţiei: - bucla cu reacţie inversă constă dintr-un traductor de presiune care măsoară debitul de aer ce trece prin instalaţie şi generează o tensiune proporţională cu acesta. Această tensiune, numită tensiune de reacţie, este transmisă la regulator; - regulatorul compară tensiunea de reacţie tensiunea referinţei şi corectează orice diferenţă dintre cele două prin modificarea puterii aplicate la ventilator până ce este atinsă o stare de echilibru. Dezavantajul principal al utilizării sistemelor de conducere cu reacţie inversă este faptul că trebuie să aibă loc o schimbare în variabila controlată înainte ca orice acţiune corectivă să poată fi luată. În schimb, sistemele de conducere a proceselor utilizând reacţia inversă au avantajul că sunt relativ simplu de utilizat.

66


Figura 4.22 Conducerea în buclă închisă a proceselor de debit ale instalaţiei.

4.3 Program unsigned char ch; unsigned int adc_rd; unsigned int adc_rd1; char *text; char *textuin; char *eps; long tlong; long tlong1; long tlong2; double k=0.5;

char txt[10]; const char _CHIP_SELECT = 1;

67


const char _TRUE = 0xFF; float value=0.0; int rezultat=0;

void Init() { TRISD = 0;

asm { BSF TRISD,0

//seteaza PORTD ca avand intrari digitale RD0 si

RD1 BSF TRISD,1 } SPI_init(); TRISC &= ~(_CHIP_SELECT);

// ClearBit(TRISC,CHIP_SELECT);

}//~

// DAC increments (0..4095) --> output voltage (0..Vref) void DAC_Output(unsigned int valueDAC) { char temp; PORTC &= ~(_CHIP_SELECT);

// ClearBit(PORTC,CHIP_SELECT);

// Pregateste datele pentru transfer temp = (valueDAC >> 8) & 0x0F;

// Pregateste hi-byte pentru transfer

temp |= 0x30; SPI_write(temp);

68


temp = valueDAC;

// Pregateste lo-byte pentru transfer

SPI_write(temp); PORTC |= _CHIP_SELECT;

// SetBit(PORTC,CHIP_SELECT);

}//~

void main() { INTCON = 0;

// anuleaza toate intreruperile

Init();

Lcd_Init(&PORTB); LCD_Cmd(LCD_CURSOR_OFF);

// Trimite comanda la LCD

(cursor off) LCD_Cmd(LCD_CLEAR);

// Trimite comanda la LCD (sterge

ecranul LCD) ADCON1

= 0x82;

// configureaza VDD ca Vref, si intrari

analogice PORTA TRISA

= 0xFF;

text = "Ref:"; textuin="Uin";

// variabile folosite pentru mesaje pe LCD

eps="k";

while (1) {

if ((Button(&PORTD,0,1,1)==_TRUE)

// Testeaza daca s-a apasat butonul

RD0, daca s-a apasat incrementeaza k si afiseaza pe LCD

69


&& (k < 5)) {

//k poate lua maxim valoarea 5

k=k+0.1 ; FloatToStr(k,txt);

//conversie de la float la string pentru a afisa

pe LCD LCD_Cmd(LCD_CURSOR_OFF); LCD_Cmd(LCD_CLEAR); LCD_Out(2,1,"K=");

//Afisaza pe LCD mesajul "K="

LCD_Out(2,4,txt);

//Afisaza pe LCD valoarea lui k

Delay_ms(1000);

//Pauza 1 secunda

LCD_Cmd(LCD_CURSOR_OFF); LCD_Cmd(LCD_CLEAR); } else { if ((Button(&PORTD,1,1,1)==_TRUE) // Testeaza daca s-a apasat butonul RD1, daca s-a apasat decrementeaza k si afiseaza pe LCD && (k > 0)) { k=k-0.1 ; FloatToStr(k,txt); LCD_Cmd(LCD_CURSOR_OFF); LCD_Cmd(LCD_CLEAR); LCD_Out(2,1,"K="); LCD_Out(2,4,txt); Delay_ms(1000); LCD_Cmd(LCD_CURSOR_OFF); LCD_Cmd(LCD_CLEAR);

70


} }

adc_rd = ADC_read(2); LCD_Out(1,1,text);

// Citeste intrarea analogica RA2 // Afisaza pe linia 1 incepand cu prima

pozitie pe LCD mesazul continut de variabila text tlong = (long)adc_rd * 5000;

// converteste valoarea citita in milivolti

tlong = tlong / 1023;

// 0..1023 -> 0-5000mV

ch

// extrage digitul corespunzator valorii de

= tlong / 1000;

volti (volts digit) LCD_Chr(1,9,48+ch);

//Scrie valoarea pe LCD pe linia 1 si a 9

colana LCD_Chr_CP('.'); ch

= (tlong / 100) % 10;

LCD_Chr_CP(48+ch);

// extrage 0.1 volts digit // Scrie pe LCD de unde este pozitionat

crsorul

ch

= (tlong / 10) % 10;

LCD_Chr_CP(48+ch);

// extrage 0.01 volts digit // Scrie pe LCD de unde este pozitionat

crsorul ch

= tlong % 10;

// extraget 0.001 volts digit

71


LCD_Chr_CP(48+ch);

// Scrie pe LCD de unde este pozitionat

crsorul LCD_Chr_CP('V'); Delay_ms(1); adc_rd1 = ADC_read(3); LCD_Out(2,1,textuin);

// Citeste intrarea analogica RA3 // Afisaza pe linia 2 incepand cu prima

pozitie pe LCD mesazul continut de variabila textuin

tlong1 = (long)adc_rd1 * 5000;

// converteste valoarea citita in

milivolti tlong1 = tlong1 / 1023; ch

= tlong1 / 1000;

// 0..1023 -> 0-5000mV //extrage digitul corespunzator valorii de

volti (volts digit) LCD_Chr(2,9,48+ch);

// Scrie valoarea pe LCD pe linia 2 si a

9-a colana LCD_Chr_CP('.'); ch

= (tlong1 / 100) % 10;

LCD_Chr_CP(48+ch);

// extrage 0.1 volts digit // Scrie pe LCD de unde este

pozitionat crsorul

ch

= (tlong1 / 10) % 10;

LCD_Chr_CP(48+ch);

// extrage 0.01 volts digit // Scrie pe LCD de unde este

pozitionat crsorul

ch

= tlong1 % 10;

// extrage 0.001 volts digit

72


LCD_Chr_CP(48+ch);

// Scrie pe LCD de unde este

pozitionat crsorul LCD_Chr_CP('V');

Delay_ms(3000);

LCD_Cmd(LCD_CURSOR_OFF); LCD_Cmd(LCD_CLEAR); FloatToStr(k,txt); LCD_Out(1,1,"K="); LCD_Out(1,4,txt); LCD_Out(2,1,"dif"); if(tlong>tlong1)

//Daca valoarea de referinta este mai mare

decat intrarea analogica RA3 { tlong2=(tlong-tlong1)*k;

//calculeaza diferenta intre cele doua

marimi analogice si o imulteste cu k value=(tlong2*4095)/5000;

//se calculeaza valoarea ce trebuie trimisa

la DAC (digital to analogic) rezultat=value;

//variabila rezultat este folosita pentru a

retine partea intreaga //deoarece functia DAC_Output accepta ca parametru o variabila de tipul intreg fara semn

DAC_Output(rezultat);

//setrimite valoarea la DAC 73


} if(tlong1>tlong)

//daca valoarea de intrare mai mare decat

referinta scoatem o tensiune 0 { DAC_Output(0);

} if(tlong1==tlong)

//daca valoarea referintei si a intrarii sunt

egale scoatem o tensiune 0 { DAC_Output(0); } IntToStr(tlong2,txt);

//in tlong2 se afla valoare tensiunii ce trebuie

obtinuta din DAC //se converteste la string vriabila tlong2 pentru a putea fi afisata pe LCD LCD_Out(2,5,txt); LCD_Out(2,12,"mV"); Delay_ms(3000); LCD_Cmd(LCD_CURSOR_OFF); LCD_Cmd(LCD_CLEAR); } }//~!

74


Bibliografie: 1. PIC Microcontrollers - www.mikroe.com 2. PIC16F877 Data sheet - ww1.microchip.com 3. EasyPIC3 Development Board - www.mikroe.com 4. Curs Conducerea automata a proceselor industriale - Prof. dr. ing. Matei Vînătoru 5. Curs Ingineria reglării automate – Prof. dr. ing. Constantin Marin 6. Studiul instalaţiei LabVolt

75


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.