| Regulisanje temperature vode zatvorenog centralnog grejanja - praktična realizacija |
|
|
|
| Autor FTN Novi Sad, Katedra za elektroniku | |
U bazi znanja analizirane su dinamičke karakteristike, odziv i ponašanje sistema centralnog grejanja na zadatu referentnu promenljivu. Određena je prenosna funkcija sistema i izvršena je sinteza digitalnog PI odnosno PID zakona upravljanja. Postupkom simulacije u MATLab-ovom simulink modulu dobijeni su optimalni parametri (konstante) PI tj PID regulatora.
Grubo gledano sistem možemo podeliti na dva dela :
1. Elektronski deo – koga čine : mikrokontroler, A/D konvertor, kolo za
generisanje referentne promenljive, kolo za generisanje upravljane
promen-ljive – senzor za temperaturu vode u sistemu, deo za galvansku
izolaciju elektronskog i energetskog dela, kolo za sinhronizaciju sa
mrežom i deo za napajanje.
2. Energetski deo čini trofazni tiristorski polu upravljivi ispravljač. Umesto njega bolje je koristiti trofazni tiristorski fazni regulator ali je upravljanje njegovim radom znatno složenije i izlazi iz okvira ovog projekta.
Slika 1. Blok šema sistema za upravljanje centralnim grejanjam
Mikrokontroler predstavlja mozak sistema i ima glavnu ulogu u njegovom radu. U jednom čipu se nalazi procesor, memorija, registri i sve što je potrebno za obavljanje funkcija tipičnih za jedan procesor informacija. Namenjen je projekto-vanju digitalnih sistema upravljanja u industriji i slično. On generiše upravljačku promenljivu na osnovu merene upravljane promenljive tj temperature vode u povratnoj grani upravljajući radom tiristorskog polu upravljivog ispravljača. Istovremeno kontrolišući celokupan rad uređaja.
Izlaz senzora se vodi na pojačavač koji ima ulogu da pojača signal sa senzora i prilagodi ga opsegu A/D konvertora.Njegova stabilnost i otpornost na spoljašnje uticaje kao i mali ofset (razdešenost) ukazuju na njegovu ulogu u celom sistemu.
Sa pojačavača se signal povratne sprege dovodi na ulaz A/D konvertora. Njegova uloga je da analogni signal pretvori u digitalni koji se dalje vodi u mikrokontroler. Ovde bi se mogao koristiti mikrokontroler sa već ugrađenim A/D konvertorom čime bi se data šema znatno uprostila. Priloženo rešenje nije jedino ali je sa stanovišta univerzalnosti i edukativnog značaja bolje.
Galvanska izolacija je neophodan deo svakog uređaja u kome se kombinuju elektronska kola sa kolima energetske elektronike. Usled havarije u energetskom delu, koja je moguća jer su komponente (tiristori i diode) značajno opterećeni, mogao bi se uništiti čitav elektronski sklop. U ovom delu se nalaze i impulsni pojačavači koji slab digitalni signal podižu na viši nivo dovoljan za okidanje tiristora.
Kolo za zadavanje referentnog signala je obavezan deo jer omogućuje korisniku da na jednostavan način zada željenu referentnu temperaturu vode u sistemu. Njegova uloga je ovde i da ograniči opseg zadavanja temperature na MAX 70°C. U isto vreme ovo kolo treba i da obezbedi jednostavno očitavanje zadate temperature na displeju.
Za uspešan rad svih ovih kola potreban je kvalitetan i stabilan izvor napajanja. On treba da obezbedi potrebne napone za funkcionisanje svih kola.
Tiristorski polu upravljivi ispravljač je zbog snage grejača kojim upravljamo vezan na trofaznu mrežu 3x380V . Nije bilo potrebe da se koristi puno upravljivi ispravljač zbog činjenice da grejač ne radi u invertorskom režimu. Na ovaj način su umesto tri tiristora upotrebljene tri diode , čime je postignuta znatna ušteda kako u pogledu cene uređaja tako i sa tačke upravljanja sistemom.
U postojeći sistem se može dodati i EPROM memorija u koju se može smestiti kompletan program za mikrokontroler. Mikrokontroler već u sebi sadrži izvesnu količinu memorije (8KB) koja je u ovom slučaju dovoljna da primi celokupan kod. Iz tog razloga je u ovom projektu izostavljena.
Mikrokontroler koji je ovde korišćen je Atmel-ov AT89C52. Radi se o kontroleru koji je po svom pinskom rasporedu i setu instrukcija kompatibilan sa Intel-ovim 8052 mikrokontrolerom. On sadrži tri 16-to bitna brojača i 8KB flash memorije. Priključen je na kvarcni kristal učestanosti 12 MHz. Postoje 4 ulazno/izlazna porta mada su ovde korišćena samo dva. Napon napajanja je +5V.
A/D konvertor je AD570 firme Analog Devices. U pitanju je 8-mo bitni A/D, sa vremenom konverzije <25μs na bazi sukcesivne aproksimacije. Napajanje mu je +5V i – 12V, a opseg ulaznog napona je 0-10V. Izbor ovakvog konvertora je zasno-van prvenstveno na činjenici da se radi o sporo promenljivom procesu i na što jednostavnijem upravljanju. Proces A/D konverzije započinje na opadajućoj ivici signala B&C . Nakon 25μs po završetku konverzije aktivira se signal DATAREADY . Signal B&C generiše mikrokontroler koji i detektuje DATAREADY signal preko svog INT1 ulaza.
Kolo za generisanje referentne vrednosti je napravljeno pomoću dva BCD UP/DOWN brojača 74HC4510. Pomoću dva tastera biramo smer brojanja a trećim vršimo upis izabrane vrednosti u leč kolo 74HC573.Prikaz se vrši na dva 7-mo segmentna displeja pomoću dva BCD/7-SEG drivera 74HC4511. Napajanje je +5V.
Galvanska izolacija zahteva posebno galvanski odvojeno napajanje i može se izvesti pomoću optokaplera ili malih signalnih trafoa . Ovde će biti prikazano rešenje sa signalnim trafoom, koje je ujedno i najjednostavnije .
Sklop za sinhronizaciju sa mrežom koristi mrežni transformator u delu za napajanje.
Prolaskom mrežnog napona kroz nulu generiše se okidni impuls koji se zatim uobličuje i vodi na INT0 ulaz u mikrokontroler.Ovaj deo je vrlo važan jer na osnovu impulsa sinhronizacije se vrši izračunavanje ugla paljenja tiristora kao i perioda odabiranja. Koristeći mrežni transformator sklop je galvanski odvojen od mreže.
Senzor korišćen u ovom sistemu je LM35 proizvođača National Semiconductor . U pitanju je vrlo jednostavan, precizan, linearan i jeftin senzor.Osetljivost mu je 10mV/°C. Može da meri temperaturu do +150°C. Izlaz je naponski signal. Napajanje može biti u granicama od 4 do 30V.
U pojačavačkom sklopu je korišćen klasičan 741 operacioni pojačavač u neinvertu-jućem spoju sa kompenzovanim ofsetom koji ulazni naponski signal pojačava i prilagođava ulaznom opsegu A/D konvertora 0-10V.
Iz dosad navedenog proizilazi da su za rad ovog uređaja potrebni sledeći naponi :
Programska podrška
Nakon hardverske sinteze sistema u celini možemo pristupiti razmatranju problema-tike softvera koji će upravljati celim sistemom. Najpre treba zakon upravljanja predstaviti u nešto drugačijem obliku.
Ovde su konstante KP, KI i KDodredjene u tekstu u bazi znanja i iznose:
KP=30 KI=0.6 KD=0.2
Sređivanjem gornjeg izraza i svođenjem na nešto drugačiji oblik dobija se :
Ovo je rekurzivni oblik zakona upravljanja koji je vrlo pogodan za implementaciju jer se vrednost upravljačke promenljive u(kT) u trenutku kT izračunava na osnovu vrednosti upravljačke promenljive i signala greške (e(kT)) u prethodnim trenutcima.
K1 = KP+KI+KD = 30.8 K2 = KP+2K = 30.4 K3 = KD = 0.2
Očigledno da konstante nisu celobrojne i da ih treba skalirati kako bi se mogle primeniti u softverskoj implementaciji zakona upravljanja . Zato ih množimo sa 4, zaokružujemo i dobijamo nove konstante : K1 = 123 ; K2 = 122 ; K3 = 1 .
Ove konstante su celobrojne i mogu se koristiti u programu predstavljene u hexadecimalnom obliku kao : K1 = 7B H ; K2 = 7A H ; K3 = 01 H ;
Ovo unosi izvesnu grešku u izračunavanju upravljačke promenljive. Upravljačka pro-menljiva, koja ovde predstavlja vrednost napona koju dovodimo na grejač, se nalazi u opsegu 0 – 400V . Teorijski bi se mogla generisati bilo koja vrednost iz tog opsega ali to nema praktičnog značaja . Iz tog razloga je ovde izvršeno skaliranje upravlja-čke promenljive, pa je ona svedena u opseg 0 – 50, deljenjem sa 8 .
Na ovaj način ustvari generišemo samo 50 vrednosti ugla paljenja tiristora, pri čemu se napon menja u koracima od 8V. Ugao paljenja prvog tiristora generiše Timer0 u mikrokontroleru dok su ostali uglovi pomereni za po 1/3 periode. Konsanta kojom se puni Timer0 da bi generisao željeni ugao je 16-to bitna i uzima se iz tabele koja se nalazi u programskoj memoriji. Tabela je data u nastavku .
Tabela 1. Zavisnost napona ispravljačaod ugla paljenja tiristora
Zavisnost izlaznog napona od ugla paljenja je prikazana u tabeli. Uout predstavlja zaokruženu vrednost . Kolona Timer sadrži konstante kojima se puni Timer0 da bi generisao željeni ugao paljenja prvog tiristora. Potrebno je ove vrednosti pretvoriti u hexadecimalni oblik .
Konstante su dvo-bajtne (16 bita) niže bajtove stavljamo u jednu tabelu na lokacije od 100 (64H) do 150 (96H) , a više bajtove u drugu tabelu na lokacije od 151 (97H) do 201 (C9H) . Ovim tabelama pristupamo indirektno .
Timer1 koristimo za generisanje uglova paljenja ostala dva tiristora. On generiše vremenski period koji odgovara 1/3 periode mrežnog napona tj. oko 6.666msec. Konstanta kojom punimo Timer1 je zato 65535 – 6666 =58869 (E5F5 H).
Perioda odabiranja je 75sec što predstavlja 3750 perioda mrežnog napona . Timer2 služi za generisanje periode odabiranja. Nalazi se u auto-reload modu što znači da se pri prekoračenju (kad dostigne 65535 (FFFF H)) automatski napuni vrednošću 65535 – 3750 = 61785 (F159 H).Ovaj Timer je podešen da radi kao Counter tj. brojač događaja odnosno brojač perioda mrežnog napona.
Vrlo važno pitanje je određivanje prioriteta interapta. Najviši prioritet ima INT0 koga generiše mreža. U odnosu na njega se generišu svi uglovi paljenja i određuje perioda odabiranja.
Na osnovu dosad izloženog može se preći na programski kod u asembleru uz oslonac na repertoar instrukcija mikrokontrolera uz kratak komentar.
Programski kod za upravljanja centralnim grejanjem
OUT0 DATA 30h ; Izlazna promenljiva u(kT) OUT1 DATA 31h ; u((k-1)T) EROR0 DATA 32h ; Signal greške e(kT) EROR1 DATA 33h ; e((k-1)T) EROR2 DATA 34h ; e((k-2)T) EROR0ZN BIT 00h ; Znak greške EROR1ZN BIT 01h EROR2ZN BIT 02h SCRCTRL BIT 03h ; Kontrolni bit za upravljanje SCR-ovima ZNAK1 BIT 04h ; Pomocna prom. ZNAK2 BIT 05h ; ZNAKR BIT 06h ; ;KONSTANTE K1 EQU 7Bh ; K1 = 123 K2 EQU 7Ah ; K2 = 122 K3 EQU 01h ; K3 = 1 TIM1H EQU E5h ; 65535 – 6666 = E5F5 h za Timer1 TIM1L EQU F5h ; TIM2H EQU F1h ; 65535 – 3750 = F159 h za Timer2 TIM2L EQU 59h ; ORG 0000h ; Pri resetu ili uključenju ide se na INIC JMP INIC ORG 0003h ; INT0 Rutina SCR123 LCALL SCR123 ORG 000Bh ; Timer0 Rutina LCALL SCR1 ; Generiše ugao paljenja prvog (SCR1) tiristora ORG 001Bh ; Timer1 Rutina LCALL PAUZA ; Generiše pauzu u trajanju 6.666 msec ORG 002Bh ; Timer2 Rutina LCALL RACUN ; Generiše upravljačku promenljivu OUT0 ; NA OVOM MESTU TREBALO BI DEFINISATI TABELU SA UGLOVIMA PALJENJA ORG 0064h ; Početak TABELE – niži bajtovi DB EFh,68h,47h,25h,03h, ……. ; Ovo su samo prvih 5 nižih DB D8h,DCh,DDh,DEh,DFh, …… ; Ovo su samo prvih 5 viših ; INICIJALIZACIJA ORG 00CDh ; Adresa (205 dec) od koje počinje prog. kod INIC: CLR IE.7 ; Zabrana svih prekida MOV PSW,#00h ; Obriši PSW MOV TMOD,#11h ; Timer0 i Timer1 u MOD1 kao 16 bitni Timer MOV TCON,#05h ; IE0 i IE1 interapti na opadajuću ivicu MOV IP,#01h ; Najviši prioritet za IE0 MOV T2CON,#02h ; Timer2 kao Counter u AUTO-RELOAD modu MOV OUT0,#00h ; Inicijalizuj promenljive MOV OUT1,#00h ; - MOV EROR0,#00h ; - MOV EROR1,#00h ; - MOV EROR2,#00h ; - CLR SCRCTRL ; SCRCTRL=0 za SCR2 i SCRCTRL=1 za SCR3 MOV TL1,TIM1L ; Napuni Timer1 sa E5F5h MOV TH1,TIM1H ; MOV RCAP2L,TIM2L ; Napuni Auto-reload registre sa F159h MOV RCAP2H,TIM2H ; MOV P1,#10001111b ; U port P0 upiši 10001111 SETB IE.7 ; Omogući prekide SETB T2CON.2 ; Startuj Timer/Counter2 PETLJA: SJMP PETLJA ; Petlja u kojoj se vrti program SCR123: MOV R1,OUT0 ; R1 = OUT0 = upravljačka prom. MOV TL0,@R1+100 ; Indirektno napuni TL0 i TH0 sa MOV TH0,@R1+151 ; vrednostima iz tabele SETB TCON.4 ; T0 RUN RETI ; Gotova IE0 rutina SCR1: CPL P1.2 ; SCR1 ON SETB TCON.6 ; T1 RUN CLR TCON.4 ; T0 OFF CPL P1.2 ; RETI PAUZA: JB SCRCTRL,SCR3 ; CPL P1.3 ; SCR2 ON CLR TCON.6 ; T1 OFF MOV TL1,TIM1L ; MOV TH1,TIM1H ; SETB TCON.6 ; T1 ON SETB SCRCTRL ; SCRCTRL=1 i sledeći put ide na SCR3 CPL P1.3 ; RETI SCR3: CPL P1.4 ; SCR3 ON CLR TCON.6 ; T1 OFF MOV TL1,TIM1L ; MOV TH1,TIM1H ; CLR SCRCTRL ; SCRCTRL=0 i sledeći put ide na SCR2 CPL P1.4 ; RETI ; Slede potprogrami za 2-vo Bajtno sabiranje i oduzimanje ; operand1 : A niži bajt, B viši bajt ; operand2 : R1 niži bajt, R2 viši bajt ; Rezultat : A niži bajt, B viši bajt ; C = 1 negativan rezultat ; C=0 pozitivan 2BSAB: CLR C ; Priprema za sabiranje ADD A,R1 ; Saberi niže bajtove MOV R1,A ; MOV A,B ; ADDC A,R2 ; Saberi više bajtove i C JNC KRSAB ; Ako nema C idi na KRSAB MOV A,#FFh ; Inače vrati MAX (FFFFh) vrednost MOV B,#FFh ; RET KRSAB: MOV B,A MOV A,R1 RET 2BODU: CLR C ; Pripremi za oduzimanje SUBB A,R1 ; Oduzmi niže bajtove MOV R1,A ; MOV A,B ; SUBB A,R2 ; Oduzmi više bajtove i C JNC KRODU ; Ako nije C (- rezultat) idi na KRODU MOV R2,A MOV A,R1 ; CLR C CPL A ; Inače nađi drugi komplement nižeg ADD A,#01h ; MOV R1,A ; MOV A,R2 ; CPL A ; ADDC A,#01h ; i drugi kompl. Višeg bajta SETB C ; Postavi C - rezultat je negativan MOV B,A MOV A,R1 ; Postavi izlaz i vrati se RET KRODU: MOV B,A MOV A,R1 CLR C ; Postavi izlaz, C=0 (rez. je +) i vrati se RET ;Sledi potprogram za 2B sabiranje sa predznakom ;operand1 : B:A viši i niži bajt i ZNAK1 = 1 ako je negativan ;operand2 : R2:R1 viši i niži bajt i ZNAK2 = 1 ako je negativan ;rezultat : B:A viši i niži bajt i ZNAKR = 1 ako je negativan SABIRAJ: JB ZNAK1,PG1 ; operand1 <0 JB ZNAK2,PG2 ; operand2 <0 CLR ZNAKR ; op1>0 i op2>0 onda je rez.>0 CALL 2BSAB ; saberi i vrati se RET PG2: CALL 2BODU ; op1>0 i op2<0 zato zovi oduzimanje JC PG3 ; ako je rez<0 skoči na PG3 CLR ZNAKR ; inače je rez >0 , znakr = 0 , vrati se RET PG3: SETB ZNAKR ; rez<0 , znakr = 1 , vrati se RET PG1: JNB ZNAK2,PG4 ; op1<0 ako je op2>0 skoči na PG4 SETB ZNAKR ; op1<0 i op2<0 pa je rez<0 , znakr=1 CALL 2BSAB RET PG4: MOV R3,A ; Zameni mesta oper1 i oper2 i MOV R4,B ; skoči na PG2 MOV A,R1 MOV B,R2 MOV R1,R3 MOV R2,R4 SJMP PG2 ;Sledi potprogram za računanje upravljačke promenljive OUT0 RACUN: CLR T2CON.7 ; Interapt flag TF2 moramo obrisati CLR P1.5 ; Startuj signal za konverziju B&C =0 MOV A,P2 ; U A se nalazi REF ali u obliku BCD cifri MOV R1,A ANL A,#0Fh ; Odseci donji nibl (4 bita) – cifra desetica MOV B,#0Ah ; U B stavi 10 MUL AB MOV R2,A MOV A,R1 SWAP A ; Zameni niblove u A ANL A,#0Fh ; Odseci donji nibl – cifra jedinica CLR C ADD A,R2 ; U A se nalazi REFerentna vrednost ADC: JB TCON.3,LOADADC ; Čekaj da se obavi konverzija SJMP ADC LOADADC: MOV B,P0 ; U B se nalazi reč iz AD konvertora SETB P1.5 CLR C SUBB A,B ; U A se nalazi signal greške = REF – AD CLR EROR0ZN ; EROR0 >0 JNC NASTAVI ; ako nije C NASTAVI CPL A ; inače je EROR0<0 , nađi drugi komplem. ADD A,#01h SETB EROR0ZN ; EROR0 je negativno NASTAVI: MOV EROR0,A MOV B,K1 ; MUL AB ; B:A = K1*EROR0 MOV R1,A ; R2:R1 = K1*EROR0 MOV R2,B MOV A,EROR2 MOV B,K3 MUL AB ; B:A = K3*EROR2 MOV ZNAK2,EROR0ZN MOV ZNAK1,EROR2ZN CALL SABIRAJ ; B:A = K3*EROR2+K1*EROR0 MOV R1,A ; R2:R1 = ------ MOV R2,B MOV ZNAK2,ZNAKR MOV A,EROR1 ; MOV B,K2 MUL AB ; B:A = K2*EROR1 MOV ZNAK1,EROR1ZN CPL ZNAK1 ; promeni znak pošto se oduzima CALL SABIRAJ ; U B:A = ER2*K3+ER0*K1-ER1*K2 ;Sada ovu sumu treba podeliti sa 32 što je isto kao i pomeranje u desno 5 mesta ; a to je isto što i pomeranje u levo 3 mesta RLC A RLC A ; rotiraj 3 puta u levo = deli sa 32 RLC A ANL A,#07h ; odseci niža 3 bita (00000xxx) MOV R7,A MOV A,B ; u A stavi viši bajt RLC A RLC A RLC A ; i podeli ga sa 32 MOV R6,A MOV B,07h ; u B stavi masku 00000111 ANL B,A ; i odseci niža 3 bita (00000xxx) višeg B. MOV A,#F8h ; u A stavi masku (11111000) ANL A,R6 ; i odseci viših 5 bita (xxxxx000) višeg B. ORL A,R7 ; zalepi xxxxx000 OR 00000xxx MOV R1,OUT1 ; u R1 stavi OUT1 MOV R2,#00h ; u R2 stavi 00h CLR ZNAK2 ; ZNAK2 je + MOV ZNAK1,ZNAKR ; ZNAK1 = ZNAKR CALL SABIRAJ ; B:A = OUT0 = OUT1 + SUMA/32 JNB ZNAKR,LAB1 ; ako je >0 skoči na LAB1 MOV OUT0,#00h ; inače OUT0 = 00h (MIN) JMP KRAJ ; idi na kraj LAB1: MOV R1,A MOV A,B ; stavi viši bajt u A JZ LAB2 ; ako je 0 skoči na LAB2 LAB3: MOV OUT0,#32h ; inače OUT0 = (MAX) = 50 JMP KRAJ ; idi na kraj LAB2: MOV A,#32h CLR C SUBB A,R1 ; A = 50 - OUT0 JC LAB3 ; ako je OUT0 >50 skoči na LAB3 MOV OUT0,R1 ; inače je OUT0<50 i nastavi do kraja KRAJ: MOV OUT1,OUT0 MOV EROR2,EROR1 MOV EROR1,EOR0 MOV EROR2ZN,EROR1ZN MOV EROR1ZN,EROR0ZN RETI ;Kraj rutine RACUN ; Kraj programa END FTN Novi Sad, Katedra za elektroniku
Podesi kao favorit
Bookmark
Pošalji email-om
Komentari (0)
![]() Napišite komentar
Morate biti prijavljeni da biste mogli poslati komentar. Molimo, registrujte se ukoliko nemate već otvoren korisnički nalog.
|
| < Prethodno | Sledeće > |
|---|









U bazi znanja analizirane su dinamičke karakteristike, odziv i ponašanje sistema centralnog grejanja na zadatu referentnu promenljivu. Određena je prenosna funkcija sistema i izvršena je sinteza digitalnog PI odnosno PID zakona upravljanja. Postupkom simulacije u MATLab-ovom simulink modulu dobijeni su optimalni parametri (konstante) PI tj PID regulatora.


