🔄 28BYJ-48 Stepper Motor + ULN2003 Driver
28BYJ-48 er den lille 5 V gear-stepper, der har drevet tusindvis af persienner, foderautomater og urværker. Den drejer et præcist antal skridt og holder positionen – langsomt, men overraskende stærkt pga. gearkassen. ULN2003-boardet er dens muskler: fire Darlington-kanaler med indbyggede flyback-dioder og fire LED'er, der viser hvilke spoler der får strøm.
Du skal bruge: motor + driver, 6 Dupont-ledninger og helst en ekstern 5 V-forsyning.
🛒 Køb 28BYJ-48 + ULN2003 📄 ULN2003A datasheet (PDF)Der findes ikke et officielt producent-datasheet for 28BYJ-48 (mange fabrikker laver den). Knappen fører til Texas Instruments' datasheet for ULN2003A-chippen på driver-boardet.
⚡ Hurtige specifikationer
| Parameter | Værdi |
|---|---|
| Motor | 28BYJ-48, unipolar, 4 faser, 5 ledninger, 5 V DC |
| Gearudveksling | ca. 1:64 (den reelle udveksling er en anelse mindre, ca. 1:63,7) |
| Skridt pr. omdrejning (motor) | 32 i fuldtrin / 64 i halvtrin (5,625° pr. halvtrin) |
| Skridt pr. omdrejning (udgangsaksel) | ca. 2048 i fuldtrin / ca. 4096 i halvtrin |
| Hastighed | max ca. 10–15 RPM |
| Strøm | ca. 160 mA pr. fase |
| Driver-chip | ULN2003A: 7 Darlington-kanaler, 500 mA og 50 V pr. kanal, indbyggede flyback-dioder |
| Driver-indgange | Kompatibel med 5 V TTL/CMOS – virker i praksis også med 3,3 V fra ESP32 |
📌 Pinout
ULN2003-driverboardet
| Pin | Navn | Funktion | Forbindes til |
|---|---|---|---|
| IN1 | Indgang 1 | Styrer spole A (LED A) | Digital pin, fx D8 |
| IN2 | Indgang 2 | Styrer spole B (LED B) | Digital pin, fx D9 |
| IN3 | Indgang 3 | Styrer spole C (LED C) | Digital pin, fx D10 |
| IN4 | Indgang 4 | Styrer spole D (LED D) | Digital pin, fx D11 |
| − (GND) | Minus | Fælles GND | GND på forsyning og microcontroller |
| + (VCC) | Motorforsyning | Strøm til motoren | 5 V (til 5 V-motoren) |
| ON/OFF-jumper | Afbryder | Afbryder motorstrømmen | Skal sidde på, for at motoren kører |
| Hvidt 5-pins stik | Motorstik | Motorens kabel | Klik motoren i – stikket kan kun vende én vej |
Motorens ledninger
| Pin | Navn | Funktion | Forbindes til |
|---|---|---|---|
| Rød | Fælles + | Midtpunkt på alle spoler | +5 V (via stikket) |
| Orange | Spole 1 | Trækkes til GND af ULN2003 | Driverens udgang (via stikket) |
| Gul | Spole 2 | Trækkes til GND af ULN2003 | Driverens udgang (via stikket) |
| Pink | Spole 3 | Trækkes til GND af ULN2003 | Driverens udgang (via stikket) |
| Blå | Spole 4 | Trækkes til GND af ULN2003 | Driverens udgang (via stikket) |
🔌 Sådan forbinder du den
| ULN2003-board | UNO / Nano | ESP32 |
|---|---|---|
| IN1 | D8 | GPIO 19 |
| IN2 | D9 | GPIO 18 |
| IN3 | D10 | GPIO 5 |
| IN4 | D11 | GPIO 17 |
| − | GND | GND |
| + | 5V (lille test) / ekstern 5 V | Ekstern 5 V eller VIN/5V (USB-forsynet) |
💻 Eksempelkode
Biblioteket Stepper følger med Arduino IDE. Bemærk pin-rækkefølgen: IN1, IN3, IN2, IN4 – det er ikke en tastefejl.
// 28BYJ-48 + ULN2003: én omgang frem, én tilbage (KompoNemt)
#include <Stepper.h>
const int SKRIDT_PR_OMDR = 2048; // fuldtrin på udgangsakslen
// Rækkefølge: IN1, IN3, IN2, IN4 (ESP32: 19, 5, 18, 17)
Stepper motor(SKRIDT_PR_OMDR, 8, 10, 9, 11);
void slukSpoler() { // spar strøm og varme i pauser
for (int p = 8; p <= 11; p++) digitalWrite(p, LOW);
}
void setup() {
motor.setSpeed(10); // RPM - max ca. 15
}
void loop() {
motor.step(SKRIDT_PR_OMDR); // én omgang med uret
slukSpoler();
delay(1000);
motor.step(-SKRIDT_PR_OMDR); // én omgang mod uret
slukSpoler();
delay(1000);
}
💡 KompoNemt-tip fra værkstedet
- Flyback-dioderne er indbygget: ULN2003A har dioder til spolerne (via COM-benet, som boardet forbinder til +). Du skal altså ikke selv sætte dioder på – men brug aldrig motoren uden driveren.
- Ekstern 5 V: Motoren trækker et par hundrede mA. Til en test på skrivebordet går Arduinoens 5V-pin, men under belastning skal den have sin egen forsyning (med fælles GND).
- Motoren bliver varm i hvile, fordi spolerne holder positionen. Sluk spolerne i pauser (som i koden), hvis du ikke behøver holdemomentet.
- Slør i gearet: Der er lidt slør, når den skifter retning. Kør altid samme vej til din nulposition, hvis du skal ramme præcist.
-
Mere præcision eller jævnere gang: Biblioteket
AccelStepperkan køre halvtrin (4096 skridt/omdr.) og accelerere blødt.
🔧 Fejlfinding
- Motoren brummer/vibrerer, men drejer ikke: Forkert pin-rækkefølge i koden (husk 8, 10, 9, 11) eller for høj hastighed – prøv setSpeed(5).
- LED'erne blinker, men motoren står stille: ON/OFF-jumperen mangler, eller motorstikket sidder ikke helt i.
- Ingen LED'er lyser: Ingen strøm på + / −, eller IN-ledningerne sidder på andre pins end i koden.
- Den drejer kun den ene vej: To IN-ledninger er byttet. Tjek IN2 og IN3.
- Arduinoen genstarter: Motoren trækker for meget fra USB. Giv driveren ekstern 5 V.
Sidder du fast? Skriv til os – vi hjælper gerne.