aleksander filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. the stepper...
TRANSCRIPT
![Page 1: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/1.jpg)
Aleksander Filipovič
MIKRORAČUNALNIŠKI KRMILNIK KORAČNEGA MOTORJA
Diplomsko delo
Maribor, maj 2013
![Page 2: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/2.jpg)
MIKRORAČUNALNIŠKI KRMILNIK KORAČNEGA MOTORJA
Diplomsko delo
Študent: Aleksander Filipovič
Študijski program: Visokošolski strokovni študijski program
Elektrotehnika
Smer: Elektronika
Mentor: viš. pred. dr. Bogdan Dugonik
![Page 3: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/3.jpg)
Mikroračunalniški krmilnik koračnega motorja
i
![Page 4: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/4.jpg)
Mikroračunalniški krmilnik koračnega motorja
ii
Mikroračunalniški krmilnik koračnega motorja
Ključne besede: sekvenčno vezje, mikrokrmilnik, Arduino, koračni motor
UDK: 621.313.31:681.5(043.2)
Povzetek
Diplomsko delo opisuje izdelavo sekvenčnega vezja, ki je bilo realizirano z
mikrokrmilnikom. V diplomi so predstavljeni tudi odprtokodna platforma Arduino in
koračni motorji.
V diplomskem delu je bil izdelan dvižni mehanizem, krmiljen s pomočjo računalnika ali
tipk na vezju. Kot krmilni sistem je uporabljena mikrokontrolna platforma Arduino Mega
2560. Izdelano mikrokrmilno vezje krmili bipolarni koračni motor in sicer v
polnokoračnem načinu. Ta koračni motor premika objekt vzdolž linearnega vodila na
različne položaje po določenem, vnaprej predvidenem protokolu. Tovrstno vezje je bilo
izbrano, ker ga je moč enostavno in hitro prilagoditi.
![Page 5: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/5.jpg)
Mikroračunalniški krmilnik koračnega motorja
iii
Microcomputer stepper motor controller
Key words: sequential circuit, microcontroller, Arduino, stepper motor
UDK: 621.313.31:681.5(043.2)
Abstract
This thesis describes the fabrication of a sequential circuit, which was realized with a
microcontroller. The open source platform Arduino and stepper motors are also presented.
In this diploma thesis a lifting mechanism was built. The mechanism is controlled by a
computer or by buttons on the circuit. For this purpose the microcontrol platform Arduino
Mega 2560 was used as the control system. This constructed microcontrol circuit controlls
a bipolar stepper motor in a full step mode. The stepper motor moves an object along a
linear guide to different positions following a certain, pre-scheduled protocol. This specific
type of circuit has been chosen because of its easy and quick adjustability.
![Page 6: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/6.jpg)
Mikroračunalniški krmilnik koračnega motorja
iv
KAZALO VSEBINE
1 UVOD.................................................................................................................................1
1.1 Struktura diplomskega dela..............................................................................................1
2 OPIS IZDELKA..................................................................................................................2
3 ODPRTOKODNA PLATFORMA ARDUINO..................................................................3
3.1 Strojna oprema.................................................................................................................3
3.1.1 Opis posameznih strojnih komponent...........................................................................4
3.2 Programska oprema..........................................................................................................8
3.2.1 Razvojno okolje.............................................................................................................8
3.2.2 Programski jezik..........................................................................................................10
4 OPIS DELOVANJA KORAČNEGA MOTORJA IN NJEGOVO UPRAVLJANJE.......11
5 STROJNA OPREMA DVIŽNEGA MEHANIZMA........................................................14
5.1 Arduino Mega 2560........................................................................................................14
5.2 Bipolarni koračni motor na vodilu.................................................................................16
5.3 H-mostič.........................................................................................................................16
5.4 Logična vrata..................................................................................................................18
5.5 Zaslon LCD....................................................................................................................19
![Page 7: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/7.jpg)
Mikroračunalniški krmilnik koračnega motorja
v
6 KRMILJENJE...................................................................................................................20
6.1 Načini krmiljenja............................................................................................................21
7 VEZALNA SHEMA.........................................................................................................28
8 PROGRAM.......................................................................................................................32
8.1 Delovanje programa.......................................................................................................33
9 PREPREKE IN PRILAGODITVE...................................................................................35
10 SKLEP.............................................................................................................................38
VIRI......................................................................................................................................40
PRILOGA A.........................................................................................................................43
PRILOGA B.........................................................................................................................73
![Page 8: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/8.jpg)
Mikroračunalniški krmilnik koračnega motorja
vi
KAZALO SLIK
Slika 2.1: Dvižni mehanizem.................................................................................................2
Slika 3.1: Arduino Nano.........................................................................................................6
Slika 3.2: Arduino Uno R3.....................................................................................................6
Slika 3.3: Arduino Motor Shield R3......................................................................................7
Slika 3.4: Mini USB / Serial Adapter.....................................................................................7
Slika 3.5: Razvojno okolje Arduino 1.0.................................................................................9
Slika 4.1: Bipolarni koračni motor.......................................................................................12
Slika 4.2: Unipolarni koračni motor.....................................................................................12
Slika 4.3: Koračni motorji....................................................................................................13
Slika 5.1: Arduino Mega 2560 R3........................................................................................15
Slika 5.2: L293D..................................................................................................................17
Slika 5.3: Pierceova in Shefferjeva vrata.............................................................................18
Slika 6.1: H-mostič...............................................................................................................20
Slika 6.2: Koračni motor z osmimi legami, krmiljen s štirimi krmilnimi koraki.................22
Slika 6.3: Poteki napetosti na navitjih v polnokoračnem načinu delovanja pri posameznih
krmilnih korakih...................................................................................................................22
![Page 9: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/9.jpg)
Mikroračunalniški krmilnik koračnega motorja
vii
Slika 6.4: Poteki napetosti na navitjih v valovnem načinu delovanja pri posameznih
krmilnih korakih...................................................................................................................23
Slika 6.5: Poteki napetosti na navitjih v polkoračnem načinu delovanja pri posameznih
krmilnih korakih...................................................................................................................24
Slika 6.6: Poteki napetosti na navitjih v mikrokoračnem načinu delovanja pri posameznih
krmilnih korakih...................................................................................................................25
Slika 6.7: H-mostič krmiljen s pomočjo negatorja...............................................................26
Slika 6.8: H-mostič krmiljen s pomočjo tranzistorja............................................................27
Slika 6.9: Lege koračnega motorja v polnokoračnem in v valovnem načinu delovanja......27
Slika 7.1: Vezalna shema.....................................................................................................30
Slika 7.2: Vezalna shema na preizkusni plošči....................................................................31
Slika 7.3: Tiskano vezje.......................................................................................................31
Slika 8.1: Prehajanje stanj....................................................................................................33
Slika 9.1: Vezje L297...........................................................................................................37
![Page 10: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/10.jpg)
Mikroračunalniški krmilnik koračnega motorja
viii
KAZALO TABEL
Tabela 5.1: Opis priključkov zaslona LCD DEM16216SYH-LY.......................................19
Tabela 6.1: Logične vrednosti krmilnih signalov pri polnokoračnem načinu delovanja.....21
Tabela 6.2: Logične vrednosti krmilnih signalov pri valovnem načinu delovanja..............23
Tabela 6.3: Logične vrednosti krmilnih signalov pri polkoračnem načinu delovanja.........24
Tabela 6.4: Logične vrednosti krmilnih signalov za polnokoračni način delovanja z dvema
krmilnima signaloma............................................................................................................26
![Page 11: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/11.jpg)
Mikroračunalniški krmilnik koračnega motorja
ix
UPORABLJENE KRATICE IN SIMBOLI
USB – Universal Serial Bus
(univerzalno serijsko vodilo)
SPI – Serial Peripheral Interface
(serijski periferni vmesnik)
TWI – Two Wire Serial Interface
(dvožični serijski vmesnik)
UART – Universal Asynchronous Receiver/ Transmitter
(univerzalni asinhroni sprejemik/ oddajnik)
TTL – Transistor-Transistor Logic
(tranzistor-tranzistor logika)
SRAM – Static Random Access Memory
(statični bralno/ pisalni pomnilnik)
EEPROM – Electrically Erasable Programmable Read-Only Memory
(električno zbrisljiv in programirljiv bralni pomnilnik)
kB – Kilobyte
(kilobajt)
LED – Light Emitting Diode
(svetleča dioda)
LCD – Liquid Crystal Display
(zaslon s tekočimi kristali)
PCB – Printed Circuit Board
(tiskano vezje)
GND – Ground
(masa)
Vcc – Pozitivna napajalna napetost
mA – Miliamper
A – Amper
V – Volt
kΩ – Kiloohm
Ω – Ohm
![Page 12: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/12.jpg)
Mikroračunalniški krmilnik koračnega motorja
x
Hz – Hertz
MHz – Megahertz
![Page 13: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/13.jpg)
Mikroračunalniški krmilnik koračnega motorja
1
1 UVOD
V diplomski nalogi smo predstavili odprtokodno platformo Arduino [1] in koračne
motorje. Arduino je strojna in programska oprema, ki nam olajša delo z mikrokrmilniki
Atmel AVR iz družine izdelkov megaAVR.
Z diplomsko nalogo smo preučili odprtokodno platformo Arduino tako, da smo lahko
izdelali napravo, s pomočjo katere se izvaja nadzorovano pomikanje linearnega vodila.
Objekt na linearnem vodilu pri tem pomikamo s pomočjo bipolarnega koračnega motorja v
polnokoračnem načinu delovanja.
Tovrstno napravo lahko hitro in enostavno prilagodimo trenutnim zahtevam uporabnika.
1.1 Struktura diplomskega dela
Vsebino diplomskega dela smo razdelili na deset poglavij. Prvo poglavje je uvod. Drugo
poglavje je opis izdelanega dvižnega mehanizma. V tretjem poglavju je predstavljena
strojna in programska oprema odprtokodne platforme Arduino. V četrtem poglavju
predstavimo delovanje in upravljanje koračnih motorjev. V petem poglavju predstavimo
potrebno strojno opremo za izdelavo dvižnega mehanizma. V šestem poglavju je opisano
krmiljenje bipolarnih koračnih motorjev. V sedmem poglavju je predstavljena vezalna
shema dvižnega mehanizma. Osmo poglavje je obrazložitev delovanja programa
'sketch_stepper', ki krmili dvižni mehanizem. V devetem poglavju so napotki za delo s
koračnimi motorji. Deseto poglavje je sklep.
![Page 14: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/14.jpg)
Mikroračunalniški krmilnik koračnega motorja
2
2 OPIS IZDELKA
V diplomski nalogi smo med drugim izdelali tudi dvižni mehanizem. Sestavili smo ga iz
linearnega vodila, bipolarnega koračnega motorja, mikrokontrolne platforme Arduino
Mega 2560 in vezja. Vezje nam je omogočilo krmiljenje in prikazovanje delovanja
koračnega motorja. Za krmiljenje bipolarnega koračnega motorja, ki premika linearno
vodilo, smo v razvojnem okolju Arduino 1.0 napisali program 'sketch_stepper' (priloga A).
Dvižni mehanizem smo prikazali na sliki 2.1.
Slika 2.1: Dvižni mehanizem
![Page 15: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/15.jpg)
Mikroračunalniški krmilnik koračnega motorja
3
3 ODPRTOKODNA PLATFORMA ARDUINO
Arduino je odprtokodna prototipna platforma, ki temelji na strojni in programski opremi.
Okolje zaznava s pomočjo senzorjev, sam pa lahko vpliva na okolico s pomočjo
aktuatorjev. Deluje lahko samostojno, lahko pa komunicira s programsko opremo, ki teče
na računalniku (npr. Flash, Processing, itd.). Arduino poenostavlja postopek dela z
Atmelovimi mikrokrmilniki (megaAVR), saj ima enostavno razvojno okolje, ob tem pa
nam nudi tudi odprtokodno in razširljivo strojno ter programsko opremo [1].
3.1 Strojna oprema
Strojna oprema Arduino temelji na 8-bitnih mikrokrmilnikih Atmel AVR iz družine
izdelkov megaAVR. Mikrokontrolno platformo Arduino lahko sestavimo sami, na voljo pa
so nam tudi že sestavljene platforme. Razširjamo jih lahko z raznimi dodatki, ki se
imenujejo ščiti ('Shield'). Za programiranje mikrokrmilnika ni potreben zunanji
programator. Na mikrokrmilniku je namreč že prednaložen program 'Bootloader', s
pomočjo katerega v Flash pomnilnik mikrokrmilnika naložimo t.i. 'sketch' program. To
izvedemo na sami mikrokontrolni platformi Arduino, le-ta je povezana z računalnikom
preko univerzalnega serijskega vodila (USB - Universal Serial Bus) [1].
Mikrokontrolna platforma ima digitalne in analogne priključke. Digitalni priključki so
vhodni ali izhodni. Digitalni vhodi/ izhodi poznajo le logično vrednost 0 ali 1. Nekatere
digitalne priključke lahko uporabimo za serijsko komunikacijo, nekatere pa za pulzno
širinsko modulacijo [1].
Večina mikrokontrolnih platform Arduino lahko izvaja serijsko komunikacijo na 3 načine,
![Page 16: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/16.jpg)
Mikroračunalniški krmilnik koračnega motorja
4
način je določen z vrsto uporabljenega vmesnika [1]:
• serijski periferni vmesnik (SPI - Serial Peripheral Interface)
• dvožični serijski vmesnik (TWI - Two Wire Serial Interface)
• univerzalni asinhroni sprejemnik/ oddajnik (UART – Universal Asynchronous
Receiver/ Transmitter)
Za serijsko komunikacijo s pomočjo UART priključkov se za prenos podatkov uporablja
tranzistor-tranzistor logika (TTL – Transistor-Transistor Logic). Analogni priključki so
analogni vhodi. Analogne napetosti, katere priklopimo na analogne vhode, primerjamo z
referenčno napetostjo, ki jo lahko vzamemo kot privzeto ali pa jo spremenimo s pomočjo
priključka AREF. Napetost pri tem pretvorimo v digitalno obliko s pomočjo analogno-
digitalnega pretvornika, ki ima 10 bitno ločljivost. To pomeni, da dobimo vrednosti od 0
do 1023. Analogne priključke je možno uporabiti kot digitalne vhode/ izhode [1].
Izbira mikrokontrolnih platform Arduino je zelo pestra: Arduino Mini, Arduino Nano,
Arduino Uno, Arduino Ethernet,.... Večina jih deluje pri napetosti 5 V. Obstajajo pa
različice, ki delujejo z napetostjo 3,3 V, z izjemo Lily Pad Arduino, ki deluje v razponu od
2,7 do 5,5 V [1].
3.1.1 Opis posameznih strojnih komponent
Arduino Nano, prikazan na sliki 3.1, je majhen in primeren za delo na preizkusni plošči.
Nekaj karakteristik Arduina Nano 3.0 [2]:
• temelji na mikrokrmilniku Atmega328
• delovna frekvenca procesorja je 16 MHz
• digitalni vhodi/ izhodi delujejo pri napetosti 5 V ter maksimalnem toku 40 mA
• 32 kilobajtov (kB – kilobyte) programskega Flash pomnilnika, od teh uporablja
'bootloader' 2 kB
![Page 17: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/17.jpg)
Mikroračunalniški krmilnik koračnega motorja
5
• 2 kB statičnega bralno/ pisalnega pomnilnika (SRAM – Static Random Access
Memory)
• 1 kB električno zbrisljivega in programirljivega bralnega pomnilnika (EEPROM –
Electrically Erasable Programmable Read-Only Memory)
• 8 analognih vhodov z 10 bitno ločljivostjo
• 14 digitalnih vhodov/ izhodov (šest izmed teh digitalnih vhodov/ izhodov omogoča
pulzno širinsko modulacijo)
• ima priključke za napajanje ( 3.3V, 5V, VIN in GND )
• ima še AREF, RST, Mini-B USB in ICSP priključke
• s pomočjo digitalnih priključkov TX ter RX imamo možnost vzpostaviti serijsko
komunikacijo (TTL-UART), vendar teh priključkov v tem primeru med procesom
komunikacije ne smemo uporabljati v druge namene
• za serijsko komunikacijo (TTL-UART) z računalnikom preko vodila USB
uporabljamo pretvornik FT232Rl podjetja Future Technology Devices International
Ltd..
Tudi Arduino Uno R3, prikazan na sliki 3.2, temelji na mikrokrmilniku Atmega328 [6].
Od mikrokrmilne platforme Arduino Nano 3.0 se med drugim razlikuje v naslednjih
lastnostih:
• uporaba Atmelovega mikrokrmilnika Atmega16U2 za komunikacijo preko vodila
USB
• je večji
• ima priključek za enosmerno napajanje mikrokontrolne platforme
• ima manj analognih vhodov
• drugačna razporeditev in tip priključitve priključkov
Drugačna razporeditev in tip priključitve priključkov omogočata uporabo ščita, ki ga lahko
nataknemo na mikrokontrolno platformo Arduino. Na razpolago so različni ščiti (Arduino
Ethernet Shield, Arduino Motor Shield, Arduino Wireless SD Shield,itd ).
Arduino Motor Shield R3, prikazan na sliki 3.3, temelji na L298 H-mostiču, s katerim
![Page 18: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/18.jpg)
Mikroračunalniški krmilnik koračnega motorja
6
lahko poganjamo dva enosmerna motorja ali en koračni motor. S pomočjo digitalnih
izhodov spreminjamo hitrost in smer vrtenja motorja. Preko analognih vhodov lahko
merimo tok, ki teče skozi navitje motorja [3].
Slika 3.1: Arduino Nano [2]
Slika 3.2: Arduino Uno R3 [10]
![Page 19: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/19.jpg)
Mikroračunalniški krmilnik koračnega motorja
7
Slika 3.3: Arduino Motor Shield R3 [3]
Kadar Arduino nima USB priklopa, nam lahko USB adapter (kot je npr. Mini USB / Serial
Adapter, ki temelji na pretvorniku FT232RL) služi za programiranje mikrokontrolerja ter
komunikacijo mikrokontrolerja z računalnikom [5].
Slika 3.4: Mini USB / Serial Adapter [5]
![Page 20: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/20.jpg)
Mikroračunalniški krmilnik koračnega motorja
8
3.2 Programska oprema
Programska oprema Arduino deluje na operacijskih sistemih Windows, Linux ali Mac OS
X. Za razvoj programov, imenovanih 'sketch', smo uporabili razvojno okolje Arduino 1.0,
prikazano na sliki 3.5. 'Sketch' programiramo v jeziku, ki temelji na programskem jeziku
C/C++ [1]. Razvojno okolje si lahko brezplačno naložimo iz spletne strani
http://www.arduino.cc/. V našem primeru je bilo razvojno okolje naloženo na operacijski
sistem Windows.
Ko mikrokontrolno platformo Arduino povežemo z računalnikom in namestimo ustrezen
gonilnik, se ustvarijo (navidezna) serijska vrata, imenovana 'COM port', preko katerih
Arduino komunicira s programsko opremo. Mikrokontrolna platforma Arduino lahko
neposredno komunicira s tistimi programi, ki tudi sami zmorejo serijsko komunikacijo.
Programska oprema Arduino vključuje programsko orodje 'Serial Monitor', s pomočjo
katerega lahko prenašamo enostavne tekstovne podatke med računalnikom in Arduinom
[1].
3.2.1 Razvojno okolje
V razvojnem okolju najprej izberemo uporabljeno mikrokontrolno platformo Arduino in ji
določimo ustrezni 'COM port', preko katerega komunicira. Te nastavitve izvedemo v
meniju 'Tools'. 'Sketch' program pišemo v urejevalniku besedil, mora pa vsebovati funkciji
'setup()' in 'loop()'. Funkcija 'setup()' se izvede samo enkrat, na začetku, funkcija 'loop()' pa
je zanka. To pomeni, da se procesi v njej skozi celotno trajanje izvajanja programa
ponavljajo [1].
Vse potrebne informacije o delovanju razvojnega okolja zvemo iz sporočilnega območja in
tekstovne konzole, ki sta v spodnjem delu razvojnega okolja. V zgornjem delu najdemo
vrstico z meniji in orodno vrstico, v kateri so vse potrebne funkcije za programiranje [1].
![Page 21: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/21.jpg)
Mikroračunalniški krmilnik koračnega motorja
9
Opis funkcij orodne vrstice s pripadajočimi ikonami [1]:
Preveri ali ima 'sketch' program napake.
Preveri in prevede 'sketch' program in ga nato naloži v Flash pomnilnik Arduina.
Ustvari nov 'sketch' program.
Odpre obstoječ 'sketch' program.
Shrani 'sketch' program.
Odpre programsko orodje 'Serial Monitor'.
Ko uporabljamo programsko orodje 'Serial Monitor', moramo nastaviti hitrost prenosa
('baud') na enako vrednost, kot jo uporabljamo v 'sketch' programu. V zgornjo vrstico
vnesemo podatke, ki jih želimo poslati mikrokontrolni platformi Arduino. S pomočjo tipke
'Send' pa jih odpošljemo [1]. Podatki, poslani iz mikrokontrolne platforme Arduino, se
prikazujejo v sredinskem oknu.
Slika 3.5: Razvojno okolje Arduino 1.0
![Page 22: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/22.jpg)
Mikroračunalniški krmilnik koračnega motorja
10
3.2.2 Programski jezik
Programski jezik poenostavlja programiranje mikrokrmilnikov, saj uporabljamo knjižnice
in posebne ukaze za nadzor mikrokontrolne platforme Arduino.
Kratek opis nekaterih ukazov za nadzor mikrokontrolne platforme Arduino [1]:
pinMode() – določimo način delovanja priključka (vhod ali izhod)
digitalRead() – odčitamo logično vrednost signala na priključku
digitalWrite() – nastavimo logično vrednost na priključku
analogRead() – odčitamo vrednost signala na analognem priključku
delay() – ustavimo program za vnešeno vrednost časa v milisekundah
![Page 23: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/23.jpg)
Mikroračunalniški krmilnik koračnega motorja
11
4 OPIS DELOVANJA KORAČNEGA MOTORJA IN
NJEGOVO UPRAVLJANJE
Glede na zgradbo delimo koračne motorje v tri osnovne izvedbe. Poznamo izvedbo s
trajnim magnetom, s spremenljivo magnetno upornostjo in hibridno različico. Glede na
izvedbo tuljav pa delimo koračne motorje na unipolarne in bipolarne. Bipolarni imajo 4 ali
8 priklopov, unipolarni pa 5 ali 6 priklopov. Unipolarni s 6 priklopi se lahko uporabljajo
kot bipolarni koračni motorji, bipolarni z 8 priklopi pa kot unipolarni koračni motorji. Na
sliki 4.3 smo z modro barvo označili priklope preko katerih krmilimo koračne motorje v
bipolarnem načinu delovanja. Ko imamo motor s šestimi priključki, moramo sredinski
odcep izolirati, pri motorju z osmimi priključki pa lahko navitji vežemo zaporedno ali
vzporedno [13]. Prednost bipolarne vezave je večji navor, saj pri unipolarni vezavi
vzbujamo le 50 % navitja bipolarne vezave [14].
Za delovanje koračnega motorja ne zadostuje enostaven priklop napetosti. Za en obrat
rotorja potrebujemo točno določeno število in zaporedje impulzov, kar nam omogoča
natančno pozicioniranje rotorja. To pomeni, da pri krmiljenju motorja na željeni položaj ne
potrebujemo senzorjev. Rotor se pri tem premika z diskretnimi koraki [13].
Koračni motor naredi korak, ko se spremeni magnetno polje. Postopek spremembe
magnetnega polja pri unipolarnem koračnem motorju se razlikuje od postopka pri
bipolarnem koračnem motorju. Ko imamo bipolarni koračni motor z dvema navitjema,
prikazano na sliki 4.1, dosežemo spremembo magnetnega polja z zamenjavo polaritete
napetosti na priključnih sponkah navitja. Če navitjem bipolarnega koračnega motorja
naredimo sredinski odcep, dobimo unipolarni koračni motor, prikazan na sliki 4.2. Zaradi
sredinskega odcepa se lahko na vsaki polovici navitja ustvari magnetno polje z nasprotnim
delovanjem. Zaradi te lastnosti se napaja le ena polovica navitja, kadar ustvarimo
magnetno polje. Spreminjanje magnetnega polja pa dosežemo s priklapljanjem oziroma
![Page 24: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/24.jpg)
Mikroračunalniški krmilnik koračnega motorja
12
odklapljanjem napetosti na posameznih polovičkah navitja [15].
Za krmiljenje koračnega motorja se pogosto uporabljajo mikrokrmilniki. Z raznimi pristopi
krmiljenja lahko koračni motor deluje v polnokoračnem, valovnem, polkoračnem ali
mikrokoračnem načinu. V polnokoračnem načinu imamo največji navor, vendar ima tudi
slabosti, kot so hrup, velik korak,... Največji navor ima koračni motor ko je na navitju
napetost, pri tem pa motor miruje. Med krmiljenjem imamo manjši navor, ki se z večanjem
hitrosti še zmanjšuje in posledično pri tem lahko pride do neželjene izgube korakov
[13,14].
Podroben opis krmiljenja bipolarnega koračnega motorja je v poglavju 6.
Slika 4.1: Bipolarni koračni motor [15]
Slika 4.2: Unipolarni koračni motor [15]
![Page 25: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/25.jpg)
Mikroračunalniški krmilnik koračnega motorja
13
Slika 4.3: Koračni motorji
![Page 26: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/26.jpg)
Mikroračunalniški krmilnik koračnega motorja
14
5 STROJNA OPREMA DVIŽNEGA MEHANIZMA
Za upravljanje bipolarnega koračnega motorja smo uporabili samostojno delujočo
mikrokontrolno platformo Arduino Mega 2560. Ukaze smo vnašali s pomočjo tipk na
vezju ali z računalnikom preko USB priklopa. Platformo bi lahko napajali bodisi z
enosmernim virom napetosti 7 do 12 V, ali pa s pomočjo USB priklopa.
Za krmiljenje bipolarnega koračnega motorja EM-464 (ta motor je na vodilu) ob
mikrokontrolni platformi Arduino Mega 2560, smo uporabili še dvovhodna Pierceova
vrata integriranega vezja CD4001 in H-mostič L293D. Delovanje smo prikazovali s
pomočjo svetlečih diod (LED – Light Emitting Diode) in zaslona s tekočimi kristali (LCD
– Liquid Crystal Display) DEM16216SYH-LY, ki je imel dve vrstici s šestnajstimi znaki.
Za napajanje koračnega motorja smo uporabili enosmerni vir napetosti 6 V.
5.1 Arduino Mega 2560
Mikrokontrolna platforma Arduino Mega 2560 R3, prikazana na sliki 5.1, ima med drugim
naslednje lastnosti [4]:
• temelji na mikrokrmilniku Atmega2560
• delovna frekvenca procesorja je 16 MHz
• vgrajenih ima 256 kB programskega Flash pomnilnika, od teh uporablja 'bootloader'
8 kB
• 8 kB pomnilnika SRAM
• 4 kB pomnilnika EEPROM
• digitalni vhodi/ izhodi delujejo pri napetosti 5 V ter maksimalnem toku 40 mA
![Page 27: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/27.jpg)
Mikroračunalniški krmilnik koračnega motorja
15
• na razpolago imamo 16 analognih vhodov z 10 bitno ločljivostjo
• imamo še 54 digitalnih vhodov/ izhodov, petnajst teh omogoča pulzno širinsko
modulacijo
• ima priključke za napajanje ( 3.3V, 5V, VIN in GND )
• ima priključek za enosmerno napajanje mikrokontrolne platforme (dovoljena
enosmerna napajalna napetost preko napajalnega priključka je 6 do 20 V, vendar je
priporočljivo napajati z napetostjo 7 do 12 V)
• ima še priključke AREF, IOREF, RESET, USB-B, ICSP
• zmore 3 načine serijske komunikacije (TTL-UART, TWI in SPI)
• na razpolago imamo štiri strojna serijska vrata UART (ena izmed njih imajo možnost
komunikacije z računalnikom in sicer preko priključkov 0 (RX0) in 1 (TX0), vendar
teh priključkov v procesu komunikacije ne smemo uporabljati v druge namene)
• za serijsko komunikacijo (TTL-UART) z računalnikom preko vodila USB je
uporabljen Atmelov mikrokrmilnik Atmega16U2
• na priključku 13 imamo že vgrajeno LED diodo
• ima tipko za ponovni zagon (RESET)
Uporabljamo lahko enake ščite kot pri mikrokontrolni platformi Arduino Uno.
Slika 5.1: Arduino Mega 2560 R3 [4]
![Page 28: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/28.jpg)
Mikroračunalniški krmilnik koračnega motorja
16
5.2 Bipolarni koračni motor na vodilu
Ker na spletu ni bilo podatkov o bipolarnem koračnem motorju EM-464, smo morali s
pomočjo multimetra ugotoviti, kateri priklopi so za posamezna navitja. Pri tem smo
izmerili vrednost upornosti navitja 10,2 Ω. S pomočjo tega podatka ter napetosti, na katero
je priklopljeno navitje, smo lahko izračunali kolikšen tok teče skozi navitje. Vrednost toka
smo izračunali s pomočjo Ohmovega zakona. To je pomemben podatek, saj lahko pri
prevelikem toku pride do poškodbe navitja ali H-mostiča. Ker nismo vedeli kolikšen tok
mora teči skozi navitje, smo morali postopoma dvigovati napetost navitja do mere, pri
kateri je koračni motor deloval zadovoljivo. To smo ugotovili tako, da smo sestavili vezje
in napisali kratek program za krmiljenje koračnega motorja. Pri dvigovanju napetosti smo s
pomočjo multimetra merili napetost ali tok skozi navitje. Ker izhod H-mostiča zmore le
600 mA toka, smo pazili, da se je vrednost toka gibala znotraj tega območja. Izkazalo se je,
da bipolarni koračni motor EM-464, krmiljen s pomočjo H-mostiča L293D, deluje
zadovoljivo pri pozitivni napajalni napetosti motorja 6,2 V (priključek Vcc2). Pri tej
napajalni napetosti smo na njegovem navitju izmerili napetost 4,37 V in tok 0,43 A.
Zanimalo nas je tudi to, koliko korakov potrebuje motor za en obrat rotorja. V ta namen
smo napisali program, ki nam izpisuje število korakov. Pri tem smo opazovali os motorja
in ko je opravil en obrat, smo odčitali koliko korakov je potreboval. Ta motor je potreboval
48 korakov, to pomeni, da se je z vsakim korakom premaknil za 7,5 stopinje.
Meritev je pokazala, da se je z vsakim obratom koračnega motorja uporabljeno vodilo
premaknilo za 2,6 cm.
5.3 H-mostič
Integrirano vezje L293D, prikazano na sliki 5.2, se uporablja za krmiljenje induktivnih
bremen. Ima že vgrajene diode (t.i. 'flyback' diode), ki služijo zaščiti pred napetostnimi
konicami, do katerih pride ob izklopu induktivnega bremena. Priključek Vcc2 napajamo z
![Page 29: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/29.jpg)
Mikroračunalniški krmilnik koračnega motorja
17
izbrano pozitivno napajalno napetostjo v razponu od 4.5 do 36 V, ki jo speljemo na
vsakega od štirih izhodov. Vsak od tako napajanih izhodov zmore do 600 mA toka. To
vezje ima štiri polovične gonilnike tipa H-most. Delovanje gonilnikov omogočimo s
priključitvijo napajalne napetosti 5 V na priključka '1,2EN' in '3,4EN' [16]. V poglavju 6
smo podrobneje opisali koncept H-mostiča in kako lahko s pomočjo tega integriranega
vezja krmilimo bipolarni koračni motor.
Slika 5.2: L293D [16]
![Page 30: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/30.jpg)
Mikroračunalniški krmilnik koračnega motorja
18
5.4 Logična vrata
Integrirano vezje CD4001 ima štiri dvovhodna Pierceova vrata, ki jih lahko uporabimo kot
negator. Možna bi bila tudi uporaba dvovhodnih Shefferjevih vrat, ki imajo enako
razporeditev priključkov. Pierceova in Shefferjeva vrata smo prikazali na sliki 5.3.
Slika 5.3: Pierceova in Shefferjeva vrata [9]
![Page 31: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/31.jpg)
Mikroračunalniški krmilnik koračnega motorja
19
5.5 Zaslon LCD
Razporeditev priključkov zaslona in priključitev na ustrezne priključke mikrokontrolne
platforme Arduino Mega 2560, ki smo jih uporabili v našem vezju, sta prikazani v tabeli
5.1.
Tabela 5.1: Opis priključkov zaslona LCD DEM16216SYH-LY [8]
PRIKLJUČEK ZASLONA
(OZNAKA PRIKLJUČKA) :
PRIKLOP ZASLONA NA USTREZNE PRIKLJUČKE ARDUINA MEGA 2560 (OZNAKA PRIKLJUČKA):
1
( VSS )
(GND)
2
( VDD )
(5V)
3
( V0 )*
(GND)*
(5V)*
Opomba: Zaslon je na 3. priključku z Arduinom povezan preko potenciometra, ki ima 3 priključke. Prvi je povezan na GND, drugi na priključek zaslona (V0), tretji pa na napajalno napetost 5 V.
4
( RS )
(DIGITALNI PRIKLJUČEK 2)
5
( R/W )
(GND)
6
( E )
(DIGITALNI PRIKLJUČEK 3)
7
( DB0 )
8
( DB1 )
9
( DB2 )
10
( DB3 )
11
( DB4 )
(DIGITALNI PRIKLJUČEK 4)
12
( DB5 )
(DIGITALNI PRIKLJUČEK 5)
13
( DB6 )
(DIGITALNI PRIKLJUČEK 6)
14
( DB7 )
(DIGITALNI PRIKLJUČEK 7)
15
( LED – (K) )
(GND)
16
( LED + (A) )
(5V)
![Page 32: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/32.jpg)
Mikroračunalniški krmilnik koračnega motorja
20
6 KRMILJENJE
Ker večina mikrokontrolnih platform Arduino na digitalnem izhodu ne zmore več kot 40
mA toka, je za krmiljenje koračnega motorja potrebno dodatno krmilno vezje [1]. Za
delovanje bipolarnega koračnega motorja moramo navitju spreminjati polariteto napetosti
[13], zato smo uporabili vezavo imenovano H-mostič, prikazano na sliki 6.1. Polariteto
spreminjamo tako, da stikala paroma preklapljamo. Ko sta sklenjeni stikali S1 in S4, sta
razklenjeni stikali S2 in S3 in obratno [17]. Ko ni sklenjeno nobeno stikalo, je navitje brez
napetosti. Podobna krmilna vezja najdemo v intergriranih vezjih, kot so: L293, L298,
L6205, SN754410, itd.
Slika 6.1: H-mostič
![Page 33: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/33.jpg)
Mikroračunalniški krmilnik koračnega motorja
21
6.1 Načini krmiljenja
Na sliki 6.2 smo prikazali koračni motor, ki za en obrat rotorja potrebuje 8 korakov
(pomikov). Ti koraki (pomiki) so prikazani za polnokoračni način delovanja. Proizvajalec
nam velikost koraka (pomika) poda v kotnih stopinjah. Na sliki 6.9 smo z modro barvo
označili lege, ki jih koračni motor iz slike 6.2 zavzame v polnokoračnem načinu delovanja,
lege valovnega načina delovanja pa smo označili z rumeno. Velikost koraka (pomika) je v
obeh načinih delovanja enaka. Polkoračni način delovanja pa zavzame kombinacijo obeh
leg polnokoračnega in valovnega načina delovanja.
Pri bipolarnem koračnem motorju smo uporabljali polnokoračni način delovanja. V tem
načinu imamo največji navor. Velik navor imamo, ker sta navitji ves čas krmiljenja
napajani [14]. Za krmiljenje uporabljamo štiri različne krmilne korake, le-ti morajo biti v
pravilnem zaporedju. Vrstni red krmilnih korakov določa smer vrtenja [7].
Logične vrednosti krmilnih signalov za posamezne priključke navitij pri posameznih
krmilnih korakih, smo predstavili v tabeli 6.1. Poteke napetosti na navitjih pri posameznih
krmilnih korakih pa smo prikazali na sliki 6.3.
Če začnemo s 1. krmilnim korakom, bomo za en korak (pomik) v desno potrebovali 2.
krmilni korak. Če bi pa želeli za en korak (pomik) v levo, bi morali uporabiti 4. krmilni
korak. Primer cikla krmilnih korakov (3., 2., 1., 4., 1., 2., 3., 4., 1., 2., 1.) nam najprej
izvede 3 korake (pomike) v levo, nato 6 korakov (pomikov) desno in potem še 1 korak
(pomik) v levo. Končni pložaj rotorja je torej od začetnega oddaljen 2 koraka v desno.
Tabela 6.1: Logične vrednosti krmilnih signalov pri polnokoračnem načinu delovanja [7]
POLNOKORAČNI NAČIN DELOVANJA
Logične vrednosti
1. navitje 2. navitje
Krmilni
koraki
Priklop A Priklop B Priklop A Priklop B
1. korak 0 1 0 1
2. korak 0 1 1 0
3. korak 1 0 1 0
4. korak 1 0 0 1
![Page 34: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/34.jpg)
Mikroračunalniški krmilnik koračnega motorja
22
Slika 6.2: Koračni motor z osmimi legami, krmiljen s štirimi krmilnimi koraki
Slika 6.3: Poteki napetosti na navitjih v polnokoračnem načinu delovanja pri posameznih
krmilnih korakih
![Page 35: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/35.jpg)
Mikroračunalniški krmilnik koračnega motorja
23
Včasih se uporablja valovni način delovanja, kjer se za krmiljenje uporabljajo štirje krmilni
koraki, podobno kot pri polnokoračnem načinu. Razlika med valovnim načinom in
polnokoračnim je npr. v tem, da je v valovnem načinu aktivno le eno navitje. Slabost tega
načina je majhen navor [13,14]. Logične vrednosti krmilnih signalov za posamezne
priključke navitij pri posameznih krmilnih korakih, smo predstavili v tabeli 6.2. Poteke
napetosti na navitjih pri posameznih krmilnih korakih pa smo prikazali na sliki 6.4.
Tabela 6.2: Logične vrednosti krmilnih signalov pri valovnem načinu delovanja
VALOVNI NAČIN DELOVANJA
Logične vrednosti
1. navitje 2. navitje
Krmilni
koraki
Priklop A Priklop B Priklop A Priklop B
1. korak 0 1 0 0
2. korak 0 0 1 0
3. korak 1 0 0 0
4. korak 0 0 0 1
Slika 6.4: Poteki napetosti na navitjih v valovnem načinu delovanja pri posameznih
krmilnih korakih
V tabeli 6.3 smo prikazali, kako lahko s kombinacijo krmilnih korakov iz polnokoračnega
![Page 36: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/36.jpg)
Mikroračunalniški krmilnik koračnega motorja
24
in valovnega načina delovanja, dobimo polkoračni način delovanja. V tem načinu se nam
zato podvoji število krmilnih korakov in razpolovi velikost koraka (pomika). Tako imamo
v primerjavi s polnokoračnim načinom večjo natančnost pozicioniranja in manjši navor
[13,14]. Tudi logične vrednosti krmilnih signalov za posamezne priključke navitij pri
posameznih krmilnih korakih, smo predstavili v tabeli 6.3. Poteke napetosti na navitjih pri
posameznih krmilnih korakih pa smo prikazali na sliki 6.5.
Tabela 6.3: Logične vrednosti krmilnih signalov pri polkoračnem načinu delovanja
POLKORAČNI NAČIN DELOVANJA
Logične vrednosti
1. navitje 2. navitje
Krmilni
koraki
Priklop A Priklop B Priklop A Priklop B
1. korak 0 1 0 1
2. korak 0 1 0 0
3. korak 0 1 1 0
4. korak 0 0 1 0
5. korak 1 0 1 0
6. korak 1 0 0 0
7. korak 1 0 0 1
8. korak 0 0 0 1
Slika 6.5: Poteki napetosti na navitjih v polkoračnem načinu delovanja pri posameznih
krmilnih korakih
![Page 37: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/37.jpg)
Mikroračunalniški krmilnik koračnega motorja
25
Pri mikrokoračnem načinu delovanja nimamo hipnega preklopa polaritete napetosti,
temveč jo postopoma spreminjamo, v majhnih korakih. S tem postopnim zviševanjem in
zmanjševanjem se želimo približati kosinusni funkciji. V enem navitju uporabljamo
sinusno krivuljo, v drugem navitju pa kosinusno. Ker se premikamo z zelo majhnimi
koraki, je pomik umirjen in tih. Pri uporabi mikrokrmilnika to kosinusno funkcijo
dosežemo z uporabo digitalno-analognega pretvornika [14]. Slika 6.6 prikazuje primer
poteka napetosti na navitjih pri posameznih krmilnih korakih mikrokoračnega načina
delovanja. Primer prikazuje mikrokoračni način z enakim številom korakov (pomikov) kot
jih ima polkoračni način delovanja. V resnici mikrokoračni način ponavadi deluje z večjim
številom korakov (pomikov), a smo v prikazanem primeru želeli izpostaviti razliko med
načinoma krmiljenja pri teh dveh načinih delovanja.
Slika 6.6: Poteki napetosti na navitjih v mikrokoračnem načinu delovanja pri posameznih
krmilnih korakih
Za krmiljenje bipolarnega koračnega motorja s pomočjo H-mostiča, potrebujemo štiri
krmilne signale. Pri polnokoračnem načinu je možna uporaba dveh krmilnih signalov, kar
lahko razberemo iz tabele 6.1. V vsakem krmilnem koraku imamo na enem priključku
navitja logično vrednost 0, na drugem priključku pa logično vrednost 1 [11]. To lahko
realiziramo s pomočjo negatorja, kar je prikazano na sliki 6.7, ali pa uporabimo tranzistor,
kot prikazano na sliki 6.8. Logične vrednosti krmilnih signalov za posamezni navitji pri
posameznih krmilnih korakih smo predstavili v tabeli 6.4.
![Page 38: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/38.jpg)
Mikroračunalniški krmilnik koračnega motorja
26
Tabela 6.4: Logične vrednosti krmilnih signalov za polnokoračni način delovanja z dvema
krmilnima signaloma [11]
POLNOKORAČNI NAČIN DELOVANJA
Logične vrednosti Krmilni
koraki 1. navitje 2. navitje
1. korak 0 0
2. korak 0 1
3. korak 1 1
4. korak 1 0
Slika 6.7: H-mostič krmiljen s pomočjo negatorja [16]
![Page 39: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/39.jpg)
Mikroračunalniški krmilnik koračnega motorja
27
Slika 6.8: H-mostič krmiljen s pomočjo tranzistorja [11]
Če uporabimo način vezave iz slike 6.7 ali 6.8, imamo navitji vseskozi pod napetostjo.
Vezavo na sliki 6.7 smo izbrali tudi zato, da bi dvižnemu mehanizmu omogočili dovolj
navora skozi ves čas delovanja. Uporabili bi pa lahko tudi modificirano vezje iz slike 6.8.
Slika 6.9: Lege koračnega motorja v polnokoračnem in v valovnem načinu delovanja
![Page 40: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/40.jpg)
Mikroračunalniški krmilnik koračnega motorja
28
7 VEZALNA SHEMA
Vezalno shemo, prikazano na sliki 7.1, smo načrtali z odprtokodnim programom Fritzing,
ki ga je moč brezplačno naložiti iz spletne strani http://fritzing.org/. Slika 7.2 prikazuje
načrt za testno preizkusno vezje, s katerim preverimo pravilnost delovanja sistema. Na sliki
7.3 je podan načrt za tiskanino vezja (PCB – Printed Circuit Board), ki jo uporabimo kot
vmesni ščit med motorjem in mikrokontrolno platformo Arduino Mega 2560.
Za vezavo LED diode na digitalni izhod mikrokontrolne platforme Arduino se uporablja
upor, s katerim omejimo tok. Tok ne sme preseči 40 mA. Tok ali vrednost upora pri tem
izračunamo s pomočjo Ohmovega zakona. Za ta projekt smo uporabili 330 Ω upore, ki
smo jih vezali med digitalne priključke Arduina (priključki 8 do 13) in pripadajoče LED
diode.
Za vezavo posamične tipke na Arduina smo uporabili po 10 kΩ velike upore. Vsak upor je
vezan med analogni priključek Arduina (priključki A0 do A4) in priključek mase (GND –
Ground), tipko pa povežemo preko istega Arduino priključka na 5 V napajanje. Tako
vezan upor v elektroniki poznamo pod imenom 'pull-down' upor. Ko tipka ni pritisnjena,
dobimo na vhodu priključka Arduina logično stanje 0. Ko tipko pritisnemo, pa je logično
stanje 1.
Na uporabljen LCD zaslon je priklopljen 10 kΩ velik potenciometer, s katerim smo lahko
nastavili kontrast. Katoda za osvetljavo zaslona se nahaja na priključku številka 15, anoda
pa na priključku 16. Razporeditev priključkov zaslona in priključitev na Arduina smo
prikazali v tabeli 5.1 (poglavje 5.5).
Integrirano vezje CD4001 ima štiri dvovhodna Pierceova vrata, ki smo jih uporabili kot
negator. Negator smo uporabili za negiranje vrednosti krmilnega signala, s katerim smo
![Page 41: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/41.jpg)
Mikroračunalniški krmilnik koračnega motorja
29
krmilili bipolarni koračni motor. Krmilne signale smo pošiljali s pomočjo Arduinovih
digitalnih priključkov 8 in 9. Ta negiran signal smo vodili do naslednjega negatorja in do
H-mostiča. Tudi ponovno negirano vrednost smo peljali do H-mostiča. Na H-mostiču smo
priključek 1 in priključek 9 povezali s 5 V priključkom iz Arduina. S tem smo ob vklopu
Arduina omogočili, da H-mostič krmili koračni motor. Na H-mostiču smo imeli
priklopljeno tudi napajalno napetost za koračni motor, le-to smo morali priklopiti še preden
priklopimo Arduina na napajanje. Da je krmilna logika delovala pravilno, smo morali
GND napajalne napetosti motorja povezati s priključkom GND na Arduinu.
V vezalni shemi smo imeli tudi tipko, ki smo jo aktivirali preko nanjo pritrjenega vzvoda.
S pomočjo tega vzvoda smo ugotavljali položaj tovora na vodilu oz. ga pozicionirali. Ta
tipka je morala biti nameščena s spodnje strani dvižnega mehanizma. Priklopljena je bila
na analogni priključek A0.
Uporabljeni priključki Arduina Mega se ujemajo s priključki Arduina Uno, tako da bi za
realizacijo vezja lahko uporabili tudi slednjega.
![Page 42: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/42.jpg)
Mikroračunalniški krmilnik koračnega motorja
30
Slika 7.1: Vezalna shema
![Page 43: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/43.jpg)
Mikroračunalniški krmilnik koračnega motorja
31
Slika 7.2: Vezalna shema na preizkusni plošči
Slika 7.3: Tiskano vezje
![Page 44: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/44.jpg)
Mikroračunalniški krmilnik koračnega motorja
32
8 PROGRAM
Program je napisan za dvižni mehanizem, ki smo ga realizirali s pomočjo linearnega vodila
in bipolarnega koračnega motorja. Ukaze za krmiljenje smo vnašali s pomočjo računalnika
preko univerzalnega serijskega vmesnika ali s pomočjo tipk na vezju. Tipke smo povezali
na analogne priključke mikrokontrolne platforme Arduino. Z uporabo ukaza 'digitalRead()'
smo analogno branje vhodov pretvorili v digitalno branje vhodov, tako da se je ob pritisku
tipke prepoznala logična vrednost 1. Ena izmed tipk pa je bila uporabljena za
pozicioniranje dvižnega mehanizma. Na izbiro smo imeli dve izhodiščni poziciji. Izhodišče
smo določili z izbiro programov P ali programov S. Tipko za pozicioniranje smo uporabili
še za preverjanje izgube položaja (izgube korakov motorja) dvižnega mehanizma.
Dovoljeno odstopanje je bilo osem korakov.
Na izbiro smo imeli tri načine delovanja:
• program (P1, S1) s samodejnim prehajanjem stanj, ki se neskončno ponavljajo
• program (P2, S2) s samodejnim prehajanjem stanj z eno ponovitvijo, za naslednjo
ponovitev pa moramo vnesti ukaz
• program (P3, S3) z ročnim načinom prehajanja stanj, kjer za vsak prehod v naslednje
stanje vnesemo ukaz.
Prehod v naslednje stanje je bil možen le po preteku prej nastavljenega časa. Prehajanje
stanj je prikazano na sliki 8.1. Za delovanje programov smo imeli že vnaprej nastavljene
parametre, vendar bi jih lahko spreminjali. Ti so: čas mirovanja za posamezni položaj,
nastavitev razmaka med posameznimi položaji in hitrost pomika. Spremenjene nastavitve
bi lahko tudi ponastavili. Razmak med posameznimi položaji smo določili z izbiro števila
korakov, pri tem je bilo število korakov vedno večkratnik števila štiri. Celotno delovanje
smo prikazovali s pomočjo LED diod in LCD zaslona. Uporabili smo šest diod. Dve diodi
![Page 45: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/45.jpg)
Mikroračunalniški krmilnik koračnega motorja
33
smo uporabili za prikazovanje krmilnih signalov (delovanje motorja). Tri diode smo
uporabili za prikazovanje položaja dvižnega mehanizma. Ena dioda pa se je v vsakem
stanju po prvi sekundi vklopila za eno sekundo. Delovanje bi bilo možno prikazovati tudi
na računalniku. Za prikazovanje podatkov na LCD zaslonu smo uporabili knjižnico
'LiquidCristal.h'. Za krmiljenje koračnih motorjev nam je bila na voljo knjižnica
'Stepper.h', ki pa je tokrat nismo uporabili. Uporabili smo tabelo 6.4 (poglavje 6.1) z
logičnimi vrednostmi krmilnih signalov.
Slika 8.1: Prehajanje stanj
8.1 Delovanje programa
V prilogi A je program 'sketch_stepper', ki nam je omogočal krmiljenje dvižnega
mehanizma. V programu imamo funkcijo 'setup()' in funkcijo 'loop()', ki smo ju
potrebovali za delovanje programa na mikrokrmilniku. Poleg teh dveh smo imeli še druge
A
B
C
A t = 1
t = 1
t = 1
C
A
B
A t = 1
t = 1
t = 1
Programi S Programi P
Izhodiščni
položaj je
stanje A
![Page 46: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/46.jpg)
Mikroračunalniški krmilnik koračnega motorja
34
funkcije, ki pa smo jih klicali le, kadar smo jih potrebovali. Z uvedbo teh dodatnih funkcij
smo si olajšali pisanje programske kode.
Na začetku programa smo določili spremenljivke, potrebne za delovanje programa.
Uporabili smo tudi knjižnico 'LiquidCrystal.h', s pomočjo katere smo prikazovali podatke
na LCD zaslonu.
V funkciji 'setup()', ki se izvede le enkrat (ob pričetku), smo določili kateri digitalni
priključki Arduina bodo izhodi. Omogočili smo še prikazovanje podatkov na LCD zaslonu.
Omogočiti pa smo morali tudi prenos podatkov preko serijskega vmesnika. Analogni
priključki Arduina, ki so bili uporabljeni kot digitalni vhodi, so že v osnovi nastavljeni kot
vhodi, zato jih ni bilo treba nastaviti.
V funkciji 'loop()' smo klicali funkcije, ki nam določajo način delovanja programa. Kadar
te funkcije zapustimo, se vrnemo nazaj v funkcijo 'loop()'.
Imeli smo še naslednje funkcije, potrebne za delovanje programa:
• funkcije 'P1()', 'P2()', 'P3()', 'S1()', 'S2()' in 'S3()' določijo način delovanja dvižnega
mehanizma
• funkcija 'avtomatsko()' krmili in prikazuje delovanje dvižnega mehanizma, vendar le
takrat, ko uporabljamo funkcijo 'P1()' ali 'P2()'
• funkcija 'avtomatskoS()' krmili in prikazuje delovanje dvižnega mehanizma, vendar
le takrat, ko uporabljamo funkcijo 'S1()' ali 'S2()'
• funkcija 'menu()', z njeno pomočjo določimo, s katerimi parametri naj program
deluje
• funkcija 'reset()' ponastavi parametre na začetne nastavitve
• funkcija 'iskanje()' pozicionira tovor v izhodiščni položaj
• funkcija 'pozicijaA()' izniči izgubo korakov
• funkcija 'tipke()' ugotovi, kateri ukazi so bili vneseni
• funkciji 'GOR()' in 'DOL()' nam določata smer vrtenja koračnega motorja.
![Page 47: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/47.jpg)
Mikroračunalniški krmilnik koračnega motorja
35
9 PREPREKE IN PRILAGODITVE
Pri koračnem motorju smo morali paziti na način krmiljenja in stopnjo obremenitve, sicer
bi zaradi prevelike hitrosti, oscilacije ali preobremenitve lahko prišlo do izgube korakov
[13,14]. Za uporabljeni koračni motor se je izkazalo, da je deloval zanesljivo, kadar je bila
zakasnitev med korakoma vsaj 4 ms.
Za doseganje večjih hitrosti oz. večjega navora pri enaki hitrosti, lahko uporabimo tokovni
regulator, ki koračnemu motorju zagotovi nazivni tok. Večjo hitrost dosežemo tudi s
postopnim večanjem hitrosti. Za dvigovanje težjega tovora je možna uporaba zobniškega
gonila. Ker se iz različnih razlogov lahko premakne os motorja, kar bi povzročilo izgubo
informacije o položaju, je priporočljivo, da navitja vseskozi napajamo [13,14].
Kadar želimo spremeniti smer vrtenja bipolarnega koračnega motorja, ki je priklopljen na
H-mostič, nam ni treba spreminjati krmilnega programa na Arduinu. Za naše vezje torej
krmilni program 'sketch_stepper' lahko ostane takšen kot je. Za obrat smeri vrtenja motorja
nam zadostuje že zamenjava priklopov enega navitja koračnega motorja, s katerima je
priklopljen na H-mostič [13].
Za lažjo realizacijo vezalne sheme je priporočljivo, da izdelamo dva ščita. Pri tem en ščit
nataknemo na drugega, vse skupaj pa nataknemo na mikrokontrolno platformo. Prvi ščit
(spodnji) bi imel vse potrebne elemente za krmiljenje koračnega motorja, drugi ščit
(zgornji) pa bi imel vse potrebne elemente za prikazovanje delovanja dvižnega mehanizma
in tipke za vnos ukazov.
Pogosto se za krmiljenje koračnih motorjev uporabljajo namenska integrirana vezja. Pri
uporabi takih vezij, ne potrebujemo tabel s krmilnimi koraki iz poglavja 6.1. Primer
namenskega integriranega vezja je L297. Za krmiljenje manjših bipolarnih koračnih
![Page 48: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/48.jpg)
Mikroračunalniški krmilnik koračnega motorja
36
motorjev pa lahko uporabimo namensko integrirano vezje SAA1042, saj ima že vgrajena
dva H-mostiča, vsak od njiju zmore do 500 mA toka. Integrirani vezji L297 in SAA1042
lahko krmilimo s pomočjo treh digitalnih priključkov mikrokrmilnika, tako da koračni
motor deluje v polnokoračnem ali polkoračnem načinu delovanja. S pomočjo enega
priključka določimo način delovanja motorja (polnokoračni ali polkoračni). Z drugim
priključkom določimo smer vrtenja. S pomočjo tretjega priključka pa pošiljamo krmilne
impulze za pozicioniranje motorja na željeni položaj, pri tem nam motor ob vsakem
krmilnem impulzu naredi en korak. Možno bi bilo tudi krmiljenje s pomočjo samo dveh
priključkov mikrokrmilnika, saj lahko na integriranem vezju fiksno nastavimo željeni
način delovanja koračnega motorja tako, da ustrezni priključek integriranega vezja
priključimo bodisi na GND, ali pa na 5 V. Ko to naredimo, moramo samo še določiti smer
vrtenja in pošiljati krmilne impulze za vsak korak motorja [13].
Na sliki 9.1 je prikazana vezalna shema za krmiljenje bipolarnega koračnega motorja s
pomočjo integriranega vezja L297 in H-mostiča L298. S to vezalno shemo krmilimo
koračne motorje s pomočjo stikalnega tokovnega regulatorja, pri tem pa zmorejo izhodi H-
mostiča 2 A toka. Napajalna napetost navitij motorja je 36 V. Z visoko napajalno
napetostjo dosežemo, da tok v navitjih hitreje narašča. Na takšen način hitreje dosežemo
željeno vrednost toka, ki naj teče skozi navitje [12]. Željeno vrednost toka skozi navitje
nastavimo s pomočjo priključka Vref. Na ta priključek priklopimo ustrezno napetost, ki jo
izračunamo tako, da pomnožimo željeno vrednost toka z vrednostjo upora Rs1 oz. Rs2 [13].
Logika tokovne regulacije integriranega vezja L297 regulira tok za vsako navitje
koračnega motorja posebej. Postopek tokovne regulacije izgleda tako, da ob vklopu
napajanja navitja tok skozi navitje narašča tako dolgo, da se doseže željena vrednost toka.
Ko je ta vrednost toka dosežena, nam logika tokovne regulacije izklopi napajanje navitja.
Tok v navitju začne padati. Čez nekaj trenutkov logika ponovno vklopi napajanje in ko je
željena vrednost toka dosežena, se napajanje ponovno izklopi. Ta postopek vklapljanja in
izklapljanja napajanja se ponavlja dokler je navitje treba napajati. Logika tokovne
regulacije izklopi napajanje prvega navitja v trenutku, ko je napetost na priključku 14
enaka napetosti priključka Vref, napajanje drugega navitja pa izklopi, ko je napetost na
priključku 13 enaka napetosti priključka Vref. Trenutek ponovnega vklopa napajanja navitij
pa določa oscilator na priključku 16 [12].
![Page 49: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/49.jpg)
Mikroračunalniški krmilnik koračnega motorja
37
Kratek opis nekaterih priključkov integriranega vezja L297 [12,13]:
• CW/CCW (določimo smer vrtenja motorja)
• CLOCK (na ta priključek pošiljemo krmilni impulz za vsak korak motorja)
• HALF/FULL (določimo način delovanja koračnega motorja)
• ENABLE (omogočimo krmiljenje koračnega motorja)
• RESET (koračni motor namestimo v izhodiščni položaj)
• SYNC (priključek za sinhronizacijo več integriranih vezij L297)
• Vref (določimo največjo vrednost toka, pri kateri bo koračni motor deloval)
• CONTROL (določimo način delovanja tokovne regulacije: hitro ali počasno
padanje vrednosti toka)
Slika 9.1: Vezje L297 [13]
![Page 50: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/50.jpg)
Mikroračunalniški krmilnik koračnega motorja
38
10 SKLEP
Pri izdelavi dvižnega mehanizma se je izkazalo, da je odprtokodna platforma Arduino
enostavna za uporabo in zelo primerna za eksperimentalno delo. Uporabljena
mikrokontrolna platforma Arduino Mega 2560 omogoča nadgradnjo tega projekta, saj je
bila le delno izkoriščena.
Vezalno shemo dvižnega mehanizma bi bilo možno realizirati z večino mikrokontrolnih
platform Arduino. Tudi program 'sketch_stepper' bi lahko deloval na večini njih, saj za
realizacijo uporabljenega dvižnega mehanizma zadošča mikrokrmilnik Atmega328. Tak
mikrokrmilnik je vgrajen tudi v mikrokrmilnih platformah Arduino Uno in Arduino Nano
3.0, s katerima smo med drugim preverili delovanje našega dvižnega mehanizma. Uporaba
omenjenih cenovno ugodnejših mikrokrmilnih platform nam zmanjša strošek za izdelavo
dvižnega mehanizma, vendar pa nas omeji za možnost nadgradnje sistema.
V diplomski nalogi smo prikazali, da je koračne motorje mogoče krmiliti na več različnih
načinov in tudi uporaba strojne opreme ni enolično določena. Vrsta uporabljene strojne
opreme nam določa, kako je potrebno izdelati krmilni program.
Pri realizaciji dvižnega mehanizma za krmiljenje koračnih motorjev nismo uporabili
namenskih integriranih vezij, ker to v našem primeru ni bilo nujno potrebno. Za izveden
dvižni mehanizem je bilo pomembno predvsem to, da ima motor čim višji navor. To smo
dosegli tako, da smo bipolarni koračni motor krmilili v polnokoračnem načinu delovanja.
Ker smo krmilno vezje izvedli s pomočjo H-mostiča, smo v programu 'sketch_stepper'
(priloga A) uporabili tabelo s krmilnimi koraki iz poglavja 6.1. S tem, ko za krmiljenje
koračnega motorja nismo uporabili dodatnega namenskega integriranega vezja, smo
predvsem zmanjšali strošek izdelave vezja za dvižni mehanizem. Pomanjkljivost naše
izvedbe je le v tem, da nimamo tokovne regulacije, ki bi koračnemu motorju zagotovila
![Page 51: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/51.jpg)
Mikroračunalniški krmilnik koračnega motorja
39
potrebni nazivni tok. S tokovnim regulatorjem namreč hitreje dosežemo vrednost
delovnega navora. Na tak način lahko koračni motor pri višjih krmilnih frekvencah doseže
večji navor, kot bi mu uspelo brez tokovne regulacije. Prednost v diplomi uporabljene
vezalne sheme v kombinaciji s programom 'sketch_stepper' je, da lahko tako brez
spreminjanja vezalne sheme, kot tudi programske kode, priklopimo bipolarni koračni
motor, ki deluje v napetostnem razponu med 4.5 in 36 V, ter pri nazivnem toku do 600
mA.
Uporabnost platforme Arduino je tudi v tem, da za izvedbo drugega projekta ne
potrebujemo veliko predznanja o strojni opremi. Na razpolago je velika izbira namenskih
strojnih dodatkov, t. i. ščitov, senzorjev in vrsta že realiziranih praktičnih zgledov, ki so
nam v pomoč pri izdelavi specifičnega projekta. Koriščenje teh namenskih in sestavljenih
ščitov ter senzorjev je smotrno tudi zato, ker nam z njihovo uporabo odpade preučevanje
strojnega dela opreme. Hkrati prihranimo na času, ki bi ga sicer potrebovali za razvoj
načrta in izvedbo namenskega vezja. Uporabnik se zato lahko bolj posveti razvoju
osnovnega programa za delovanje določenega digitalnega sistema, saj so nam pri
programiranju na razpolago še knjižnice in programi za predizdelane ščite. To poenostavi
in skrajša čas za razvoj novega 'sketch' programa.
![Page 52: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/52.jpg)
Mikroračunalniški krmilnik koračnega motorja
40
VIRI
[1] Arduino. Svetovni splet: Arduino, 2012.
Dostopno na: http://www.arduino.cc/ [18.12.2012]
[2] Arduino. Products: Arduino Nano. Svetovni splet: Arduino, 2012.
Dostopno na: http://arduino.cc/en/Main/ArduinoBoardNano [18.12.2012]
[3] Arduino. Products: Arduino Motor Shield. Svetovni splet: Arduino, 2012.
Dostopno na: http://arduino.cc/en/Main/ArduinoMotorShieldR3 [18.12.2012]
[4] Arduino. Products: Arduino Mega 2560. Svetovni splet: Arduino, 2012.
Dostopno na: http://arduino.cc/en/Main/ArduinoBoardMega2560 [18.12.2012]
[5] Arduino. Products: Mini USB Adapter. Svetovni splet: Arduino, 2012.
Dostopno na: http://arduino.cc/en/Main/MiniUSB [18.12.2012]
[6] Arduino. Products: Arduino Uno. Svetovni splet: Arduino, 2012.
Dostopno na: http://arduino.cc/en/Main/ArduinoBoardUno [18.12.2012]
[7] Bartmann, E. Die elektronische Welt mit Arduino entdecken, 1. izdaja. Köln: O'Reilly,
2011
![Page 53: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/53.jpg)
Mikroračunalniški krmilnik koračnega motorja
41
[8] Display Elektronik. LCD MODULE: DEM 16216 SYH-LY. Nidda: Display Elektronik
GmbH, 2008.
Dostopno na: http://www.display-elektronik.de/DEM16216SYH-LY.PDF [18.12.2012]
[9] Dugonik, B. Pretvorba funkcijskega sistema. V: mag. Bogdan Dugonik, univ. dipl. inž.
el. (ur.). Digitalni sistemi. Maribor: Fakulteta za elektrotehniko, računalništvo in
informatiko, 2002, str. 16-18.
Dostopno na: http://regul.uni-mb.si/~meolic/dt/Skripta_DS.pdf [10.3.2013]
[10] Gammon, N. ArduinoUno Rev3 pinouts photo. Svetovni splet: Gammon Software
Solutions forum, 2011.
Dostopno na: http://www.gammon.com.au/forum/?id=11473 [18.12.2012]
[11] Igoe, T. Stepper motors. Svetovni splet: Code, circuits, & construction, 2007.
Dostopno na: http://www.tigoe.net/pcomp/code/circuits/motors/stepper-motors/
[18.12.2012]
[12] Lavrič, S. Krmiljenje koračnih motorjev v teoriji in praksi. Svetovni splet: Še ena
domača stran - Arnes, 2007.
Dostopno na: http://www2.arnes.si/~sspslavr/k_motor/k_motor.html [30.3.2013]
[13] RN-Wissen. Motoren: Schrittmotoren. Svetovni splet: Roboternetz, 2012.
Dostopno na: http://www.rn-wissen.de/index.php/Schrittmotoren [18.12.2012]
[14] RN-Wissen. Motoren: Stepmotoren und deren Ansteuerung. Svetovni splet:
Roboternetz, 2012.
![Page 54: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/54.jpg)
Mikroračunalniški krmilnik koračnega motorja
42
Dostopno na: http://www.rn-wissen.de/index.php/Stepmotore_und_deren_Ansteuerung
[18.12.2012]
[15] Štravs, F. Osnove koračnih motorjev. V: OSNOVE ELEKTROTEHNIKE – OET
(delovni osnutek kot predhodno gradivo). Velenje: ŠOLSKI CENTER VELENJE, 2008,
str. 58-59.
Dostopno na:
ftp://ftp.scv.si/vss/franc_stravs/OET%20%28program%20MEHATRONIK%29/Gradivo%
20za%20OET.pdf [18.12.2012]
[16] Texas Instruments. L293, L393D: QUADRUPLE HALF-H DRIVERS. Texas: Texas
Instruments Incorporated, 2004.
Dostopno na: http://www.ti.com/lit/ds/symlink/l293d.pdf [18.12.2012]
[17] Wikipedia. Electronic circuits: H bridge. Svetovni splet: Wikimedia Foundation, Inc.,
2012.
Dostopno na: http://en.wikipedia.org/wiki/H_bridge [18.12.2012]
![Page 55: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/55.jpg)
Mikroračunalniški krmilnik koračnega motorja
43
PRILOGA A
Program sketch_stepper:
byte ledpin1 = 12; byte ledpin2 = 11; byte ledpin3 = 10; byte ledpin4 = 13; byte motorpin1 = 8; byte motorpin2 = 9; byte MENU ; byte sekunde =5 ; byte koraki = 24; int kor = 96 ; byte hitrost =4 ; byte dvojnikoraki =48 ; byte primerjava; byte liftpin1pozicija ; byte program; byte spremembaparametra; byte tekst ; byte j =0 ; byte A =1 ; byte B =1 ; byte C =1 ; byte S; byte liftpinS; char SERIA ; #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); void setup( ) pinMode (ledpin1,OUTPUT); pinMode (ledpin2,OUTPUT); pinMode (ledpin3,OUTPUT); pinMode (ledpin4,OUTPUT); pinMode (motorpin1,OUTPUT); pinMode (motorpin2,OUTPUT); lcd.begin(16, 2); Serial.begin(9600);
![Page 56: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/56.jpg)
Mikroračunalniški krmilnik koračnega motorja
44
void loop() SERIA = 0; SERIA = Serial.read(); S=0; if ( tekst ==0) lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(6,0); lcd.print("P"); lcd.setCursor(8,0); lcd.print("S"); lcd.setCursor(11,0); lcd.print("RESET"); lcd.setCursor(0,1); lcd.print("VHOD"); lcd.setCursor(6,1); lcd.print("1"); lcd.setCursor(8,1); lcd.print("1"); lcd.setCursor(11,1); lcd.print("1"); tekst=1; Serial.println("IZBERI : MENU "); Serial.println("UKAZ : M "); Serial.println(" ali "); Serial.println("IZBERI : RESET "); Serial.println("UKAZ : R "); Serial.println(" ali "); Serial.println("IZBERI PROGRAM : P1, P2, P3, S1, S2, S3 "); Serial.println("UKAZ : P1, P2, P3, S1, S2, S3 "); if ( digitalRead(A4) ==1 || SERIA== 'R') reset(); tekst=0; if ( digitalRead(A1) ==1 || SERIA== 'M') menu(); tekst=0; if ( digitalRead(A2) ==1 || SERIA== 'P') lcd.clear(); lcd.setCursor(0,0); lcd.print("IZBIRA"); lcd.setCursor(0,1); lcd.print("PROGRAMOV P"); Serial.println("IZBIRA PROGRAMOV P. "); delay(2000);
![Page 57: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/57.jpg)
Mikroračunalniški krmilnik koračnega motorja
45
while( digitalRead(A1) ==0 && SERIA != 'I' ) if ( tekst ==1) lcd.clear(); lcd.setCursor(0,0); lcd.print("IZHOD"); lcd.setCursor(6,0); lcd.print("P1"); lcd.setCursor(10,0); lcd.print("P2"); lcd.setCursor(14,0); lcd.print("P3"); lcd.setCursor(0,1); lcd.print("1"); lcd.setCursor(6,1); lcd.print("1"); lcd.setCursor(10,1); lcd.print("1"); lcd.setCursor(14,1); lcd.print("1"); tekst=0; Serial.println("IZBERI : IZHOD, P1, P2, P3 "); Serial.println("UKAZ : I, 1, 2, 3 "); SERIA = Serial.read(); if ( digitalRead(A2) ==1 || SERIA== '1') P1(); tekst=1; program = 0; if ( digitalRead(A3) ==1 || SERIA== '2') P2(); tekst=1; program = 0; if ( digitalRead(A4) ==1 || SERIA== '3') P3(); tekst=1; program = 0; lcd.clear(); lcd.setCursor(0,0); lcd.print("IZHOD"); lcd.setCursor(0,1); lcd.print("PROGRAMOV P"); Serial.println("IZHOD PROGRAMOV P. "); delay(1500); tekst=0;
![Page 58: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/58.jpg)
Mikroračunalniški krmilnik koračnega motorja
46
if ( digitalRead(A3) ==1 || SERIA== 'S') S=1; lcd.clear(); lcd.setCursor(0,0); lcd.print("IZBIRA"); lcd.setCursor(0,1); lcd.print("PROGRAMOV S"); Serial.println("IZBIRA PROGRAMOV S. "); delay(2000); while( digitalRead(A1) ==0 && SERIA != 'I') if ( tekst ==1) lcd.clear(); lcd.setCursor(0,0); lcd.print("IZHOD"); lcd.setCursor(6,0); lcd.print("S1"); lcd.setCursor(10,0); lcd.print("S2"); lcd.setCursor(14,0); lcd.print("S3"); lcd.setCursor(0,1); lcd.print("1"); lcd.setCursor(6,1); lcd.print("1"); lcd.setCursor(10,1); lcd.print("1"); lcd.setCursor(14,1); lcd.print("1"); tekst=0; Serial.println("IZBERI : IZHOD, S1, S2, S3 "); Serial.println("UKAZ : I, 1, 2, 3 "); SERIA = Serial.read(); if ( digitalRead(A2) ==1 || SERIA== '1') S1(); tekst=1; program = 0; if ( digitalRead(A3) ==1 || SERIA== '2') S2(); tekst=1; program = 0; if ( digitalRead(A4) ==1 || SERIA== '3') S3(); tekst=1;
![Page 59: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/59.jpg)
Mikroračunalniški krmilnik koračnega motorja
47
program = 0; lcd.clear(); lcd.setCursor(0,0); lcd.print("IZHOD"); lcd.setCursor(0,1); lcd.print("PROGRAMOV S"); Serial.println("IZHOD PROGRAMOV S. "); delay(1500); tekst=0; void menu() lcd.clear(); lcd.print("MENU"); Serial.println("MENU "); delay(1000); Serial.println(); Serial.print("t = "); Serial.print(sekunde); Serial.print(" s"); Serial.println(); Serial.print("k = "); Serial.print(kor); Serial.print(" korakov"); Serial.println(); Serial.print("v = "); Serial.print(hitrost); Serial.print(" ms"); Serial.println(); Serial.println("IZBERI :" ); Serial.println("MENU IZHOD JE UKAZ (I) " ); Serial.println("CAS JE UKAZ (S) IN DODANA VREDNOST OD 2 DO 60. PRIMER: (S15)." ); Serial.print ("KORAKI JE UKAZ (K) IN DODANA VREDNOST OD 1 DO 63." ); Serial.println("PRIMER: (K8). DOBLJENO STEVILO KORAKOV JE DODANA VREDNOST KRAT 4."); Serial.println("HITROST JE UKAZ (V) IN DODANA VREDNOST OD 4 DO 9. PRIMER: (V5). "); Serial.print ("VNESEN UKAZ (S), (K) ALI (V) BREZ DODANE VREDNOSTI, "); Serial.println("POVECA VREDNOST ZA ENA. PRIMER: (V). " ); Serial.print ("KO VNESEMO VEC UKAZOV HKRATI, SE MORAJO LOCIT Z VEJICO."); Serial.println(" PRIMER: (K20,S5,V8)"); SERIA = Serial.read(); primerjava=koraki; while( digitalRead(A1) ==0 && SERIA != 'I') SERIA = Serial.read(); if ( SERIA == 'S' || digitalRead(A2)==1) sekunde = sekunde + 1; SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9')
![Page 60: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/60.jpg)
Mikroračunalniški krmilnik koračnega motorja
48
sekunde = SERIA - 48; SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9') sekunde =( sekunde * 10 ) + ( SERIA - 48 ); SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9') sekunde =2; if ( sekunde >= 61 || sekunde <= 1 ) sekunde =2; Serial.println(); Serial.print("t = "); Serial.print(sekunde); Serial.print(" s"); Serial.println(); if ( SERIA == 'K' || digitalRead(A3)==1) koraki =koraki + 1 ; SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9') koraki = SERIA - 48; SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9') koraki =( koraki * 10 ) + ( SERIA - 48 ); SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9') koraki =1; if ( koraki >= 64 || koraki <= 0 ) koraki =1; kor=(koraki*4); dvojnikoraki=(2*koraki); Serial.println(); Serial.print("k = "); Serial.print(kor); Serial.print(" korakov"); Serial.println();
![Page 61: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/61.jpg)
Mikroračunalniški krmilnik koračnega motorja
49
if ( SERIA == 'V' || digitalRead(A4)==1) hitrost = hitrost + 1; SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9') hitrost = SERIA - 48; SERIA= Serial.read(); if (SERIA >= '0'&& SERIA <= '9') hitrost =4; if ( hitrost >= 10 || hitrost <= 3 ) hitrost =4; Serial.println(); Serial.print("v = "); Serial.print(hitrost); Serial.print(" ms"); Serial.println(); lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(6,0); lcd.print("t="); lcd.setCursor(9,0); lcd.print("k="); lcd.setCursor(13,0); lcd.print("v="); lcd.setCursor(0,1); lcd.print("IZHOD"); lcd.setCursor(6,1); lcd.print(sekunde); lcd.setCursor(8,1); lcd.print("s"); lcd.setCursor(9,1); lcd.print(kor); lcd.setCursor(12,1); lcd.print("k"); lcd.setCursor(13,1); lcd.print(hitrost); lcd.setCursor(14,1); lcd.print("ms"); delay(150); Serial.println(); Serial.println("PODATKI"); Serial.println(); Serial.print("t = "); Serial.print(sekunde);
![Page 62: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/62.jpg)
Mikroračunalniški krmilnik koračnega motorja
50
Serial.print(" s"); Serial.println(); Serial.print("k = "); Serial.print(kor); Serial.print(" korakov"); Serial.println(); Serial.print("v = "); Serial.print(hitrost); Serial.print(" ms"); Serial.println(); if(primerjava != koraki) iskanje(); spremembaparametra=1; j=0; A=1; B=1; C=1; digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); delay(800); lcd.print("PROGRAM : OK"); Serial.println("PROGRAM : OK" ); void reset() lcd.clear(); lcd.print("RESET"); Serial.println(" RESET " ); delay(500); sekunde=5; koraki =24; kor =96; hitrost =4; dvojnikoraki=48; iskanje(); spremembaparametra=1; j=0; A=1; B=1; C=1; void P1() iskanje(); lcd.clear(); lcd.print("PROGRAM P1"); lcd.setCursor(0,1);
![Page 63: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/63.jpg)
Mikroračunalniški krmilnik koračnega motorja
51
lcd.print("Avtomatsko"); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(5,0); lcd.print("IZHOD"); lcd.setCursor(11,0); lcd.print("OK"); lcd.setCursor(14,0); lcd.print("R"); lcd.setCursor(0,1); lcd.print("VHOD"); lcd.setCursor(5,1); lcd.print("1"); lcd.setCursor(11,1); lcd.print("-"); lcd.setCursor(14,1); lcd.print("1"); Serial.println("PROGRAM P1 " ); Serial.println("IZBERI : MENU, IZHOD, OK, RESET "); Serial.println("UKAZ : M, I, (), R "); delay(2500); while( program == LOW ) avtomatsko(); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); lcd.print("IZHOD P1"); Serial.println("IZHOD P1 " ); delay(1500); void avtomatsko() for(int i=1; i<4 ; i++) if(i==1 && spremembaparametra == LOW ) digitalWrite(ledpin1,HIGH); digitalWrite(ledpin3,LOW); lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija A " ); Serial.println("sekund " ); for(int i=0; i<sekunde ; i++)
![Page 64: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/64.jpg)
Mikroračunalniški krmilnik koračnega motorja
52
lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; if(i==2 && spremembaparametra == LOW ) digitalWrite(ledpin2,HIGH); digitalWrite(ledpin1,LOW); lcd.clear(); lcd.print("Pozicija B "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija B " ); Serial.println(" sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i);
![Page 65: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/65.jpg)
Mikroračunalniški krmilnik koračnega motorja
53
Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; if(i==3 && spremembaparametra == LOW ) digitalWrite(ledpin3,HIGH); digitalWrite(ledpin2,LOW); lcd.clear(); lcd.print("Pozicija C "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println(" Pozicija C " ); Serial.println(" sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " );
![Page 66: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/66.jpg)
Mikroračunalniški krmilnik koračnega motorja
54
if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("DOL "); Serial.println(" DOL " ); for(int i=0; i<dvojnikoraki ; i++) DOL(); tipke(); if( spremembaparametra==1 ) i=dvojnikoraki; tipke(); spremembaparametra=0; void P2() iskanje(); lcd.clear(); lcd.print("PROGRAM P2"); lcd.setCursor(0,1); lcd.print("Polavtomatsko"); Serial.println("PROGRAM P2 " ); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(5,0);
![Page 67: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/67.jpg)
Mikroračunalniški krmilnik koračnega motorja
55
lcd.print("IZHOD"); lcd.setCursor(11,0); lcd.print("OK"); lcd.setCursor(14,0); lcd.print("R"); lcd.setCursor(0,1); lcd.print("VHOD"); lcd.setCursor(5,1); lcd.print("1"); lcd.setCursor(11,1); lcd.print("1"); lcd.setCursor(14,1); lcd.print("1"); Serial.println("IZBERI : MENU, IZHOD, OK, RESET "); Serial.println("UKAZ : M, I, O, R "); while( program == LOW ) if( digitalRead(A3) ==1 || SERIA== 'O') avtomatsko(); digitalWrite(ledpin1,HIGH); digitalWrite(ledpin3,LOW); lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); Serial.println("Pozicija A PRIPRAVLJEN" ); tipke(); SERIA = Serial.read(); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); lcd.print("IZHOD P2"); Serial.println("IZHOD P2" ); delay(1500); void P3() iskanje(); lcd.clear(); lcd.print("PROGRAM P3"); lcd.setCursor(0,1); lcd.print("Rocno"); Serial.println("PROGRAM P3 " ); delay(1000); while( program == LOW ) if( j==0 && A==1 && B==1 && C==1 )
![Page 68: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/68.jpg)
Mikroračunalniški krmilnik koračnega motorja
56
lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin1,HIGH); Serial.println("Pozicija A PRIPRAVLJEN" ); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(5,0); lcd.print("IZHOD"); lcd.setCursor(11,0); lcd.print("OK"); lcd.setCursor(14,0); lcd.print("R"); lcd.setCursor(0,1); lcd.print("VHOD"); lcd.setCursor(5,1); lcd.print("1"); lcd.setCursor(11,1); lcd.print("1"); lcd.setCursor(14,1); lcd.print("1"); Serial.println("IZBERI : MENU, IZHOD, OK, RESET "); Serial.println("UKAZ : M, I, O, R "); A=0; B=0; C=0; if(digitalRead(A3) ==1 || SERIA== 'O') j=j+1; if(j==4 ) j=1; if(j==1 && spremembaparametra == LOW && A == 0 ) C=0; A = 1; lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija A " ); Serial.println("sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i);
![Page 69: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/69.jpg)
Mikroračunalniški krmilnik koračnega motorja
57
Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; lcd.clear(); lcd.print("Pozicija B "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,HIGH); Serial.println("Pozicija B PRIPRAVLJEN" ); if(j==2 && spremembaparametra == LOW && B == 0) A = 0; B=1; lcd.clear(); lcd.print("Pozicija B "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija B " );
![Page 70: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/70.jpg)
Mikroračunalniški krmilnik koračnega motorja
58
Serial.println("sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; lcd.clear(); lcd.print("Pozicija C "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,HIGH); Serial.println("Pozicija C PRIPRAVLJEN" ); if(j==3 && spremembaparametra == LOW && C == 0) B = 0; C=1;
![Page 71: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/71.jpg)
Mikroračunalniški krmilnik koračnega motorja
59
lcd.clear(); lcd.print("Pozicija C "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija C " ); Serial.println("sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("DOL "); Serial.println(" DOL " ); for(int i=0; i<dvojnikoraki ; i++) DOL(); tipke(); if( spremembaparametra==1 ) i=dvojnikoraki; lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin3,LOW); digitalWrite(ledpin1,HIGH); Serial.println("Pozicija A PRIPRAVLJEN" );
![Page 72: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/72.jpg)
Mikroračunalniški krmilnik koračnega motorja
60
tipke(); spremembaparametra=0; SERIA = Serial.read(); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); lcd.print("IZHOD P3"); Serial.println("IZHOD P3"); delay(1500); j=0; A=1; B=1; C=1; void pozicijaA() spremembaparametra=1; liftpinS=1; for(int i=0; i<2 ; i++) digitalWrite(motorpin1,HIGH); delay(6); digitalWrite(motorpin2,HIGH); delay(6); digitalWrite(motorpin1,LOW); delay(6); digitalWrite(motorpin2,LOW); delay(6); void iskanje() digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); lcd.print("Iskanje pozicije"); Serial.println("ISKANJE POZICIJE" ); delay(100); liftpin1pozicija = digitalRead(A0); while(liftpin1pozicija == LOW) digitalWrite(motorpin2,HIGH); delay(6); digitalWrite(motorpin1,HIGH); delay(6);
![Page 73: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/73.jpg)
Mikroračunalniški krmilnik koračnega motorja
61
digitalWrite(motorpin2,LOW); delay(6); digitalWrite(motorpin1,LOW); delay(6); liftpin1pozicija = digitalRead(A0); for(int i=0; i<2 ; i++) digitalWrite(motorpin1,HIGH); delay(6); digitalWrite(motorpin2,HIGH); delay(6); digitalWrite(motorpin1,LOW); delay(6); digitalWrite(motorpin2,LOW); delay(6); if( S==1 ) for(int i=0; i<koraki ; i++) digitalWrite(motorpin1,HIGH); delay(6); digitalWrite(motorpin2,HIGH); delay(6); digitalWrite(motorpin1,LOW); delay(6); digitalWrite(motorpin2,LOW); delay(6); lcd.clear(); lcd.print("Pozicija A "); Serial.println("Pozicija A POZICIONIRAN " ); digitalWrite(ledpin1,HIGH); lcd.setCursor(0,1); lcd.print("POZICIONIRAN"); delay(2000); digitalWrite(ledpin1,LOW); void S1() iskanje(); lcd.clear(); lcd.print("PROGRAM S1"); lcd.setCursor(0,1); lcd.print("Avtomatsko"); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(5,0);
![Page 74: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/74.jpg)
Mikroračunalniški krmilnik koračnega motorja
62
lcd.print("IZHOD"); lcd.setCursor(11,0); lcd.print("OK"); lcd.setCursor(14,0); lcd.print("R"); lcd.setCursor(0,1); lcd.print("VHOD"); lcd.setCursor(5,1); lcd.print("1"); lcd.setCursor(11,1); lcd.print("-"); lcd.setCursor(14,1); lcd.print("1"); Serial.println("PROGRAM S1 " ); Serial.println("IZBERI : MENU, IZHOD, OK, RESET "); Serial.println("UKAZ : M, I, (), R "); delay(2500); while( program == LOW ) avtomatskoS(); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); lcd.print("IZHOD S1"); Serial.println("IZHOD S1 " ); delay(1500); void avtomatskoS() for(int i=1; i<4 ; i++) if(i==1 && spremembaparametra == LOW ) digitalWrite(ledpin1,HIGH); digitalWrite(ledpin3,LOW); lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija A " ); Serial.println("sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 )
![Page 75: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/75.jpg)
Mikroračunalniški krmilnik koračnega motorja
63
digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; if(i==2 && spremembaparametra == LOW ) digitalWrite(ledpin2,HIGH); digitalWrite(ledpin1,LOW); lcd.clear(); lcd.print("Pozicija B "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija B " ); Serial.println(" sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH);
![Page 76: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/76.jpg)
Mikroračunalniški krmilnik koračnega motorja
64
if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("DOL "); Serial.println(" DOL " ); for(int i=0; i<dvojnikoraki ; i++) DOL(); tipke(); if( spremembaparametra==1 ) i=dvojnikoraki; if( liftpinS==1 ) spremembaparametra =0; liftpinS=0; if(i==3 && spremembaparametra == LOW ) digitalWrite(ledpin3,HIGH); digitalWrite(ledpin2,LOW); lcd.clear(); lcd.print("Pozicija C "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println(" Pozicija C " ); Serial.println(" sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 )
![Page 77: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/77.jpg)
Mikroračunalniški krmilnik koračnega motorja
65
digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; tipke(); spremembaparametra=0; void S2() iskanje(); lcd.clear(); lcd.print("PROGRAM S2"); lcd.setCursor(0,1); lcd.print("Polavtomatsko"); Serial.println("PROGRAM S2 " ); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(5,0); lcd.print("IZHOD");
![Page 78: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/78.jpg)
Mikroračunalniški krmilnik koračnega motorja
66
lcd.setCursor(11,0); lcd.print("OK"); lcd.setCursor(14,0); lcd.print("R"); lcd.setCursor(0,1); lcd.print("VHOD"); lcd.setCursor(5,1); lcd.print("1"); lcd.setCursor(11,1); lcd.print("1"); lcd.setCursor(14,1); lcd.print("1"); Serial.println("IZBERI : MENU, IZHOD, OK, RESET "); Serial.println("UKAZ : M, I, O, R "); while( program == LOW ) if( digitalRead(A3) ==1 || SERIA== 'O') avtomatskoS(); digitalWrite(ledpin1,HIGH); digitalWrite(ledpin3,LOW); lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); Serial.println("Pozicija A PRIPRAVLJEN" ); tipke(); SERIA = Serial.read(); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); lcd.print("IZHOD S2"); Serial.println("IZHOD S2" ); delay(1500); void S3() iskanje(); lcd.clear(); lcd.print("PROGRAM S3"); lcd.setCursor(0,1); lcd.print("Rocno"); Serial.println("PROGRAM S3 " ); delay(1000); while( program == LOW ) if( j==0 && A==1 && B==1 && C==1 )
![Page 79: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/79.jpg)
Mikroračunalniški krmilnik koračnega motorja
67
lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin1,HIGH); Serial.println("Pozicija A PRIPRAVLJEN" ); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("MENU"); lcd.setCursor(5,0); lcd.print("IZHOD"); lcd.setCursor(11,0); lcd.print("OK"); lcd.setCursor(14,0); lcd.print("R"); lcd.setCursor(0,1); lcd.print("VHOD"); lcd.setCursor(5,1); lcd.print("1"); lcd.setCursor(11,1); lcd.print("1"); lcd.setCursor(14,1); lcd.print("1"); Serial.println("IZBERI : MENU, IZHOD, OK, RESET "); Serial.println("UKAZ : M, I, O, R "); A=0; B=0; C=0; if(digitalRead(A3) ==1 || SERIA== 'O') j=j+1; if(j==4 ) j=1; if(j==1 && spremembaparametra == LOW && A == 0 ) C=0; A = 1; lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija A " ); Serial.println("sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i );
![Page 80: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/80.jpg)
Mikroračunalniški krmilnik koračnega motorja
68
Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; lcd.clear(); lcd.print("Pozicija B "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,HIGH); Serial.println("Pozicija B PRIPRAVLJEN" ); if(j==2 && spremembaparametra == LOW && B == 0) A = 0; B=1; lcd.clear(); lcd.print("Pozicija B "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija B " ); Serial.println("sekund " );
![Page 81: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/81.jpg)
Mikroračunalniški krmilnik koračnega motorja
69
for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("DOL "); Serial.println(" DOL " ); for(int i=0; i<dvojnikoraki ; i++) DOL(); tipke(); if( spremembaparametra==1 ) i=dvojnikoraki; lcd.clear(); lcd.print("Pozicija C "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,HIGH); Serial.println("Pozicija C PRIPRAVLJEN" ); if(j==3 && spremembaparametra == LOW && C == 0) B = 0; C=1; lcd.clear();
![Page 82: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/82.jpg)
Mikroračunalniški krmilnik koračnega motorja
70
lcd.print("Pozicija C "); lcd.setCursor(8,1); lcd.print(" sekund "); Serial.println("Pozicija C " ); Serial.println("sekund " ); for(int i=0; i<sekunde ; i++) lcd.setCursor(0,1); lcd.print(i); Serial.print(i ); Serial.print("s, " ); if( i == 1 ) digitalWrite(ledpin4,HIGH); if( i == 2 ) digitalWrite(ledpin4,LOW); for(int i=0; i<10 ; i++) delay(100); tipke(); if( spremembaparametra == HIGH ) i=sekunde; digitalWrite(ledpin4,LOW); if( spremembaparametra == LOW ) lcd.clear(); lcd.print("GOR "); Serial.println(" GOR " ); for(int i=0; i<koraki ; i++) GOR(); tipke(); if( spremembaparametra == HIGH ) i=koraki; lcd.clear(); lcd.print("Pozicija A "); lcd.setCursor(0,1); lcd.print("PRIPRAVLJEN "); digitalWrite(ledpin3,LOW); digitalWrite(ledpin1,HIGH); Serial.println("Pozicija A PRIPRAVLJEN" );
![Page 83: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/83.jpg)
Mikroračunalniški krmilnik koračnega motorja
71
tipke(); spremembaparametra=0; SERIA = Serial.read(); digitalWrite(ledpin1,LOW); digitalWrite(ledpin2,LOW); digitalWrite(ledpin3,LOW); digitalWrite(ledpin4,LOW); lcd.clear(); lcd.print("IZHOD S3"); Serial.println("IZHOD S3"); delay(1500); j=0; A=1; B=1; C=1; void tipke() SERIA = Serial.read(); if ( digitalRead(A2) ==1 || SERIA== 'I') lcd.clear(); lcd.print("IZHOD"); Serial.println(" IZHOD " ); delay(500); program = 1; spremembaparametra=1; if ( digitalRead(A1) ==1 || SERIA== 'M') menu(); if ( digitalRead(A4) ==1 || SERIA== 'R') reset(); if ( digitalRead(A0) ==1) pozicijaA(); void GOR() digitalWrite(motorpin1,HIGH); delay(hitrost); digitalWrite(motorpin2,HIGH); delay(hitrost); digitalWrite(motorpin1,LOW); delay(hitrost); digitalWrite(motorpin2,LOW);
![Page 84: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/84.jpg)
Mikroračunalniški krmilnik koračnega motorja
72
delay(hitrost); void DOL() digitalWrite(motorpin2,HIGH); delay(hitrost); digitalWrite(motorpin1,HIGH); delay(hitrost); digitalWrite(motorpin2,LOW); delay(hitrost); digitalWrite(motorpin1,LOW); delay(hitrost);
![Page 85: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/85.jpg)
Mikroračunalniški krmilnik koračnega motorja
73
PRILOGA B
![Page 86: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/86.jpg)
Mikroračunalniški krmilnik koračnega motorja
74
![Page 87: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/87.jpg)
Mikroračunalniški krmilnik koračnega motorja
75
![Page 88: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/88.jpg)
Mikroračunalniški krmilnik koračnega motorja
76
![Page 89: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/89.jpg)
Mikroračunalniški krmilnik koračnega motorja
77
![Page 90: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/90.jpg)
Mikroračunalniški krmilnik koračnega motorja
78
![Page 91: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/91.jpg)
Mikroračunalniški krmilnik koračnega motorja
79
![Page 92: Aleksander Filipovi č - core.ac.uk · a bipolar stepper motor in a full step mode. The stepper motor moves an object along a linear guide to different positions following a certain,](https://reader031.vdocuments.site/reader031/viewer/2022011809/5d1c717d88c993d2288bef74/html5/thumbnails/92.jpg)
Mikroračunalniški krmilnik koračnega motorja
80