regulator obrtaja

Upload: aleksapapovic

Post on 06-Jul-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Regulator Obrtaja

    1/38

     VIŠA ELEKTROTEHNIČKA ŠKOLA

    Ubović Dalibor

    PRIMENA MIKROKONTROLERA SERIJE PIC18F UREGULACIJI BROJA OBRTAJA JEDNOSMERNOG MOTORA

    - diplomski rad -

    Beograd , 2007

  • 8/17/2019 Regulator Obrtaja

    2/38

     

    Kandidat : Ubović Dalibor

    Broj Indeksa : AT42/05

    Smer : Automatika

    Tema : PRIMENA MIKROKONTROLERA SERIJE PIC18F U REGULACIJIBROJA OBRTAJA JEDNOSMERNOG MOTORA

    Osnovni zadaci :

    1.  Analiza problema2.  Projekat i realizacija3.  Ispitivanje

    Hardver : 50 % Softver : 40 % Teorija : 10 %

    MentorBeograd ,26.03.2007.

    Mr. Borislav Hadžibabić 

  • 8/17/2019 Regulator Obrtaja

    3/38

     

    IZVOD

    U ovom diplomskom radu opisana je regulacija brzine jednosmernog motora na principuimpulsno širinske modulacije koja se vrši pomoću mikrokontrolera . Mikrokontroler obavlja

     jos i merenje trenutne brzine i njen ispis na izlazne uredjaje, LCD displej i UART .Mikrokontroler vrši takođe i ulogu digitalnog P tj. proporcionalnog regulatora čime jeostvarena povratna sprega po brzini tj. brzina se održava konstantnom bez obzira napromenljivo opterećenje.

    ABSTRACT

    In this diploma work is described speed regulation of direct current motor based on the pulsewidth modulation principle which has been realized by using microcontroller . Here

    microcontroller also measures instant speed and send data to the output devices , LCD dispayand UART . Microcontroller has also the role of digital P , that is , proportional regulatorwhich achieves speed feedback , that is , speed is kept constant no matter what variablemehanical load is .

  • 8/17/2019 Regulator Obrtaja

    4/38

     SADRŽAJ

    1.  UVOD .................................................................................................................. 1 1.1. DEFINISANJE PROBLEMA ................................................................... 1

    1.2. MOGUĆ

    A I IZABRANA REŠENJA ...................................................... 12. PROJEKAT I REALIZACIJA ..................................................................... 2

    2.1. BLOK ŠEMA HARDVERA I DIJAGRAM TOKA ............................... 2

    2.1.1. Opis inicijalizacionog dela softvera ......................................................... 2

    2.1.2. Opis glavne programske petlje ................................................................. 5

    2.2. KORIŠĆENI SOFTVER I HARDVER PRI PROJEKTOVANJU .......... 7

    2.3. DETALJAN OPIS POJEDINAČNIH BLOKOVA ................................. 8

    2.3.1. Mikrokontroler PIC18F4520 .................................................................... 8

    2.3.2. LCD Displej .............................................................................................. 122.3.3. UART ....................................................................................................... 17

    2.3.4. Tastatura ................................................................................................... 20

    2.3.5. CCP moduli .............................................................................................. 21

    2.3.6. ECCP modul ............................................................................................. 24

    2.3.7. Modul za napajanje ................................................................................... 26

    2.4. DIGITALNI P REGULATOR .................................................................. 27

    3. ISPITIVANJE ...................................................................................................... 28

    4. ZAKLJUČAK  ...................................................................................................... 31

    5. INDEKS POJMOVA ........................................................................................... 32

    6. LITERATURA ..................................................................................................... 33

    DODATAK ........................................................................................................... 34

    Dodatak 1 : Električna šema uređaja

  • 8/17/2019 Regulator Obrtaja

    5/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    - 1 -

    1.UVOD

    1.1 DEFINISANJE PROBLEMA

    Ova tema se bavi regulacijom i merenjem brzine obrtaja jednosmernog motora .

    Zahteva poznavanje rada diskretnih elektronskih komponenti , arhitekture mikrokontroleraPIC18F4520 , pisanja softvera na asembleru za kontroler i poznavanja opštih teorijskihprincipa u elektrotehnici , tako da predstavlja širok spektar znanja sticanog tokom studija .

    1.2 MOGUĆA I IZABRANA REŠENJA

    Što se tiče samog hardvera tu nije bilo previše dilema , jer je na neki način uslovljentehničkom podrškom samog mikrokontrolera . PIC18F4520 poseduje ECCP modul koji sa 4pina može da omogući podršku za realizaciju full bridge izlaznog stepena . Postoji viševarijanti konfiguracija PWM izlaznog stepena , a to su : single output , half bridge , full

    bridge . Izabrana je full bridge konfiguracija izlaza zato što omogućava , ako je kasnije topotrebno , promenu smera obrtanja motora u softveru . Full Bridge PWM izlaz se realizuje sa

    4 prekidačka tranzistora od kojih su za jedan smer aktivna dva , dok su druga dva neaktivna .

    Za samo merenje brzine obrtanja izabrana je optička metoda . Na sam motor fiksiran jeoptički senzor KTIR0621DS koji se sastoji iz fotodiode kao optičkog predajnika ifototranzistora kao optičkog prijemnika . Fizički oblik ovog senzora je u obliku ćiriličnogslova p , tako da pero koje je pričvršćeno na osovinu motora pri obrtanju prekida optičkisignal . Na ovaj način , na fototranzistoru senzora se dobija povorka impulsa koja nosiinformaciju o brzini obrtaja motora . Za izračunavanje broja obrtaja motora na bazi ovepovorke impulsa postoje dve varijante . Prva je da se Tajmer 0 konfiguriše kao asinhronibrojač i da mu se dovede povorka impulsa sa fototranzistora na T0CKI pin i da se na svakih

    nekoliko sekundi proverava dokle je dobrojao Tajmer0 i da se od te vrednosti prostimmnoženjem dobije informacija u obrtajima u minutu . Tajmer1 bi se podesio da radi kaointerni tajmer i da u određenim vremenskim intervalima generiše prekid . Ova metoda jenepovoljna zbog suviše dugog vremena uzorkovanja , jer se nova vrednost pojavi tek zanekoliko sekundi . Druga metoda je da se upotrebi jedan od CCP modula u capture režimurada . Tajmer koji je dodeljen CCP modulu , u ovom slučaju npr. TMR3 radi kao internitajmer i broji koliko mikrosekundi traje jedan obrtaj motora . Kada naiđe sledeća ivica signalapostavlja se fleg CCPxIF i vrednost TMR3 kopira u CCPRx registar . Uzorkovanjem 4 ili 8ovakvih vrednosti i traženjem srednje vrednosti dobija se solidna tačnost uz dosta kraćeukupno vreme uzorkovanja koje se kreće od 100 do 500 milisekundi maksimalno . Ovametoda je izabrana i primenjena u ovom projektu . Teoretski , pored optičke metode merenjabrzine postoji još i tzv. tahogeneratorska metoda .Ovde bi se ostvario mehanički prenosizmeđu osovina motora i generatora . Indukovani napon na krajevima generatora bi bioinformacija o brzini motora . Kao generator može da se koristi DC motor u generatorskomrežimu rada . Raspoloživi motori su imali ugrađenu elektroniku za stabilizaciju izmeđunamotaja i izlaznih priključaka . Na izlazu motora koji je bio u funkciji generatora se nijedobijala linearna promena napona u funkciji broja obrtaja , pa se od ove metode odustalo .Drugi motor je iskorišćen za simulaciju opterećenja . Izvršen je mehanički prenos gumenimkaišem sa osovine jednog na osovinu drugog motora . Drugi motor koji simulira opterećenjevezan je preko potenciometra na 12V napona napajanja . Preko potenciometra menja se

     jednosmerni napon na motoru i time opterećenje glavnog motora .

  • 8/17/2019 Regulator Obrtaja

    6/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    - 2 -

    2.PROJEKAT I REALIZACIJA 

    2.1 BLOK ŠEMA HARDVERA I DIJAGRAM TOKA

    PIC18F4520MICROCONTROLLER

    motordc

    LCD DISPLAY& shift register74HC164

    UART RS232 voltageadapter ___ MAX232

    PWM OUTPUT

    OPTICALSENSOR

    ktir0621ds

    keyboard

    DSUB9serialport

    Slika 1. Blok šema uređ aja

    Kao što se na dijagramu toka na slici 2 može videti , po startovanju mikrokontrolera seredom inicijalizuju sledeće neophodne periferije : CCP1 modul kao PWM Full Bridge ,UART , LCD displej , tastatura , CCP2 modul kao Capture .

    Zatim se mikrokontroler vrti u jednoj petlji ciklično ponavljajući sledeće operacije:uzimanje 4 capture uzorka , nalaženje prosečne capture vrednosti , računanje broja obrtaja uminutu potprogramom Div32 i naknadnim množenjem sa 60 , regulisanje brzinepotprogramom speed_reg_sub , prebacivanje u bcd kod 16 bitne vrednosti koja predstavljaobrtaje u minutu , ispis na LCD displej , slanje UART-om na PC , obrada prekida koji izazivatastatura . Sada će samo ukratko biti opisan rad svake korišćene periferije mikrokontrolera i

    kako se ona koristi u ovoj aplikaciji od strane softvera . U narednom poglavlju biće datdetaljniji opis svake korišćene periferije mikrokontrolera i spoljnih elektronskih kola .

    2.1.1. Opis inicijalizacionog dela softvera

    Prvo se inicijalizuje CCP1 modul u Full Bridge PWM modu . Zbog mogućnosti halfbridge i full bridge PWM modova CCP1 se još zove i ECCP (eng. Enhanced tj. poboljšani)modul . Ovde upotrebljeni Full Bridge PWM mod nudi dodatne opcije i tako omogu ćava širispektar kontrolnih aplikacija . Dodatne opcije su mogućnost korišćenja do 4 izlazna pinamikrokontrolera za PWM funkciju , kao i mogućnost biranja da li je signal aktivan visok ilinizak na nekom PWM pinu . Ovo omogućava softversku promenu smera obrtanja motora .

  • 8/17/2019 Regulator Obrtaja

    7/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    - 3 -

    Inicijalizacija CC P1modula u Full BridgePWM modu

    InicijalizacijaUART-a

    inicijalizacija LCDdispleja

    inicijalizacijatastature

    Inicijalizacija CCP2modula u CAPTURErežimu

    CCP2_petlja za uzimanje 4capture uzorka

    dve petlje za nalaženjeprosečne capture vrednosti (sabiranje 4 capture uzorka ideljenje sa 4)

    potprogram za deljenje Div32 ;1000 000 / average capture =broj ob/sec

    potprogram za regulacijubrzinespeed_reg_sub

    potprogram zaprebacivanje u bcd kodbcd_code ; ulaz 16bitnibroj , izlaz buffer0 tj. 4bcd cifre

    potprogram za ispis na LCDdisplej ; lcd_sub

    potprogram za komunikacijusa UART-om ; uart_sub

    kratkotrajna d ozvola zainterapt rutinu niskogprioriteta - tastatura

    Slika 2. Dijagram toka

  • 8/17/2019 Regulator Obrtaja

    8/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    4

    Zatim se inicijalizuje UART preko koga se serijski komunicira sa spoljnim uređajima .Za ovu softversku implementaciju se koristi samo mogućnost UART-a da radi kao asinhronipredajnik . Pošto radi u asinhronom modu sa bitovima podatka šalju se i kontrolni start i stopbitovi i eventualno bit parnosti za detekciju grešaka. Postavljanjem odgovarajućih vrednosti uSPBRG registar i bit BRGH zadaje se odgovarajuća bodska brzina tj. brzina prenosa podataka

    izražena u broju bita u sekundi . Inače UART ovde ima funkciju da šalje ASCII karaktere kojipredstavljaju brzinu na serijski port personalnog računara . Na ovaj način se podatak o brzinimože očitati preko aplikacije HyperTerminal koja je sastavni deo svakog Windowsoperativnog sistema . Naravno , neophodno je prethodno podesiti HyperTerminal na istiformat podatka i brzinu prenosa koju koristi UART mikrokontrolera . Može se , takođe ,pratiti promena brzine u vremenu i to sačuvati kao log fajl. Komunikacija sa personalnimračunarom izvedena je pre svega da bi informacija o trenutnoj brzini bila uvek lako dostupna ,

     jer drugi izlazni uređaj za prikaz informacija LCD displej je deo uređaja za regulaciju brzinekoji se neće uvek nalaziti na pogodnom i pristupačnom mestu .

    Sledeći na redu za inicijalizaciju je LCD modul . Na početku koda za inicijalizaciju

    LCD displeja stavljen je potprogram za vremensko kašnjenje od 35 milisekundi koji dajevremena LCD modulu da preko internog kola pokuša da odradi hardversku inicijalizaciju . Aliuspeh ove operacije zavisi od brzine uspostavljanja napona napajanja koja često nijezadovoljavajuća . Zato se primenjuje softverska inicijalzacija koja uvek uspešno inicijalizujeLCD modul. Što se tiče hardverske realizacije upotrebljen je pomerački registar 74HC164 saciljem da se smanji broj pinova mikrokontrolera koji se koristi za potrebe LCD displeja sa 6na samo 3 pina .

    Zatim se inicijalizuje tastatura . U ovom projektu tastaturu predstavljaju dva tastera čija je funkcija povećanje i smanjenje vrednosti registra koji određuje referentnu brzinu . Tasterisu vezani za eksterne interapt linije INT1 i INT2 . Pošto su predhodno uključeni inerni pul-apotrpornici na portu B linije INT1 i INT2 su na visokom nivou kada tasteri nisu pritisnuti . Napritisak tastera ta INTx linija se obara na nizak logički nivo i tako dolazi do pojave silazneivice na toj INTx liniji . Prethodno se brisanjem INTEDGx bitova podesi da se na pojavusilazne ivice generiše interapt . U interapt servisnoj rutini se kasnije preko flegova utvrđuje nakome je pinu došlo do prekida tj. koji je taster pritisnut i u skladu sa tim preduzima seodgovarajuća akcija tj. povećanje ili smanjivanje referentne brzine .

    Preostali CCP modul je CCP2 i on se podešava da radi u Capture modu . Ovaj mod radaCCP modula se najčešće koristi za precizno merenje vremenskih intervala . Optički elementKTIR0621DS je fiksiran na telo motora tako da pero koje je fizički spregnuto sa osovinommotora , pri obrtanju , prekida optički snop između foto diode i foto tranzistora . Na ovajnačin se na izlazu fototranzistora na svaki prolazak pera dobije po jedan negativan impuls .

    Vreme od jedne do druge opadajuće ivice predstavlja vremenski interval za koji se izvrši jedan obrtaj motora . Ovo vreme se kreće u rasponu od 15 do 55 milisekundi . Treba izvršiti ˝capture˝ tj. hvatanje ovog vremenskog intervala pomoću CCP2 modula . Da bi se merenjeizvelo što jednostavnije treba odabrati pogodnu frekvenciju eksternog oscilatora Fosc pošto jeona povezana sa dužinom instrukcijskog ciklusa Tcy. Jednačina Tcy=4/Fosc opisuje turelaciju . Za frekvenciju eksternog oscilatora od 4MHZ dobija se instrukcijski ciklus Tcy od 1mikrosekunde koji nam je odgovarajući . CCP2 modul se podešava da 16 bitnu vrednostTMR3 pri nailazku opadajuće ivice na RC1/CCP2 pinu kopira u CCPR2 registar. NaravnoTMR3 je podešen da se inkrementira na interni instrukcijski takt tj. na svaku 1mikrosekundu. Na taj način 16 bitni TMR3 može da uhvati 65 536 mikrosekundi tj. približno65 milisekundi . Sada je jasno da je iz praktičnih razloga izabran Fosc od 4 MHZ , da bi

  • 8/17/2019 Regulator Obrtaja

    9/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    5

    TMR3 uhvatio jedan obrtaj motora (rekli smo da se kreće od 15 do 50 mSec) pre nego štodođe do overflow-a TMR3 .

    Q3

    BC161

    R7

    220

    0

    capture

    +5V

    ISO1KTIR0621DS

          1

          2

          5

          4

    R7

    220

    R71K

     Slika 3.Optič ki element i dodatni hardver potreban za capture na CCP2

    2.1.2 Opis glavne programske petlje

    Preko CCP2 modula se mere 4 uzastopne periode obrtaja i upisuju na sukcesivnelokacije u buffer4 i buffer3 .

    Da je naišla opadajuća ivica i da se kopiranje vrednosti TMR3 u CCPR2 desilonaznačava se postavljanjem CCP2IF flega . Tada se viši bajt ˝uhvaćene˝ vrednosti iz

    CCPR2H kopira indirektnim adresiranjem u buffer4 , a niži bajt ˝uhvaćene˝ vrednosti izCCPR2L pomoću indirektnog adresiranja prebacuje se u buffer3 . Zatim se briše CCPR2Hkao i CCPR2L , a i fleg CCP2IF . Tek posle ovoga se resetuje TMR3. Ovaj Capture ciklus seponavlja 4 puta .

    Zatim se u jednoj petlji ove 4 capture vrednosti sabiraju u jedan 24 bitni broj kojizauzima 3 fajl registra . U sledećoj petlji se korišćenjem instrukcije pomeranja kroz carry flegdeli zbir capture vrednosti sa 4 . Tako se dobija prosečna capture vrednost koja se kreće kaošto je ranije napomenuto od 15 mSec do 55 mSec .

    U jednoj sekundi ima 1 000 000 mikrosekundi , i ako jedan obrtaj traje npr. 55 000mikrosekundi (ovo je ustvari prosečna capture vrednost ) deljenjem broja 1 000 000 sa 55 000

    dobiće se broj obrtaja u sekundi . A to je ono što nam je potrebno . Deljenje cifre 1 000 000 saprosečnom capture vrednošću obavlja se pomoću potprograma Div32 .

    Trenutna brzina izražena u obrtajima u sekundi (ob/sec) smeštena u jedan fajl registarpredstavlja ulaz u potprogram za regulaciju brzine . U ovom potprogramu trenutna brzina seporedi sa referentnom (zadatom) brzinom i dobija se greška koja u zavisnosti od toga da li jepozitivna ili negativna i koliki je iznos greške deluje na povećanje ili smanjenje PWMpobude. Izmena PWM pobude se vrši sve dok se trenutna vrednost brzine ne izjednači sareferentnom što ponekad zahteva i desetak prolaza kroz ovaj potprogram . PWM pobuda semenja promenom duty cycle vrednosti preko CCPR1L kontrolnog registra . Naravno doodstupanja trenutne brzine od referentne dolazi usled promene opterećenja motora .

  • 8/17/2019 Regulator Obrtaja

    10/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    6

    Za prikaz , krajnjem korisniku , brzinu treba izraziti u obrtajima u minutu (ob/min) , štoznači da trenutnu brzinu izraženu u ob/sec treba samo izmnožiti sa 60 . Umesto korišćenjapotprograma za množenje iskorišćen je hardverski množač  PIC18F4520 mikrokontrolera .Upotrebom instrukcije mulwf (multiple WREG with file register) izvršava se hardverskomnoženje dva osmobitna broja i dobija 16 bitni rezultat u PRODH i PRODL registrima .

    Hardverski množač  implementiran je kao deo aritmetičko logičke jedinice i izvršavamnoženje dva osmobitna broja u jednom instrukcijskom ciklusu (1 Tcy) . Bez upotrebehardverskog množača već  korišćenjem standardnih instrukcija za ovu operaciju bi bilopotrebno čak 70 Tcy .

    Trenutna brzina u ob/min prikazana je 16 bitnim brojem koji je dalje ulaz u potprogramza pretvaranje u bcd kod tj. binarno kodirane dekadne brojeve . Na izlazu potprograma sedobijaju 4 bcd cifre zapisane u buffer0 .

    Naredni potprogram lcd_sub služi za komunikaciju sa LCD displejom . On je neštosloženije strukture . Prva petlja poziva potprogram koji prebacuje sadržaj buffer0 u ASCIIkod i rezultate tj. ASCII karaktere upisuje u buffer2 . Naravno poziv sledećeg potprograma iz

    potprograma ovde nije nikakav problem s obzirom da PIC18F4520 ima 31 nivo stekmemorije.Iako postoji stek od 31 nivo većina aplikacija se izvodi sa 4 nivoa potprograma.Više nivoa potprograma od 10 do 12 potrebno je jedino u slučaju multitasking-a . InačeASCII podaci su nam potrebni jer interni LCD kontroler jedino njih razume . Zatim sepostavlja RS linija i startna adresa za ispis na LCD , pa sledi poziv potprograma koji izvršavaLCD instrukciju u 4 bitnom data modu . Sam pojam ˝LCD instrukcija˝ je nezvaničan izraz zastandardom određenu kombinaciju od 10 bita na RS , R/W i DB0:DB7 linijama . Ovajpotprogram sinhronizovano postavlja podatke na serijski ulaz pomerčkog registra , upravljapomeračkim takt signalom i postavlja Enable signal na LCD modulu . Ceo ovaj princip seponavlja u naredne dve petlje . U prvoj se šalju ASCII karakteri iz buffer2 koji predstavljajutrenutnu brzinu izraženu u ob/min . U drugoj petlji se iščitava look-up tabela iz programskememorije koja sadrži string ˝ob/min˝ i to se šalje na LCD displej .

    Potprogram za komunikaciju sa UART-om isto zahteva ASCII podatke tako da će i onkoristiti buffer2 i istu look-up tabelu , jer iste podatke koji su na LCD displeju treba poslati naserijski port personalnog računara . Uglavnom ovde je ceo princip da se tek pošto se TXIFsetuje sme upisati sadržaj koji se šalje u predajni registar podataka TXREG . Parinstrukcijskih ciklusa kasnije podatak se prebacuje u TSR – predajni šift registar i otpočinjepredaja . Zatim se testira da li je TRMT bit setovan , ako jeste to znači da je predajni šiftregistar - TSR prazan i da je predaja podatka završena . Ove operacije se ponavljaju višeputa dok se ne pošalju svi podaci .

    Nakon ovoga dozvoljava se prekid niskog prioriteta tj. ako treba obraditi neki prekid satastature koji je ostao neobrađen za vreme zabrane prekida . Indikacija ovoga je ako je neki odflegova INT1IF ili INT2IF ostao setovan . Prekidnom rutinom za tastaturu menja sereferentna brzina tj. brzina koju treba održavati konstantnom nezavisno od opterećenja .

    Dalje se glavna programska petlja neprekidno ponavlja uključujući sve prethodnoopisane operacije.

  • 8/17/2019 Regulator Obrtaja

    11/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    7

    2.2 KORIŠĆENI SOFTVER I HARDVER PRI PROJEKTOVANJU

    Za razvoj programskog koda u asemblerskom jeziku korišćeno je MPLAB IDE (eng.Integrated Developement Environment) integrisano razvojno okruženje firme Microchip .

    Editor teksta omogućava jednostavno pisanje programa i za razliku od eksternih tekst editora(Wordpad,Notepad,MS Word 2000 ... ) ukazuje nam na greške u sintaksi . Pri pisanjuprograma poželjno je dodavati komentare sa strane pored asemblerskih instrukcija .Komentari olakšavaju naknadno čitanje i razumevanje koda . Pored komentara i mnemonika uprogramu se mogu naći i asemblerske direktive koje su uputstvo kompajleru kako da vršiprevođenje i one podsećaju na sintaksu viših programskih jezika . Pri izradi ovog projektakorišćeno je prevođenje sa apsolutnim lociranjem . Kod ove metode se definišu varijable ipočetak programa i na kraju prevođenja se dobije program kao jedna celina . Postoji još iuslovno prevođenje koje koristi relokativne module . Koristi se kada se radi u višimprogramskim jezicima i kada na projektu radi više ljudi . Prevodilac (eng. Compiler) se istonaziva asembler i on prevodi source fajl tj. izvorni tekst fajl u izvršni kod koji se dobija u

    obliku fajla sa HEX ekstenzijom . Pored tekst editora , kompajlera i linkera MPLAB posedujei simulator . Simulator sadrži matematičko-logički model mikrokontrolera u sebi i omogućavasimulaciju i testiranje programa bez realnog hardverskog sistema . U simulatoru se programmože izvršavati korak po korak , mogu se bilo gde postaviti prekidne tačke (eng. breakpoint),može se pratiti sadržaj fajl registara , meriti vreme izvršenja celog koda ili nekih delova .Testiranje je znatno lakše nego na realnom sistemu , ali je zato loša simulacija periferija kaošto su UART ili A/D konvertor .

    Za upis HEX fajla u programsku memoriju PIC mikrokontrolera korišćen je amaterskiizrađeni programator poznat kao AllPIC programator . Pomoću aplikacije WinPICProgrammer učitava se HEX fajl i preko serijskog porta personalnog računara šalje se AllPIC

    programatoru koji vrši upis HEX fajla u programsku memoriju .Za crtanje električne šeme korišćen je Orcad Capture koji pored bogate biblioteke

    delova (eng. database part) omogućava i jednostavno kreiranje komponente koja nedostaje .

  • 8/17/2019 Regulator Obrtaja

    12/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    8

    2.3. DETALJAN OPIS POJEDINACNIH BLOKOVA

    2.3.1. Mikrokontroler PIC18F4520

    Ova serija PIC18F mikrokontrolera firme Microchip je bazirana na RISC-Harvardarhitekturi . RISC znači da se jedna asemblerska instrukcija pretvara u jednu kodnukombinaciju na mašinskom jeziku koja se izvršava u jednom ili u fiksnom broju mašinskihciklusa . Kod RISC kontrolera je kraće vreme izvršenja instrukcije u odnosu na CISC i ako jekontroler baziran na RISC arhitekturi to se obavezno navodi u tehničkim karakteristikama .

    Kontroler je izrađen u high speed CMOS tehnologiji koja troši značajniju struju samopri tranzicijama sa log 0 na log 1 i sa log 1 na log 0 , to omogućava manju potrošnju u RUNmodu tj. normalnom modu rada, a ekstremno malu u IDLE i SLEEP modovima kad kontrolerradi sniženim taktom od 32 KHZ .

    Kod Harvard arhitekture kontrolera razdvojen je programski od data busa . Širina data

    busa je multipl od 8 . Kod ove serije PIC-a data bus je širine 8 bita , a programski bus je širine16 bita. Naravno , programska i data memorija su odvojene . Programska memorija jerealizovana kao FLASH memorija , ona je non- volatile tj. nebrišuća , ne gubi sadržaj sagubitkom napajanja . I FLASH memorija i DATA EEPROM imaju veliki broj ciklusabrisanja i upisa . FLASH oko 100 000 , a DATA EEPROM oko 1 000 000 . Zbog paralelizmaprogramskog i data busa preklapa se execute faza tekuće i fetch faza naredne instrukcije u

     jednom mašinskom ciklusu . Efekat preklapanja je da se svaka instrukcija izvršava u jednommašinskom ciklusu , osim instrukcija grananja , preskoka koje se izvršavaju u 2 ili 3 mašinskaciklusa.

    DATA EEPROM se može smatrati kao eksterna memorija , pošto mu se pristupa krozpar kontrolnih registara .

    DATA RAM je kod PIC18F serije implementiran kao statički RAM . Svakom registru uDATA memoriji pridružena ja 12 bitna adresa za pristup . Ovi registri se zovu još i fajlregistri . Adresa od 12 bita omogućava do 4096 bajta data memorije . Memorijski prostor jepodeljen na 16 benkova (eng. Banks) po 256 bajta . Data memorija se sastoji od registaraspecijalne funkcije – SFR ( Special Function Registers) i registara opšte namene – GPR (General Purpose Registers) . SFR registri se koriste za kontrolu i status kontrolera iperiferijskih funkcija . GPR registri se koriste za smeštaj podataka u korisničkim aplikacijama. Jedan deo Data memorije se naziva Access RAM – to je donja polovina Bank 0 tzv. AccessBank i gornja polovina Bank 15 , koju čine SFR registri . Ovaj deo Data RAM-a je namenjenza pristup najčešće korišćenim registrima u jednom instrukcijskom ciklusu . Pri pristupu

    DATA RAM-u u samom operacionom kodu instrukcije je zabeleženo da li se pristupa prekoBSR-a ili se ignoriše BSR , pa se pristupa Access Bank-u .

    U PIC18 instrukcijskom setu movff je jedina instrukcija koja kompletno navodi 12bitne adrese source i target fajl registara . Ova instrukcija kompletno ignoriše BSR registarkada se izvršava . Sve ostale instrukcije sadrže samo 8 nižih bitova adrese kao operand imoraju da koriste bilo BSR ili Access bank da lociraju svoje odredišne registre .

    U BSR (eng. Bank Select Register) registru su implementirana samo donja 4 bita .Sadržaj ovog registra se može izmeniti direktno movlb instrukcijom . Vrednost BSR registraukazuje na Bank u Data memoriji , a 8 bita u instrukciji pokazuje lokaciju u Bank-u .

  • 8/17/2019 Regulator Obrtaja

    13/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    9

    Slika 4. Memorijska mapa fajl registara

    A sad malo o opštim karakteristikama . PIC18F4520 mikrokontroler ima dobreperformanse i veliku mogućnost primene u raznim tehničkim aplikacijama . Imaju velikubrzinu rada jer se operativna frekvencija Fosc može podići do 40 MHZ . Programskamemorija je veličine 32 KB tj. može da primi 16384 programske instrukcije . Data RAM jeimplementiran u kapacitetu od 1,5 KB ili 6 benkova po 256 bajta . DATA EEPROM jekapaciteta 256 bajta . Mikrokontroler poseduje i ulazno izlazne portove ( eng. I/O ports) kojisu multipleksirani sa periferijskim uređajima . Od periferija mikrokontrolera PIC18F4520biće opisane samo one koje se koriste u ovoj aplikaciji . Kontrolni registri određuju da li jepin nekog porta digitalna I/O linija ili je pridružena periferiji tj. ima posebnu funkciju . PIC18F4520 poseduje 5 portova A,B,C,D i E .

  • 8/17/2019 Regulator Obrtaja

    14/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    10

    Za operaciju svakog porta postoje 3 kontrolna registra : TRISx , PORTx , LATx . TRISregistar je registar smera podataka ( eng. data direction register ) , PORT registar ( čitalogičke nivoe na pinovima PORT-a ) , LAT registar ( izlazni leč ) . PORTA je bidirekcioniport , širine 8 bita . Odgovarajući registar smera podataka je TRISA . Postavljanje na log 1nekog TRISA bita , čini odgovarajući PORTA pin ulaznim tj. stavlja izlazni drajver u stanje

    visoke impedanse . Brisanje nekog TRISA bita , čini odgovarajući PORTA pin izlaznim tj.stavlja sadržaj izlaznog leča na pin kontrolera . Čitanje PORTA registra čita stanje sa pinova ,dok upis u PORTA upisuje u leč . Čitanje LATA registra očitava poslednje upisano stanje naPORTA . Sve ovo važi primenjeno i na ostale portove . Pinovi RA6 i RA7 su multipleksiranisa glavnim oscilatorom i njihova funkcija određuje se u konfiguracionim bitovima . RA4 jemultipleksiran sa Tajmerom 0 kao eksterni sinhronizacioni ulaz tj.T0CKI ili sa izlazimakomparatora C1OUT . Pinovi RA3:RA0 i RA5 su ulazi A/D konvertora i njihova funkcija seodređuje u kontrolnom registru ADCON1 . Pinovi RA5:RA0 mogu biti korišteni kao ulazi iizlazi komparatora podešavanjem CMCON registra . RA4 poseduje Šmit Triger ulazni bafer ,dok svi ostali pinovi porta A imaju TTL ulazne bafere i CMOS izlazne drajvere . Pri PowerOn Resetu pinovi RA3:RA0 i RA5 su konfigurisani kao analogni ulazi , a RA4 kao digitalniulaz . RA6 i RA7 su dodeljeni glavnom ocilatoru .

    PORTB je bidirekcioni port , širine 8 bita . Odgovarajući registar smera podataka jeTRISB . Ono što je posebno za ovaj port je da svaki od pinova ima slab interni pul-ap ( eng.weak internal pull-up ) .Brisanjem kontrolnog bita RBPU u INTCON2 registru mogu seuključiti svi pul-ap otpornici . Međutim , ako se pin konfiguriše kao izlazni pull-up seautomatski isključuje . Pinovi RB7:RB4 imaju mogućnost izazivanja prekida ( eng. interrupt )na promenu stanja na pinovima . Stanje pinova se poredi sa zadnjom očitanom vrednošću koja

     je u leču . U poređenju učestvuju samo pinovi koji su konfigurisani kao ulazni . Ovo jepogodno za realizaciju matričnih tastatura . Pri nepoklapanju stanja pinova sa zadnjomlečovanom vrednošću dolazi do prekida i setovanja RBIF flega . Da bi se otklonio uzrok za

    dalje prekide u prekidnoj rutini treba očitati PORTB i time poklopiti stanje pinova i sadržajleča , a zatim obrisati RBIF fleg . Pinovi RB2:RB0 mogu biti konfigurisani kao spoljne linijeza prekid koje reaguju na rastuću ili opadajuću ivicu . Pinovi RB4: RB0 su multipleksiranitakođe i sa A/D konvertorom . Podrazumevano stanje (eng. default) pri Power On Resetu jeda su RB4:RB0 konfigurisani kao analogni ulazi , a RB7:RB5 kao digitalni ulazi .

    Slika 5. Prikaz pinova na kontroleru PIC18F4520

  • 8/17/2019 Regulator Obrtaja

    15/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    11

    PORTC je isto bidirekcioni i širine 8 bita . Odgovarajući registar smera podataka jeTRISC . Ovaj port je multipleksiran sa nekoliko periferijskih funkcija . Pinovi RC7 i RC6 sumultipleksirani sa USART modulom za serijsku komunikaciju . RC0 je eksternisinhronizacioni ulaz za TMR1 ili TMR3 . Pin RC1 je dodeljen CCP2 modulu , a RC2 jemultipleksiran sa CCP1 modulom ili ECCP modulom i tad radi kao P1A pin . Pinovi

    RC5:RC3 su multipleksirani sa MSSP modulom za serijsku komunikaciju . Svi pinovi porta Cimaju Šmit Triger ulazne bafere .

    PORTD je isto bidirekcioni port , širine 8 bita .Odgovarajući registar smera podataka jeTRISD . Svi pinovi ovog porta su implementirani sa Šmit Triger baferima . 3 pina ovog portaRD7:RD5 su multipleksirani sa izlazima ECCP1 modula redom P1D , P1C , P1B . Ceo portD može biti konfigurisan kao - Parallel Slave Port - (PSP).

    PORTE je 4 bitni port . Pinovi RE2:RE0 su multipleksirani sa A/D konvertorom i imajufunkciju analognih ulaza . Ovi pinovi isto mogu biti konfigurisani kao upravljačke linije zaParallel Slave Port. Pinovi RE2:RE0 su bidirekcioni . Pin RE3 je samo ulazni pin .Konfiguriše se pomoću MCLRE bita u konfiguracionim bitovima . Može da ima funkcijuMaster Clear ulaza kao i ulaza za napon programiranja . TRISE je odgovarajući registar smerapodataka , ali pored bitova koji određuju smer pinova tu su i kontrolni i status bitovi zaParallel Slave Port .

    Ovaj mikrokontroler poseduje 4 tajmera : TMR0,TMR1,TMR2 i TMR3 .Tajmer 0(TMR0) može da radi kao 8 bitni ili 16 bitni tajmer ili brojač  . TMR0 poseduje 8 bitnipreskaler . TMR0 može da broji po internom ili eksternom sinhronizacionom izvoru . Imamogućnost izazivanja prekida na tzv. overflow .Tajmer1 (TMR1) može da radi kao 16 bitnitajmer ili brojač  . Može da broji po internom i po eksternom CLK signalu . Mogućnostizazivanja prekida na tzv. overflow . TMR1 ima mogućnost reseta upotrebom CCP1 EventTrigger-a . Tajmer2 (TMR2) može da radi kao 8 bitni tajmer . Poseduje odgovarajući 8 bitni

    period registar PR2 . Na ovaj način TMR2 dolazi do overflow-a pri poklapanju sa vrednošćukoja je upisana u PR2 , pri čemu naravno setuje i fleg prekida TMR2IF . TMR2 posedujesoftverski programabilni preskaler i postskaler . TMR2 se često koristi pri CCP modulu kadaradi u PWM modu .Tajmer3 (TMR3) može da radi kao 16 bitni tajmer ili brojač  . Može dabroji po internom ili eksternom CLK signalu . Može da radi kao CLK izvor za CCP modulekada rade u capture ili compare modu . TMR3 ima prekid na overflow kao i nekolikopreskaler modova .

    Još neke od preostalih dosad nepomenutih karakteristika PIC18F4520 mikrokontrolerasu : 20 izvora prekida , 2 CCP modula od toga jedan je ECCP , 10 bitni A/D konvertor sa 13ulaznih kanala , 2 uređaja za serijsku komunikaciju : MSSP i UART , Parallel Slave Port za

    paralelnu komunikaciju . Postoji nekoliko vrsta reseta kod ovog kontrolera : Power On Reset(POR) , MCLR reset – master clear , programabilni Brown out reset (BOR) , WDT reset (watchdog timer) , RESET instruction , stack underflow reset i stack full reset . RCON registarpomoću flegova daje informaciju koja je vrsta reseta bila poslednja . Instrukcijski set PIC18Fserije čini 75 instrukcija ili 83 , ako je uključen prošireni instrukcijski set . Prošireniinstrukcijski set ( Extended instruction set ) značajan je za korisnike koji rade u višimprogramskim jezicima , posebno u C-u . Uključuje se setovanjem XINST bita ukonfiguracionim bitovima . Instrukcije iz proširenog instrukcijskog seta ne bi trebalo nikadkoristiti direktno u asembleru .

  • 8/17/2019 Regulator Obrtaja

    16/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    12

    Slika 6. Tabela sa uporednim karakteristikama mikrokontrolera serije PIC18FXX20

    2.3.2  LCD displej

    U ovom projektu koristi se Samsungov LCD modul oznake DEM16217SYH-LY koji sadržiinterni LCD kontroler kompatibilan sa Hitachi-jevim HD44780 kontrolerom . Ovaj LCDmodul sadrži 2 reda po 16 karaktera , a ima i pozadinsko osvetljenje (eng. backlight) .

    Slika 7. Interna šema LCD modula

  • 8/17/2019 Regulator Obrtaja

    17/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    13

    Opis vrsta memorije LCD modula: DDRAM (eng. Display Data RAM ) se sastoji od 80bajta tj. može da memoriše 80 karaktera . Ovde se šalju karakteri koji se žele videti na LCDekranu . CGRAM (eng. Character Generator RAM ) je veličine 64 bajta i dozvoljava dakorisnik definiše 8 karaktera u obliku 5 x 8 piksel matrice . CGROM ( eng. CharacterGenerator ROM ) je veličine 8320 bita i sadrži predefinisane karaktere .

    Opis spoljnih pinova LCD modula: Pin 1 – VSS tj. Masa (eng. ground) , Pin 2 – VDDtj. napajanje (eng. supply) , Pin 3 – V0 tj. napajanje za LCD , kada se veže otpornik premamasi služi za podešavanje kontrasta LCD displeja . Pin 4 – RS (eng. Register Select) služi dazavisno od vrste instrukcije odredi da li se pristupa registru instrukcija ili registru podatakaunutar LCD modula . Pin 5 – R/W služi za da odredi da li se upisuje ili čita iz LCD modula .Pošto se u LCD modul najčešće upisuje ovaj pin se u većini aplikacija može spojiti na masu .Pin 6 – E (eng. Enable) visok logički nivo na ovom pinu govori internom LCD kontroleru da

     je stanje na ostalim kontrolnim pinovima i na data magistrali LCD-a važeće . Period Enablesignala mora biti minimum 1000 nanosekundi , a pozitivni impuls najmanje 450 nanosekundi. Pinovi 7 do 14 – dvosmerna magistrala podataka sa oznakama od DB0 do DB7 . Pinovi 15 i

    16 su priključci za anodu i katodu pozadinskog osvetljenja .LCD modul se može podesiti da komunicira preko 8 bitne ili preko 4 bitne magistrale

    podataka . To se postiže slanjem odgovarajućih function set instrukcija pri inicijalizaciji . Ako je data interfejs 8 bita , transfer podataka se vrši odjednom koristeći sve pinove datamagistrale od DB0 do DB7 . Ako je data interfejs 4 bitni , transfer podataka se vrši iz dva delakoristeći samo pinove od DB4 do DB7 , pri čemu se šalje prvo gornji nibl , a zatim i donjinibl .

    Instrukcijski set internog LCD kontrolera sastoji se od 11 instrukcija . Svaka instrukcijapredstavlja odgovarajuću kombinaciju bitova na RS , R/W i LCD data bus pinovima . Takombinacija postaje važeća za vreme visokog nivoa Enable signala . Internom LCD

    kontroleru potrebno je vreme od 40 mikrosekundi da izvrši internu operaciju specificiranudatom instrukcjom . Za to vreme je Busy flag na visokom nivou i on neće biti oboren na nizaknivo sve dok se ne završi interna operacija LCD kontrolera . Za to vreme LCD kontroler neprihvata dalje instrukcije , osim instrukcije za proveru stanja busy flag-a . Danas se u većiniaplikacija sa LCD displejom ne primenjuje provera busy flag-a , već  se stavljaju fiksnavremenska kašnjenja veća od vremena potrebnog za završetak interne operacije LCDkontrolera . Jedan od razloga za izbegavanje provere busy flag-a je i to što logika LCDkontrolera može da zaboravi da ga po završetku interne operacije obriše , što može time daizazove zaglavljivanje programa . Dovoljno kašnjenje za većinu instrukcija je 100mikrosekundi , osim za instrukcije clear display i return home za koje se preporučujekašnjenje od 2 milisekunde .

    LCD instrukcije su sledeće : Clear display , Return home , Entry mode set , DisplayON/OFF control , Cursor or display shift , Function set , Set the CG RAM address , Set theDD RAM address , Read busy flag & address , Write data to CG or DD RAM , Read datafrom CG or DD RAM .

    Svaki LCD modul automatski izvodi inicijalizaciju po uključenju koristeći interno resetkolo . Vreme uspostavljanja napona napajanja mora biti manje od 10 milisekundi da bi ovainicijalizacija uspela . Ako ovo ne funkcioniše , tri puta se šalje function set instrukcija za 8bitni mod da bi se kontroler primorao da uđe u 8-bitni mod . Preporučuje se inicijalizacijapomoću instrukcija .

  • 8/17/2019 Regulator Obrtaja

    18/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    14

    Slika 8. Tabela instrukcija za Hitachi kompatibilan LCD kontroler

    Dakle , generalni princip funkcionisanja LCD modula bi bio da se prvo signali RS iR/W postave na odgovarajuće nivoe , zatim se postavlja LCD data bus i ta kombinacija bita seproglašava važećom podizanjem Enable signala na visok logički nivo .

    Kada je dužina data interfejsa kao što je u ovom slučaju podešena na 4 bita , prvo sepostavi RS signal (R/W je vezan za masu jer se uvek upisuje) , a zatim se na DB7:DB4 liniješalje gornji nibl za LCD data bus . Na Enable pinu se kratkim pozitivnim impulsom stanjeproglašava važećim . Instrukcija još uvek nije kompletirana . Sada se na linije DB7:DB4

    dovodi donji nibl za LCD data bus , pa se kratkim pozitivnim impulsom na Enable pinu stanjeproglasi važećim . Ovim je kompletiran jedan instrukcijski ciklus i interni LCD kontrolerpostavlja busy flag i narednih 40 mikrosekundi (ako je standardna instrukcija u pitanju)izvršava internu operaciju i ne reaguje na instrukcije i kontrolne komande spolja uključujući iEnable pin .U realizaciji ovog projekta radi uštede pinova na mikrokontroleru iako to nijekritičan resurs u ovoj aplikaciji , upotrebljen je pomerački registar (eng. shift) 74HC164 .Ovim se dobija da se umesto 6 pinova mikrokontrolera koriste samo 3. Za komunikaciju saLCD modulom i pomeračkim registrom odabrani su pinovi RE0,RE1 i RE2 . Pin RE0 jeserijski ulaz u pomerački registar . U registar se pomera 5 bita : RS signal i 4 bita za LCD databus . Posle postavljanja svakog bita na RE0 dolazi do kratkog pozitivnog impulsa na RE1pinu , to je pomerački takt (eng. Shift Clock).

  • 8/17/2019 Regulator Obrtaja

    19/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    15

    Na taj način se stanje RE0 pina prenosi u najniži bit pomeračkog registra , a svi ostalibitovi pomeračkog registra se pomeraju za po jedan napred . Posle 5 impulsa na RE1 pinudobijamo svih potrebnih 5 bita u registru na potrebnim pozicijama . Tada se pojavljujekratkotrajan pozitivan impuls na pinu RE2 , koji predstavlja Enable signal . U sledećoj fazi sepomera donji nibl i ponovo aktivira Enable signal na RE2 i time kompletira izvršenje jedne

    LCD instrukcije .Treba napomenuti da je LCD modul ostao konfigurisan za 4-bitni datainterfejs bez obzira na upotrebu 8-bitnog pomeračkog registra , jer je 5-ti bit neophodan zaRS signal .

    Dat je primer asemblerskog koda napisanog kao potprogram koji služi za izvršenjenekompletnih instrukcija gde nije neophodno poslati donji nibl . Ovaj potprogram jepredstavljen umesto potprograma za izvršenje ˝cele˝ LCD instrukcije (koja šalje obapolubajta) radi uštede prostora . Algoritam je isti , samo je cela sekvenca instrukcija još

     jednom ponovljena radi slanja donjeg polubajta . Na kraju je dodat potprogram za vremenskokašnjenje podešen na 100 mikrosekundi koji obezbeđuje izlazak iz potprograma tek pošto jeLCD kontroler završio svoju internu operaciju zadatu prethodnom instrukcijom .

    LCD subroutines;;RE0 : LCD_data_serial_in :(LCD data bus DB7 to DB4,RS);RE1 : Shift_CLK;RE2 : Enablehalf_inst_4; sending upper nibble only

    movwf shift_data;movlw 5movwf count;

    btfss RS_Lcd_Flagbra clear_rs_0;bsf STATUS,Cbra end_rs_0

    clear_rs_0bcf STATUS,C

    end_rs_0;stanje RS flega se kopira na C fleg

    shift_loop_0btfss STATUS,Cbra clear_serial_0;

    bsf Lcd_Serial_Inbra end_serial_0

    clear_serial_0bcf Lcd_Serial_In

    end_serial_0;postavljen je podatak na serijski ulaz;; aktiviranje Shift CLKanopbsf Shift_CLK;data is shifted on this raising edgenopbcf Shift_CLKnop

  • 8/17/2019 Regulator Obrtaja

    20/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    16

    ;bcf STATUS,C;obrisi prethodni sadrzaj C flega;rlcf shift_data ;MSB => C flag;decfsz countbra shift_loop_0;bsf Enable_LCDnop ;1000 nSec (500nSec - min E Pulse width)bcf Enable_LCDnop ;1000nSec;2000 nSec (min E Cycle Time 1500 nSec);;~100 uSecmovlw 24call uS_Wait;wait for LCD internal operation to complete;return

    Enable

    0

    Shift Clock

    HI

    L CD

     DI

     SPLAY

    U3

    dem16217syh-ly

    7

    8

    9

    10

    11

    12

    13

    14

    6

    5

    4

    3

    2

    1

    DB0

    DB1

    DB2

    DB3

    DB4

    DB5

    DB6

    DB7

    E

    R/W

    RS

    V0

    VDD

    VSS

    L-

    L+

    R7

    1K

    0

    HI

    U4

    74HC164

          7

    8

    9

          1      4

    3456

    10111213

    12

          G      N      D

    CLK

    CLR

          V      C      C

    QAQBQCQDQEQFQGQH

    AB Serial in

     

    Slika 9. Elektri č na šema LCD podsklopa

  • 8/17/2019 Regulator Obrtaja

    21/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    17

    2.3.3. UART 

    UART (eng. Universal Asynchronous Receiver Transmitter ) je univerzalni asinhroniprimopredajnik , to je jedan od dva serijska ulazno izlazna modula implementirana uPIC18F4520 mikrokontroleru . UART se može konfigurisati kao puni dupleks (eng. fullduplex) asinhroni sistem koji može da komunicira sa periferijama kao što su : CRT terminali ipersonalni računari (eng. Personal Computers) . Umesto toga može se podesiti kao polu-

    dupleks (eng. half duplex) sinhroni sistem koji komunicira sa periferijama kao što su A/D iD/A integrisana kola i serijski EEPROM-i .

    A sad nešto uopšteno o standardu RS232 koji UART koristi za serijsku komunikaciju.Kod serijskog prenosa bitovi podatka i eventualno bit parnosti se prenose jedan za drugim unizu preko jedne linije podataka . Kod asinhronog prenosa , među bitovima podataka sadržana

     je informacija o sinhronizaciji . Te informacije o sinhronizaciji su start bit i najmanje jedanstop bit .Format podatka je sledeći : start bit je uvek logička ‘0’ , bitova podataka ima od 5 do8 , bit parnosti za detekciju greške ( parni ili neparni broj jedinica tj. parna ili neparna parnost) , zatim 1, 1i po ili 2 stop bita koji su uvek logička 1. Kada se serijskom linijom ne šaljepodatak na njoj je visok nivo tj. logička 1 . Prelazak sa logičke 1 na logičku o tj. negativna

    tranzicija – silazna ivica to je znak za nailazak start bita . Iza njega ide 8 bitova podatakapočevši sa LSB-om tj. bitom najmanje težine , a završavajući sa MSB-om tj. bitom najvećetežine . Iza bitova podataka je bit parnosti . Iza bar 1 Stop bit koji je uvek logi čka 1 . Mogućesu varijacije ovog tipičnog formata podatka npr. jedan STOP bit ili bez bita parnosti itd… .Bodska brzina (eng. Baud Rate) je jednaka poslatom broju bitova u sekundi . Za pravilanprenos podataka potrebno je da i prijemnik i predajnik rade na istoj bodskoj brzini tj. imajuisti Baud Rate .

    U ovom projektu se koristi UART modul kao asinhroni predajnik za komunikaciju saserijskim portom personalnog računara .

    Slika 10.Blok šema predajnog dela UART modula

    Pinovi UART periferije su multipleksirani sa portom C . Pinove RC6/TX i RC7/RXtreba definisati za rad sa UART modulom . To se izvodi preko TRISC registra . Zapodešavanje operacije UART-a imamo 3 kontrolna registra . To su TXSTA – predajni registar, RCSTA – prijemni registar , BAUDCON – kontrolni registar bodske brzine . U ovomprojektu pošto je neophodna komunikacija sa personalnim računarom odabran je asinhronirežim rada UART-a . Mod rada UART-a bira se kontrolnim bitom SYNC u TXSTAkontrolnom registru . Obrisan SYNC bit podešava UART u asinhroni mod , a setovan usinhroni mod . Format podatka koji se ovde koristi za serijsku komunikaciju je standardniNRZ (non return to zero) format podataka : 1 start bit , 8 ili 9 bitova podataka , 1 stop bit .

  • 8/17/2019 Regulator Obrtaja

    22/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    18

    Prijemnik i predajnik su nezavisni , ali koriste isti format podatka i baud rate . Postojinamenski 8 – bitni / 16 – bitni generator bodske brzine (eng. Baud Rate Generator) kojgeneriše standardne bodske brzine od sistemskog takta .

    Na gornjoj slici dat je blok dijagram predajnog dela UART-a . Pošto se u ovom projektu

    koristi samo predajni deo UART-a samo onće i biti opisan . Brisanjem SYNC kontrolnog bitaodabrana je asinhrona predaja . Osnova predajnika je predajni pomerački registar (eng.

    Transmitt Shift Register ) skraćeno TSR . On dobavlja podatke iz predajnog bafera TXREG .TXREG se puni podacima u softveru . Čim se stop bit prethodnog podatka pošalje pomeračkipredajni registar se puni novim podatkom iz TXREG predajnog registra . Kada TXREGostane prazan , setuje se TXIF fleg . TXIF fleg se ne može obrisati u programu . TXIF se brišeu narednom instrukcijskom ciklusu posle instrukcije kojom se puni TXREG . TXIF flegodmah nakon instrukcije kojom se puni TXREG nije validan i ne treba ga ispitivati jer će datinetačne rezultate . TRMT fleg pokazuje stanje predajnog pomeračkog registra (TSR) . TRMTse setuje kada je TSR prazan . Ovaj fleg se takođe može samo očitati . Korisnik treba daproverava stanje ovog bita da bi odredio da li je TSR prazan . TSR registar nije mapiran u

    data memoriji tako da nije dostupan korisniku .Koraci za podešavanje asinhrone predaje:

    1.  Inicijalizuj SPBRGH:SPBRG registre za odgovarajuću bodsku brzinu . Setuj iliobriši BRGH i BRG16 kontrolne bitove da bi postigao željenu bodsku brzinu .

    2.  Uključi asinhroni serijski port brisanjem SYNC bita i setovanjem SPEN bita .

    3.  Ako je prekid poželjan , setuj bit dozvole TXIE

    4.  Ako se hoće 9-to bitna predaja , setuj bit predaje TX9

    5.  Dozvoli predaju setovanjem bita TXEN koji će takođe setovati bit TXIF .

    6.  Ako je 9-to bitna predaja odabrana , 9-ti bit treba da bude učitan u bit TX9D7.  Učitaj podatak u TXREG registar tj. započni predaju .

    8.  Ako se koriste prekidi , osiguraj da su GIE i PEIE bitovi u INTCON registrusetovani .

    Treba nešto reći i o generatoru bodske brzine (eng. Baud Rate Generator ) . To je namenski 8bitni ili 16 bitni generator koji podržava oba i asinhroni i sinhroni mod UART-a . BRGpodrazumevano radi u 8 bitnom modu . Setovanje bita BRG16 u BAUDCON registrupostavlja BRG generator u 16 bitni mod . Registarski par SPBRGH i SPBRG kontrolišuperiod tajmera .U asinhronom modu bitovi BRGH i BRG16 takođe kontrolišu bodsku brzinu .

    Ako se zna željena bodska brzina i takt na kome radi mikrokontroler može se izračunatinajbliža celobrojna vrednost za registre SPBRGH i SPBRGH . A dalje iz ovoga greška u

    bodskoj brzini može biti izračunata . Za kombinaciju konfiguracionih bita : BRGH=1 iBRG16=0 i ako se želi 8 bitni BRG koristi se sledeća formula:

    Desired Baud Rate = Fosc/(16 ([SPBRGH:SPBRG] + 1))

    Kada se ova jednačina reši po SPBRG dobije se:

    X = ((Fosc/Desired Baud Rate)/16)-1 , gde je X vrednost SPBRGH:SPBRG

    X=((4.000.000/9.600)/16)-1 => X=25.041666

    Znači za ovaj projekat željena bodska brzina je 9600 bita u sekundi i da bi se ona dobila

    treba upisati vrednost 25 u SPBRG registar . Pri tome dolazi do određene greške.

  • 8/17/2019 Regulator Obrtaja

    23/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    19

    Calculated Baud Rate = 4.000.000/(16*(25+1)) => Calculated Baud Rate = 9615 bps

    Izračunata stvarna bodska brzina je 9615 bita po sekundi .

    Error = (Calculated BR – Desired BR)/Desired BR => Error = (9615-9600)/9600 = 0.16%

    Greška je u ovom slučaju zanemarljiva , jer je ispod 1 % .

    Treba još napomenuti da pošto UART komunicira sa personalnim računarom dodato jeinterfejsno kolo za prilagođenje po naponskim nivoima MAX232 . Na serijskom portupersonalnog računara logičko 1 je predstavljeno sa -12 V , a logička 0 sa +12 V . KoloMAX232 adaptira te logičke nivoe na TTL logiku pri prijemu , kao što i prevodi TTL naponena + ili – 12 V pri predaji .

           +

    C2

    1uF

    0

           +

    C1

    1uF

    VCC5

           +

    C5

    1uF

    RC7/RX

    VB1

    SUB-D 9

    594837261

    RC6/TX

         +C4

    1uF

    0

    +C3

    1uF

    U1

    MAX232

    1345

          1      6

          1      5

    26

    129

    1110

    138

    147

    C1+C1-C2+C2-

          V      C      C

          G      N      DV+

    V-

    R1OUTR2OUT

    T1INT2IN

    R1INR2IN

    T1OUTT2OUT

    VCC5

     Slika 11. Električ na šema kompletnog UART podsklopa

  • 8/17/2019 Regulator Obrtaja

    24/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    20

    2.3.4. Tastatura

    Tastaturu ovde čine svega 2 tastera koji služe za povećavanje i smanjivanje referentnebrzine obrtanja motora . Za tastaturu su odvojeni pinovi RB1/INT1 i RB2/INT2 koji mogu darade kao eksterne prekidne linije . Kada se pojavi odgovarajuća ivica (rastuća ili opadajuća)

    na INTx pinu dolazi do prekida i postavljanja flega INTxIF .Port B ima još jednu zanimljivu mogućnost koja je ovde iskorišćena . Resetovanjem bita

    RBPU u INTCON2 registru na port-u B uključuju se interni slabi “pul-ap” otpornici (eng.weak internal pull-up) . Ovi interni otpornici su uključeni samo na pinovima port-a B koji sudefinisani kao ulazni . Zato su bitovi na pozicijama 1 i 2 u TRISB setovani tj. RB1 i RB2proglašeni za ulazne pinove . Preko internih pul-ap otpornika ovi pinovi su postavljeni nalogičku 1 . Na pinove su vezani tasteri sa otpornikom ka masi . Kada se pritisne taster pin seobara na logičku 0 , ujedno to je i pojava silazne ivice (eng. falling edge) na koju je ipodešeno da kontroler reaguje i izazove prekid . Dalje se testira fleg INTxIF da se utvrdi danije prekid lažan i ako nije da se vidi koja je prekidna linija izazvala prekid tj. da li jeneophodno smanjiti ili povećati referentnu brzinu , a samim tim i brzinu motora . U prekidnurutinu je ubačen i potprogram za kašnjenje od 100 milisekundi koliko je dovoljno da seizbegnu sukcesivni prekidi usled efekta odskakivanja tastera (eng. bouncing ) . Ovimeksternim linijama za prekid INT1 i INT2 dodeljen je nizak nivo prioriteta .

    SW2

    SW KEY-YM061

          1

          2

    RB2/INT2

    R91K

    0

    RB1/INT1

    SW1

    SW KEY-YM061

          1

          2

    R101K

     

    Slika 12. Električ na šema tastature

  • 8/17/2019 Regulator Obrtaja

    25/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    21

    2.3.5.  CCP (CAPTURE/COMPARE/PWM) moduli

    Mikrokontroler PIC18F4520 poseduje 2 CCP modula (eng. Capture Compare PWMModule) . Svaki CCP modul sadrži 16 bitni registar koji može da radi kao 16-bitni Captureregistar , 16-bitni Compare registar ili PWM (eng. Pulse Width Modulation) Master/Slave

    Duty Cycle registar . Modul CCP1 implementiran je kao ECCP – enhanced tj. poboljšanimodul sa dodatnim PWM mogućnostima . Svakom CCP modulu je asociran kontrolni registarCCPxCON i registar podataka CCPRx koji se sastoji od 2 osmobitna registra CCPRxH iCCPRxL. Sva 3 registra se mogu i upisati i pročitati . CCP moduli koriste Tajmer1 , Tajmer2i Tajmer3 zavisno od odabranog moda . Tajmer1 i Tajmer3 su za module u Capture iCompare modu , dok je Tajmer2 dostupan modulima u PWM modu . Dodeljivanje određenogtajmera modulu se vrši preko timer to CCP enable bitova u T3CON registru . Oba modulamogu biti aktivna u dato vreme i da dele isti tajmerski resurs , ako su konfigurisani da operišuu istom modu istovremeno . Dodela pina za CCP2 se može promeniti , a to određujeCCP2MX konfiguracioni bit . Podrazumevano dodeljen je pinu RC1 .

    CAPTURE mode

    Glavna funkcija ovog moda je za precizno merenje vremenskih intervala . Zapravo uregistre CCPRxH i CCPRxL upisuje se 16-to bitna vrednost Tajmer1 ili Tajmer3 registarakada se odgovarajući događaj desi na CCPx pinu . Događaj može biti definisan kao jedan odsledećih :

    - svaka usponska ivica (eng. raising edge)

    - svaka silazna ivica ( eng. falling edge)

    - svaka četvrta silazna ivica

    - svaka šesnaesta silazna ivica

    Događaj je definisan sa mod selekt bitovima CCPxM3:CCPxM0 koji se nalaze uCCPxCON registru . Kada se kopiranje tajmera u CCPRx desi , postavlja se CCPxIF fleg .

    Slika 13. Blok šema CCPx modula u Capture modu

  • 8/17/2019 Regulator Obrtaja

    26/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    22

    Taj fleg CCPxIF je fleg zahteva za prekid i on se posle mora obrisati u softveru . Ako sesledeće hvatanje (eng. capture) desi pre nego što je vrednost u CCPRx registru pročitana ,stara uhvaćena vrednost biva prebrisana sa novom uhvaćenom vrednošću . U capture modu ,odgovarajući CCPx pin treba da se konfiguriše kao ulaz postavljanjem odgovarajućeg bita uregistru smera TRISC . Tajmeri koji treba da se koriste sa Capture funkcijom treba da rade u

    tajmer modu ili modu sinhronizovanog brojača . U modu asinhronog brojača , Capturefunkcija neće raditi . Tajmer koji će biti korišćen sa svakim CCP modulom je odabran uT3CON registru . Kada je Capture mod promenjen , lažni capture događaj će biti generisan .Korisnik treba da drži CCPxIE bit dozvole prekida obrisan da izbegne lažne prekide . TakođeCCPxIF fleg bit treba biti obrisan posle svake takve promene u operativnom modu . CCPpreskaler ima četiri podešavanja u capture modu . Ona su navedena kao delovi operativnogmoda odabrani sa mod selekt bitovima (CCPxM3:CCPxM0). Prebacivanje sa jednog capturepreskalera na drugi moglo bi generisati prekid . Kadagod se CCP modul isključi brojač preskalera je obrisan . To znači i da će svaki reset obrisati brojač preskalera . Neophodno jeprvo isključiti CCP modul , pa zatim učitati CCPxCON i tako izbeći lažni prekid.

    PWM mod (eng. Pulse Width Modulation)Impulsno širinska modulacija je metoda upravljanja pri kojoj se formira signal

    konstantnog perioda i promenljivog trajanja impulsa . Ima primenu u upravljanju jednosmernim motorima , regulaciji temperature grejača i regulaciji osvetljenja . Kodregulacije brzine jednosmernog motora , mehanička inertnost motora igra ulogu integratora.

    Signal na PWM izlazu , ima vremensku bazu tj. period i vreme za koje izlaz ostaje visoktj. ciklus zauzetosti (eng. duty cycle). Frekvencija PWM-a je inverzija perioda .U PWM modu, CCPx pin proizvodi do 10 bita rezolucije na PWM izlazu .

    S obzirom da je CCP2 pin multipleksiran sa PORTB ili PORTC lečom podataka ,odgovarajući TRIS bit mora biti obrisan da bi se CCP2 pin učinio izlazom . BrisanjeCCP2CON registra će da isforsira RB3 ili RC1 izlazni leč na predefinisani nizak nivo . Ovose razlikuje od PORTB ili PORTC I/O leča podataka .

    Slika 15. Blok šema CCPx modula u PWM modu

  • 8/17/2019 Regulator Obrtaja

    27/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    23

    Slika 16. PWM izlazni oblik signala

    PWM period se zadaje upisom u PR2 registar . Može se izračunati koristeći sledećuformulu :

    PWM Period = [(PR2)+1] x 4 x Tosc x (TMR2 Prescale Value)

    PWM frequency = 1/PWM period

    Kada se Tajmer2 (TMR2) izjednači sa PR2 , sledeća tri događaja dešavaju se nasledećem ciklusu inkrementiranja tajmera2 : Tajmer2 se briše , CCPx pin se setuje ( izuzetakako je duty cycle 0% tada se neće setovati ) , PWM duty cycle je lečovana iz CCPRxL uCCPRxH .

    PWM duty cycle je specificiran upisom u CCPRxL registar i CCPxCON 5 i 4 bite . Do10 bita rezolucije je dostupno . CCPRxL sadrži osam bita najveće težine (eng. MSBs) iCCPxCON bitovi 5 i 4 sadrže dva bita najmanje težine (eng. LSBs). Sledeća jednačina sekoristi da se izračuna PWM duty cycle u vremenu :

    PWM Duty Cycle = (CCPRxL:CCPxCON) x Tosc x (TMR2 Prescale Value)

    CCPRxL i CCPxCON mogu biti upisani u bilo koje vreme , ali duty cyclevrednost nije lečovana u CCPRxH dok se poklapanje između PR2 i TMR2 ne desi tj. dok seperiod ne kompletira . CCPRxH je registar koji se samo čita . CCPRxH registar i 2 bitniinterni leč se koriste da duplo-baferišu PWM duty cycle . Ovo duplo baferisanje (eng. doublebuffering ) je esencijalno za rad PWM-a bez gličeva . Kada se CCPRxH i 2 bitni leč poklopesa Tajmerom2 (TMR2) vezanim sa 2 bita TMR2 preskalera , CCPx pin se briše .

    Maksimalna PWM rezolucija (bitovima) za datu PWM frekvenciju je data jednačinom :

    PWM resolution(max) = log(Fosc/Fpwm)/log(2) bits

    Ako je PWM duty cycle vrednost duža nego PWM period , CCP2 pin neće biti obrisan .

    Postavka za PWM operaciju:

    1.  zadaj PWM period upisom u PR2 register

    2.  zadaj PWM duty cycle upisom CCPRxL registar i CCPxCON

    3.  Učini CCPx pin izlazom brisanjem odgovarajućeg TRIS bita .

    4.  zadaj TMR2 preskaler vrednost , pa uključi TMR2 upisom u T2CON

    5.  konfiguriši CCPx modul za PWM operaciju

  • 8/17/2019 Regulator Obrtaja

    28/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    24

    2.3.6. ECCP modul

    U ovoj aplikaciji iskorišćene su poboljšane mogućnosti CCP1 modula . Misli se presvega na upotrebu do 4 PWM izlazna signala u cilju omogućavanja promene smera obrtanjamotora u softveru . Spoljno kolo koje treba nešto ovakvo da omogući prikazano je na donjoj

    slici .

    R8

    220

    Q4

    BD137

    R6220

    Q5BD137

    Q1BC547

    PWM P1B

    D3

    1N4148

    D4

    1N4148

    PWM P1C

    R147K

    R5220

    R422K

    Q7

    BD138

    R347K

         A   -       +

    MG1

    DC MOTOR

    1 2

    PWM P1D

    R7

    220

    Q2

    BC547

    0

    +12V

    R222K

    D1

    1N4148

    0

    0

    D2

    1N4148

    PWM P1A

    Q6

    BD138

     Slika 17. PWM izlazni stepen u tzv. Full Bridge konfiguraciji

    U Full Bridge modu se 4 pina koriste kao PWM izlazi , ali samo dva su aktivnaistovremeno . U ˝Forward˝ modu pin P1A je neprekidno aktivan , a pin P1D je modulisan . U

     ˝Backward˝ modu pin P1C je neprekidno aktivan , a pin P1B je modulisan . Bitovi na poziciji2 u TRISC i na pozicijama 5,6 i 7 u TRISD moraju biti obrisani da bi P1A,P1B,P1C,P1Dpinovi bili izlazni . Za promenu smera u Full Bridge modu treba promeniti vrednost P1M1bita u CCP1CON registru (pri čemu P1M0 bit mora ostati setovan) . Kada softver aplikacijepromeni ovaj kontrolni bit smera P1M1 , ECCP modul će primeniti novi smer pri sledećemPWM ciklusu . Neposredno pre završetka tekućeg PWM perioda , modulisani izlazi P1B iP1D su stavljeni u svoja neaktivna stanja , dok nemodulisani izlazi P1A i P1C sada menjajupolaritet . Ovo se dešava u intervalu od 4*Tosc*TMR2 Prescale pre početka sledećeg PWMperioda .

  • 8/17/2019 Regulator Obrtaja

    29/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    25

    Slika 18. Vremenski dijagram PWM signala kod Full Bridge konfiguracije pri promeni smera

    U Full Bridge modu , CCP1 modul ne pruža nikakav ˝dead band delay˝ , jer to nijepotrebno pošto je samo jedan izlaz modulisan u jednom vremenskom intervalu . Ipak i uovom modu postoji situacija kad ˝dead band delay˝ može biti zahtevan . To je kada sepromena smera vrši pri vrednosti duty cycle koja je bliska 100% . , a vreme isključenjaizlaznih PWM tranzistora je veće nego vreme uključenja . Na primer vreme isključenja Dtranzistora je veće , nego vreme uključenja C tranzistora , pa se može desiti da su za kratkovreme oba tranzistora otvorena i mogućnost da dođe do pojave struje kratkog spoja izmeđukrajeva napajanja .

    Kada ECCP modul radi u Full Bridge PWM modu , u hardveru moraju da se

    implementiraju odgovarajući eksterni pul-ap (eng. pull-up) i pul-daun (eng.pull down)otpornici na PWM izlaznim pinovima P1A,P1B,P1C i P1D . Po izlasku mikrokontrolera izRESET-a , svi I/O pinovi su u stanju visoke impedanse . Dodatne otporničke mreže treba dazadrže tranzistore u neprovodnom stanju dok mikrokontroler ne pokrene PWM pinove saodgovarajućim nivoima signala i tako aktivira PWM izlaze .

    Bitovi CCP1M1 i CCP1M0 u CCP1CON registru biraju da li su PWM izlazni signaliaktivni visoki ili aktivni niski . PWM polaritet izlaza mora biti odabran , pre nego što se PWMpinovi konfigurišu kao izlazni . Promena konfiguracije polariteta tj. stanja CCP1M1 iCCP1M0 bitova dok su PWM pinovi konfigurisani kao izlazi nije preporučljiva , pošto možeda ošteti spoljna PWM izlazne tranzistore . ECCP modul se inicijalizuje u odgovarajućem

    modu i treba da kompletira ceo PWM ciklus , što se naznačava setovanjem TMR2IF flega .Tek posle ovoga dozvoljeno je PWM pinove konfigurisati kao izlazne .

    Konfigurisanje za Full Bridge PWM

    1.  PWM pinovi P1A,P1B,P1C,P1D treba da se konfigurišu kao ulazi , setovanjemodgovarajućih bitova u TRISC i TRISD registrima .

    2.  upisom u PR2 zadaje se PWM period

    3.  Auto-shutdown konfigurisanje ; ECCP1AS = 0x00 čime se isključuje auto-shutdown

  • 8/17/2019 Regulator Obrtaja

    30/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    26

    4.  Zadavanje PWM moda upisom u CCP1CON ; bitovi P1M1 i P1M0određuju izlaznu konfiguraciju (single output , half-bridge , forward full bridge, backward full bridge ) ; grupa od 4 bita CCP1M3:CCP1M0 određujepolaritete PWM izlaza

    5.  zadaje se PWM duty cycle upisom u CCPR1L registar i CCP1CON bitove napoziciji 5 i 4 .

    6.  konfiguracija i startovanje TMR2 ; ; briše se TMR2IF u PIR1 registru ;konfiguriše se TMR2 preskaler preko T2CKPS1 i T2CKPS0 bitova u T2CON ; uključivanje TMR2 setovanjem TMR2ON bita u T2CON

    7.  uključivanje PWM izlaza posle jednog PWM perioda ; ; čeka se overflowTMR2 , što setuje TMR2IF fleg ; brišu se odgovarajući bitovi u TRISC iTRISD da bi pinovi P1A,P1B,P1C,P1D bili prekonfigurisani u izlazne . ;briše se ECCPASE bit

    2.3.7. Modul za napajanje uređaja

    Za napajanje je izabran transformator za PCB tj. print montažu koji ima dva nezavisnasekundarna namotaja na kojima daje po 12V napona , maksimalno 417 mA struje imaksimalno 5W snage . Ispravljanjem i stabilizacijom ovih naizmeničnih 12V dobijaju sedve nezavisne grane za napajanje od +12V i +5V . Ovo je izvedeno da PWM izlazni stepenkoji se napaja sa +12V ne bi imao nikakav uticaj na ostatak mikrokontrolerskog sklopa kojiradi sa +5V . Upotrebljeni su grec spojevi za ispravljanje naizmeničnog napona sa sekundara .Elektrolitski kondenzatori su dovoljno velikog kapaciteta za dobru filtraciju pozitivnihpoluperioda u jednosmerni napon . Na njima se dobije oko 18V jednosmernog napona . Preulaza u stabilizatorsko kolo 7805 ubačen je otpornik od 47 oma , a snage discipacije 5 W . Na

    taj način na tom otporniku ostvaren je značajan pad napona i kolo 7805 rasteretilo preveliketoplotne discipacije kojoj bi bilo izloženo sa 18V napona na ulazu . Usled velike discipacijekola 78xx mogu da aktiviraju internu termičku zaštitu od pregrevanja i prekinu napajanjeuređaja dok se ne ohlade . Zato je pored smanjenja pada napona između izlaznog i ulaznogpriključka bitno montirati kolo na hladnjak da bi se obezbedio neprekidan rad kola. Na izlazukola 7805 dobijamo stabilisanih +5V, a na izlazu kola 7812 stabilisanih +12 V .

    +   C84700uF

         ~

         ~

          +      -

    V1

    B250C1500

         ~

         ~

          +      -

    V2

    B250C1500   U7

    UA7812/TO

    1

          2

    3IN

          G      N      D

    OUT

    C11100nF   C10

    100nFT1

    2x12V AC, 2 x 410 mA ,10 W

    2 6

    97

    104

    +5V

    C13100nF

    U5

    UA78L05C

    1

    6

    8IN

    COM

    OUT

    0

    R14 47

    C12100nF

    +   C92200uF

    0

    +12V

     Slika 19. Električ na šema podsklopa za napajanje

  • 8/17/2019 Regulator Obrtaja

    31/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    27

    2.4. DIGITALNI P REGULATOR

    Treba se malo podsetiti nekih teorijskih stvari . Signal greške je razlika između trenutnei zadate tj. referentne brzine . Regulator na osnovu signala greške generiše upravljački signal .Ovde se upravljačkim signalom može smatrati vrednost CCPR1L registra koja određuje PWM

    duty cycle , iz tog razloga ona je i prikazana u prvom redu LCD displeja . Zakonomupravljanja se naziva relacija između signala greške i upravljačkog signala . Postoje 3 linearnazakona upravljanja koja se primenjuju u konvencionalnim industrijskim regulatorima to su :proporcionalni zakon , diferencijalni zakon i integralni zakon .

    Slika 20. Tipič na blok šema digitalnog sistema upravljanja

    Pored zasebnog P , I i D dejstva postoje kombinaciona dejstva PD (P+D) , PI (P+I) ,PID (P+I+D) . P dejstvo smanjuje signal greške u prelaznom režimu . I dejstvo smanjujesignal greške u ustaljenom stanju koje nastupa nakon iščezavanja prelaznog režima , dok Ddejstvo kontroliše grešku u prelaznom režimu . Ovde se neće preterano ulaziti u teorijuautomatskog upravljanja jer to nije tema ovog rada . Treba još samo nešto reći o samomproporcionalnom regulatoru .

    Gp(Z) = Mp(Z)/E(Z) = Kp

    Prenosna funkcija digitalnog P regulatora jednaka je proporcionalnom pojačanju Kp.

    U praksi se vrednost CCPR1L uvećava ili umanjuje za 4 u jednom prolazu krozregulacionu softversku petlju , iako na opterećenom motoru tek promena CCPR1L od 8

    izaziva primetnu promenu brzine za nekih 60 ob/min .

    A/Ddigitalniregulator D/A

    objekatupravljanja(motor)

    mernipretvarač (senzor)

  • 8/17/2019 Regulator Obrtaja

    32/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    28

    3. ISPITIVANJE

    Ispitivanjem treba utvrditi kako mikrokontrolerski sistem reaguje na promenuopterećenja motora . Radi lakšeg praćenja celog procesa održavanja referentne brzine u prvom

    redu na LCD displeju se prikazuje vrednost CCPR1L registra koja određuje duty cycle PWMsignala . Pri promeni opterećenja primetiće se kako softverski algoritam menja duty cycle tj.PWM pobudu ne bi li održao referentnu brzinu .

    Potenciometrom od 250 oma menja se opterećenje . Okretanje potenciometra u desnopovećava opterećenje , što tera mikrokontrolerski sitem na povećavanje duty cycle vrednosti ucilju održavanja referentne brzine . Okretanje potenciometra u levo smanjuje opterećenje , štodovodi do smanjivanja duty cycle vrednosti , da bi se brzina smanjila na referentnu .

    Da bi se ispitala brzina reagovanja mikrokontrolerskog sistema ispitali smo dvanajnepovoljnija slučaja: naglo povećanje i naglo smanjenje opterećenja .

    Prvi slučaj .

    Potenciometar je u krajnje levom položaju tj. opterećenje je najmanje moguće , pa jedovoljna mala duty cycle vrednost da bi se održala referentna brzina od 1500 ob/min , što jeprikazano LCD displeju sa CCPR1L ~ 80 . Naglim okretanjem potenciometra u krajnje desnipoložaj opterećenje postaje maksimalno , pa zbog male PWM pobude (duty cycle) brzinanaglo pada čak na 1140 ob/min . Vidimo da je potrebno oko 4 sekunde da se ponovo dostignereferentna brzina od 1500 ob/min , za šta je bilo potrebno povećati PWM pobudu tj. vrednostCCPR1L na 148 .

    0

    100

    200

    300

    400

    500

    600

    700

    800

    900

    1000

    1100

    1200

    13001400

    1500

    1600

       0 ,    2

       0 ,    6   1

      1 ,   4

      1 ,    8

       2 ,    2

       2 ,    6   3

      3 ,   4

      3 ,    8

    VREME(SEC)

         B     R     Z     I     N     A     (      O     B     /      S     E      C     )

     Slika 21. Grafik stabilizacije brzine od 1500 ob/min pri povećanju opterećenja na maksimum

  • 8/17/2019 Regulator Obrtaja

    33/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    29

    0

    10

    20

    30

    40

    50

    60

    70

    80

    90

    100

    110

    120

    130

    140

    150

    160

       0 ,    2

       0 ,    6   1

      1 ,   4

      1 ,    8

       2 ,    2

       2 ,    6   3

      3 ,   4

      3 ,    8

    VREME(SEC)

          C      C     P     R     1

         L

     

    Slika 22. Promena PWM pobude usled povećanja opterećenja pri 1500 ob/min

    Drugi slučaj .

    Potenciometar je u krajnje desnom položaju tj. opterećenje je najveće moguće , pa jeneophodna visoka duty cycle vrednost da bi se održala referentna brzina od 1500 ob/min ,zato na LCD dipleju stoji za CCPR1L ~ 140 . Naglim okretanjem potenciometra u krajnje levipoložaj opterećenje se smanjuje na minimalno , ali zbog prethodno visoke PWM pobude tj.duty cycle vrednosti brzina se naglo povećava na 2100 ob/min . Mikrokontroler sa kontrolnimsoftverom deluje na principu digitalnog P regulatora i kao što se vidi na donjem dijagramupotrebno mu je oko 4,5 sekundi da brzinu vrati na referentnu tj. na 1500 ob/min . To jenaravno postignuto postepenim smanjivanjem PWM pobude tj. vrednosti CCPR1L registra

    sve do ~ 65 , što pri minimalnom opterećenju daje referentnu brzinu od 1500 ob/min .

    0

    150

    300

    450

    600750

    900

    1050

    1200

    1350

    1500

    1650

    1800

    1950

    2100

    2250

       0 ,    2

       0 ,    6   1

      1 ,   4

      1 ,    8

       2 ,    2

       2 ,    6   3

      3 ,   4

      3 ,    8

      4 ,    2

    VREME(SEC)

         B

         R     Z     I     N     A     (      O     B     /      S     E      C     )

     Slika 23. Grafik stabilizacije brzine od 1500 ob/min pri smanjenju opterećenja na minimum

  • 8/17/2019 Regulator Obrtaja

    34/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    30

    0

    20

    40

    60

    80

    100

    120

    140

    160

       0 ,    2

       0 ,    6   1

      1 ,   4

      1 ,    8

       2 ,    2

       2 ,    6   3

      3 ,   4

      3 ,    8

      4 ,    2

    VREME(SEC)

          C      C     P     R     1     L

     Slika 24. Promena PWM pobude usled smanjenja opterećenja na minimum

    Treba još navesti da su za dobijanje ovih dijagrama iskorišćene neke mogućnostiprograma HyperTerminal . UART šalje svakih 200 milisekundi informaciju o trenutnoj brzinina serijski port personalnog računara . Podaci neophodni za crtanje ovih dijagrama su dobijeniopcijom Capture Text iz programa HyperTerminal koja niz sukcesivnih vrednosti trenutnebrzine smešta u jedan tekstualni fajl koji je pogodan za kasniju analizu .

    Inače treba napomenuti da je programom rešeno da se referentna brzina može postavitina sledeće vrednosti 1500 , 1560 , 1620 , 1680 , 1740 , 1800 , 1860 , 1920 i 1980 ob/min . Za

    ove vrednosti brzine moguće je izvršiti regulaciju brzine za svaki položaj potenciometrakojim se menja opterećenje , što za vrednosti van ovog opsega nije slučaj . Indikatorska

    crvena LED dioda tokom faze regulacije brzine ravnomerno i ubrzano treperi i za to vreme jetastatura neaktivna tj . zadavanje nove referentne vrednosti brzine dok se vrši stabilizacijapostojeće nije dozvoljeno .

    Još jednom treba napomenuti da su ovi dijagrami prikazani za najnepovoljnije slučajevenaglog povećanja opterećenja sa minimalnog na maksimalno i obratno . Za umerene promeneopterećenja vreme reagovanja i stabilizacije brzine je daleko kraće .

  • 8/17/2019 Regulator Obrtaja

    35/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    31

    4.ZAKLJUČAK

    Glavni deo osnovnih zadataka koji su postavljeni pre početka ovog projekta jerealizovan .

    Izvršeno je prilično tačno merenje brzine optičkom metodom i CCP modulom u Capturemodu . Obezbeđeno je ispisivanje podatka o brzini na izlazne uređaje LCD displej i UART .Realizovan je Full Bridge PWM izlaz kao i tastatura koja omogućava promenu referentnebrzine .

    Nije realizovana zamisao da se tzv. tahogeneratorskom metodom meri brzina . Problemza primenu ovakvog rešenja predstavlja sama konstrukcija jednosmernih motora koji su biliraspoloživi , jer motori poseduju interne elektronske sklopove koji znatno umanjujuindukovani napon .

    Takođe se odustalo od izrade štampane ploče , već  je projekat realizovan na

    eksperimentalnoj pertinaks raster ploči . Osim estetskih nedostataka , nije se pokazalo da ovounosi neku nestabilnost u rad uređaja .

    Za prelazak , iz faze projektovanja i testiranja na bazi funkcionalnog modela na nivoprototipa neophodno je izraditi štampanu ploču .

    U okviru projekta ostalo je dosta mogućnosti za unapređenja i izmene . PWM izlaznistepen je već tako realizovan da hardverski podržava promenu smera motora , tako da ostajemogućnost da se izmeni softver tj. da se neznatno modifikuje da bi pod određenimokolnostima vršio promenu smera motora . Isto tako , se većinom Full Bridge konfiguracijePWM izlaznog stepena izvode sa FET ili MOSFET tranzistorima i tako se umanjujediscipacija , pa bi se tipični BD tranzistori male snage mogli zameniti nekim FET ili

    MOSFET tranzistorima . Ove izmene bi omogućile upravljanje motorima veće snage od ovihkoji su korišćeni u radu .

    Takođe s obzirom da je već  implementiran UART mogle bi da se izvrše izmene u softverutako da uređaj preko UART prijemnika sa personalnog računara dobija komandu za promenureferentne brzine .

  • 8/17/2019 Regulator Obrtaja

    36/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    32

    5. INDEKS POJMOVA

    A F

    A/D konvertor 7,11,23 full bridge 1,2,25,26,27,33

    algoritam 15,29,31,32

    asembler 1,7,8,11,15 H 

    ASCII 4,6,31 hardver 1,2,4,5,6,7,23,26,33

    aplikacija 2,6,8,13 HEX fajl 7

    B I

    bafer 10,11,18,24 instrukcija 4,6,7,8,11,13,14,15

    bodska brzina 4,17,18,19 impuls 1,4,13,14,15,23busy flag 13,14 interfejs 13,14,15,19

    BSR 8

    backlight 12 K

    brown out reset 11 komentar 7

    C L

    capture 1,2,4,5,7,11,21,22,31,33 LCD displej 2,4,6,12,13,28,29,33

    compare 11,21,22,23 LCD modul 4,6,12,13,14,15

    leč  10,22,23,24

    D

    DATA RAM 8,9,13 M

    dijagram toka 2,3 memorija 8,9

    DDRAM 13 MSSP modul 11

    debounce 20

    P

    E prekid 1,2,4,6,7,10,11,18,20,22,23,25,27

    enable 6,13,14,15,16,21 port 4,6,7,9,10,11,17,18,19,20,23,31

    električna šema 16,19,20,27 potprogram 2,4,5,6,15,20

    UART 4,11,17,18,19 preskaler 11,22,24,27

    EEPROM 8,9,17 pomerački registar 14,18

  • 8/17/2019 Regulator Obrtaja

    37/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

    33

    6.  LITERATURA

    1.  PIC18F4520 DataSheet (pdf)

    2.  DEM16217SYH-LY LCD module datasheet (pdf)

    3.  74HC164 datasheet (pdf)

    4.  KTIR0621DS datasheet (pdf)

    5.  MAX232 datasheet (pdf)

    6.  http://digilander.libero.it/ddanijel/allpic.htm 

    7.  http://freenet-homepage.de/dl4yhf/winpicpr.htm 

    8.  http://www.microchip.com 

    9.  http://datasheetcatalog.com 

    10.  http://datasheetarchive.com 

  • 8/17/2019 Regulator Obrtaja

    38/38

    Dalibor Ubović : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

     Dodatak 1. Električ na šema kompletnog uređ aja