Professional Documents
Culture Documents
Upravljanje Koracnim Motorima Putem Arduino Platforme
Upravljanje Koracnim Motorima Putem Arduino Platforme
ODJEL TELEMATIKA
Rijeka, 2013.
VELEUČILIŠTE U RIJECI
ODJEL TELEMATIKA
3
APSTRAKT
U projektnom radu je opisana jedna od brojnih mogućnosti Arduino razvojne platforme
otvorenog koda, upravljanje koračnim motorom. Koračni motori pulsnu električnu pobudu
pretvaraju u korak, te omogućavaju potreban diskretni pomak, što je nužno u sklopovima i
sustavima gdje se zahtijeva kontrolirano upravljanje preciznim pomacima mehaničkih
dijelova. U praktičnom dijelu projekta realizirano je simultano upravljanje dvama bipolarnim
dvofaznim koračnim motorimam, pomak za jedan korak napred-nazad i kontinuirano kretanje
napred-nazad. Za realizaciju projekta, pored osnovnog modela arduinovog modela
ArduinoUNO-a i odgovarajućeg izvora napajanja, korištena su dva odvojena motor drivera s
integriranim krugom L298N. Motor driver je elektronički sklop koji putem upravljačkih
signala sa miktrokontrolera napaja koračni motor potrebnim naponskim i strujnim veličinama.
Arduino UNO nema mogućnost višedretvenog rada, no isti nedostatak se donekle može
kompenzirati Interrupt funkcijom kojom je na primjeru ovog projekta riješen zahtjev za
prisilno zaustavljanje motora. Upravljački program je napisan u originalnoj arduinovoj
programskoj podršci otvorenog koda, u programskom jeziku vrlo sličnom C-u. Programski
kod je relativno jednostavan jer Arduinova programska podrška između ostalih sadrži
knjižnicu naredbi namjenjenih upravo upravljanju koračnim motorima.
5
2. Koračni motori
Koračni motori su pretvornici električne energije u mehaničku koji omogućavaju pretvorbu
digitalnog podatka u proporcionalni mehanički pomak. Prevladava uporaba rotacijske
izvedbe, no proizvode se i koračni motori u translacijskoj izvedbi. Pri uzbudi namotaja po
programiranom redoslijedu rotor se pomakne u diskretnim koracima, odnosno pokrene u
željenom smijeru za predviđeni kut. To su dakle sinkroni motori jer rotor sinkrono prati
kretanje statorskog polja zbog sila nastalih međudjelovanjem 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 pomoću binarnih signala.
Smjer vrtnje se može mijenjati promjenom impulsnog slijeda, brzina rotacije promjenom
frekvencije impulsa, a kut (prijeđeni broj koraka) ovisi o ukupnom broju pristiglih impulsa.
Rotor se može i držati u željenoj kutnoj poziciji. Koračni motori su nezaobilazni elementi za
precizno upravljanje i pozicioniranje pokretnih mehanizama u praktičnim uređajima i
sustavima kao što su na primjer disketni pogoni, CD/DVD uređaji, printeri, skeneri, fax
uređaji, kamere, roboti, elektromotorni ventili, protočne pumpe, CNC strojevi, industrijski
ventilatori, te brojni drugi uređaji u domaćinstvu i industriji. Svima njima je zajedničko
kontrolirano gibanje mehaničkih pokretnih djelova. Za široku primjenu zaslužna je njihova
prilagodljivost konkretnoj potrebi i relativno jednostavan način njihovim upravljanjem.
6
• Statički moment – moment držanja je ovisnost uspostavljenog momenta u motoru o
pomaku rotora. Krutost koračnog motora može se povećati povećanjem statičkog
momenta.
• Dinamički moment – ovisnost srednje vrijednosti momenta u motoru o brzini vrtnje.
Predstavlja maksimalnu vrijednost momenta tereta kojom se u stacionarnom stanju
može opteretiti koračni motor na određenoj brzini vrtnje, a da rotor ne ispadne iz
sinkronizma s upravljačkim impulsima i motor se ne zaustavi.
• Start-stop moment – moment tereta s kojim motor može krenuti pri zadanoj frekvenciji
koračnih impulsa, a da ne izgubi korak.
Koračni motor može imati 4, 5, 6 ili 8 priključnih žica. Za razliku od unipolarne izvedbe,
statorski namotaji bipolarnog koračnog motora nemaju srednji izvod na pojedinom statorskom
namotaju. Umjesto izmjenične uzbude jedne pa druge polovice namotaja za postizanje
promjene struje, a time i magnetskog polja, kod bipolarnih je to moguće izvesti samo
promjenom vrijednosti napona na oba kraja namotaja. Koračni motor sa 4 priključne žice je
dakle isključivo bipolarni i zahtjeva bipolarni kontroler. Ostali motori se mogu pokretati i
unipolarnom i bipolarnom uzbudom jer se srednji statorski izvod može jednostavno
zanemariti.
U praktičnom dijelu ovog projektnog rada se koriste bipolarni koračni motori. Razlikuju se
dva osnovna načina upravljanja koračnim motorom:
• Upravljanje – puni korak
• Upravljanje – polukorak
9
Na slici br. 5 je shematski prikaz oba načina upravljanja bipolarnim koračnim 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
najsloženije modele.
3. Arduino platforma
Arduino je univerzalni mikrokontroler zasnovan na ATmel tehnologiji i idealan je za
razvoj upravljačke elektronike i robotike. Platforma je otvorenog koda temeljena na
jednostavnoj razvojnoj pločici s ulazno/izlaznim konektorima i besplatnom programskom
podrškom sa jednostavnim korisničkim sučeljem. Programiranje uređaja se izvodi iz
integriranog razvojnog okruženja, koje postoji za Windows, Mac i Linux operativni sustav, u
programskom jeziku sličnom C-u. Glavna je namjena cijelog sustava komuniciranje s
različitim hardverom koji je na njega priključen. Arduino je dostupan u nekoliko različitih
verzija, a osnovni model je Arduino UNO sa slijedećom tehničkom specifikacijom:
• Mikroprocesor : ATmega328
• Frekvencija procesora : 16MHz
• Radni napon : 5V
• Ulazni napon (preporučeno): 7-12V
• Ulazni napon (ograničeno): 6-20V
• Digitalni I/O pinovi : 14 (od toga moguće 6 PWM izlaza)
• Analogni ulazni pinovi : 6
10
• 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
11
Slika 7_raspored pinova IC L298 Slika 8_motor driver s L298N
5. Upravljanje motorima
Ovim projektom je realizirano simultano upravljanje dvama koračnim motorima putem
četiri tipkala uz mogućnost 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
Tipkala su prema priloženoj shemi spajanja spojena preko R-2R otporne mreže na jedan
analogni ulaz mikrokontrolera, pin A1.
13
5.3 Prisilno zaustavljanje motora
Slijedi prikaz kompletne električne i montažne sheme spajanja. Sve sheme u ovom
projektu su izrađene u desktop aplikaciji „Fritzing“ (ima GNU GPL licencu za slobodan
softver) koja ima veliku bazu predefiniranih elemenata, no nedostajao je montažni element
korištenog motor drivera, te je isti bilo potrebno dodatno generirati. To je učinjeno tako da je
.jpg datoteka s fotografijom motor drivera konvertirana u .svg datoteku (vektorski grafički
format), te je nakon importiranja u Fritzing programsku aplikaciju prilagođena za korištenje
putem integriranog editora novih elemenata na način da su na odgovarajućim pozicijama na
slici definirane virtualne priključnice na koje se kasnije mogu „lijepiti“ spojne veze.
15
5.5 Montažna shema spajanja
16
Slika 14_fotografija gotovog modela projekta
Prilikom izrade projekta uočeni su standardni tehnički problemi u radu tipkala, za koja je
karaktiristačan takozvani „bouncing“ ili titranje kontakata kad se uključuju strujni krugovi
koji traju vrlo kratko (mjereno u ms ili još kraćim vremenskim jedinicama). U konkretnom
slučaju pokretanje motora za jedan korak rezultiralo bi okretanjem motora za dva-tri koraka.
Ovo je riješeno ubacivanjem linije koda koja za definirano vrijeme stavlja procesor u
mirovanje, a nakon odrađenog prvog kontakta tipkala. Pokusom je utvrđeno da kašnjenje od
250ms uglavnom rješava navedeni problem u ovom projektu. Kod pokretanja motora za cijeli
krug ovog problema nema jer se motor okreće najmanje 0,5s i za to vrijeme procesor ne
reagira na promjene stanja tipkala.
17
5.7 Problem s istovremenim pokretanjem oba motora
Problem se je pojavio i pri pokušaju pokretanja dva motora istovremeno jer bi drugi motor
započeo s okretanjem tek kad bi prvi završio, a razlog tome je što je stepper ciklus blokirajuća
funkcija za mikrokontroler. Ovaj problem je donekle riješen 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 pošalje upravljački impuls na motor driver.
#include <Stepper.h>
// uključivanje Arduino knjižnice
#define KORAK 48
// broj koraka za puni krug = 360 / kut jednog koraka korištenog 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 određenim uvjetima mogla biti
netočna uslijed trenutnog izvođenja programa*/
int potPin = A2;
// definicija pina za priključenje potenciometra
int tipkaPin = A1;
// definicija pina za priključenje tipkala
18
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 izračunate vrijednosti brzine
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){ //podešavanje 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
19
potVrijednost = analogRead(potPin);
//spremanje u varijablu trenutne vrijednosti na pinu A2
20
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 izvršne funkcije prekida
stanje = LOW;
mojSteper1.step(0);
mojSteper2.step(0);
Serial.print("stanje = ");
Serial.println(stanje);
}
21
6. ZAKLJUČAK
Arduino platforma je široko primjenjiv mikrokontroler brojnih mogućnosti s posebnim
naglaskom na jednostavnost njegova korištenja i bogatu programsku podršku za realizaciju
različitih projektnih rješenja. Njegova primjena je i u ovom projektu ispunila sva očekivanja i
omogućila realizaciju jednostavnog sustava za upravljanje dvama koračnim motorima uz
minimalnu upotrebu dodatnih elemenata. Prikazani ogledni sustav može biti dijelom nekog
većeg sustava u kojem se traži precizno upravljanje pokretnim elemenatima, bilo da se radi o
računalnoj opremi, industrijskim strojevima, robotici, sustavima pametnih kuća, i sl.
Arduino mikrokontroler ima ograničen broj digitalnih ulaza-izlaza i analognih ulaza, a na
primjeru ovog projekta prikazana je mogućnost dodatne uštede u korištenju analognih ulaza
kada se više tipkala za različite zadaće spaja na isti ulaz. Priključenjem većeg broja različitih
senzora na mikrokontroler moguće je postići i potpuno autonoman rad sustava.
Kao nedostatak može se istaknuti nemogućnost višedretvenog rada Arduino UNO
mikrokontrolera, što se u nekim slučajevima može kompenzirati Interrupt funkcijom, a što je
pokazano i na primjeru ovog projekta. No s obzirom na nisku tržišnu cijenu arduino modula,
jednostavnost njegova korištenja, besplatnu programsku podršku i brojne druge mogućnosti
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. Koračni motori, URL:
http://www.fer.unizg.hr/_download/repository/EAP_VIII_dio_KM%5B1%5D.pdf
6. Koračni 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
22
8. POPIS SLIKA
Slika 1_reluktantni koračni motor ......................................................................................... 8
Slika 2_permanentnomagnetski koračni motor ..................................................................... 8
Slika 3_hibridni koračni motor .............................................................................................. 9
Slika 4_različite konstrukcije namotaja koračnih motora ..................................................... 9
Slika 5_shematski prikaz upravljanja bipolarnim koračnim 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_električna shema spajanja praktičnog dijela projekta ........................................... 15
Slika 13_montažna shema spajanja praktičnog dijela projekta ........................................... 16
Slika 14_fotografija gotovog modela projekta .................................................................... 17
23