0968140191Miền Nam
0975897066Miền Bắc

Điều khiển động cơ bước ULN2003: chân IC, giới hạn dòng, đấu nối vi điều khiển và PLC

Viết bởi: Vũ Hồng Phúc
Vũ Hồng Phúc
Vũ Hồng Phúc, sinh năm 1985, sau khi tốt nghiệp cử nhân tại Đại Học Bách Khoa Hà Nội, Vũ Hồng Phúc đã tự mình khám phá thế giới qua việc du học tại EF Language School London và nhiều trường đại học khác. Tích lũy kinh nghiệm trong nhiều năm, anh quyết định trở về đất nước. Vũ Hồng Phúc đã hướng đến mục tiêu phát triển Dongco3pha.com là thương hiệu "Động cơ điện" hàng đầu Việt Nam. Trong nhiều năm liền danh liên tục mang lại nhiều thành tựu cho doanh nghiệp và đóng góp nhiều giải pháp tối ưu về chế tạo máy, chế tạo động cơ giảm tốc, động cơ điện.
14 thg 10 2026 14:50

Điều khiển động cơ bước ULN2003 là cách kéo motor bước đơn cực (5 dây hoặc 6 dây) bằng IC ULN2003 – một mảng 7 transistor Darlington đóng xuống mass, mỗi kênh chịu tới 500 mA và 50 V, có sẵn diode dập xung ngược. Vi điều khiển chỉ cần xuất 4 tín hiệu logic theo trình tự, IC làm nhiệm vụ đóng ngắt dòng lớn qua từng nửa cuộn dây. Cách này dùng khi motor nhỏ, dòng dưới khoảng 0,3–0,35 A mỗi pha, tốc độ thấp và cần mạch thật rẻ, thật đơn giản: rèm cuốn, van xoay, kim đồng hồ, cơ cấu lật bảng, mô hình học tập.

Khi dùng thật – kéo motor 12 V, 24 V, ghép với PLC, Raspberry Pi, STM32 hay chạy liên tục trong tủ điện – các câu hỏi quan trọng là chân COM nối đi đâu, IC nóng tới mức nào thì chết, ghép kênh để tăng dòng có được không và khi nào nên chuyển sang mảng MOSFET hay driver băm dòng.

Thông số riêng của motor 28BYJ-48 (tỉ số hộp số thật, số bước mỗi vòng, tốc độ, mô-men) đã có đầy đủ ở bài động cơ bước 5 dây 28BYJ-48. Dưới đây tập trung vào bản thân IC ULN2003 và mạch điều khiển xoay quanh nó.

1. ULN2003 là gì và vì sao dùng được cho động cơ bước?

ULN2003 (thường gặp mã ULN2003A, ULN2003AN bản DIP16, ULN2003AD hoặc ULN2003D bản dán SO16) là IC đệm dòng phía thấp (low-side sink driver) gồm 7 kênh Darlington độc lập. Mỗi kênh có:

  • Một điện trở nền 2,7 kΩ ở đầu vào, cho phép nối thẳng chân vi điều khiển 5 V hoặc 3,3 V mà không cần điện trở ngoài.
  • Một cặp transistor Darlington, cực phát nối chung vào chân GND (chân 8).
  • Một diode dập nối từ đầu ra lên chân COM (chân 9) để triệt điện áp cảm ứng khi cuộn dây bị ngắt.

Đầu vào ở mức cao thì đầu ra bị kéo xuống gần mass; đầu vào ở mức thấp hoặc để hở thì đầu ra hở mạch. IC không có khả năng đẩy dòng ra (không xuất được điện áp dương), chỉ "hút" dòng từ tải xuống mass.

Đặc điểm này khớp hoàn hảo với động cơ bước đơn cực: dây chung (điểm giữa cuộn) nối thẳng vào cực dương nguồn, bốn đầu pha nối vào bốn đầu ra của ULN2003. Bật kênh nào thì nửa cuộn tương ứng có dòng. Không cần cầu H, không lo hai khóa cùng nhánh dẫn đồng thời gây chập nguồn, không cần mạch kích cổng phía cao. Đổi lại, mạch chỉ đóng ngắt hoàn toàn, không điều chỉnh được dòng, nên chỉ chạy bước đủ và nửa bước.

Nếu motor là loại 4 dây lưỡng cực, ULN2003 không dùng được vì không đảo chiều dòng qua cuộn; khi đó tham khảo cách điều khiển động cơ bước dùng L298 hoặc các driver băm dòng. Tổng quan về cấu tạo và cách phân loại motor bước có ở trang động cơ bước.

2. Sơ đồ chân và thông số điện của IC ULN2003

Sơ đồ chân ULN2003 (DIP16 và SO16 giống nhau)

ChânKý hiệuChức năngGhi chú khi điều khiển động cơ bước
1–7IN1–IN7Đầu vào logic kênh 1–7Dùng IN1–IN4 cho 4 pha, các kênh dư nối mass
8GND (E)Cực phát chungNối mass nguồn motor và mass vi điều khiển
9COMCực âm chung của 7 diode dậpNối cực dương nguồn motor
10–16OUT7–OUT1Đầu ra kênh 7 về 1OUT1 là chân 16, nằm đối diện IN1

Đầu ra được đánh số ngược: chân 16 là OUT1 đối diện chân 1 (IN1), chân 10 là OUT7 đối diện chân 7. Cách bố trí này giúp đi dây thẳng hàng trên mạch in, nhưng hay làm người lắp mạch thủ công trên test board nhầm thứ tự pha.

Thông số chính theo datasheet ULN2003A

Thông sốGiá trịÝ nghĩa thực tế
Điện áp đầu ra tối đa50 VGồm cả gai cảm ứng khi ngắt cuộn dây
Dòng mỗi kênh500 mA liên tục, 600 mA đỉnhGiới hạn của một kênh đơn lẻ, chưa tính nhiệt
Điện áp đầu vào tối đa30 VQuan trọng khi nối tín hiệu 24 V của PLC
Dòng nền liên tục tối đa25 mAKhông vượt khi đầu vào có điện áp cao
Sụt áp Vce(sat) ở 100 mA0,9 V điển hình, 1,1 V tối đaMotor 5 V chỉ còn khoảng 4 V
Sụt áp Vce(sat) ở 200 mA1,1 V điển hình, 1,3 V tối đaNhiệt tăng nhanh theo dòng
Sụt áp Vce(sat) ở 350 mA1,3 V điển hình, 1,6 V tối đaVùng IC nóng rõ rệt
Thời gian đóng/ngắtKhoảng 0,25 µs điển hìnhThừa nhanh cho motor bước
Nhiệt trở môi trường DIP16Khoảng 70 °C/WBản SO16 dán bề mặt khoảng 120 °C/W
Nhiệt độ mối nối tối đa150 °CThiết kế nên giữ dưới 125 °C

Hai con số cần thuộc lòng là sụt áp khoảng 1 V và nhiệt trở khoảng 70 °C/W. Gần như mọi sự cố "IC nóng", "motor yếu", "IC chết sau một thời gian" đều quy về hai con số này.

3. Chân COM và diode dập: nối sai là IC chết

Khi một kênh ngắt, nửa cuộn dây đang có dòng sinh ra điện áp cảm ứng ngược chiều, có thể lên tới hàng chục, hàng trăm volt nếu không có đường thoát. Diode bên trong ULN2003 đưa dòng này về chân COM. Vì vậy chân COM phải nối vào cực dương của chính nguồn cấp cho motor, tức cùng điểm với dây chung của motor.

Các lỗi nối chân COM hay gặp

  • Bỏ trống chân COM: motor vẫn chạy được một lúc, nhưng mỗi lần ngắt kênh, gai điện áp đánh thủng mối nối Darlington. IC thường chết dần sau vài phút đến vài giờ, có khi chết ngay với motor điện cảm lớn.
  • Nối COM vào 5 V của vi điều khiển trong khi motor dùng nguồn 12 V: dòng từ nguồn 12 V chạy qua cuộn dây, qua diode dập về đường 5 V ngay cả khi kênh đang tắt, motor bị kích liên tục và đường 5 V bị đẩy áp, có thể làm hỏng bo vi điều khiển.
  • Nối COM xuống mass: diode dập thành đường ngắn mạch mỗi khi đầu ra có điện áp, IC nóng ngay khi cấp nguồn.

Tăng tốc độ tắt dòng bằng zener nối tiếp chân COM

Với diode dập nối thẳng về nguồn, điện áp kẹp chỉ cao hơn nguồn khoảng 1–2 V nên dòng trong cuộn tắt chậm, hạn chế tốc độ quay. Có thể mắc một diode zener giữa chân COM và cực dương nguồn (cực âm zener về phía nguồn), lúc này điện áp kẹp tăng lên khoảng nguồn + Vz. Điều kiện bắt buộc là tổng đó cộng thêm điện áp cảm ứng chéo của motor đơn cực vẫn phải dưới 50 V; với nguồn 12 V chỉ nên dùng zener 12–15 V. Phân tích chi tiết hiện tượng điện áp gấp đôi nguồn ở motor đơn cực nằm trong bài động cơ bước đơn cực đã nhắc ở trên.

4. Sụt áp, nhiệt độ và công suất tối đa của ULN2003

Darlington không bão hòa sâu như transistor đơn hay MOSFET, nên mỗi kênh đang dẫn luôn "ăn" khoảng 0,9–1,6 V. Công suất tỏa ra trong IC gần đúng bằng tổng (Vce(sat) × dòng) của các kênh đang dẫn cùng lúc.

Cách tính nhanh nhiệt độ IC

  • Công suất P = Σ (Vce × I) các kênh dẫn đồng thời. Ở chế độ hai pha (full step) luôn có 2 kênh dẫn; ở nửa bước có lúc 1, có lúc 2 kênh, lấy trường hợp 2 kênh để tính.
  • Nhiệt độ mối nối Tj ≈ Ta + P × 70 (bản DIP16) hoặc Ta + P × 120 (bản SO16 trên module dán).
  • Giữ Tj dưới khoảng 125 °C. Trong tủ điện mùa nóng, Ta có thể 40–50 °C.
Dòng mỗi pha2 kênh dẫn, công suất ICTj với DIP16, Ta = 40 °CĐánh giá
100 mAKhoảng 0,2 WKhoảng 54 °CRất mát
200 mAKhoảng 0,45 WKhoảng 72 °CỔn định lâu dài
300 mAKhoảng 0,8 WKhoảng 96 °CẤm, vẫn trong giới hạn
400 mAKhoảng 1,2 WKhoảng 124 °CSát ngưỡng, không nên
500 mAKhoảng 1,6 WTrên 150 °CIC quá nhiệt

Bảng cho thấy con số "500 mA mỗi kênh" chỉ đúng cho một kênh đơn lẻ trong điều kiện lý tưởng. Với motor bước luôn có 2 kênh dẫn đồng thời, giới hạn thực tế của bản DIP16 khoảng 300–350 mA mỗi pha; bản SO16 trên các module nhỏ còn thấp hơn, khoảng 200–250 mA. Nếu IC nóng đến mức không đặt tay được quá 2 giây (vỏ khoảng 60 °C trở lên), mối nối bên trong đã nóng hơn nhiều.

Giảm nhiệt không cần đổi IC

  • Ngắt cả 4 đầu ra khi motor đứng yên lâu (với motor có hộp số tự giữ được tải), vừa mát IC vừa mát motor.
  • Dùng chế độ kích một pha (wave) thay vì hai pha khi tải nhẹ: chỉ một kênh dẫn, công suất giảm khoảng một nửa.
  • Tăng diện tích đồng quanh chân 8 (GND) trên mạch in: phần lớn nhiệt thoát ra qua khung chân.
  • Ghép song song kênh (mục 5) để chia dòng, giảm sụt áp mỗi kênh.

Sụt áp làm motor 5 V yếu hơn tem

Motor định mức 5 V cấp qua ULN2003 chỉ nhận khoảng 4 V, dòng và mô-men giảm theo. Nếu cần đủ lực, có thể nâng nguồn motor lên khoảng 6 V (vẫn trong giới hạn nhiệt của motor) hoặc thay IC sụt áp thấp. Các vấn đề riêng khi cả hệ thống chỉ có nguồn 5 V, như cấp từ cổng USB hay sạc dự phòng, được phân tích ở bài điều khiển động cơ bước 5V.

5. Ghép song song kênh ULN2003 để tăng dòng

Datasheet cho phép nối song song đầu ra các kênh để tăng dòng. Cách làm: chập hai chân IN với nhau và hai chân OUT tương ứng với nhau, ví dụ IN1 + IN2 cùng nối một chân vi điều khiển, OUT1 + OUT2 cùng nối một đầu pha motor. Hai kênh nằm trên cùng một đế silicon, nhiệt độ gần như bằng nhau nên dòng chia tương đối đều.

Lợi ích và giới hạn khi ghép kênh

  • Dòng mỗi kênh giảm một nửa, sụt áp Vce giảm từ khoảng 1,3 V xuống khoảng 1 V, tổng nhiệt giảm khoảng 20–30%.
  • Tổng công suất vẫn bị giới hạn bởi một vỏ IC; ghép kênh không biến ULN2003 thành IC 1 A cho motor bước.
  • Một ULN2003 có 7 kênh nên chỉ ghép được 3 cặp, không đủ cho 4 pha. Muốn ghép đôi cả 4 pha cần ULN2803 (8 kênh) hoặc hai ULN2003.
  • Hai kênh ghép phải cùng một IC; không ghép kênh của hai IC khác nhau vì nhiệt độ và sụt áp không giống nhau.

Phương án với motor dòng 0,4–0,6 A mỗi pha

Phương ánSố ICDòng mỗi kênhNhận xét
ULN2803 ghép đôi 8 kênh10,2–0,3 AGọn nhất, vẫn cần đồng tản nhiệt tốt
Hai ULN2003, mỗi IC ghép 2 cặp20,2–0,3 AChia nhiệt ra hai vỏ, mát hơn
Mảng MOSFET TPL7407L hoặc TBD62003A1Tới khoảng 0,3 A khi nhiều kênh dẫnSụt áp thấp, ít nóng hơn hẳn
MOSFET rời logic-level4Vài ANên dùng khi motor trên 0,6 A

Motor 6 dây size 42 dòng 1 A mỗi pha trở lên đã vượt khả năng của mọi phương án ghép ULN; khi đó nên đấu motor 6 dây kiểu lưỡng cực vào driver băm dòng như hướng dẫn ở bài mạch điều khiển động cơ bước TB6600.

6. Module ULN2003 và trình tự xung điều khiển

Module xanh bán kèm motor 28BYJ-48 gồm IC ULN2003 bản DIP16 cắm đế, jack trắng 5 chân cắm thẳng motor, 4 LED báo trạng thái pha A–D, hàng chân IN1–IN4 (một số bản đưa ra đủ IN1–IN7) và cặp chân nguồn có ghi 5–12V kèm jumper. Jumper này nối hoặc ngắt nguồn cấp cho motor, tiện để tắt motor khi nạp chương trình.

Module điều khiển động cơ bước ULN2003 với IC Darlington, 4 LED báo pha và jack 5 chân cắm motor 28BYJ-48

Những điểm trên module cần để ý

  • Chân "−" của nguồn module chính là chân 8 (GND) của IC; phải nối chung với GND vi điều khiển, nếu không tín hiệu IN không có mốc và motor chạy loạn.
  • Chân "+" vừa cấp cho dây chung motor qua jack, vừa nối vào chân 9 (COM). Vì vậy module tự lo phần COM; chỉ cần cấp đúng điện áp motor.
  • Các chân IN5–IN7 bỏ trống có thể dùng để đóng ngắt một relay nhỏ, còi hoặc LED công suất, nhưng tải này chia chung ngân sách nhiệt của IC.

Trình tự xung nửa bước (8 trạng thái)

Bảng dưới là trình tự nửa bước chuẩn cho motor đơn cực 4 pha nối vào OUT1–OUT4. Giá trị 1 nghĩa là chân IN ở mức cao, nửa cuộn tương ứng có dòng. Đi từ trên xuống thì motor quay một chiều, đi ngược từ dưới lên thì đảo chiều.

BướcIN1 (A)IN2 (B)IN3 (C)IN4 (D)
11000
21100
30100
40110
50010
60011
70001
81001

Chế độ hai pha (full step) dùng các bước chẵn 2, 4, 6, 8; chế độ một pha dùng các bước lẻ 1, 3, 5, 7. So sánh mô-men và độ êm giữa ba chế độ kích từ có trong bài động cơ bước 4 pha 5 dây.

Tốc độ đổi bước

Mạch ULN2003 không hạn dòng, dòng trong cuộn tăng theo hằng số thời gian L/R. Nếu thời gian mỗi bước ngắn hơn khoảng 3 lần L/R, dòng chưa kịp lên đủ và motor mất lực, rung rồi đứng. Với motor nhỏ 5–12 V, khoảng cách tối thiểu giữa hai bước thường 1–2 ms; motor điện cảm lớn cần lâu hơn. Nên tăng tốc dần từ chậm lên nhanh thay vì đặt ngay tốc độ tối đa.

7. Đấu ULN2003 với Arduino, ESP32, STM32 và Raspberry Pi

Đầu vào ULN2003 có điện trở 2,7 kΩ và ngưỡng dẫn khoảng 1,4–2 V tùy dòng tải, nên mức logic 5 V và 3,3 V đều kích được. Dòng mỗi chân vi điều khiển phải cấp chỉ khoảng 0,7 mA ở 3,3 V và 1,3 mA ở 5 V, an toàn với mọi GPIO.

Mạch điều khiển động cơ bước ULN2003 nhìn cận cảnh IC ULN2003AN, chân IN1–IN7 và jumper nguồn 5–12V

Bảng đấu nối theo từng nền tảng

Nền tảngMức logicChân gợi ý cho IN1–IN4Lưu ý
Arduino Uno/Nano5 VD8, D9, D10, D11Không lấy nguồn motor từ chân 5V khi chạy từ 2 motor trở lên
ESP323,3 VGPIO 16, 17, 18, 19Tránh chân strapping và nhóm chỉ vào
STM32 (Blue Pill, Nucleo)3,3 VPB12–PB15 hoặc PA0–PA3Chân ra đặt push-pull, không dùng open-drain
Raspberry Pi3,3 VGPIO 17, 18, 27, 22Không kéo motor từ đường 5 V của Pi
PLC đầu ra transistor24 VQ0.0–Q0.3Xem mục 8 trước khi nối

Arduino: lưu ý thứ tự chân trong thư viện

Thư viện Stepper có sẵn trong Arduino IDE gửi trình tự theo thứ tự tham số riêng của nó. Khi IN1–IN4 nối D8–D11, phải khai báo theo thứ tự 8, 10, 9, 11, ví dụ:

  • Stepper dongCo(2048, 8, 10, 9, 11);
  • dongCo.setSpeed(10); dongCo.step(2048);

Khai báo 8, 9, 10, 11 theo đúng thứ tự dây là lỗi phổ biến nhất: motor chỉ rung tại chỗ hoặc chỉ quay một chiều dù đổi dấu số bước. Với thư viện AccelStepper, dùng chế độ nửa bước HALF4WIRE với cùng thứ tự 8, 10, 9, 11, rồi đặt setMaxSpeed và setAcceleration để có tăng tốc mềm.

STM32 và Raspberry Pi

Trên STM32, chỉ cần cấu hình 4 chân ra push-pull và xuất trình tự từ bảng ở mục 6 bằng một bộ định thời; ngắt timer giúp tốc độ đều hơn so với dùng lệnh delay trong vòng lặp. Trên Raspberry Pi, Linux không phải hệ điều hành thời gian thực nên xung bằng Python có thể bị giật khi CPU bận; với motor tốc độ thấp như rèm cuốn thì chấp nhận được, còn cần chuyển động đều nên dùng thư viện tạo xung bằng DMA (như pigpio) hoặc giao việc phát xung cho một vi điều khiển phụ. Mass của Pi, mass nguồn motor và chân GND của ULN2003 phải nối chung; với dây tín hiệu dài trong môi trường nhiễu, thêm điện trở 10–47 kΩ kéo mỗi chân IN xuống mass để motor không giật khi bật máy.

8. Nối ULN2003 với đầu ra transistor của PLC

ULN2003 đôi khi được dùng làm tầng đệm giữa PLC mini và motor bước đơn cực nhỏ, ví dụ cơ cấu xoay van, con lăn định lượng. Cách điều khiển xung và lập trình trên PLC nằm ở bài cách điều khiển động cơ bước bằng PLC; phần dưới chỉ xử lý giao tiếp điện giữa đầu ra PLC và chân IN.

PLC đầu ra PNP (sourcing, xuất +24 V)

Điện áp đầu vào tối đa của ULN2003 là 30 V, nên 24 V nối thẳng vào chân IN vẫn trong giới hạn. Tuy nhiên dòng nền khi đó khoảng (24 − 1,4) / 2,7 kΩ ≈ 8,4 mA, và điện trở 2,7 kΩ bên trong tỏa khoảng 0,19 W mỗi kênh. Bốn kênh cùng ở mức cao thêm gần 0,8 W nhiệt vào IC – xấp xỉ bằng nhiệt của chính motor. Cách xử lý:

  • Mắc thêm điện trở 10 kΩ nối tiếp mỗi chân IN: dòng nền giảm còn khoảng 1,8 mA, vẫn đủ kích kênh với tải vài trăm mA.
  • Hoặc dùng ULN2004 (điện trở nền 10,5 kΩ, thiết kế cho tín hiệu 6–15 V) kèm điện trở ngoài khoảng 4,7 kΩ.
  • Hoặc chia áp 24 V xuống khoảng 5 V bằng cặp điện trở trước khi vào IN.

PLC đầu ra NPN (sinking, kéo xuống mass)

Đầu ra NPN không xuất được điện áp nên không kích được ULN2003 trực tiếp. Cần một điện trở kéo lên (ví dụ 4,7 kΩ lên 5 V hoặc 10 kΩ lên 24 V) tại chân IN: khi đầu ra PLC tắt, IN được kéo lên mức cao và kênh dẫn; khi đầu ra PLC bật, IN bị kéo xuống và kênh tắt. Logic bị đảo, chỉ cần đảo lại trong chương trình. Nếu muốn cách ly hoàn toàn nhiễu tủ điện, dùng optocoupler 4 kênh giữa PLC và ULN2003.

9. Điều khiển các motor đơn cực khác ngoài 28BYJ-48

ULN2003 kéo được bất kỳ motor bước đơn cực nào có dòng mỗi pha nằm trong ngân sách nhiệt ở mục 4 và điện áp nguồn dưới khoảng 24 V. Điều kiện duy nhất về điện áp là điện áp nguồn motor cộng gai cảm ứng không vượt 50 V.

Nhóm motorĐiện áp thường gặpDòng mỗi phaDùng ULN2003
Motor đảo gió điều hòa 24BYJ48, 35BYJ4612 V50–150 mARất phù hợp, IC mát
Motor PM can-stack 35–42 mm tháo máy in, máy fax12–24 V100–400 mAPhù hợp nếu dưới ~300 mA
Motor hybrid 6 dây size 35–42 dòng thấp6–12 V0,3–0,6 AChỉ được khi ghép kênh hoặc chạy một pha
Motor hybrid 6 dây size 42–57 dòng cao2–5 V1–3 AKhông, cần MOSFET hoặc driver băm dòng
Motor 4 dây lưỡng cực, motor 5 phaMọi mứcMọi mứcKhông dùng được

Cách xác định motor có hợp với ULN2003 không

  • Đọc điện áp và điện trở mỗi pha trên tem, tính dòng I = U / R. Ví dụ 12 V, 75 Ω → 160 mA: dùng tốt.
  • Tem chỉ có điện trở: đo điện trở từ dây chung tới một đầu pha, chọn điện áp nguồn sao cho dòng không quá 250–300 mA và motor không nóng quá tay sau 15 phút chạy.

Với các ứng dụng cần lực lớn hơn nhưng không đòi định vị theo bước, motor DC có hộp số như động cơ giảm tốc mini kết hợp công tắc hành trình thường bền và khỏe hơn nhiều so với motor bước nhỏ kéo qua ULN2003.

10. ULN2803, ULN2004 và các IC thay thế ULN2003

Họ ULN200x và các IC tương thích chân được thiết kế cho những nhu cầu khác nhau. Chọn sai mã thường không cháy ngay mà biểu hiện bằng motor yếu, kênh không dẫn hoặc IC nóng bất thường.

Họ IC Darlington cùng dòng

Mã ICSố kênh / vỏĐiện trở nềnTín hiệu vào phù hợp
ULN2003A7 / DIP16, SO162,7 kΩLogic 5 V và 3,3 V
ULN2004A7 / DIP16, SO1610,5 kΩCMOS 6–15 V, tín hiệu 12 V
ULN2001A7 / DIP16Không có điện trở nềnDùng với điện trở ngoài, mục đích chung
ULN2803A8 / DIP18, SO182,7 kΩLogic 5 V và 3,3 V
ULN2804A8 / DIP1810,5 kΩCMOS 6–15 V

ULN2803 có thêm một kênh nên chân GND là chân 9, COM là chân 10 (khác ULN2003 là chân 8 và 9); không cắm lẫn vào đế 16 chân. ULN2004 dùng với vi điều khiển 3,3 V sẽ dẫn không đủ sâu, sụt áp tăng và IC nóng; với 5 V chỉ ổn ở dòng nhỏ. Khi cần chạy êm, vi bước hoặc dòng lớn hơn, nên chuyển motor sang lưỡng cực với driver băm dòng; mạch giá rẻ cho sinh viên có thể tham khảo cách điều khiển động cơ bước bằng L293.

Mảng MOSFET sụt áp thấp tương thích chân

  • TPL7407L: 7 kênh MOSFET, chịu 40 V, tới 600 mA một kênh đơn lẻ, tổng khoảng 2 A cả vỏ. Sụt áp khoảng 0,2 V ở 100 mA và 0,42 V ở 200 mA (ULN2003A khoảng 0,9 V và 1,1 V). Chân COM vừa là cực âm diode vừa nuôi mạch kích cổng bên trong, nên nguồn COM nên từ khoảng 8,5 V trở lên để MOSFET dẫn hoàn toàn; với motor 5 V, IC vẫn chạy nhưng điện trở dẫn tăng.
  • TBD62003A (và bản 8 kênh TBD62083A): mảng DMOS 7 kênh, 50 V, 500 mA, tương thích chân ULN2003, có diode dập; mát hơn đáng kể ở cùng dòng.
  • ULN2003LV: phiên bản điện áp thấp, đầu ra tối đa 8 V, khoảng 100–140 mA mỗi kênh với logic 3,3–5 V, sụt áp khoảng 0,4 V; hợp với motor 5 V nhỏ chạy pin, không dùng cho motor 12 V.

11. Lỗi thường gặp khi điều khiển động cơ bước ULN2003

Bảng chẩn đoán nhanh

Hiện tượngNguyên nhân thường gặpCách xử lý
LED sáng đúng trình tự nhưng motor không quayThiếu nguồn motor, jumper nguồn tháo, nguồn yếuĐo điện áp tại chân + của module khi đang chạy
Motor rung tại chỗ, kêu tạch tạchSai thứ tự pha hoặc sai thứ tự chân trong thư việnKhai báo 8, 10, 9, 11 hoặc đổi hai dây pha giữa
Motor giật, lệch bước khi tăng tốcThời gian mỗi bước ngắn hơn khả năng tăng dòngGiảm tốc độ, dùng tăng tốc dần, nâng nguồn trong giới hạn
IC nóng ngay khi cấp điện dù motor đứng yênChân IN thả nổi bị kích, COM nối sai, kênh chậpĐặt các IN về 0, kiểm tra chân COM, đo từng kênh
IC chết sau vài phút, vài giờBỏ trống chân COM, dòng quá lớn, nhiệt caoNối COM lên nguồn motor, tính lại nhiệt ở mục 4
Vi điều khiển tự khởi động lại khi motor chạyMotor lấy nguồn chung với vi điều khiển, sụt ápTách nguồn motor, thêm tụ 100–470 µF gần module
Một LED không sáng, motor chạy giật nhịpKênh ULN2003 hỏng hoặc dây tín hiệu lỏngĐổi kênh dự phòng IN5–IN7 hoặc thay IC

Kiểm tra IC bằng đồng hồ vạn năng (thang đo diode, đã tháo khỏi mạch hoặc ngắt nguồn)

  • Que đỏ ở đầu ra (chân 10–16), que đen ở COM (chân 9): đọc khoảng 0,5–0,8 V (diode dập dẫn). Đảo que phải hở mạch.
  • Que đỏ ở GND (chân 8), que đen ở đầu ra: đọc khoảng 0,5–0,8 V (diode đế). Đảo que phải hở mạch.
  • Kênh nào đọc gần 0 V theo cả hai chiều giữa đầu ra và GND là kênh đã chập, không dùng tiếp.
  • Kiểm tra khi chạy: đưa IN lên mức cao với tải motor, đo đầu ra so với GND phải còn khoảng 0,8–1,3 V. Đo được vài volt nghĩa là kênh dẫn yếu hoặc tín hiệu vào không đủ.

12. Câu hỏi thường gặp về điều khiển động cơ bước ULN2003

  • ULN2003 kéo được động cơ bước dòng bao nhiêu? Mỗi kênh định mức 500 mA, nhưng vì động cơ bước luôn có 2 kênh dẫn cùng lúc nên giới hạn nhiệt thực tế của bản DIP16 khoảng 300–350 mA mỗi pha, bản dán SO16 khoảng 200–250 mA. Muốn vượt mức này phải ghép kênh, chia ra hai IC hoặc đổi sang mảng MOSFET.
  • Chân COM của ULN2003 nối vào đâu? Chân 9 (COM) nối vào cực dương của nguồn cấp cho motor, cùng điểm với dây chung của motor. Không bỏ trống, không nối vào nguồn logic khác điện áp và không nối xuống mass. Trên module bán sẵn, chân COM đã được nối với chân + nguồn motor.
  • Có ghép song song hai kênh ULN2003 để tăng dòng được không? Được, datasheet cho phép chập hai IN và hai OUT tương ứng trên cùng một IC. Sụt áp mỗi kênh giảm và nhiệt giảm khoảng 20–30%, nhưng tổng công suất vẫn bị giới hạn bởi một vỏ IC. Một ULN2003 chỉ ghép được 3 cặp, nên muốn ghép đôi cả 4 pha cần ULN2803 hoặc hai ULN2003.
  • Một ULN2003 điều khiển được mấy động cơ bước? Mỗi motor đơn cực cần 4 kênh, ULN2003 có 7 kênh nên chỉ điều khiển trọn được 1 motor; 3 kênh dư dùng cho relay, LED hay còi. Muốn chạy 2 motor trên một IC phải dùng ULN2803 (8 kênh), khi đó nhiệt của cả hai motor dồn vào một vỏ, cần tính lại công suất.
  • ULN2003 và ULN2803 có thay thế cho nhau được không? Chức năng giống nhau nhưng ULN2803 có 8 kênh, vỏ 18 chân, GND ở chân 9 và COM ở chân 10, nên không cắm lẫn vào đế 16 chân của ULN2003. ULN2803 tiện hơn khi cần ghép đôi đủ 4 pha.
  • Đầu ra transistor 24 V của PLC nối thẳng vào ULN2003 được không? Với PLC đầu ra PNP thì được về điện áp vì chân IN chịu tới 30 V, nhưng mỗi kênh tốn khoảng 8 mA và tỏa thêm nhiệt trong IC; nên mắc thêm điện trở 10 kΩ nối tiếp mỗi chân. PLC đầu ra NPN cần điện trở kéo lên và đảo logic trong chương trình, hoặc dùng optocoupler để cách ly.
  • Raspberry Pi điều khiển module ULN2003 cần lưu ý gì? GPIO 3,3 V kích ULN2003 bình thường. Cần nối chung mass Pi với mass nguồn motor, không lấy nguồn motor từ đường 5 V của Pi khi chạy nhiều motor, và chấp nhận xung bằng Python có thể giật khi CPU bận; cần chuyển động đều thì dùng thư viện tạo xung bằng DMA hoặc vi điều khiển phụ.
  • ULN2003 cấp nguồn motor 24 V được không? Được với motor đơn cực định mức 24 V và dòng nhỏ, vì IC chịu 50 V. Cần chắc chắn chân COM nối đúng nguồn 24 V và không mắc thêm zener vào đường COM, vì điện áp cảm ứng chéo ở motor đơn cực có thể lên gần gấp đôi nguồn, tổng cộng dễ vượt 50 V.
  • Có IC nào thay ULN2003 mà ít sụt áp và ít nóng hơn không? Có các mảng MOSFET tương thích chân như TPL7407L (40 V, sụt áp khoảng 0,2 V ở 100 mA) và TBD62003A (50 V, 500 mA), hoặc ULN2003LV cho tải tới 8 V. TPL7407L cần nguồn COM khoảng 8,5 V trở lên để dẫn tốt nhất, nên hợp với motor 12 V hơn motor 5 V.
  • ULN2003 có làm motor chạy nhanh hơn khi tăng điện áp không? Tăng điện áp làm dòng lên nhanh hơn nên motor giữ lực ở tốc độ cao hơn, nhưng vì ULN2003 không hạn dòng, dòng ổn định cũng tăng theo và motor, IC đều nóng thêm. Cách an toàn là tăng nguồn đồng thời mắc điện trở công suất nối tiếp dây chung để giữ dòng ở định mức, hoặc chuyển sang driver băm dòng.
9.902 reviews

Tin tức liên quan

Hộp giảm tốc harmonic: thông số, model CSF, SHF và cách chọn

Hộp giảm tốc harmonic: thông số, model CSF, SHF và cách chọn

14 thg 10 2026 15:12

Hộp giảm tốc harmonic (strain wave) size 14 – 32, tỉ số 1/50 – 1/120, mô men 5,4 – 137 Nm. Cách đọc tem, phân loại CSF, CSG, SHF-2UH, SHF-2UJ, SHF-2SO, SHD-2SH và cách chọn theo servo.
Đọc tiếp
Khám phá Bí Quyết Điều Khiển Động Cơ RC Servo Chính Xác Bằng STM32F4

Khám phá Bí Quyết Điều Khiển Động Cơ RC Servo Chính Xác Bằng STM32F4

15 thg 4 2025 20:44

Điều khiển động cơ RC Servo bằng STM32F4 mang đến độ chính xác cao và khả năng tùy chỉnh tín hiệu PWM tối ưu. Bài viết này hướng dẫn từ cấu hình bộ định thời, lập trình tín hiệu PWM, đến tối ưu hóa hiệu suất động cơ. Đây là giải pháp lý tưởng cho kỹ sư điện, kỹ sư cơ khí và các doanh nghiệp công nghiệp.
Đọc tiếp
Điều khiển động cơ RC servo bằng PWM: chu kỳ, độ rộng xung và cách tạo xung bằng timer

Điều khiển động cơ RC servo bằng PWM: chu kỳ, độ rộng xung và cách tạo xung bằng timer

10 thg 10 2026 17:36

Điều khiển động cơ RC servo bằng PWM: chu kỳ 20 ms, độ rộng xung 500–2500 µs, tính prescaler cho AVR, STM32, ESP32, PCA9685, mạch 555 và cách đo kiểm.
Đọc tiếp
Cách Điều Khiển Động Cơ DC Servo Chính Xác Bằng Giải Thuật PID

Cách Điều Khiển Động Cơ DC Servo Chính Xác Bằng Giải Thuật PID

12 thg 10 2026 08:32

Điều khiển động cơ DC Servo bằng giải thuật PID mang lại sự ổn định và hiệu suất cao cho hệ thống công nghiệp. Tìm hiểu cách áp dụng Proportional-Integral-Derivative, vi điều khiển và encoder để tối ưu hóa tốc độ và vị trí của động cơ. Phương pháp này được sử dụng rộng rãi trong robot, dây chuyền sản xuất và các hệ thống tự động hóa.
Đọc tiếp
Điều khiển động cơ DC servo: vòng dòng – tốc độ – vị trí, PID, encoder và cầu H

Điều khiển động cơ DC servo: vòng dòng – tốc độ – vị trí, PID, encoder và cầu H

12 thg 10 2026 08:32

Hướng dẫn điều khiển động cơ DC servo: 3 vòng dòng – tốc độ – vị trí, đọc encoder x4, cầu H BTS7960/VNH5019, PWM 20 kHz, chỉnh PID và code Arduino mẫu.
Đọc tiếp