You are on page 1of 5

Upravljanje sustavom za pozicioniranje s koranim motorom

Goran Mali, Aleksandar Grilec-orijevski, Muamer Alajbegovi


Elektrotehniki odjel Tehniko veleuilite u Zagrebu
Vrbik 8, Zagreb, Hrvatska Telefon: 01/5603 900 E-mail: goran.malcic@tvz.hr

Saetak - Procesi koji se odvijaju u modernim industrijskim pogonima neizvedivi su bez sklopova koji vrlo precizno upravljaju dijelovima postrojenja uporabom koranih motora. Danas se potrebe za takvim upravljakim sklopovima rjeavaju servo sustavima, dok je u ovom radu kao alternativa predstavljeno jedno jednostavno rjeenje, ali sa velikim mogunostima daljeg razvoja i nadogradnje. Elektroniki sklop s mikrokontrolerom za upravljanje koranim motorima moe samostalno obavljati funkciju preciznog pozicioniranja koranog motora ili sklopa kojeg motor pogoni. Sklop je takoer mogue povezati u vei automatizirani sustav putem serijskog suelja. U razvoju je proizveden potpuno funkcionalan prototip ovakvog ureaja te je testiran u laboratoriju Tehnikog veleuilita u Zagrebu.

elemenata za stabilizaciju napona. Zatim je tu jednostavna tipkovnica koja slui za osnovno upravljanje ureajem. Ureaj s vanjskim svijetom, u ovom sluaju osobnim raunalom, komunicira putem serijske komunikacije.

I. UVOD
Ubrzani razvoj tehnologija i masovna proizvodnja poluvodikih elemenata, kao i sve vii stupanj njihove integracije, dovela je do znaajnog pojeftinjenja mikroprocesora odnosno mikrokontrolera. Danas njihova proizvodnja doivljava veliki napredak kako u funkcijskom tako i u pogledu velike fleksibilnosti i primjenjivosti, stoga je mogue funkcije vrlo kompliciranog sklopovlja izvesti znatno jednostavnije, primjenom samo jednog mikrokontrolera s odgovarajuom programskom podrkom. U ovom radu je prikazan dio mogunosti funkcija koje je primjenom mikrokontrolera mogue ostvariti i to na modelu ureaja za upravljanje koranim motorom.
Slika 1. Izgled gotovog, funkcionalnog sklopa

Centralni programski (softverski) dio ini program za mikrokontroler pisan u asemblerskom jeziku. Upravljaki program pisan je u Visual Basicu, izvodi se na osobnom raunalu, a slui kao kontrolna ploa za upravljanje ureajem.

III. SKLOPOVLJE
Na slici 2. prikazana je jednostavna blok-shema sustava. Mikrokontroler je sredinji dio koji komunicira s ostalim ulaznim i izlaznim jedinicama. U ovom sustavu ulazne jedinice su tipke za upravljanje i komunikacija preko USART-a (eng. Universal Synchronous Asynchronous Receiver Transmitter) s RS232 sueljem i dava krajnjeg poloaja, dok su izlazne jedinice zaslon (4x7 segmentni zaslon) koji slui za vizualnu kontrolu ureaja pri upravljanju i pretvara za pobudu motora. Osim ovih, tu je jo i dio sklopa koji slui za prilagodbu i stabilizaciju napona napajanja. Na slici je prikazana povezanost mikrokontrolera i zauzee njegovih noica (pinova) perifernim jedinicama. Tako osam noica mikrokontrolera ini sabirnicu za ispis znamenaka na segmente zaslona, a druge etiri noice koriste se za takozvano multipleksirano osvjeavanje. Pomou njih se pojedina znamenka ukljuuje u odreenom trenutku i tako u ciklusima s dovoljno velikom brzinom da to ljudsko oko ne primjeti. Kontrolu vrimo jednostavnom tipkovnicom, koja slui samo za

II. IDEJNO RJEENJE SUSTAVA


Ureaj je zamiljen i izveden kao laboratorijski prototip ureaja za apsolutno pozicioniranje, pa se stoga pri izvedbi nije previe davala pozornost na mjere zatite od vanjskih utjecaja i smetnji, no ipak se uz vrlo male dodatne zahvate moe prilagoditi i za uporabu u zahtjevnijem industrijskom okruenju. Iz istog razloga su glavne cjeline ureaja potpuno fiziki odvojene i stavljene svaka na odvojenu tiskanu ploicu te ine hardverski neovisan dio ureaja. Centralni sklop (slika 1.) sastoji se od dijela za napajanje cijelog sustava, koji iz vanjskog napajanja 12V (poluvalno ili punovalno ispravljenog) osigurava stabilno napajanje 5V za mikrokontroler i periferne jedinice. Za tu namjenu upotrebljen je integrirani krug TS7805 i nekoliko pasivnih

upravljanje osnovnim funkcijama ureaja. Ostale upravljake funkcije pokreu se iz PC raunala putem serijske komunikacije.

Kao komunikacijski protokol koristi se standardni NRZ (Non Return to Zero), s osam podatkovnih i jednim stop bit-om i bez bit-a pariteta (8-N-1), a shema protoka podataka prikazana je na slici 4.
Osobno raunalo

Ureaj za pozicioniranje (PIC16F877)

COM(1-2)
NAREDBA

USART
TX TX

MSComm1.Output

RS232

TXREG

Trenutna pozicija

Prikaz pozicije

MSComm1.Input RX RX

RCREG

COMMANDCODE

Slika 4. Prikaz protoka informacija Slika 2. Blok shema sustava za apsolutno pozicioniranje

Ideja da se veina upravljakih funkcija dislocira sa samog ureaja proizlazi iz injenice da bi se ureajem na taj nain moglo upravljati s udaljenijih stanica, a uz neke preinake, bilo bi vrlo jednostavno ureaj osposobiti i za beino upravljanje. Mogunosti proirenja tako nisu ograniena hardverskom izvedbom ureaja, ve iskljuivo inventivnou u proirenju i nadogradnji ve postojee programske podrke, to je u konanici vrlo suvremen pristup razvoju ureaja. Upravljaki mikrokontroler PIC16F877 tvrtke Microchip opremljen je raznim perifernim jedinicama. Poseban naglasak stavljen je na komunikacijske module. Za dislocirano upravljanje koristi se dodatni modul mikrokontrolera koji se naziva USART, a jo je poznat i kao SCI (Serial Communications Interface). Ovaj modul moe biti konfiguriran kao full-duplex asinkroni sustav koji je ovdje koriten ili moe biti podeen kao half-duplex sinkroni sustav. Obzirom da kod RS232, koji se koristi za serijsku komunikaciju na osobnim raunalima, logiko "0" odgovara naponskom nivou od -10V, dok je kod mikrokontrolera to 0V, a logiko "1" na osobnom raunalu naponskom nivou od +10V, a kod mikrokontrolera je to 5V. Za dvosmjernu prilagodbu, koristi se integrirani krug MAX232. To je potrebno da bi se stekli uvjeti za uspjean prijenos podataka izmeu raunala i mikrokontrolera i obratno. (slika 3.)

Predvieno je da ureaj odgovara na vie korisnikih akcija (unoenje eljene pozicije, pozicioniranje, memoriranje pozicije itd.), pa je za potpuno upravljanje potrebno petnaest numerikih i funkcijskih tipki. Meutim, na ureaj je smjeteno samo nekoliko osnovnih tipki, dok se ostale funkcije i numeriki dio aktivira iz osobnog raunala putem serijske veze. Na sam ureaj ugraeno je pet osnovnih tipki pomou kojih se mogu izvriti sljedee osnovne funkcije: Power, Channel Up, Channel Down, Synch i Set. Upotrebom tipki Channel Up i Channel Down korisnik moe odabirati izmeu deset memoriranih pozicija. Tipka Power slui za ukljuenje/iskljuenje ureaja. U sluaju da se dogodi neko fiziko odstupanje pozicije od stvarno traene, tu je tipka Synch kojom e se inicirati mod za sinkronizaciju, koji e ureaj kalibrirati. Tipka Set ureaj postavlja u set mod, odnosno mod za uitavanje informacije o trenutnoj poziciji ureaja. Hardverski dio tipkovnice vrlo je jednostavan, to se moe vidjeti na slici 5. Za svaku tipku potreban je po jedan pull up otpornik, koji slui da se na odgovarajuem ulazu mikrokontrolera sigurno definira naponski nivo, dok tipka nije pritisnuta.

Slika 5. Prikljuenje tipki na mikrokontroler

Slika 3. Shema spajanja MAX232

U ovom radu upotrebljen je standardni etverofazni unipolarni motor (s bifilarnim namotima), rezolucije 200 koraka po okretaju, to znai da mu jedan korak iznosi 1,8. Na slici 6. prikazana je shema pretvaraa za etverofazni unipolarni korani motor. Struju kroz namotaje statora kontroliraju etiri bipolarna tranzistora koji rade kao

sklopke. Njima preko oganiavajuih otpora i optokaplera izravno upravlja mikrokontroler. Za tu namjenu upotrebljeni su tranzistori 2N6039 u SOT 32 kuitu koji su zapravo dva NPN tranzistora spojena u "Darlington spoj". Struja kolektora IC=4A (to predstavlja trajnu struju kroz tranzistor), dok mogu izdrati vrnu struju ICM=8A.

tako mogue na ovaj nain rijeiti taj problem jer program nee propustiti ni jedan dogaaj tog tipa (slika 8.). No javlja se opasnost da korisnik neku tipku dri due i da program vie puta proe kroz glavnu petlju i taj dogaaj prepozna kao vie pritisaka na istu tipku. To je rijeeno uporabom kontrolne zastavice smjetene u memorijski registar zajedno s ostalim zastavicama koje oznaavaju stanja ureaja. Kada se prvi put detektira pritisak na bilo koju tipku, setira se ova zastavica i izvrava se odgovarajua naredba. U narednim prolascima kroz taj dio programa, zanemaruje se pritisak na bilo koju od tipki, sve dok se ne ustanovi da ni jedna tipka nije pritisnuta. Tada se zastavica resetira i program je u sljedeem prolazu spreman za primitak nove naredbe. Takoer u ovom dijelu programa procesiraju se naredbe koje su eventualno pristigle serijskom vezom.

Slika 6. Shema pretvaraa za pobudu koranog motora


je li u prolom prolazu bila pritisnuta tipka? NE

IV. PROGRAMSKA PODRKA


Programsko rjeenje za mikrokontroler namjenjeno ovom sklopu slijedi model programiranja ugraenih (eng. embedded) aplikacija. Sastoji se od tri glavne cjeline: - Inicijalizacija - Glavna petlja programa - Prekidni podprogrami (interrupt rutine) Inicijalizacijski dio programa slui kao priprema ureaja za ispravan rad popunjavanjem memorijskih registara mikrokontrolera odreenim vrijednostima. Na slici 7. vidi se tok glavne petlje programa. Trajanje petlje je 1 ms. U svakom prolazu kroz glavnu petlju, ispie se po jedna znamenka na zaslonu, to bi znailo frekvenciju osvjeavanja od 250 Hz. Takoer svakim prolaskom kroz glavnu petlju kontrolira se pritisnutost upravljakih tipki.
START

DA

je li sad pritisnuta neka tipka?

NE

NE

je li sad pritisnuta neka tipka?

DA

DA decrement brojaa mrtvog vremena decrement brojaa mrtvog vremena

Slika 8. Dijagram toka dijela potprograma za detekciju stanja tipki

inicijalizacija

djelovanje na periferije (watchdog, tipke, display, motor i slanje podataka)

obrada eventualno dospjele naredbe

DA

je li istekao period petlje?

NE

Slika 7. Strukturni dijagram toka programa (glavna petlja)

Komunikacija serijskom vezom i primanje impulsa s krajnjeg prekidaa nisu sinkroni dogaaji pa se njihova implementacija rjeava putem prekidnih (interrupt) podprograma. Prijem podataka u mikrokontroler nije sinkroni dogaaj, pa ne bi bilo praktino stalno testirati ulazni registar kako bi se podatak iitao to bre nakon primitka. Puno bolje rjeenje u ovom sluaju je prekid koji se dogaa nakon to se napuni ulazni registar RCREG. Kako se radi o tono i strogo definiranom prekidu, podprogram koji ga obrauje vrlo je kratak (slika 9.), a svodi se na iitavanje registra RCREG, tj. kopiranje njegovog sadraja u akumulator, izraunavanje stvarnog kda naredbe i njeno spremanje u registar za primljenu naredbu COMMANDCODE, zatim treba setirati zastavicu za oznaavanje pristigle naredbe (MODE,VCR) i resetiranje prekidne zastavice za prijem podataka na USART (PIR1,RCIF), kako bi se omoguio prijem nove naredbe putem USART-a i na kraju izlaz iz prekidnog podprograma koji e vratiti postavke vanijih registara koje su sauvane prije izvrenja prekidnog podprograma.

Trajanje pritiska na neku tipku sigurno je znatno due nego trajanje prolaska kroz glavnu petlju (> 1 ms), pa je

rcv_isr

sadraj registra RCREG umanji za 40 i dobivenu vrijednost spremi u registar COMMANDCODE

resetiraj zastavicu prekida PIR1,RCIF

setiraj zastavicu primljene naredbe MODE,VCR izlaz

Slika 9. Dijagram toka programa za prijem podataka

Slanje podataka putem USART-a u sutini nije nita zahtjevnije od primanja, no do komplikacija dolazi pri odabiru trenutka u kome je podatak potrebno poslati. Naime, osobnom raunalu eli se nakon svake promjene pozicije ureaja poslati podatak o trenutnoj poziciji. Dakle, podprogram za slanje podatka treba se aktivirati samo onda ako se dogodila promjena pozicije sustava (slika 10.). To moemo postii tako da pri svakom prolazu u posebne registre (OLD_ACTPOSL i OLD_ACTPOSH) spremimo vrijednosti registara trenutne pozicije (ACTPOSL i ACTPOSH). O sljedeem prolazu programa kroz ovaj dio koda usporeuju se nove vrijednosti sa starima i ako je dolo do promjene, izvri se dio podprograma koji kopira prvo sadraj registra ACTPOSH, a zatim i registra ACTPOSL u registar TXREG za slanje podataka putem USART-a.
rb_isr

svaki drugi ciklus. U okviru tog dijela programa mikrokontroler ispituje ukljuenost ureaja i u sluaju potvrdnog odgovora usporeuje vrijednost traene pozicije s trenutnom. Ako postoji pogreka u poziciji, izvrava se korak motora k njenom smanjenju. Ako nema pogreke, odnosno ako je traena pozicija jednaka trenutnoj ili je ureaj u stand by modu, uklanja se napajanje sa svih namota koranog motora. Postoji i jedan poseban mod rada ureaja, a to je sinkronizacija. On nastupa kada ga korisnik aktivira pritiskom na tipku Sync ili slanjem iste naredbe s raunala. Tada se inicira zakret osovine ureaja prema krajnjoj poziciji i eka se impuls krajnjeg prekidaa (u ovom sluaju to je optiki senzor). Dolaskom impulsa s krajnjeg prekidaa zavrava se mod sinhronizacije. Nakon toga registri trenutne pozicije pune se maksimalnim vrijednostima. Iz EEPROMA se iitava vrijednost traene pozicije, obzirom na trenutno aktivni kanal i ureaj ponovo kree u pozicioniranje na tu poziciju (slika 11.). Razlog za implementaciju ovog moda rada je taj to se motorom upravlja bez povratne veze, pa ako iz bilo koga razloga mikrokontroler izgubi tonu trenutnu poziciju, izvrenjem samo jedne naredbe cijeli se sustav vrlo brzo vraa u normalni mod rada. Kao dodatno osiguranje u sluaju da otkae krajnji prekida u mod sinkronizacije postavljen je i broja koji ograniava broj koraka ureaja, tako da on ne moe napraviti vie koraka nego to bi napravio u maksimalnom hodu ureaja.

update_mot_pos

NE

je li ureaj ukljuen?

pokazuje li pokazivac na registar ACTPOSL ? NE

DA
DA

postavi pokaziva za slanje na vii byte trenutne pozicije NE vrijednost registra koji pokazuje pokaziva za slanje poalji na raunalo

je li ureaj u synchro modu?

DA

OLD_ACTPOSH = ACTPOSH ?

NE

DA

OLD_ACTPOSL = ACTPOSL ?

NE

dekrementiraj pokaziva za slanje

je li razlika pozitivna?

DA uini korak naprijed i inkrementiraj synchro broja

uini korak naprijed NE


NE pokazuje li pokazivac na registar ACTPOSL ? DA OLD_ACTPOSH=ACTPOSH OLD_ACTPOSL=ACTPOSL

DA

je li razlika negativna?

DA je li dostigao maksimum? uini korak nazad NE

NE DA poniti synchro mod

izlaz

Slika 10. Dijagram toka podprograma za slanje podataka na raunalo putem USART-a

ukloni napajanja sa svih namotaja

izlaz

Generiranje pobudnih signala za upravljanje koranim motorom obavlja mikrokontroler. Ta procedura je dio glavne programske petlje, pa se tako periodiki izvrava, no kako je predvieni period koraka 2 ms, treba preskoiti

Slika 11. Dijagram toka programa za postavljanje nove pozicije motora

Aplikacija koja se izvrava na osobnom raunalu je program pisan u Visual Basicu (slika 12.). Ona slui kao konzola za dislocirano upravljanje ureajem, te ima mogunost uvida u trenutnu poziciju ureaja. Budui da se radi o serijskoj komunikaciji, a dananja raunala su obino opremljena sa dva serijska prikljuka, tako je i u ovoj aplikaciji dana mogunost odabira izmeu jednog od njih. Pri izradi programa teilo se k maksimalnoj jednostavnosti kda, pa se nije previe vodilo rauna o zatiti i stabilnosti aplikacije. Unato tome sustav ispunjava predviene zadatke brzo i precizno.

realnim uvjetima rada. Sklopovski dio ureaja projektiran je na studentskoj verziji programa Eagle, i izraen u laboratorijskim uvjetima. Ureaj je izveden, testiran i doveden u punu radnu funkcionalnost. Uspjeno su realizirani svi glavni dijelovi ureaja, prvenstveno pogon LED zaslona i komunikacija s osobnim raunalom. Problem u primjeni mogao bi biti nedostatak povratne veze, kako bi upravljaki sklop imao stvarnu informaciju o trenutnoj poziciji sustava. Ovaj problem mogao bi se rjeiti dodavanjem inkrementalnog enkodera na osovinu motora, jednake rezolucije kao sam motor. To bi osiguralo da upravljaki sklop ima pravovremenu informaciju o eventualnoj nepravilnosti u radu sustava pa bi sukladno toj informaciji mogao reagirati na eljeni nain. Bilo da pogreku nastoji ispraviti ili da alje alarm o nepravilnosti ili pak da zaustavi rad sustava dok se ne otkloni kvar. Nedostatak sustava je taj to je projektiran korane motore rezolucije 200 koraka po okretaju. U sluaju da sklop elimo koristiti za pogon koranih motora sa vie ili manje koraka, bilo bi potrebno proiriti i nadograditi glavni dio programa, na nain da on postane konfigurabilan. Drugi nedostatak sklopa za upravljanje motorom je to bi se za vee motore morali upotrijebiti pretvarai veih snaga ali obzirom da je pretvara izveden kao fiziki odvojrni podsustav, tako se umjesto trenutno ugraenog pretvaraa za pobudu mogu ugraditi i pretvarai veih snaga i to bez ikakvih dodatnih sklopovskih zahvata na ureaju. Naravno, programske nadogradnje su gotovo neograniene.

LITERATURA
[1] Slika 12. Izgled aplikacije za upravljanje PIC16F87XA Data Sheet, Microchip Technology Inc., 2004. [2] MPLAB IDE PICSTART plus user's guide, Microchip Technology Inc., 2004. [3] www.datasheetarchive.com [4] Uro Peruko: Digitalna elektronika, kolska knjiga, Zagreb, 1993. [5] Slobodan Ribari: Arhitektura mikroprocesora, Tehnika knjiga, Zagreb, 1982. [6] A. Grilec-orijevski: Upravljanje koranim motorom, diplomski rad, Tehniko veleuilite u Zagrebu, Elektrotehniki odjel, Zagreb, 2004. [7] G. Mali: Mikrokontrolerski sustavi, Tehniko veleuilite u Zagrebu, Elektrotehniki odjel, Zagreb, 2003. [8] T. urina, M. Crnekoni: Industrijski roboti, kolska knjiga, Zagreb, 1990. [9] B. Jefti, V. Vasi, . Oros: Regulisani elektromotorni pogoni, Akademska misao, Beograd, 2004. [10] D. Grundler Uvod u mikroprocesore, Tehnika knjiga, Zagreb 1990. [11] P. Gugi: Elektrini servomotori, kolska knjiga, Zagreb, 1987. [12] T. Kenjo: Stepping Motors and Their Microprocessor Controls, Clarendon Press, 1984.

10. TESTIRANJE UREAJA


Testiranje je vreno na nain da se ureaju u vie navrata zadavalo kretanje izmeu osam unaprijed odreenih i zabiljeenih pozicija. Nakon dvadeset izmjena pozicija, rotor motora se vratio u poetnu poziciju bez ijednog koraka greke. Treba naglasiti da motor pri testiranju nije bio mehaniki optereen.

11. ZAKLJUAK
Pri projektiranju i izradi ovog ureaja, konstantno se kontrolirala funkcionalnost svih njegovih pojedinih cjelina. Da bi se postigao siguran start i ispravno izvoenje programa, morali su se osigurati uvjeti za normalan rad ureaja, odnosno bilo je potrebno stabilizirati poeljne oscilacije, a odbaciti nepoeljne. U programiranju je od velike pomoi bio Mplab Sim, odnosno programski simulator u sastavu razvojnog okruenja Mplab IDE. Konkretni rezultati programiranja mikrokontrolera dobiveni su testiranjem na razvojnom sustavu Easy-PIC, gdje se program mogao testirati u

You might also like