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

Điều khiển động cơ bước bằng L293 và L293D: sơ đồ đấu, shield Arduino, Proteus và giới hạn thực tế

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:51

Điều khiển động cơ bước bằng L293 là cách dùng IC cầu H kép L293 hoặc L293D để đảo chiều dòng điện trong hai cuộn dây của một động cơ bước lưỡng cực nhỏ, theo tín hiệu logic từ Arduino, vi điều khiển PIC/8051, ESP32 hay Raspberry Pi. Mỗi IC có bốn nửa cầu H (half-H) ghép thành hai cầu H đầy đủ, vừa đủ cho một motor 2 pha 4 dây. L293D chịu 600 mA mỗi kênh (đỉnh 1,2 A) và có sẵn diode kẹp bên trong; L293 không có chữ D chịu 1 A mỗi kênh (đỉnh 2 A) nhưng bắt buộc gắn diode ngoài.

L293D phù hợp cho bài thực hành, mô hình học tập, đồ án sinh viên, robot nhỏ và các motor bước có điện trở cuộn dây cao (khoảng 20 Ω trở lên), dòng pha dưới 0,5 A. Đây cũng là IC nằm trên tấm motor shield L293D phổ biến cho Arduino Uno. Điểm yếu cần biết ngay từ đầu: L293 không có mạch hạn dòng (chopper), sụt áp trên IC khoảng 2,6 V và tỏa nhiệt nhiều, nên không thích hợp cho motor NEMA 17 dòng lớn của máy in 3D hay máy CNC.

Nếu cần nắm trước các loại step motor và cách phân biệt chúng, xem bài tổng quan về động cơ bước.

1. L293 và L293D là gì, khác nhau ở đâu

L293 là IC "quadruple half-H driver" – bốn bộ kéo nửa cầu H độc lập, mỗi bộ có một ngõ vào logic (A) và một ngõ ra công suất (Y). Hai bộ kênh 1–2 dùng chung một chân cho phép (1,2EN), hai bộ kênh 3–4 dùng chung chân 3,4EN. Khi ghép hai nửa cầu vào hai đầu một cuộn dây, ta có một cầu H đầy đủ, đảo được chiều dòng qua cuộn. Một IC vì vậy điều khiển được hai cuộn, đúng bằng một động cơ bước lưỡng cực 2 pha.

Tầng ra của L293 dùng transistor lưỡng cực (BJT) kiểu Darlington, không phải MOSFET. Đây là lý do IC có sụt áp lớn và nóng, khác hẳn các driver MOSFET đời mới.

Bảng so sánh L293 và L293D

Thông sốL293L293D
Dòng liên tục mỗi kênh1 A600 mA
Dòng đỉnh mỗi kênh2 A (không lặp lại, ≤ 5 ms)1,2 A (không lặp lại, ≤ 100 µs)
Diode kẹp chống điện áp ngượcKhông có, phải gắn 8 diode ngoàiCó sẵn bên trong
Điện áp nguồn motor VCC2VCC1 đến 36 VVCC1 đến 36 V
Nguồn logic VCC14,5–7 V (thường 5 V)4,5–7 V (thường 5 V)
Mức logic cao tối thiểu2,3 V2,3 V
Bảo vệ quá nhiệtCó, ngõ ra chuyển trạng thái hở mạchCó

Dòng đỉnh chỉ là xung ngắn không lặp lại; khi chọn motor chỉ tính theo dòng liên tục và chừa thêm biên độ vì nhiệt.

Khi nào chọn L293, khi nào chọn L293D

  • Mạch học tập, shield Arduino, motor dòng dưới 0,5 A: chọn L293D cho gọn, không cần diode ngoài.
  • Motor cần 0,6–0,9 A mỗi pha: chọn L293 (hoặc SN754410) và gắn 8 diode nhanh bên ngoài.

2. Sơ đồ chân IC L293D và ý nghĩa từng chân

L293 và L293D có cùng sơ đồ chân trong vỏ DIP16 phổ biến. Bốn chân giữa (4, 5, 12, 13) vừa là chân mass, vừa là đường dẫn nhiệt chính của IC.

ChânTênĐấu khi điều khiển động cơ bước
11,2ENNối 5 V hoặc chân số của vi điều khiển
21AIN1 từ vi điều khiển
31YĐầu A+ cuộn A
4, 5GNDNối mass, hàn vào mảng đồng rộng
62YĐầu A− cuộn A
72AIN2
8VCC2Nguồn motor (theo tính toán ở mục 3)
93,4ENNối 5 V hoặc chân số
103AIN3
113YĐầu B+ cuộn B
12, 13GNDNối mass
144YĐầu B− cuộn B
154AIN4
16VCC15 V của Arduino/nguồn logic

Bảng chân lý của mỗi kênh rất đơn giản: EN mức thấp thì ngõ ra Y hở mạch (không dòng); EN mức cao thì Y đi theo A – A cao thì Y nối lên VCC2, A thấp thì Y nối xuống mass.

Đấu một động cơ bước lưỡng cực 4 dây

  • Xác định hai cặp dây cùng cuộn bằng đồng hồ vạn năng (cặp nào có điện trở vài chục ôm là cùng cuộn); cách đo chi tiết có trong bài động cơ bước lưỡng cực.
  • Cuộn A nối chân 3 và 6, cuộn B nối chân 11 và 14.
  • Chân 2, 7, 10, 15 nối bốn chân số của vi điều khiển, ví dụ Arduino D8, D9, D10, D11.
  • Chân 1 và 9 nối 5 V nếu không cần ngắt cuộn dây; nối hai chân số nếu muốn tắt dòng khi motor đứng yên.
  • Mass nguồn motor, mass nguồn logic và mass vi điều khiển phải nối chung.

Tụ lọc và diode – phần hay bị bỏ qua

  • Gắn tụ gốm 100 nF sát chân 16 và sát chân 8, cộng thêm tụ hóa 100–470 µF trên đường VCC2 gần IC.
  • Với L293 (không D): mỗi ngõ ra cần một diode lên VCC2 và một diode xuống mass, tổng 8 diode. Nên dùng diode nhanh như Schottky 1N5819 hoặc UF4007; diode chỉnh lưu chậm 1N4007 phản ứng không kịp với xung đóng cắt.
  • Không cấp nguồn motor khi chưa có nguồn logic 5 V ở chân 16; trạng thái ngõ vào lơ lửng có thể làm hai cuộn nhận dòng bất kỳ.

3. Tính dòng điện và nhiệt khi điều khiển động cơ bước bằng L293

L293 là driver điều khiển bằng điện áp: nó chỉ đóng cuộn dây vào nguồn, không đo và không giới hạn dòng. Dòng qua cuộn do điện áp nguồn, sụt áp trên IC và điện trở cuộn dây quyết định.

Sụt áp bão hòa của L293/L293D

Theo datasheet, tầng ra phía cao (high-side) thấp hơn VCC2 khoảng 1,4 V (tối đa 1,8 V), tầng ra phía thấp (low-side) cao hơn mass khoảng 1,2 V (tối đa 1,8 V). Dòng qua một cuộn luôn đi qua một transistor phía cao và một transistor phía thấp, nên tổng sụt áp khoảng 2,6 V, xấu nhất 3,6 V.

Công thức tính nhanh

  • Dòng cuộn: I ≈ (VCC2 − 2,6) / R cuộn.
  • Công suất IC tiêu tán cho mỗi cuộn đang có dòng: P ≈ 2,6 × I.
  • Ở chế độ bước đủ hai pha (cả hai cuộn đều có dòng): P tổng ≈ 2 × 2,6 × I.
  • Nhiệt độ mối nối ước tính: Tj ≈ T môi trường + P × RθJA.

Ví dụ tính cho ba loại motor thường gặp

Motor (tem)Điện trở cuộnNguồn VCC2 cần để đạt dòng temCông suất IC khi 2 cuộn có dòngĐánh giá
12 V – 0,4 A30 Ω≈ 14,6 V≈ 2,1 WChạy được, cần mảng đồng hoặc tản nhiệt
12 V – 0,35 A (NEMA 17 dòng thấp)34–35 Ω≈ 14,6 V≈ 1,8 WChạy được, IC ấm nóng rõ
2,8 V – 1,7 A (NEMA 17 phổ biến)1,5–1,7 ΩKhông áp dụngVượt khả năng ICKhông dùng L293

Datasheet L293 của TI cho nhiệt trở mối nối – môi trường của vỏ DIP16 khoảng 36,4 °C/W trên bo mạch thử chuẩn có lớp đồng lớn. Với 2,1 W, nhiệt độ mối nối tăng khoảng 76 °C so với môi trường, tức gần 110 °C khi phòng 32 °C – vẫn dưới giới hạn 150 °C nhưng IC nóng bỏng tay. Trên breadboard hoặc bo mạch đục lỗ không có mảng đồng, nhiệt trở thực tế cao hơn nhiều, nên mạch dễ chạm ngưỡng bảo vệ quá nhiệt: IC tự ngắt ngõ ra, motor đứng hoặc giật cục rồi chạy lại khi nguội.

Cách giảm nhiệt cho L293D

  • Hàn bốn chân GND (4, 5, 12, 13) vào một mảng đồng mass càng rộng càng tốt; đây là đường thoát nhiệt hiệu quả nhất của vỏ DIP.
  • Có thể dán hoặc kẹp tản nhiệt nhỏ lên lưng IC; datasheet cho ví dụ dùng tản nhiệt ngoài đưa nhiệt trở xuống khoảng 25 °C/W.
  • Dùng chế độ một pha (wave) thay cho hai pha khi tải nhẹ: chỉ một cuộn có dòng, nhiệt IC giảm khoảng một nửa.
  • Kéo chân EN xuống mức thấp khi motor dừng lâu và tải không cần giữ vị trí.

Vì sao không tăng điện áp để motor khỏe hơn

Với L293, tăng VCC2 chỉ làm dòng tăng theo định luật Ohm, motor và IC cùng nóng hơn, khác với driver có băm dòng. Cách cổ điển là mắc điện trở công suất nối tiếp mỗi cuộn (kiểu L/R), chỉ hợp lý với motor rất nhỏ.

Tốc độ tối đa thực tế

Vì không có hạn dòng và điện áp nguồn thường thấp, dòng trong cuộn dây tăng chậm theo hằng số thời gian L/R của cuộn. Khi tần số bước tăng, dòng không kịp đạt mức định mức trong mỗi bước, mô-men tụt nhanh. Motor bước dùng L293 vì vậy thường chỉ chạy tốt ở vài trăm bước/giây với bước đủ; muốn nhanh hơn phải giảm tải hoặc đổi driver.

4. Trình tự xung điều khiển động cơ bước bằng L293D

Với L293D, vi điều khiển trực tiếp tạo trình tự logic cho bốn ngõ vào IN1–IN4, không có tín hiệu STEP/DIR như các driver chuyên dụng. Quy ước: IN1, IN2 điều khiển cuộn A; IN3, IN4 điều khiển cuộn B. Hai ngõ vào của một cuộn bằng nhau (cùng 0 hoặc cùng 1) thì cuộn không có điện áp.

Trình tự bước đủ hai pha (mô-men lớn nhất)

BướcIN1IN2IN3IN4
11010
20110
30101
41001

Đây cũng chính là trình tự bốn dây mà thư viện Stepper có sẵn trong Arduino IDE tạo ra, khi khai báo các chân theo thứ tự IN1, IN2, IN3, IN4. Đảo thứ tự bước (4 → 3 → 2 → 1) thì motor quay ngược.

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

BướcIN1IN2IN3IN4
11010
20010
30110
40100
50101
60001
71001
81000

Nửa bước làm số bước mỗi vòng tăng gấp đôi (400 bước với motor 1,8°) và chạy êm hơn, nhưng ở các trạng thái chỉ một cuộn có dòng, mô-men thấp hơn. Ở trạng thái "cuộn tắt", nếu đặt hai ngõ vào cùng mức thấp, hai đầu cuộn bị nối xuống mass nên dòng tắt chậm; muốn cuộn tắt nhanh, dùng chân EN tương ứng đưa ngõ ra về hở mạch.

Mã điều khiển ngắn trên Arduino

  • Khai báo thư viện: #include <Stepper.h>
  • Tạo đối tượng: Stepper motor(200, 8, 9, 10, 11); – 200 là số bước mỗi vòng của motor 1,8°.
  • Đặt tốc độ trong setup(): motor.setSpeed(60); – đơn vị vòng/phút.
  • Chạy trong loop(): motor.step(200); delay(500); motor.step(-200);

Hàm step() của thư viện Stepper chặn chương trình cho đến khi chạy xong số bước. Nếu cần gia tốc, chạy nhiều motor song song hay không chặn chương trình, dùng thư viện AccelStepper ở chế độ FULL4WIRE hoặc HALF4WIRE với cùng bốn chân. Nguyên lý tạo gia tốc và các kiểu trình tự vi bước sin–cos được trình bày riêng trong bài kỹ thuật điều khiển động cơ bước lưỡng cực.

Mức logic 3,3 V: ESP32, STM32, Raspberry Pi, Raspberry Pi Pico

  • Ngưỡng mức cao tối thiểu của L293D là 2,3 V, nên chân GPIO 3,3 V điều khiển trực tiếp được.
  • Chân VCC1 vẫn phải cấp 4,5–7 V (thường lấy 5 V), không cấp 3,3 V vào chân 16.
  • Ngõ vào chịu tối đa 7 V: không nối thẳng ngõ ra 24 V của PLC vào IN1–IN4; phải qua cầu phân áp hoặc opto cách ly.

5. Motor shield L293D cho Arduino: 74HC595 và thư viện AFMotor

Motor shield L293D (bản gốc là Adafruit Motor Shield V1, nay đã ngừng sản xuất nhưng bản sao rất phổ biến) là tấm mạch cắm chồng lên Arduino Uno hoặc Mega, gồm hai IC L293D và một IC dịch bit 74HC595. Shield có 4 cổng motor M1–M4, mỗi cổng là một cầu H; hai cổng M1+M2 ghép thành cổng động cơ bước số 1, M3+M4 là cổng số 2. Như vậy một shield điều khiển được 2 động cơ bước, hoặc 4 motor DC, hoặc 1 động cơ bước cộng 2 motor DC, kèm 2 đầu cắm servo 5 V.

Mạch motor shield L293D cho Arduino với hai IC L293D và IC 74HC595, cổng M1–M4 dùng điều khiển động cơ bước

Chân Arduino mà shield L293D chiếm dụng

Chân ArduinoChức năng trên shieldKhi nào bị chiếm
D4, D7, D8, D12Điều khiển 74HC595 (chốt hướng cho cả 4 cầu H)Luôn bị chiếm khi dùng motor DC hoặc động cơ bước
D11, D3PWM/Enable cổng M1, M2 (động cơ bước số 1)Khi dùng cổng M1–M2
D5, D6PWM/Enable cổng M3, M4 (động cơ bước số 2)Khi dùng cổng M3–M4
D9, D10Tín hiệu hai servoKhi cắm servo
D2, D13, A0–A5Không dùngCòn trống cho cảm biến, công tắc hành trình

Vì các ngõ vào của L293D trên shield được nối qua 74HC595, Arduino không điều khiển được trực tiếp từng chân IN như mạch rời. Bắt buộc phải dùng thư viện AFMotor (hoặc thư viện tương thích) để ghi dữ liệu vào thanh ghi dịch.

Cách dùng thư viện AFMotor cho động cơ bước

  • Khai báo: #include <AFMotor.h>
  • Tạo đối tượng: AF_Stepper motor(200, 2); – 200 bước/vòng, cổng số 2 (M3–M4). Cổng số 1 là M1–M2.
  • Đặt tốc độ: motor.setSpeed(30); – vòng/phút, tính đúng chỉ khi số bước/vòng khai báo khớp với motor.
  • Chạy: motor.step(100, FORWARD, DOUBLE); – kiểu bước là SINGLE, DOUBLE, INTERLEAVE hoặc MICROSTEP.
  • Tắt dòng khi dừng: motor.release(); – motor hết mô-men giữ nhưng hết nóng.

Ý nghĩa bốn kiểu bước: SINGLE là kích một cuộn mỗi lần, DOUBLE kích hai cuộn cho mô-men lớn nhất, INTERLEAVE là nửa bước (mịn hơn, số bước gấp đôi), MICROSTEP là vi bước bằng PWM trên chân Enable (mặc định 16 vi bước mỗi bước đủ, chỉnh trong file AFMotor.h). Do L293D không có vòng hạn dòng, vi bước của shield chỉ là điều chế điện áp, dòng thực trong cuộn không bám đúng dạng sin, mô-men giảm đáng kể; chế độ này chủ yếu giúp motor chạy êm ở tốc độ chậm.

Chạy hai động cơ bước cùng lúc trên shield

Hàm step() chặn chương trình đến khi chạy xong, nên gọi lần lượt cho hai motor thì chúng chạy nối tiếp nhau chứ không đồng thời. Cách đúng là dùng hàm onestep() xen kẽ trong vòng lặp, hoặc dùng AccelStepper với hai hàm bọc gọi onestep(FORWARD, …) và onestep(BACKWARD, …) cho từng motor. Không thể cắm chồng hai shield L293D để chạy 4 động cơ bước vì chúng dùng chung các chân điều khiển 74HC595.

Giới hạn của AFMotor với các board mới

Thư viện AFMotor viết cho vi điều khiển AVR (Uno, Mega đời cũ) và truy cập trực tiếp thanh ghi timer của AVR. Với ESP32, Uno R4 hay các board không dùng chip AVR, thư viện không biên dịch được hoặc chạy sai. Khi đó phải tự viết hàm đẩy 8 bit hướng vào 74HC595 qua bốn chân D4, D7, D8, D12 và tạo PWM trên chân Enable, hoặc chọn shield khác hợp với board.

6. Cấp nguồn cho shield L293D: jumper PWR và lỗi reset Arduino

Phần lớn sự cố "motor chạy lạ" trên shield L293D xuất phát từ nguồn. Shield có khối domino EXT_PWR (+M, GND) để cấp nguồn motor riêng và một jumper PWR quyết định nguồn motor có nối chung với nguồn Arduino hay không.

Sơ đồ cấp nguồn ngoài 6–12 V vào cọc EXT_PWR của motor shield L293D, motor nối các cổng M3 và M4

Ba cách cấp nguồn

Cách cấpJumper PWRƯu điểmNhược điểm
Một nguồn chung qua jack DC Arduino hoặc EXT_PWRCắmGọn, chỉ một nguồnMotor gây sụt áp, Arduino dễ reset
USB cho Arduino, nguồn riêng vào EXT_PWRRútLogic ổn định, nên dùng khi thử nghiệmPhải nối mass chung (đã nối sẵn trên shield)
Jack DC cho Arduino, nguồn riêng vào EXT_PWRRútỔn định nhất khi chạy độc lậpCần hai nguồn

Các lưu ý khi cấp nguồn cho shield

  • Khối EXT_PWR không có diode chống ngược cực; đấu ngược cực có thể làm hỏng cả shield lẫn Arduino.
  • Điện áp motor nằm trong khoảng 4,5–25 V theo thiết kế gốc, nhưng bản sao thường dùng tụ lọc điện áp thấp hơn: đọc số vôn ghi trên tụ hóa của shield và giữ nguồn motor dưới mức đó.
  • Pin vuông 9 V không đủ dòng cho động cơ bước; dùng adapter, pin Li-ion ghép hoặc ắc quy.
  • Đèn LED nguồn motor trên shield phải sáng thì cổng M1–M4 mới có điện; servo vẫn chạy được dù LED tắt vì servo lấy 5 V từ Arduino.

7. Mô phỏng điều khiển động cơ bước bằng L293D trên Proteus

Thư viện Proteus có sẵn linh kiện L293D, các mẫu động cơ bước động (hiển thị góc quay khi mô phỏng) như MOTOR-STEPPER và MOTOR-BISTEPPER, cùng vi điều khiển AVR, PIC, 8051 để nạp file .hex.

Trình tự dựng mạch mô phỏng

  • Đặt vi điều khiển (ATmega328P, PIC16F877A hoặc AT89C51), L293D, động cơ bước lưỡng cực và nguồn DC.
  • Nối bốn chân ngõ ra vi điều khiển vào IN1–IN4, chân EN1, EN2 lên mức cao.
  • Cấp nguồn cho cả chân logic (VSS/VCC1) và chân nguồn motor (VS/VCC2); quên một trong hai là lỗi phổ biến nhất khiến motor đứng im.
  • Trong Edit Properties của motor, đặt góc bước và điện trở cuộn gần với motor thật.
  • Nạp file .hex vào vi điều khiển, chỉnh tần số thạch anh trong phần mô phỏng khớp với giá trị khai báo trong code.
  • Dùng Virtual Oscilloscope hoặc Logic Analyzer để xem dạng xung IN1–IN4 và kiểm tra trình tự.

Lỗi hay gặp khi mô phỏng

  • Motor quay một bước rồi quay lui, lắc qua lại: trình tự xung sai hoặc nối nhầm hai đầu một cuộn sang cuộn kia; đối chiếu với bảng bước đủ ở mục 4.
  • Motor quay nhưng giật, hiển thị góc nhảy lung tung: tần số bước quá cao so với khả năng mô phỏng thời gian thực; tăng thời gian trễ giữa các bước khi chạy thử.

Mô phỏng chạy được không có nghĩa là mạch thật chạy được

Mẫu L293D trong Proteus không mô phỏng nhiệt, giới hạn dòng hay sụt áp đầy đủ như IC thật. Một đồ án mô phỏng motor 1,5 Ω với nguồn 12 V vẫn quay đẹp trên màn hình, nhưng ngoài thực tế IC sẽ quá nhiệt ngay. Khi chuyển từ mô phỏng sang làm mạch, luôn tính lại dòng và nhiệt theo mục 3, và chọn motor có điện trở cuộn phù hợp.

8. Chọn động cơ bước phù hợp với L293D

Quy tắc chọn đơn giản nhất: L293D hợp với motor có điện trở cuộn từ khoảng 20 Ω trở lên và dòng định mức dưới 0,5 A; motor dưới 5 Ω mỗi cuộn gần như chắc chắn cần driver có băm dòng.

Nhóm motorĐặc điểm cuộn dâyDùng với L293D
Motor bước nhỏ 20–35 mm (máy in, ổ đĩa, đồ chơi)10–50 Ω, dòng 0,1–0,4 APhù hợp nhất
NEMA 17 bản 12 V dòng thấp30–35 Ω, khoảng 0,3–0,4 AChạy được, cần tản nhiệt
Motor 28BYJ-48 đấu lưỡng cựcĐiện trở cao, dòng thấp (bản 5 V)Chạy được nhưng phải tính sụt áp
NEMA 17 máy in 3D (1–2 A)1–3 ΩKhông phù hợp
NEMA 23 trở lênDưới 2 Ω, dòng 2–4 AKhông phù hợp

Bẫy sụt áp với motor 5 V

Motor ghi 5 V nhưng cấp VCC2 = 5 V qua L293D thì cuộn dây chỉ nhận khoảng 2,4 V, motor yếu hẳn hoặc không quay. Muốn motor nhận đúng 5 V, VCC2 phải khoảng 7,5 V. Với các ứng dụng chạy pin hoặc cổng USB 5 V, nên dùng driver MOSFET sụt áp thấp; các lựa chọn cụ thể có trong bài điều khiển động cơ bước 5V. Thông số chi tiết của 28BYJ-48 xem tại bài động cơ bước 5 dây.

9. SN754410 và các linh kiện thay thế L293D

SN754410 – thay cùng chân, dòng 1 A

SN754410 là IC bốn nửa cầu H được mô tả là bản thay thế chức năng cải tiến của L293, cùng bố trí chân trong vỏ DIP16, chịu 1 A liên tục và 2 A đỉnh mỗi kênh, nguồn motor 4,5–36 V. Điểm khác cần lưu ý: nguồn logic VCC1 chỉ cho phép 4,5–5,5 V (hẹp hơn L293), và sụt áp ở 1 A tối đa khoảng 2 V mỗi phía. Datasheet có ghi diode kẹp ở ngõ ra, nhưng khi chạy gần 1 A với motor có điện cảm lớn, nhiều người thiết kế vẫn gắn thêm diode Schottky bên ngoài cho chắc chắn. Vì sụt áp tương đương L293, SN754410 không giải quyết được vấn đề nóng – nó chỉ cho phép dòng cao hơn.

Ghép chồng hai L293D (piggyback)

Trên shield L293D, cách tăng dòng thường gặp là hàn chồng một IC L293D lên đúng IC có sẵn, chân nào hàn vào chân đó, để hai IC chia dòng. Cách này làm tăng dòng chịu được và chia nhiệt, nhưng hai IC không bao giờ chia dòng hoàn toàn đều; chồng thêm từ IC thứ ba trở đi gần như không có lợi.

Bảng so sánh L293D với các driver khác cho motor nhỏ

DriverKiểu tầng raDòng mỗi cầuHạn dòng (chopper)Ghi chú
L293DBJT, sụt áp ~2,6 V0,6 AKhôngDễ học, nóng
SN754410BJT1 AKhôngThay cùng chân L293
L298NBJT, sụt áp 2–4 V2 AKhông (cần L297 bên ngoài)Dòng lớn hơn nhưng vẫn nóng
TB6612FNGMOSFET1,2 AKhôngSụt áp thấp, nguồn motor tối đa 13,5 V
DRV8833MOSFET1,5 ACóNguồn 2,7–10,8 V, hợp chạy pin
A4988, DRV8825, TMC2209MOSFET1–2 ACó, vi bướcGiao tiếp STEP/DIR, dùng cho NEMA 17

Với motor dòng cao hơn 600 mA mà vẫn muốn dùng IC cầu H kiểu cổ điển, xem bài điều khiển động cơ bước dùng L298. Với motor đơn cực nhỏ chỉ cần kéo xuống mass, mảng Darlington ULN2003 cho sụt áp thấp hơn và đơn giản hơn; chi tiết trong bài điều khiển động cơ bước ULN2003.

10. Giới hạn của L293 và khi nào không nên dùng

Không nên dùng L293/L293D khi

  • Motor có điện trở cuộn dưới 5 Ω hoặc dòng tem trên 0,6 A (L293D) hay 1 A (L293), điển hình là NEMA 17 của máy in 3D và mọi motor NEMA 23 trở lên.
  • Cần tốc độ cao, gia tốc mạnh: thiếu hạn dòng nên không tận dụng được nguồn điện áp cao.
  • Thiết bị chạy liên tục trong tủ kín, nhiệt độ môi trường cao: dải nhiệt hoạt động khuyến nghị của bản thương mại chỉ 0–70 °C.

Dấu hiệu IC L293D đã hỏng hoặc kém chất lượng

  • IC nóng ngay cả khi không nối motor: tầng ra bị chập, thay IC.
  • Một cuộn có điện áp, cuộn kia không: một nửa cầu đã chết; đo điện áp từng chân ngõ ra so với mass khi đặt mức logic cố định.
  • Motor chạy được vài chục giây rồi đứng, nguội lại chạy: IC đang vào chế độ bảo vệ nhiệt; giảm dòng hoặc tăng tản nhiệt.

Trong hệ thống cần kéo tải thật như băng tải nhỏ, cơ cấu nâng hạ hay cửa tự động, động cơ bước nhỏ chạy L293 thường không đủ lực và độ bền. Những ứng dụng này phù hợp hơn với động cơ giảm tốc mini hoặc motor 12V DC có hộp số.

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

  • L293 và L293D khác nhau thế nào, có thay trực tiếp cho nhau được không? Hai IC cùng sơ đồ chân. L293 chịu 1 A liên tục mỗi kênh nhưng không có diode kẹp, phải gắn 8 diode nhanh bên ngoài; L293D chỉ chịu 600 mA nhưng có sẵn diode. Thay L293D bằng L293 phải thêm diode; thay L293 bằng L293D chỉ an toàn khi dòng motor dưới 600 mA.
  • L293D có điều khiển được động cơ bước NEMA 17 không? Chỉ được với loại NEMA 17 điện áp cao, dòng thấp, điện trở cuộn khoảng 30 Ω trở lên (ví dụ bản 12 V – 0,35 A). Loại NEMA 17 phổ biến trên máy in 3D có dòng 1,5–2 A và điện trở dưới 3 Ω sẽ làm IC quá nhiệt và tự ngắt; loại này cần driver có hạn dòng như A4988, DRV8825 hay TMC2209.
  • Vì sao IC L293D nóng bỏng tay trong khi motor vẫn chạy bình thường? Tầng ra BJT sụt khoảng 2,6 V trên mỗi cuộn đang có dòng, nên IC tiêu tán khoảng 2,6 W cho mỗi ampe dòng cuộn. Ở chế độ hai cuộn cùng kích với 0,4 A, IC tỏa khoảng 2 W, đủ để nóng 90–110 °C nếu không có mảng đồng tản nhiệt. Hàn kỹ bốn chân GND vào mảng đồng lớn, dùng kiểu kích một pha khi tải nhẹ và tắt chân EN khi dừng.
  • Cấp 5 V vào chân VCC2 thì motor 5 V có chạy được không? Chạy rất yếu hoặc không chạy, vì sau sụt áp trên IC cuộn dây chỉ còn khoảng 2,4 V. Muốn cuộn nhận đủ 5 V, cần cấp VCC2 khoảng 7,5 V; nếu chỉ có nguồn 5 V thì nên dùng driver MOSFET sụt áp thấp.
  • Motor shield L293D chạy được mấy động cơ bước cùng lúc? Tối đa 2 động cơ bước (cổng M1–M2 và M3–M4), hoặc 1 động cơ bước cộng 2 motor DC, kèm 2 servo 5 V. Không cắm chồng hai shield để chạy 4 động cơ bước được, vì hai shield dùng chung các chân điều khiển 74HC595.
  • Vì sao Arduino bị reset mỗi khi động cơ bước trên shield bắt đầu chạy? Nguồn motor và nguồn Arduino đang dùng chung (jumper PWR cắm), khi cuộn dây đóng cắt nguồn bị sụt áp làm vi điều khiển khởi động lại. Rút jumper PWR, cấp Arduino bằng USB hoặc jack DC riêng và cấp motor qua cọc EXT_PWR; đồng thời kiểm tra nguồn motor có đủ dòng.
  • Báo lỗi "AFMotor.h: No such file or directory" hoặc biên dịch lỗi trên ESP32 là do đâu? Lỗi thứ nhất do chưa cài thư viện AFMotor vào Arduino IDE. Lỗi trên ESP32, Uno R4 là do thư viện chỉ viết cho chip AVR (xem mục 5).
  • Chế độ MICROSTEP của thư viện AFMotor có mịn như driver vi bước chuyên dụng không? Không. L293D không đo dòng, nên vi bước của AFMotor chỉ là điều chế độ rộng xung trên chân Enable, dòng trong cuộn không bám đúng dạng sin. Motor chạy êm hơn ở tốc độ chậm nhưng mô-men giảm và vị trí giữa các bước không đều; cần vi bước thật thì dùng driver có băm dòng.
  • Mô phỏng Proteus motor không quay hoặc chỉ lắc qua lại dù code đúng, xử lý thế nào? Kiểm tra trước hết đã cấp nguồn cho cả chân logic và chân nguồn motor của L293D chưa, chân EN đã lên mức cao chưa. Motor lắc qua lại thường do nối nhầm cặp dây cuộn hoặc trình tự IN1–IN4 sai; motor giật cục thường do tần số bước quá cao so với khả năng mô phỏng thời gian thực, hoặc tần số thạch anh trong Proteus khác giá trị trong code.
  • L293D có điều khiển được động cơ bước đơn cực 5 dây hoặc 6 dây không? Được. Có thể nối dây chung vào mass và để bốn ngõ ra kéo từng nửa cuộn lên nguồn, hoặc với motor 6 dây thì bỏ dây chung và đấu cả cuộn như motor lưỡng cực để lấy mô-men lớn hơn (so sánh hai cách đấu xem bài động cơ bước đơn cực). Trên shield, dây chung nối vào cọc GND giữa khối domino của cổng. Motor 5 dây có dây chung nối liền bên trong nên chỉ dùng được kiểu thứ nhất, trừ khi cắt mạch dây chung.
7.098 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