Điều khiển động cơ BLDC không chổi than không cảm biến Hall bằng IR2101 hoặc IR2184 khó như nào?

28/06/2026
dieu-khien-dong-co-bldc-khong-choi-than-khong-cam-bien-hall-bang-ir2101-hoac-ir2

Không dùng Hall sensor (sensorless BLDC) thì cách “an toàn nhất” khi chạy với IR2101/IR2184 là:

👉 Điều khiển theo Back-EMF + Deadtime chuẩn + khởi động open-loop (ramp tốc độ)


1. Cách an toàn nhất: Sensorless Back-EMF (chuẩn công nghiệp)

Back EMF được dùng để xác định vị trí rotor bằng cách:

  • Đọc pha không cấp điện (floating phase)
  • So sánh với Vdc/2 (virtual neutral)
  • Xác định zero-crossing (ZC)

👉 Từ đó suy ra thời điểm chuyển mạch 6 bước (6-step commutation)

Ưu điểm

  • Không cần Hall
  • Rẻ, phổ biến trong quạt BLDC, drone, máy bơm
  • Hiệu suất cao

Nhược điểm

  • KHÔNG tự khởi động được ở tốc độ = 0
  • Yếu ở tốc độ thấp


2. Điểm quan trọng để “an toàn” với IR2101

IR2101 không thông minh → nên phải xử lý bằng MCU:

Bắt buộc phải có:

(1) Khởi động open-loop (ramp)

  • Quay “mù” 6-step trong 1–3 giây đầu
  • Tăng tốc từ từ

👉 Nếu không có cái này:
❌ motor rung mạnh
❌ MOSFET dễ nổ do lệch pha


(2) Deadtime (cực quan trọng)

Dead Time

  • 1–3 µs (tùy MOSFET)
  • IR2101 không tự tạo deadtime

👉 Nếu không có:
❌ shoot-through → nổ MOSFET rất nhanh


(3) Lọc tín hiệu Back-EMF

  • RC filter vào ADC (1k–10k + 1nF–10nF)
  • So sánh với Vref = Vbus/2

3. Sơ đồ nguyên lý điều khiển sensorless (tư duy chuẩn)

 
MCU
 ├── PWM U/V/W → IR2101 x3 → MOSFET 3 pha
 ├── đo phase floating → ADC
 ├── detect zero-crossing
 ├── delay 30° điện
 └── chuyển bước 6-step

4. Những cách KHÔNG an toàn (tránh)

❌ Chạy open-loop mãi không feedback
❌ Không deadtime
❌ Không đo BEMF mà “ước lượng thời gian”
❌ PWM quá cao khi chưa sync rotor
❌ Bootstrap tụ nhỏ / layout xấu


5. Cách an toàn nhất theo thực tế công nghiệp

Nếu bạn cần mức “ổn định như thiết bị thương mại”:

✔ Best practice:

  1. Start open-loop ramp (500 ms – 2 s)
  2. Chuyển sang Back-EMF sensing
  3. Có protection:
    • overcurrent
    • undervoltage
    • stall detect (không thấy ZC)
  4. Giới hạn duty cycle khi startup

6. Gợi ý nâng cấp (rất quan trọng)

Nếu bạn muốn dễ làm hơn IR2101:

  • DRV8301 / DRV8313 (có protection + current sense)
  • hoặc STM32 + driver + opamp BEMF

IR2101 dùng được nhưng:
👉 “phải tự làm hết thông minh”


Kết luận ngắn

Không Hall an toàn nhất =

Back-EMF sensorless + Open-loop startup + Deadtime chuẩn + protection MCU

Sơ đồ gợi ý 1

 

Sơ đồ gợi ý 2

IR2184 chỉ là IC điều khiển 1 nửa cầu (Half-Bridge Driver), vì vậy để điều khiển động cơ BLDC 3 pha bạn cần:

  • STM32F4 (điều khiển)
  • 3 × IR2184 (mỗi IC điều khiển 1 pha)
  • 6 × IRF3205 (mỗi pha gồm 2 MOSFET N)
  • Chiết áp 10k để điều chỉnh tốc độ
  • Nguồn 12–24V (tùy động cơ)
  • Tụ bootstrap + diode bootstrap cho từng IR2184
  • Nếu động cơ có Hall thì kết nối 3 tín hiệu Hall vào STM32 để chuyển mạch chính xác; nếu không có Hall thì cần thuật toán sensorless (phức tạp hơn). Điều khiển BLDC ba pha thường dùng nghịch lưu 3 nửa cầu với chuyển mạch 6 bước (Six-Step).

Sơ đồ khối

 
        STM32F407

      ADC1
       │
   Chiết áp 10k
       │

TIM1 PWM1 ───────► IR2184 #1 ─► IRF3205 UH
                               IRF3205 UL

TIM1 PWM2 ───────► IR2184 #2 ─► IRF3205 VH
                               IRF3205 VL

TIM1 PWM3 ───────► IR2184 #3 ─► IRF3205 WH
                               IRF3205 WL

                 │
                 ▼

           Động cơ BLDC
             U  V  W

Chiết áp điều chỉnh tốc độ

Đấu như sau:

 
3.3V
 │
 │
10K
 │────► PA0 (ADC)
 │
GND

Đọc ADC:

 
adc = HAL_ADC_GetValue(&hadc1);

speed = adc * MAX_PWM / 4095;

Ví dụ:

ADC Duty PWM
0 0%
1024 25%
2048 50%
3072 75%
4095 100%

Phần công suất

Mỗi pha gồm:

 
      +24V

       IRF3205
          │
HO ───────┤
          │
      U---+------> Motor

LO ───────┤
       IRF3205
          │

         GND

Ba pha giống nhau.

Bootstrap IR2184

Mỗi IR2184 cần:

  • 1 diode nhanh (UF4007 hoặc tương đương)
  • 1 tụ bootstrap 100 nF–1 µF
 
12V
 │
 ├──► Diode
 │
 VB
 │
===100nF
 │
 VS

Điều khiển tốc độ

STM32 chỉ cần thay đổi Duty PWM.

Ví dụ:

 
TIM1->CCR1 = speed;
TIM1->CCR2 = speed;
TIM1->CCR3 = speed;

Chiết áp tăng → PWM tăng → động cơ quay nhanh hơn.

Điều khiển quay

Không thể chỉ phát PWM là động cơ BLDC sẽ quay. STM32 phải chuyển mạch 6 bước (Six-Step Commutation) hoặc dùng FOC để lần lượt kích hoạt các cặp MOSFET theo đúng trình tự.

Ví dụ bảng Six-Step:

Step High MOSFET Low MOSFET
1 UH VL
2 UH WL
3 VH WL
4 VH UL
5 WH UL
6 WH VL

Lặp lại chu kỳ này theo vị trí rotor.

Lưu ý quan trọng

IR2184 có chỉ một chân IN và tự tạo tín hiệu High/Low bổ sung với dead-time tích hợp, nên phù hợp để điều khiển một nửa cầu độc lập. Với BLDC 3 pha, việc đưa ba IR2184 hoạt động đúng trình tự Six-Step sẽ phức tạp hơn so với dùng IC chuyên dụng 3 pha như IR2130, DRV8301 hoặc DRV8302.

Khuyến nghị

Nếu mục tiêu của bạn là tự thiết kế driver BLDC bằng STM32F4, mình có thể vẽ trọn bộ:

  • Sơ đồ nguyên lý đầy đủ (STM32F407 + 3×IR2184 + 6×IRF3205).
  • Mạch bootstrap, nguồn 12V/5V/3.3V.
  • Mạch đọc Hall hoặc sensorless.
  • Mạch chiết áp điều chỉnh tốc độ.
  • Code STM32CubeIDE điều khiển Six-Step hoàn chỉnh (PWM + Hall + tăng/giảm tốc + đảo chiều). Đây là cấu hình phù hợp để tự chế tạo một driver BLDC công suất khoảng 12–48V, 20–50A.

IR2130 dễ hơn IR2184 rất nhiều nếu mục tiêu của bạn là tự làm driver BLDC 3 pha bằng STM32.

So sánh nhanh

Tiêu chí IR2184 IR2130
Số IC cần 3 1
Điều khiển 1 nửa cầu 3 nửa cầu (3 pha)
Số MOSFET điều khiển 2 6
Đi dây Khá nhiều Gọn hơn
Bootstrap 3 mạch 3 mạch
Bảo vệ Ít Có bảo vệ tốt hơn
Phù hợp BLDC Tạm được Rất phù hợp

 

IR2101 có mức độ khó gần như IR2184, vì cả hai đều là IC driver nửa cầu (Half-Bridge Driver). Nếu làm BLDC 3 pha, bạn vẫn cần 3 IC.

So sánh IR2101 - IR2184 - IR2130

Tiêu chí IR2101 IR2184 IR2130
Điều khiển 1 nửa cầu 1 nửa cầu 3 nửa cầu
Số IC cần cho BLDC 3 3 1
Số MOSFET 6 6 6
Độ khó phần cứng ⭐⭐⭐ ⭐⭐⭐ ⭐⭐
Độ khó lập trình ⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
Phù hợp BLDC Rất phù hợp

 

Không giống hoàn toàn. Mặc dù cả hai đều là driver half-bridge 8 chân và có cùng các chân nguồn/gate, nhưng IR2101 và IR2184 không thể thay thế trực tiếp vì khác phần chân điều khiển và chức năng.

Chân IR2101 IR2184
1 VCC VCC
2 HIN IN
3 LIN SD (Shutdown)
4 COM COM
5 LO LO
6 VS VS
7 HO HO
8 VB VB

 

Điểm khác nhau quan trọng

IR2101

  • 2 chân điều khiển độc lập:
    • HIN → điều khiển MOSFET trên
    • LIN → điều khiển MOSFET dưới
  • Không có deadtime nội.
  • Phù hợp với:
    • BLDC 6-step
    • FOC
    • Điều khiển PWM độc lập từ STM32, DSP...

IR2184

  • Chỉ có 1 chân IN.
  • IC tự tạo tín hiệu HO và LO bổ sung nhau.
  • deadtime chống dẫn chéo khoảng 500 ns (phiên bản IR2184).

Nếu đang dùng BLDC với STM32

Dùng IR2101

 
PWM_H ------> HIN
PWM_L ------> LIN

MCU phải tự tạo:

  • Deadtime
  • Không cho HIN và LIN cùng bật

Dùng IR2184

 
PWM --------> IN
Enable -----> SD

IC tự sinh:

 
HO = PWM
LO = đảo PWM + deadtime

Có thay thế trực tiếp được không?

Không.

Ví dụ:

IR2101:

 
MCU
 ├── HIN
 └── LIN

IR2184:

 
MCU
 ├── IN
 └── SD

Do đó nếu thay IR2101 bằng IR2184:

  • Phải sửa phần mềm điều khiển.
  • Có thể phải sửa cả PCB nếu đang sử dụng chân 3 làm LIN (trên IR2184 chân này là SD).

Khuyến nghị cho BLDC

  • FOC hoặc 6-step sensorless/Hall: nên dùng IR2101, vì MCU điều khiển độc lập high-side và low-side.
  • Half-bridge đơn giản, inverter, buck, hoặc chỉ cần một tín hiệu PWM: IR2184 thuận tiện hơn nhờ có deadtime tích hợp.

Bảo vệ quá áp và thấp áp làm gì?

Trong ESC BLDC, bảo vệ quá áp (OVP - Over Voltage Protection)bảo vệ thấp áp (UVP/UVLO - Under Voltage Protection) đều rất quan trọng. Chúng không chỉ bảo vệ driver như IR2184 mà còn bảo vệ MOSFET, tụ nguồn và chính động cơ.


1. Bảo vệ thấp áp (UVP/UVLO)

Mục đích

Ngăn ESC hoạt động khi điện áp nguồn quá thấp.

Ví dụ:

  • Pin Li-ion 3S: dưới khoảng 9V
  • Pin Li-ion 6S: dưới khoảng 18V
  • Nguồn 24V: dưới khoảng 20V (tùy thiết kế)

Nếu không bảo vệ sẽ xảy ra

  • MOSFET mở không hết vì điện áp gate không đủ.
  • MOSFET làm việc ở vùng tuyến tính → rất nóng.
  • Dòng tăng cao.
  • IR2184 có thể mất bootstrap.
  • Động cơ rung, mất đồng bộ.
  • Có thể cháy MOSFET.

Ví dụ:

Nguồn 24V tụt xuống còn 10V.

IR2184 vẫn cố điều khiển.

Gate chỉ lên khoảng 6–8V.

MOSFET không mở hoàn toàn.

→ Công suất tiêu tán tăng rất lớn.


2. Bảo vệ quá áp (OVP)

Mục đích

Ngắt PWM khi điện áp DC Bus vượt ngưỡng.

Ví dụ:

Nguồn thiết kế:

  • 24V

Ngưỡng OVP:

  • 30V

Nếu điện áp lên 35V

→ MCU dừng PWM.


Vì sao điện áp lại tăng?

Động cơ BLDC chính là máy phát điện.

Khi:

  • giảm ga đột ngột
  • phanh
  • tải kéo động cơ
  • quán tính lớn

nó sẽ phát điện ngược về DC Bus.

Ví dụ:

24V

Motor quay nhanh

Điện áp Bus tăng

35V

MOSFET nổ nếu không bảo vệ.


3. Bảo vệ cho IR2184

IR2184 có giới hạn:

  • VCC tối đa khoảng 20V.
  • VB–VS cũng có giới hạn.

Nếu quá áp xuất hiện:

  • bootstrap hỏng
  • driver hỏng
  • gate MOSFET bị quá áp

4. MCU thường xử lý thế nào?

STM32 đọc điện áp DC Bus qua ADC.

Ví dụ:

 
ADC đọc VBUS

Nếu VBUS > 30V
{
    Disable PWM
    SD = LOW
}

Khi điện áp trở về bình thường mới cho phép chạy lại.


5. Ngoài phần mềm nên có phần cứng

Thông thường người ta kết hợp:

  • TVS diode trên DC Bus để cắt các xung áp rất ngắn.
  • Tụ điện dung lớn đặt sát cầu công suất.
  • Nếu công suất lớn hoặc có tái sinh năng lượng nhiều, dùng mạch hãm (brake chopper) với điện trở xả để tiêu tán năng lượng dư.

6. Giá trị tham khảo

Hệ nguồn UVP OVP
12V 10V 15V
24V 20V 30V
36V 30V 44V
48V 40V 58V

Các giá trị này phụ thuộc loại pin hoặc nguồn cấp và điện áp chịu đựng của MOSFET.


Với dự án của bạn

Bạn đang hướng tới ESC BLDC dùng STM32 + IR2184. Mình khuyến nghị thêm các lớp bảo vệ sau:

  • UVP: Giám sát điện áp DC Bus bằng ADC, ngắt PWM khi thấp áp.
  • OVP: Giám sát điện áp DC Bus bằng ADC hoặc comparator, ngắt PWM khi quá áp.
  • OCP (Over Current Protection): Đo dòng bằng điện trở shunt và bộ khuếch đại dòng (ví dụ INA180), ngắt ngay khi quá dòng.
  • OTP (Over Temperature Protection): Dùng NTC gắn trên tản nhiệt hoặc gần MOSFET để dừng hệ thống khi quá nhiệt.

Đây là cấu hình bảo vệ thường thấy trong các ESC thương mại và giúp tăng đáng kể độ tin cậy của hệ thống.