You are on page 1of 23

VELEUILITE U RIJECI

ODJEL TELEMATIKA
















STUDENT Marin Simi

UPRAVLJANJE KORANIM MOTORIMA
PUTEM ARDUINO PLATFORME

PROJEKTNA DOKUMENTACIJA
















Rijeka, 2013.


2
VELEUILITE U RIJECI
ODJEL TELEMATIKA


















UPRAVLJANJE KORANIM MOTORIMA
PUTEM ARDUINO PLATFORME

PROJEKTNA DOKUMENTACIJA








Kolegij: Projekt u telematici
Mentor: Marino Franui, predava
Student: Marin Simi
Matini broj: 2427005016/10
Studij: Telematika



Rijeka, sijeanj, 2013.


3

SADRAJ
APSTRAKT ......................................................................................................................... 4
1. UVOD ............................................................................................................................... 5
2. KORANI MOTORI ...................................................................................................... 6
2.1. Karakteristike koranih motora ................................................................................. 6
2.2. Podjela koranih motora ............................................................................................ 7
2.2.1 Reluktantni korani motori ................................................................................. 7
2.2.2 Korani motori s permanentnim magnetom ........................................................ 8
2.2.3 Hibridni korani motori ...................................................................................... 8
2.3 Bipolarni i unipolarni korani motori ......................................................................... 9
2.4 Upravljanje bipolarnim koranim motorom ............................................................... 9
3. ARDUINO PLATFORMA ........................................................................................... 10
4. MOTOR DRIVER L298N ............................................................................................ 11
5. UPRAVLJANJE MOTORIMA ................................................................................... 12
5.1 Spajanje tipkala ......................................................................................................... 12
5.2 Regulacija brzine vrtnje ............................................................................................ 13
5.3 Prisilno zaustavljanje motora .................................................................................... 14
5.4 Elektrina shema spajanja ......................................................................................... 15
5.5 Montana shema spajanja ......................................................................................... 16
5.6 Problem s radom tipkala ........................................................................................... 17
5.7 Problem s istovremenim pokretanjem oba motora ................................................... 18
5.8 Programski kod ......................................................................................................... 18
6. ZAKLJUAK ................................................................................................................ 22
7. LITERATURA............................................................................................................... 22
8. POPIS SLIKA ................................................................................................................ 23



4
APSTRAKT
U projektnom radu je opisana jedna od brojnih mogunosti Arduino razvojne platforme
otvorenog koda, upravljanje koranim motorom. Korani motori pulsnu elektrinu pobudu
pretvaraju u korak, te omoguavaju potreban diskretni pomak, to je nuno u sklopovima i
sustavima gdje se zahtijeva kontrolirano upravljanje preciznim pomacima mehanikih
dijelova. U praktinom dijelu projekta realizirano je simultano upravljanje dvama bipolarnim
dvofaznim koranim motorimam, pomak za jedan korak napred-nazad i kontinuirano kretanje
napred-nazad. Za realizaciju projekta, pored osnovnog modela arduinovog modela
ArduinoUNO-a i odgovarajueg izvora napajanja, koritena su dva odvojena motor drivera s
integriranim krugom L298N. Motor driver je elektroniki sklop koji putem upravljakih
signala sa miktrokontrolera napaja korani motor potrebnim naponskim i strujnim veliinama.
Arduino UNO nema mogunost viedretvenog rada, no isti nedostatak se donekle moe
kompenzirati Interrupt funkcijom kojom je na primjeru ovog projekta rijeen zahtjev za
prisilno zaustavljanje motora. Upravljaki program je napisan u originalnoj arduinovoj
programskoj podrci otvorenog koda, u programskom jeziku vrlo slinom C-u. Programski
kod je relativno jednostavan jer Arduinova programska podrka izmeu ostalih sadri
knjinicu naredbi namjenjenih upravo upravljanju koranim motorima.






















Kljune rijei: korani motor, mikrokontroler, motor-driver, bipolarni, upravljanje,
tipkalo, bouncing.


5
1. UVOD
Veliki dio tehnologija koja se susree i koristi u svakodnevnom ivotu sadri pokretne
dijelove ijim je pomacima potrebno precizno upravljati kako bi sustav zadovoljio eljenu
funkcionalnost i automatizam. Suvremena elektronika rjeenja omoguavaju pretvorbu
analognih veliina u digitalne podatke, a korani motori te iste podatke pretvaraju u
proporcionalni mehaniki pomak.
Arduino UNO je univerzalni mikrokontroler otvorenog koda i besplatne programske
podrke sa jednostavnim korisnikim sueljem, te je kao takav idealan za razvoj upravljake
elektronike i robotike. Glavna namjena kontrolera je komuniciranje s razliitim hardverom
koji je na njega prikljuen putem ulazno-izlaznih konektora. Bogata programska podrka
izmeu brojnih knjinica s predefiniranim programskim paketima sadri i onu koja je posebno
kreirana za upravljanje koranim motorima, a to je i cilj ovog projekta.
Korani motori su jednostavne, pouzdane i precizne komponente koje ne zahtjevaju
posebno odravanje, te su nezaobilazni elementi u razliitim robotiziranim i automatiziranim
ureajima i sustavima. Ovisno o namjeni proizvode se u razliitim oblicima, razliitim
tehnolokim rjeenjima i sa razliitim tehnikim specifikacijama.
Kontroleri na izlazu daju naponske i strujne vrijednosti koje su u pravilu puno manje od
onih koje su potrebne za pokretanje elektromehanikih pretvornika. Rjeenje ovog tehnikog
problema je ugradnja motor-drivera izmeu kontrolera i motora, elektronikog sklopa koji na
osnovu upravljakih impulsa napaja prikljueni motor potrebnim naponskim i strujnim
veliinama iz odgovarajueg zasebnog izvora napajanja.
Zadatak ovog projektnog rada je izvedba oglednog primjera sustava za pretvorbu digitalnih
veliina u mehaniko gibanje.



6
2. Korani motori
Korani motori su pretvornici elektrine energije u mehaniku koji omoguavaju pretvorbu
digitalnog podatka u proporcionalni mehaniki pomak. Prevladava uporaba rotacijske
izvedbe, no proizvode se i korani motori u translacijskoj izvedbi. Pri uzbudi namotaja po
programiranom redoslijedu rotor se pomakne u diskretnim koracima, odnosno pokrene u
eljenom smijeru za predvieni kut. To su dakle sinkroni motori jer rotor sinkrono prati
kretanje statorskog polja zbog sila nastalih meudjelovanjem s poljem rotorskih magneta ili
reluktantnih sila. Pozicija rotora se mijenja u koracima jer se statorski namotaji napajaju
strujnim impulsima potrebnog rasporeda i polariteta upravljanim pomou binarnih signala.
Smjer vrtnje se moe mijenjati promjenom impulsnog slijeda, brzina rotacije promjenom
frekvencije impulsa, a kut (prijeeni broj koraka) ovisi o ukupnom broju pristiglih impulsa.
Rotor se moe i drati u eljenoj kutnoj poziciji. Korani motori su nezaobilazni elementi za
precizno upravljanje i pozicioniranje pokretnih mehanizama u praktinim ureajima i
sustavima kao to su na primjer disketni pogoni, CD/DVD ureaji, printeri, skeneri, fax
ureaji, kamere, roboti, elektromotorni ventili, protone pumpe, CNC strojevi, industrijski
ventilatori, te brojni drugi ureaji u domainstvu i industriji. Svima njima je zajedniko
kontrolirano gibanje mehanikih pokretnih djelova. Za iroku primjenu zasluna je njihova
prilagodljivost konkretnoj potrebi i relativno jednostavan nain njihovim upravljanjem.
2.1. Karakteristike koranih motora
Iz mehanikog pogleda korani motor je jednostavna, pouzdana i precizna komponenta
koja ne zahtjeva posebno odravanje zahvaljujui konstrukciji bez kolektora i etkica. Jo
neke od prednosti su povoljna cijena, jednostavan dizajn, velika akceleracija i snaga, te veliki
raspon brzine vrtnje koja je proporcionalna frekvenciji ulaznih impulsa. Od nedostataka se
moe izdvojiti mala korisnost (korani motori troe znaajnu energiju bez obzira na teret),
moment znatno opada s poveanjem brzine, sklonost rezonanciji, jako zagrijavanje na
zahtjevnim reimima, te niska izlazna snaga s obzirom na veliinu i teinu. Odabir koranog
motora za konkretnu primjenu ovisi o njegovim specifinim vrijednostima slijedeih
parametara:
Rezolucija
o Rezolucija rotacijskih koranih motora broj koraka po okretaju, odnosno
iznos koraka u stupnjevima
o Rezolucija linearnih koranih motora duina koraka
Odziv jednog koraka pokazuje brzinu, oscilatornost i tonost odziva. To je vrijeme
potrebno za pomak motora za jedan korak nakon to se napajanje jedne faze iskljui, a
slijedee faze ukljui
Tonost koranog motora ovisi o preciznosti izrade motora, a izraava se
maksimalnom relativnom pogrekom, odnosno grekom pozicije zbog konstrukcije.


7
Statiki moment moment dranja je ovisnost uspostavljenog momenta u motoru o
pomaku rotora. Krutost koranog motora moe se poveati poveanjem statikog
momenta.
Dinamiki moment ovisnost srednje vrijednosti momenta u motoru o brzini vrtnje.
Predstavlja maksimalnu vrijednost momenta tereta kojom se u stacionarnom stanju
moe opteretiti korani motor na odreenoj brzini vrtnje, a da rotor ne ispadne iz
sinkronizma s upravljakim impulsima i motor se ne zaustavi.
Start-stop moment moment tereta s kojim motor moe krenuti pri zadanoj frekvenciji
koranih impulsa, a da ne izgubi korak.
2.2. Podjela koranih motora
Korani motori se mogu podijeliti na vie naina:
Prema vrsti uzbude
o Prema nainu stvaranja uzbude
Elektromagnetska uzbuda
Uzbuda permanentnim magnetima
o Prema smjetaju uzbude
Uzbuda na rotoru
Uzbuda na statoru
Prema izvedbi rotora
o Nazubljeni elini rotor (rotor s varijabilnom reluktancijom)
o Rotor sa permanentnim magnetima
o Hibridni motori kombinacija prethodna dva
Prema broju faza najee 2-6 faza
Prema broju pari polova
o Korani motori s permanentnim magnetima na rotoru imaju 1 do 4 pari polova
o Ostali serijski proizvedeni korani motori imaju 1 do 90 pari polova
Prema nainu kretanja
o Rotacijski
o Translacijski
Prema konstrukciji namotaja odnosno napajanju
o Unipolarni
o Bipolarni
2.2.1 Reluktantni korani motori
Sastoji se od nazubljenog viefazno namotanog statora i nazubljenog (viepolnog) rotora
od mekog eljeza (nema stalnih magneta). Broj polova (zubi) rotora treba biti takav da
jednom polu statora ne pripada cijeli broj zubi rotora, jer bi inae dolo do ljepljenja rotora
i motor se ne bi mogao okretati. Uzbuda statorskih namota stvara magnetno polje na njegovim
polovima koji magnetnom silom djeluju na najmanje udaljene zube rotora. Rotor tei poloaju


8
minimalnog magnetskog otpora (reluktancije), a
postie ga poklapanjem simetrale uzbuenog para
statorskih polova i simetrale samo jednog para
rotorskih polova. Kad namoti nisu napajani, statiki
moment motora jednak je nuli. Kut koraka ovisi o
broju zuba statora i rotora, o naina namatanja
statorskih faza te nainu njihove pobude. Reluktantni
korani motori se dijele:
Prema broju paketa namota
o Jednopaketni
o Viepaketni
Prema nainu kretanja
o Rotacijski
o Translacijski
Prema vrsti zranog raspora
o Radijalni
o Aksijalni
2.2.2 Korani motori s permanentnim magnetom
Sastoji se od radijalno magnetiziranog
permanentnomagnetskog rotora i viefaznog
statora. Smjetaj permanentnih magneta na
rotoru omoguava jednostavniju izvedbu
koranog motora. Uslijed uzastopnog
ukapanja ili okratanja smjera struje pojedinih
faza (ili njihova kombinacija po odreenom
redoslijedu) dolazi do skokovitog mijenjanja
rezultantnog vektora magnetskog polja statora
u jednom ili drugom smijeru. U smjeru rezultantnog magnetskog polja statora postavlja se
rotor i to ini koranu rotaciju. Kut koji pripada jednom koraku kod koranog motora s
permanentnim magnetima zavisi od odnosa broja magnetskih polova na statoru i broja
magnetskih polova na rotoru. Ovi motori imaju malu rezoluciju, tipini korani kutovi su
izmeu 7,5
o
i 15
o
, a postiu vee snage i momente od reluktantnih.
2.2.3 Hibridni korani motori
Hibridni korani motori rade na kombinaciji rada permanentnomagnetskih i motora s
promjenjivom reluktancijom. Stator i namotaji odgovaraju onima kakve imaju reluktantni
motori. Rotor hibridnog motora se sastoji od uzduno orjentiranog permanentnog magneta
koji na svakom polu ima nazubljeni disk. Jedan disk je na junom, a drugi na sjevernom polu i
meusobno su zarotirani za pola zuba ime je postignuta visoka rezolucija koraanja.
Slika 1_reluktantni korani motor
Slika 2_permanentnomagnetski korani motor


9
Statorski namotaji su podjeljeni u najmanje
dvije faze. Ovaj tip motora ima visoku
preciznost i veliki moment, a moe se
konfigurirati i za korane kuteve od 1,8
o
.


2.3 Bipolarni i unipolarni korani motori
Korani motor moe imati 4, 5, 6 ili 8 prikljunih ica. Za razliku od unipolarne izvedbe,
statorski namotaji bipolarnog koranog motora nemaju srednji izvod na pojedinom statorskom
namotaju. Umjesto izmjenine uzbude jedne pa druge polovice namotaja za postizanje
promjene struje, a time i magnetskog polja, kod bipolarnih je to mogue izvesti samo
promjenom vrijednosti napona na oba kraja namotaja. Korani motor sa 4 prikljune ice je
dakle iskljuivo bipolarni i zahtjeva bipolarni kontroler. Ostali motori se mogu pokretati i
unipolarnom i bipolarnom uzbudom jer se srednji statorski izvod moe jednostavno
zanemariti.














2.4 Upravljanje bipolarnim koranim motorom
U praktinom dijelu ovog projektnog rada se koriste bipolarni korani motori. Razlikuju se
dva osnovna naina upravljanja koranim motorom:
Upravljanje puni korak
Upravljanje polukorak
Slika 3_hibridni korani motor
Slika 4_razliite konstrukcije namotaja koranih motora
(http://www.stepperworld.com/Tutorials/pgBipolarTutorial.htm)


10
Na slici br. 5 je shematski prikaz oba naina upravljanja bipolarnim koranim motorom na
primjeru jednostavnog dvofaznog modela sa jednim parom polova po fazi i
permanentnomagnetskim rotorom s dva pola, a isti princip rada se primjenjuje i na
najsloenije modele.

3. Arduino platforma
Arduino je univerzalni mikrokontroler zasnovan na ATmel tehnologiji i idealan je za
razvoj upravljake elektronike i robotike. Platforma je otvorenog koda temeljena na
jednostavnoj razvojnoj ploici s ulazno/izlaznim konektorima i besplatnom programskom
podrkom sa jednostavnim korisnikim sueljem. Programiranje ureaja se izvodi iz
integriranog razvojnog okruenja, koje postoji za Windows, Mac i Linux operativni sustav, u
programskom jeziku slinom C-u. Glavna je namjena cijelog sustava komuniciranje s
razliitim hardverom koji je na njega prikljuen. Arduino je dostupan u nekoliko razliitih
verzija, a osnovni model je Arduino UNO sa slijedeom tehnikom specifikacijom:
Mikroprocesor : ATmega328
Frekvencija procesora : 16MHz
Radni napon : 5V
Ulazni napon (preporueno): 7-12V
Ulazni napon (ogranieno): 6-20V
Digitalni I/O pinovi : 14 (od toga mogue 6 PWM izlaza)
Analogni ulazni pinovi : 6
Slika 5_shematski prikaz upravljanja bipolarnim koranim motorom
(http://powerelectronics.com/images/Versatile-Microstepper-Driver-fig-1.jpg)


11
DC struja za I/O pinove: 40mA
DC struja za 3,3V pin: 50mA
Flash memorija: 32 KB (0,5KB rezervirano za bootloader)
SRAM: 2KB
EEPROM: 1KB













Mikrokontroler izvodi jedan program koji je zapisan u njegovu Flash memoriju, a u
EEPROM-u se uvaju podaci nakon gaenja ureaja, kao u malom hard disku. Za proirenje
arduina dostupni su brojni shildovi koji imaju dodatne mogunosti ili ak svoje vlastite
mikrokontrolere.

4. Motor driver L298N
Za kontrolirano napajanje elektromotora se koriste motor driveri koji osiguravaju potrebne
naponske i strujne vrijednosti iz odgovarajueg izvora napajanja, a na pobudu upravljakih
impulsa iz kontrolera. Pored toga da bi DC motor mijenjao smjer okretanja potrebno je
promijeniti smjer struje u motor, a to se najlake postie H-mostom. U ovom projektu se
koristi sklop sa integriranim krugom L298N, dvostrukim H-bridge DC motor driverom, koji
moe upravljati sa dva odvojena istosmjerna motora ili jednim bipolarnim dvofaznim
koranim motorom.
Tehnika specifikacija koritenog sklopa:
Ulazni napon: 7-35V
Izlazni napon: 5-35V
Vrna izlazna struja: 2A
Napon napajanja drivera: 5-7V
Raspon upravljakog napona: -0,3-2,3V
Maksimalna izlazna snaga: 20W

Slika 6_Arduino UNO razvojna platforma


12



5. Upravljanje motorima
Ovim projektom je realizirano simultano upravljanje dvama koranim motorima putem
etiri tipkala uz mogunost regulacije brzine vrtnje i prisilno zaustavljanje motora;
1. vrtnja za cijeli krug u smijeru kazaljke na satu
2. vrtnja za cijeli krug obrnuto od kazaljke na satu
3. okretanje za jedan korak u smijeru kazaljke na satu
4. okretanje za jedan korak obrnuto od kazaljke na satu
5.1 Spajanje tipkala
Tipkala su prema priloenoj shemi spajanja spojena preko R-2R otporne mree na jedan
analogni ulaz mikrokontrolera, pin A1.
Slika 7_raspored pinova IC L298 Slika 8_motor driver s L298N
Slika 9_shema spajanje 4 tipkala na jedan analogni ulaz


13
Arduino naime ima ugraen 10-bitni analogno-digitalni pretvornik koji vrijednost
prikljuenog istosmjernog napona na analogni ulaz pretvara u cjelobrojnu vrijednost i to
1023 za prikljueni napon 5V, 0 za 0V, te ostale vrijednosti u rasponu 1-1022
proporcionalno vrijednosti prikljuenog napon. Za izvor napona se koristi 5V interni napon
mikrokontrolera pa se moe izraunati korak kvantizacije 5V / 1024 = 0,0049V ili 4,9mV.
Najvea brzina itanja je 10000 puta u sekundi jer je procesoru potrebno 100s da proita
analogni ulaz. Pritiskom na odgovarajue tipkalo u otpornoj mrei na analognom ulazu se
dakle generira cjelobrojna vrijednost proporcionalna narinutom naponu. Generiranu brojanu
vrijednost je mogue ispisati uz pomo alata Serial Monitor, te programski kod prilagoditi
dobivenim vrijednostima za svako tipkalo.
5.2 Regulacija brzine vrtnje
Na slian nain je omoguena regulacija brzine vrtnje putem naponskog djelitelja
ostvarenog sa linearnim potenciometrom vrijednosti 10k, iji su krajevi spojeni na naponski
izvor 5V, a prikljuak klizaa na analogni ulaz A2. Ovisno o poloaju klizaa potenciometra,
na analogni ulaz je narinuta odgovarajua vrijednost napona to generira proporcionalu
brojanu vrijednost na pripadajuem analognom ulazu.




Slika 10_shema spajanja potenciometra na analogni ulaz


14
5.3 Prisilno zaustavljanje motora
Prisilno zaustavljanje je obavezna sigurnosna funkcija razliitih pogonskih sustava koja se
aktivira runo ili automatski uslijed prekoraenja unaprijed zadanih graninih vrijednosti ili
nastanka incidentne situacije. Kod mikrokontrolera Arduino UNO steper funkcija blokira rad
procesora te je za prisilno zaustavljanje motora potrebno koristiti prekidnu funkciju
integriranu u arduinovoj programskoj podrci. Instanca funkcije prekida se deklarira
slijedeim izrazom: attachInterrupt(pin, function, mode). Digitalni pinovi
2 i 3 su na Arduino UNO kontroleru rezervirani za prvi parametar funkcije. Drugim
parametrom se poziva izvrna funkcija prekida, a na mjestu treeg parametra se definira uvjet
okidanja prekida na jedan od slijedeih naina:
LOW okidanje prekida kad je pin postavljen nisko
CHANGE okidanje prekida uvijek kad pin promijeni vrijednost
RISING okidanje prekida na pozitivan brid promjene vrijednosti pina
FALLING okidanje prekida na negativan brid promjene vrijednosti pina
Za potrebe ovog projekta koriten je mod CHANGE.
Varijabla u koju se sprema promjena stanja prilikom okidanja prekida mora imati prefiks
volatile to govori kompajleru da se ista nalazi u RAM memoriji, a ne u memorijskim
registrima. Razlog tome je to bi varijabla mogla pod odreenim uvjetima imati netonu
vrijednost uslijed izvoenja trenutnog procesa kad bi se ista uvala u memorijskim registrima.


Slika 11_shema spajanja elemenata za potrebe Interrupt funkcije


15
5.4 Elektrina shema spajanja
Slijedi prikaz kompletne elektrine i montane sheme spajanja. Sve sheme u ovom
projektu su izraene u desktop aplikaciji Fritzing (ima GNU GPL licencu za slobodan
softver) koja ima veliku bazu predefiniranih elemenata, no nedostajao je montani element
koritenog motor drivera, te je isti bilo potrebno dodatno generirati. To je uinjeno tako da je
.jpg datoteka s fotografijom motor drivera konvertirana u .svg datoteku (vektorski grafiki
format), te je nakon importiranja u Fritzing programsku aplikaciju prilagoena za koritenje
putem integriranog editora novih elemenata na nain da su na odgovarajuim pozicijama na
slici definirane virtualne prikljunice na koje se kasnije mogu lijepiti spojne veze.


Slika 12_elektrina shema spajanja praktinog dijela projekta


16
5.5 Montana shema spajanja

Slika 13_montana shema spajanja praktinog dijela projekta


17


5.6 Problem s radom tipkala
Prilikom izrade projekta uoeni su standardni tehniki problemi u radu tipkala, za koja je
karaktiristaan takozvani bouncing ili titranje kontakata kad se ukljuuju strujni krugovi
koji traju vrlo kratko (mjereno u ms ili jo kraim vremenskim jedinicama). U konkretnom
sluaju pokretanje motora za jedan korak rezultiralo bi okretanjem motora za dva-tri koraka.
Ovo je rijeeno ubacivanjem linije koda koja za definirano vrijeme stavlja procesor u
mirovanje, a nakon odraenog prvog kontakta tipkala. Pokusom je utvreno da kanjenje od
250ms uglavnom rjeava navedeni problem u ovom projektu. Kod pokretanja motora za cijeli
krug ovog problema nema jer se motor okree najmanje 0,5s i za to vrijeme procesor ne
reagira na promjene stanja tipkala.
Slika 14_fotografija gotovog modela projekta


18
5.7 Problem s istovremenim pokretanjem oba motora
Problem se je pojavio i pri pokuaju pokretanja dva motora istovremeno jer bi drugi motor
zapoeo s okretanjem tek kad bi prvi zavrio, a razlog tome je to je stepper ciklus blokirajua
funkcija za mikrokontroler. Ovaj problem je donekle rijeen pokretanjem oba motora za po
jedan korak u while petlji koja ima unaprijed zadani broj ponavljanja, a koji odgovara
eljenom kutu vrtnje motora. Iako za ljudsko oko izgleda da se oba motora vrte istovremeno,
u stvarnosti okret drugog motora kasni za okretom prvog za vrijeme potrebno da procesor
obradi i poalje upravljaki impuls na motor driver.
5.8 Programski kod
Upravljaki program je napisan u originalnoj arduinovoj programskoj podrci otvorenog
koda, u programskom jeziku vrlo slinom C-u. Arduinova programska podrka izmeu ostalih
sadri knjinicu naredbi namjenjenih upravo upravljanju koranim motorima to izradu
glavnog programa ini jednostavnom a napisani programski kod lako razumljivim.


/*Programski kod za upravljanje bipolarnim steper motorima
putem Arduino mikrokontrolera. Omoguava pokretanje dva motora
za jedan korak ili cijeli krug u smjeru kazaljke na satu
odnosno obrnuto, uz mogunost regulacije brzine okretanja te
prisilno zaustavljanje motora putem funkcije prekida*/

#include <Stepper.h>
// ukljuivanje Arduino knjinice
#define KORAK 48
// broj koraka za puni krug = 360 / kut jednog koraka koritenog motora
#define OMJER 5
// omjer dijeljenja analogne vrijednosti potenciometra => brzina vrtnje
int pbIn = 0;
//Interrupt 0 je na Arduino UNO-u na digitalnom pinu 2
volatile int stanje = LOW;
/* deklaracija i inicijalizacija varijable za upravljanje prekidom,
prefiks volatile govori kompajleru da se varijabla uva u RAM memoriji
umjesto u memorijskom registru gdje bi ista u odreenim uvjetima mogla biti
netona uslijed trenutnog izvoenja programa*/
int potPin = A2;
// definicija pina za prikljuenje potenciometra
int tipkaPin = A1;
// definicija pina za prikljuenje tipkala


19
int tipkaVrijednost = 0;
/* deklaracija i inicijalizacija varijable za pohranu
trenutne vrijednosti tipkala*/
int potVrijednost;
/* deklaracija varijable za pohranu trenutne vrijednosti
potenciometra*/
int brzina;
// deklaracija varijable za pohranu izraunate vrijednosti brzine

Stepper mojSteper1(KORAK, 4, 5, 6, 7);
Stepper mojSteper2(KORAK, 8, 9, 10, 11);
/*deklaracija instance steper motora ukljuuje broj koraka
za puni krug i prikljune pinove*/

void setup() {
pinMode(2, INPUT);
// setiranje digitalnog pina 2 za ULAZ
attachInterrupt(pbIn, prekid, CHANGE);
/* deklaracija prekida imena "prekid" koji se aktivira
na promjenu ("CHANGE") stanja na digitalnom pinu 2 (pbIn)*/
pinMode(potPin, INPUT);
// setiranje analognog pina A2 za ULAZ
pinMode(tipkaPin, INPUT);
// setiranje analognog pina A1 za ULAZ
Serial.begin(9600);
// inicijalizacija serijskog porta:
}

void loop() {
if(potVrijednost >= OMJER){ //podeavanje brzine vrtnje
brzina = potVrijednost / OMJER;
}
else{
brzina = 1;
}
mojSteper1.setSpeed(brzina);
// setiranje brzine vrtnje 1. motora
mojSteper2.setSpeed(brzina);
// setiranje brzine vrtnje 2. motora
tipkaVrijednost = analogRead(tipkaPin);
//spremanje u varijablu trenutne vrijednosti na pinu A1


20
potVrijednost = analogRead(potPin);
//spremanje u varijablu trenutne vrijednosti na pinu A2

if (tipkaVrijednost > 500 && tipkaVrijednost <520){
// okretanje za puni krug u smjeru kazaljke na satu
stanje = HIGH;
Serial.println("Vrtnja u smijeru kazaljke na satu");
Serial.print("tipka = ");
Serial.println(tipkaVrijednost);
//ispis vrijednosti na A1 prilikom pritiska tipkala S1
Serial.print("brzina = ");
Serial.println(brzina);
int i=0;
while(stanje == HIGH && i<48){
mojSteper1.step(1);
mojSteper2.step(1);
i++;
}
}
if (tipkaVrijednost > 600 && tipkaVrijednost < 620){
// okretanje za puni krug obrnuto od kazaljke na satu
stanje = HIGH;
Serial.println("Vrtnja obrnuto od kazaljke na satu");
Serial.print("tipka = ");
Serial.println(tipkaVrijednost);
Serial.print("brzina = ");
Serial.println(brzina);
int i=0;
while(stanje == HIGH && i<48){
mojSteper1.step(-1);
mojSteper2.step(-1);
i++;
}
}
if (tipkaVrijednost > 670 && tipkaVrijednost < 690){
// okretanje za jedan korak u smjeru kazaljke na satu
stanje = HIGH;
Serial.println("Korak u smijeru kazaljke na satu");
Serial.print("tipka = ");
Serial.println(tipkaVrijednost);
Serial.print("brzina = ");


21
Serial.println(brzina);
mojSteper1.step(1);
mojSteper2.step(1);
delay(250);
}
if (tipkaVrijednost > 720 && tipkaVrijednost < 740){
// okretanje za jedan korak u smjeru kazaljke na satu
stanje = HIGH;
Serial.println("Korak obrnuto od kazaljke na satu");
Serial.print("tipka = ");
Serial.println(tipkaVrijednost);
Serial.print("brzina = ");
Serial.println(brzina);
mojSteper1.step(-1);
mojSteper2.step(-1);
delay(250);
}
}
void prekid(){ //deklaracija izvrne funkcije prekida
stanje = LOW;
mojSteper1.step(0);
mojSteper2.step(0);
Serial.print("stanje = ");
Serial.println(stanje);
}


22
6. ZAKLJUAK
Arduino platforma je iroko primjenjiv mikrokontroler brojnih mogunosti s posebnim
naglaskom na jednostavnost njegova koritenja i bogatu programsku podrku za realizaciju
razliitih projektnih rjeenja. Njegova primjena je i u ovom projektu ispunila sva oekivanja i
omoguila realizaciju jednostavnog sustava za upravljanje dvama koranim motorima uz
minimalnu upotrebu dodatnih elemenata. Prikazani ogledni sustav moe biti dijelom nekog
veeg sustava u kojem se trai precizno upravljanje pokretnim elemenatima, bilo da se radi o
raunalnoj opremi, industrijskim strojevima, robotici, sustavima pametnih kua, i sl.
Arduino mikrokontroler ima ogranien broj digitalnih ulaza-izlaza i analognih ulaza, a na
primjeru ovog projekta prikazana je mogunost dodatne utede u koritenju analognih ulaza
kada se vie tipkala za razliite zadae spaja na isti ulaz. Prikljuenjem veeg broja razliitih
senzora na mikrokontroler mogue je postii i potpuno autonoman rad sustava.
Kao nedostatak moe se istaknuti nemogunost viedretvenog rada Arduino UNO
mikrokontrolera, to se u nekim sluajevima moe kompenzirati Interrupt funkcijom, a to je
pokazano i na primjeru ovog projekta. No s obzirom na nisku trinu cijenu arduino modula,
jednostavnost njegova koritenja, besplatnu programsku podrku i brojne druge mogunosti
ovaj nedostatak ne umanjuje popularnost i iroku primjenu arduino platforme.

7. LITERATURA
1. Arduino Home Page, URL: http://www.arduino.cc.
2. Fritzing, URL: http://fritzing.org/
3. Using Motor Bridges, URL: http://www.robotoid.com/appnotes/circuits-bridges.html
4. Arduino Motor Shield L298_Manual, URL:
http://droboticsonline.com/ebaydownloads/L298_Motor_Shield_Manual.pdf
5. Korani motori, URL:
http://www.fer.unizg.hr/_download/repository/EAP_VIII_dio_KM%5B1%5D.pdf
6. Korani motori, URL: http://people.etf.unsa.ba/~jvelagic/laras/dok/Lekcija6.pdf
7. Stepper Motors, URL: http://www.allaboutcircuits.com/vol_2/chpt_13/5.html
8. Stepper Motors and Control, URL:
http://www.stepperworld.com/Tutorials/pgBipolarTutorial.htm
9. Power Electronic Tehnology, URL:
http://powerelectronics.com/images/Versatile-Microstepper-Driver-fig-1.jpg



23
8. POPIS SLIKA
Slika 1_reluktantni korani motor ......................................................................................... 8
Slika 2_permanentnomagnetski korani motor ..................................................................... 8
Slika 3_hibridni korani motor .............................................................................................. 9
Slika 4_razliite konstrukcije namotaja koranih motora ..................................................... 9
Slika 5_shematski prikaz upravljanja bipolarnim koranim motorom ................................ 10
Slika 6_Arduino UNO razvojna platforma .......................................................................... 11
Slika 7_raspored pinova IC L298 ........................................................................................ 12
Slika 8_motor driver s L298N ............................................................................................. 12
Slika 9_shema spajanje 4 tipkala na jedan analogni ulaz .................................................... 12
Slika 10_shema spajanja potenciometra na analogni ulaz ................................................... 13
Slika 11_shema spajanja elemenata za potrebe Interrupt funkcije ...................................... 14
Slika 12_elektrina shema spajanja praktinog dijela projekta ........................................... 15
Slika 13_montana shema spajanja praktinog dijela projekta ........................................... 16
Slika 14_fotografija gotovog modela projekta .................................................................... 17

You might also like