Closeup of technician hands tying knot in damaged white charger cable attempting repair at gray desk

Jak podłączyć ULN2003?

4 min. czytania

ULN2003 to popularny układ sterownika tranzystorowego Darlingtona (często jako moduł) do sterowania silnikami krokowymi unipolarnymi, takimi jak 28BYJ-48. Umożliwia łatwe podłączenie do mikrokontrolerów (np. Arduino), oferując obciążalność do 500 mA/kanał i napięcie do 50 V, z wbudowanymi diodami zabezpieczającymi. Najczęściej współpracuje z silnikiem 28BYJ-48 (5 V, 5 przewodów: czerwony – VCC, niebieski, różowy, żółty, pomarańczowy) i wymaga 4 pinów sterujących IN1–IN4.

Potrzebne komponenty

Przygotuj następujące elementy:

  • Moduł ULN2003 – wersja z gniazdem JST dla silnika i diodami LED sygnalizującymi fazy;
  • Silnik krokowy 28BYJ-48 – unipolarny, zwykle 5 V;
  • Mikrokontroler – np. Arduino Uno, Arduino Nano lub Wemos D1 Mini (ESP32);
  • Przewody połączeniowe – żeńsko–męskie, ok. 6 szt.;
  • Źródło zasilania – 5 V z Arduino lub zewnętrzne 5–12 V zgodnie z wersją silnika;
  • Płytka stykowa – opcjonalnie, ułatwia porządek połączeń.

Schemat podłączenia (standardowy dla Arduino Uno)

Moduł ULN2003 ma zazwyczaj piny: + (VCC), – (GND), IN1–IN4 oraz gniazdo na silnik.

Pin modułu ULN2003 Pin Arduino Uno Uwagi
+ (VCC) 5V Zasilanie sterownika (5 V z Arduino lub z zasilacza zewnętrznego).
– (GND) GND Wspólna masa dla wszystkich elementów.
IN1 Pin 8 Sterowanie fazą 1.
IN2 Pin 9 Sterowanie fazą 2.
IN3 Pin 10 Sterowanie fazą 3.
IN4 Pin 11 Sterowanie fazą 4.
Gniazdo silnika Wtyczka silnika Wepnij białą wtyczkę (kolejność: BLU, PNK, YEL, ORG, RED – RED to wspólny +VCC).

Dla Wemos D1 Mini R32 (ESP32) – IN1→IO16, IN2→IO17, IN3→IO25, IN4→IO26.

Krok po kroku – podłączenie

Wykonaj poniższe kroki:

  1. Podłącz wtyczkę silnika – włóż białą wtyczkę silnika 28BYJ-48 do gniazda na module ULN2003 (kolejność przewodów w gnieździe: niebieski, różowy, żółty, pomarańczowy, czerwony – wspólny VCC);
  2. Podłącz zasilanie sterownika – przewód z + (VCC) modułu do 5V Arduino, a – (GND) do GND Arduino; diody LED na module powinny się zaświecić po podaniu zasilania;
  3. Podłącz piny sterujące – IN1→8, IN2→9, IN3→10, IN4→11 na Arduino;
  4. Zasilanie zewnętrzne (zalecane) – jeśli moment jest zbyt mały przy 5 V z Arduino, użyj zasilacza zgodnego z wersją silnika (5 V lub 12 V): plus do + modułu (lub zworki 5/12 V), minus do GND (pamiętaj o wspólnej masie z Arduino);
  5. Sprawdź połączenia – upewnij się, że masa (GND) jest wspólna i nie ma odwróconej polaryzacji.

Kod Arduino do testów (4 linijki bazowego sterowania)

Użyj biblioteki Stepper.h (Arduino IDE: Sketch → Include Library → Stepper). Przykładowy szkic:

#include <Stepper.h>

const int stepsPerRevolution = 2048; // dla 28BYJ-48 (ok. 2048 kroków/obrót w half-step)
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); // piny IN1–IN4

void setup() {
myStepper.setSpeed(15); // rpm (do ~20 dla 5 V)
}

void loop() {
myStepper.step(stepsPerRevolution / 4); // ~90° zgodnie
delay(500);
myStepper.step(-stepsPerRevolution / 2); // ~180° przeciwnie
delay(500);
}

Wgraj szkic – silnik powinien obracać się o 90° i 180°. W razie potrzeby dostosuj stepsPerRevolution (często 4096 dla pełnego obrotu zależnie od trybu krokowania i przekładni).

Ważne porady i wskazówki

Aby uniknąć typowych problemów i uzyskać stabilną pracę, zwróć uwagę na poniższe kwestie:

  • Napięcie silnika – 5 V z Arduino jest dobre do testów, ale dla pełnej mocy zastosuj zewnętrzny zasilacz zgodny z wersją silnika (5 V lub 12 V);
  • Tryb pracy – tylko unipolarny (ULN2003 nie jest mostkiem H i nie obsługuje silników bipolarnych);
  • Ograniczenia prądowe – maks. 500 mA/kanał, łącznie dostępnych 7 kanałów (tu używasz 4); przy długiej pracy i wyższym obciążeniu rozważ chłodzenie;
  • Diody LED na module – sygnalizują aktywne fazy (A, B, C, D), co ułatwia diagnostykę;
  • Problemy – najczęstsze objawy i szybkie rozwiązania:
    • silnik nie rusza – sprawdź wspólną masę GND, kolejność pinów oraz napięcie zasilania,
    • drgania lub gubienie kroków – zmniejsz prędkość (setSpeed) lub zmień sekwencję krokową,
    • przegrzewanie – obniż rpm, zrób przerwy w pracy lub dodaj chłodzenie.
  • Bezpieczeństwo – nie podłączaj silnika bezpośrednio do pinów Arduino; zawsze odłącz zasilanie przed zmianami w okablowaniu;
  • Rozszerzenia – do precyzyjnego sterowania użyj biblioteki AccelStepper; dla wielu silników zastosuj osobne linie INx lub kolejne moduły.
Grzegorz Kuzia
Grzegorz Kuzia

Redaktor naczelny Poland IT Hub. Od ponad 8 lat zajmuję się testowaniem sprzętu, recenzowaniem gier i tworzeniem praktycznych poradników technologicznych. Specjalizuję się w wirtualnej rzeczywistości, aplikacjach mobilnych oraz cyberbezpieczeństwie. Moją misją jest pokazywanie, że technologia może być prosta i dostępna dla każdego – bez żargonu i komplikacji.