
Prispevki
Koračni motor 28BYJ-48 z gonilnikom ULN2003 in Arduino Keyestudio

Koračni motorji so nepogrešljivi v svetu elektronike, ko potrebujemo natančen nadzor nad pozicijo. Eden najbolj priljubljenih in cenovno dostopnih modelov za hobiste, dijake in začetnike je 28BYJ-48, ki običajno pride v kompletu z gonilnikom ULN2003. V tem vodiču bomo raziskali, zakaj je ta motor tako poseben, kako ga pravilno priključiti (in se izogniti najpogostejši napaki!), ter kako ga programirati za gladko in natančno gibanje.
Kaj je koračni motor?
Za razliko od navadnega DC motorja, ki se ob priključitvi napetosti preprosto zavrti, koračni motor premika svojo gred v točno določenih korakih. Vsak električni impulz pomeni en korak – in vsak korak pomeni natančno znan premik. To pomeni, da lahko pozicijo gredi nadziramo brez dragih povratnih senzorjev (enkoderjev), kar imenujemo odprtozančno krmiljenje (open-loop control).
Hitrost vrtenja je neposredno odvisna od frekvence impulzov, smer vrtenja pa od zaporedja aktiviranja tuljav. Prav to zaporedje je pri motorju 28BYJ-48 eden ključnih detajlov, ki ga mnogi spregledajo – a o tem več v nadaljevanju.
Motor 28BYJ-48: Majhen, a presenetljivo zmogljiv
28BYJ-48 je 4-fazni, unipolarni koračni motor, ki deluje na 5 V. Njegova ključna lastnost je vgrajen reduktor (gearbox) s prestavnim razmerjem približno 1:64. Ta reduktor je tisti, ki motorju daje presenetljivo velik navor za njegovo kompaktno velikost – seveda na račun hitrosti.
Motor ima 5-žilni konektor, ki se na gonilnik ULN2003 prilega samo v eno smer. Napačna priključitev je tako praktično nemogoča, kar je za začetnike zelo dobrodošla lastnost.
Tehnične specifikacije motorja
- Model: 28BYJ-48
- Napajalna napetost: 5 V DC
- Tip: 4-fazni, unipolarni
- Kot koraka: 5,625° / 64
- Prestavno razmerje reduktorja: ~1:64
- Upornost navitja: 50 Ω ±7 % (pri 25 °C)
- Frekvenca: 100 Hz
- Navor pri vleku: >34,3 mN·m (pri 120 Hz)
- Navor pri mirovanju: >34,3 mN·m
- Poraba toka: ~240 mA (pri mirovanju z napetostjo na navitjih)

Resnica o korakih: 2048 ali 2038?
Ena izmed najbolj zmedenih stvari pri tem motorju je število korakov za en polni obrat. Teoretično, glede na specifikacije proizvajalca, ima motor reduktor 64:1. Ker notranji motor potrebuje 32 korakov za en obrat, bi to pomenilo:
32 × 64 = 2048 korakov na obrat (v full-step načinu).
Vendar pa so natančne meritve in razstavljanje reduktorja pokazali, da je dejansko razmerje zobnikov približno 63,68395:1. To pomeni, da je za en polni obrat gredi dejansko potrebnih približno 2038 korakov. Če v kodi uporabite 2048 korakov, se bo motor po več obratih počasi premaknil iz želene pozicije – napaka se kopiči!
Za večjo natančnost se pogosto uporablja half-step način (polovični korak), kar podvoji ločljivost na približno 4076 korakov na obrat.
Ožičenje: Pravilna povezava z Arduinom
Motorja ne morete priklopiti neposredno na Arduino, saj bi prevelik tok uničil mikrokrmilnik. Zato uporabljamo gonilno ploščico s čipom ULN2003, ki vsebuje Darlingtonove tranzistorje za ojačanje toka.
Povezava gonilnika na Arduino
Povežite krmilne pine gonilnika na digitalne izhode Arduina:
- IN1 → Pin 8
- IN2 → Pin 9
- IN3 → Pin 10
- IN4 → Pin 11
- GND → Arduino GND
Napajanje – najpomembnejši del!
Čeprav boste na spletu našli vodiče, ki napajajo motor iz 5V pina na Arduinu, tega ne počnite. Motor lahko potegne do 240 mA toka, tudi ko miruje, kar lahko preobremeni Arduino ali povzroči električne motnje, ki resetirajo ploščico.
- Pravilno: uporabite zunanji 5 V napajalnik (adapter ali power bank)
- Povezava: “+” napajalnika na VCC gonilnika, “–” napajalnika na GND gonilnika
- Skupna masa: obvezno povežite GND zunanjega napajalnika z GND pinom na Arduinu

Koračni motor 28BYJ-48 in gonilnik 5V Keyestudio
Programiranje: Zakaj je zaporedje pinov tako pomembno?
Tukaj se mnogi zataknejo. Motor 28BYJ-48 za pravilno delovanje zahteva specifično zaporedje aktiviranja tuljav: IN1 → IN3 → IN2 → IN4. Če v knjižnicah uporabite standardno zaporedje (1-2-3-4), bo motor samo vibriral in se ne bo vrtel.
Uporaba standardne Stepper.h knjižnice
Pri inicializaciji morate zamenjati srednja dva pina:
#include <Stepper.h>
// Uporabimo 2038 za točno število korakov
const int stepsPerRevolution = 2038;
// POZOR: Zaporedje pinov je 8, 10, 9, 11 (in ne 8, 9, 10, 11)
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
void setup() {
myStepper.setSpeed(10); // Hitrost v rpm
}
void loop() {
myStepper.step(stepsPerRevolution); // En obrat v eno smer
delay(1000);
myStepper.step(-stepsPerRevolution); // En obrat v drugo smer
delay(1000);
}
Uporaba knjižnice AccelStepper (priporočeno)
Za naprednejše projekte je knjižnica AccelStepper veliko boljša izbira. Omogoča pospeševanje in zaviranje (mehkejše gibanje), half-step način (boljša natančnost) in ne-blokirajočo kodo – Arduino lahko počne druge stvari, medtem ko se motor vrti.
#include <AccelStepper.h>
#define HALFSTEP 8
#define motorPin1 8 // IN1
#define motorPin2 9 // IN2
#define motorPin3 10 // IN3
#define motorPin4 11 // IN4
// Inicializacija s pravilnim vrstnim redom: 1, 3, 2, 4
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
void setup() {
stepper1.setMaxSpeed(1000.0);
stepper1.setAcceleration(100.0);
stepper1.setSpeed(200);
stepper1.moveTo(2038);
}
void loop() {
if (stepper1.distanceToGo() == 0) {
stepper1.moveTo(-stepper1.currentPosition());
}
stepper1.run();
}
Odpravljanje težav
Če vaš motor ne deluje pravilno, preverite naslednje:
- Motor samo vibrira, a se ne vrti: najverjetneje imate napačno zaporedje pinov. Poskusite zamenjati srednja dva pina v kodi (iz 8, 9, 10, 11 v 8, 10, 9, 11).
- Motor se pregreva: koračni motorji vlečejo tok tudi ko stojijo, da zadržijo pozicijo (holding torque). To je normalno. Za zmanjšanje segrevanja uporabite
disableOutputs()v AccelStepper, ko motor miruje – vendar bo izgubil navor. - Ni moči / preskakuje korake: preverite napajanje. 9V baterije so pogosto prešibke. Uporabite namenski 5V 2A napajalnik ali power bank.
Zaključek
Motor 28BYJ-48 z gonilnikom ULN2003 je fantastično orodje za učenje o preciznem gibanju v svetu elektronike. Čeprav ni najhitrejši, je zaradi reduktorja presenetljivo močan in natančen. Ključ do uspeha je uporaba ločenega napajanja, pravilnega zaporedja pinov (1-3-2-4) in naprednih knjižnic, kot je AccelStepper, za gladko in zanesljivo delovanje.
Če iščete zanesljiv in cenovno dostopen način za dodajanje natančnega gibanja vašim Arduino projektom, je ta komplet prava izbira za začetek.



