BÀI 46 – ĐIỀU KHIỂN TỐC ĐỘ MOTOR DC BẰNG ENCODER + PWM TRÊN STM32F103
Đây là bài rất quan trọng, vì từ bài này chúng ta chuyển từ:
“Cho motor chạy bằng PWM”
sang:
“Ra lệnh motor chạy đúng tốc độ mình muốn.”
Đây chính là bước đầu tiên của điều khiển vòng kín – Closed-loop Control.
1. Ôn lại Bài 41 và Bài 45
Ở Bài 41:
STM32
│
▼
PWM
│
▼
Motor
Ví dụ:
PWM = 50%;
Motor chạy.
Nhưng có vấn đề:
PWM = 50%
không có nghĩa motor luôn chạy ở 50% tốc độ tối đa.
Ở Bài 45:
Motor
│
▼
Encoder
│
▼
TIM Encoder Mode
│
▼
CNT
Encoder cho chúng ta biết motor thực sự đang quay như thế nào.
2. Ghép hai bài lại
Bây giờ:
┌──────────────┐
│ │
PWM ───────────► │ MOTOR │
│ │
└──────┬───────┘
│
▼
ENCODER
│
▼
TIM Encoder
│
▼
RPM thực
Ta lấy:
RPM thực
so sánh với:
RPM mong muốn
rồi điều chỉnh PWM.
Đó chính là:
CLOSED-LOOP SPEED CONTROL
3. Open Loop và Closed Loop
Open Loop
PWM = 60%
↓
Motor
Không biết motor đang chạy bao nhiêu RPM.
Closed Loop
Target RPM
│
▼
Controller
│
▼
PWM
│
▼
Motor
│
▼
Encoder