Series
Lập Trình & Điều Khiển Động Cơ với ESP32
  1. Series: Lập trình & Điều khiển Động Cơ từ Cơ Bản tới Nâng Cao
  2. 1Lập trình & Điều khiển Động Cơ – Bài 1: Giới thiệu về Động cơ và Nguyên lý Hoạt động
  3. 2Lập trình & Điều khiển Động Cơ – Bài 2: Điều khiển tốc độ Động cơ DC bằng PWM
  4. 3Lập trình & Điều khiển Động Cơ – Bài 3: Đảo chiều quay của động cơ DC bằng mạch cầu H (L298N)
  5. 4Lập trình & Điều khiển Động Cơ – Bài 4: Viết hàm điều khiển chuyển động cho xe robot
  6. 5Lập trình & Điều khiển Động Cơ – Bài 5: Cảm biến vật cản cho xe robot (Tự dừng khi gặp chướng ngại vật)
  7. 6Lập trình & Điều khiển Động Cơ – Bài 6: Xe tránh vật cản tự động bằng cảm biến siêu âm HC-SR04
  8. 7Lập trình & Điều khiển Động Cơ – Bài 7: Điều khiển xe robot bằng điện thoại qua WiFi (Web Remote)
  9. 8Lập trình & Điều khiển Động Cơ – Bài 8: Điều khiển xe robot bằng Bluetooth từ điện thoại (ESP32 + App Android)
  10. 9Lập trình & Điều khiển Động Cơ – Bài 9: Lập trình xe robot dò line (chạy theo vạch đen)
  11. 10Lập trình & Điều khiển Động Cơ – Bài 10: Xe robot tránh vật cản kết hợp dò line (robot tự hành thông minh)
  12. 11Lập trình & Điều khiển Động Cơ – Bài 11: Điều khiển Servo bằng ESP32 (Cơ bản và Ứng dụng trong robot)
  13. 12Lập trình & Điều khiển Động Cơ – Bài 12: Kết hợp Servo và Cảm biến siêu âm HC-SR04 – Quay theo vật cản (Radar mini)
  14. 13Lập trình & Điều khiển Động Cơ – Bài 13: Servo Tracking, tạo hệ thống đầu quay cảm biến tự động theo vật cản
  15. 14Lập trình & Điều khiển Động Cơ – Bài 14: Lăp ráp đầu cảm biến quay theo vật cản lên xe robot (Xe radar thông minh)
  16. 15Lập trình & Điều khiển Động Cơ – Bài 15: Tích hợp còi cảnh báo và đèn LED vào xe robot (Báo hiệu trạng thái thông minh)
  17. 16Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot
  18. 17Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 1): Hiểu nguyên lý
  19. 18Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 2): Thiết kế phần cứng
  20. 19Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 3): Lập trình cơ bản
  21. 20Lập trình & Điều khiển Động Cơ – Nâng cao -Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 4): Tối ưu điều khiển
  22. 21Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 5): Báo hiệu thông minh
  23. 22Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 6): Truyền dữ liệu 2 chiều
  24. 23Lập trình & Điều khiển Động Cơ – Nâng cao – Bài 16: Thiết kế bộ điều khiển từ xa cho Robot (phần 7): Kiểm thử & demo thực tế
Kiến thức

Lập trình & Điều khiển Động Cơ – Bài 2: Điều khiển tốc độ Động cơ DC bằng PWM

Th11 2025
Lập trình & Điều khiển Động Cơ – Bài 2: Điều khiển tốc độ Động cơ DC bằng PWM

(Từ khóa học: Lập trình & Điều khiển Động Cơ từ Cơ Bản tới Nâng Cao)

Giới thiệu

Trong bài học trước, bạn đã học cách bật/tắt động cơ DC bằng ESP32.

Ở bài này, chúng ta sẽ tiến thêm một bước quan trọng — điều khiển tốc độ quay của động cơ bằng tín hiệu PWM (Pulse Width Modulation).

PWM là kỹ thuật điều chỉnh tốc độ hoặc độ sáng mà không cần thay đổi điện áp nguồn, giúp tiết kiệm năng lượngbảo vệ linh kiện.

1. PWM là gì?

PWM (Pulse Width Modulation) là phương pháp điều chế độ rộng xung.
Thay vì thay đổi điện áp, ta thay đổi thời gian bật/tắt của tín hiệu điều khiển trong mỗi chu kỳ.

  • Khi xung HIGH nhiều hơn (Duty Cycle lớn) → động cơ quay nhanh hơn.
  • Khi xung LOW nhiều hơn (Duty Cycle nhỏ) → động cơ quay chậm hơn.

Ví dụ:

  • 100% Duty Cycle → cấp điện liên tục → motor quay tối đa.
  • 50% Duty Cycle → chỉ cấp điện nửa thời gian → motor quay chậm lại.

2. Sơ đồ mạch

Ta sử dụng cùng sơ đồ như Bài 1, chỉ khác phần lập trình PWM.

ESP32 PinKết nốiGhi chú
GPIO5Chân B transistor (qua điện trở 1kΩ)PWM output
GNDMass chungGND ESP32 và nguồn motor nối chung
Chân C transistorMột đầu motor
+5VĐầu còn lại motorNguồn cấp động cơ

ESP32 hỗ trợ 16 kênh PWM (LEDC), giúp ta dễ dàng điều chỉnh tốc độ nhiều động cơ cùng lúc.

3. Code mẫu: Điều khiển tốc độ bằng PWM

/*
 * Bài 2 - IoTLabs Motor Course
 * Điều khiển tốc độ động cơ DC bằng PWM (ESP32)
 */

#define MOTOR_PIN 5   // GPIO5 xuất tín hiệu PWM
#define PWM_CHANNEL 0 // Kênh PWM 0
#define PWM_FREQ 5000 // Tần số PWM: 5kHz
#define PWM_RES 8     // Độ phân giải: 8 bit (0-255)

void setup() {
  ledcSetup(PWM_CHANNEL, PWM_FREQ, PWM_RES);
  ledcAttachPin(MOTOR_PIN, PWM_CHANNEL);
}

void loop() {
  for (int speed = 0; speed <= 255; speed += 5) {
    ledcWrite(PWM_CHANNEL, speed);
    delay(20);
  }
  for (int speed = 255; speed >= 0; speed -= 5) {
    ledcWrite(PWM_CHANNEL, speed);
    delay(20);
  }
}

Kết quả: Động cơ tăng tốc từ chậm → nhanh → rồi giảm dần, tạo hiệu ứng mượt như tăng ga.

4. Giải thích

  • ledcSetup() dùng để cấu hình tần số và độ phân giải PWM.
  • ledcAttachPin() gắn chân GPIO với kênh PWM.
  • ledcWrite(channel, value) điều chỉnh tốc độ quay (0–255).

5. Mục tiêu học tập

  • Hiểu nguyên lý điều khiển tốc độ bằng PWM.
  • Lập trình điều chỉnh tốc độ quay motor bằng ESP32.
  • Tạo hiệu ứng chuyển động mượt mà trong các ứng dụng robot.

6. Hoạt động mở rộng

  • Thêm nút nhấn hoặc biến trở để thay đổi tốc độ bằng tay.
  • Kết hợp hai động cơ DC để điều khiển xe robot chạy tiến–lùi với tốc độ khác nhau.
  • Dùng Serial Monitor để in giá trị tốc độ motor.

7. Linh kiện cần thiết

Linh kiệnSố lượngGhi chú
ESP32 DevKit 38 Pin1Board điều khiển
Motor DC mini 3–6V1
Transistor 2N22221Khuếch dòng
Điện trở 1kΩ1Cho chân base transistor
Breadboard + dây nối
Nguồn 5V1Adapter hoặc pin

8. Kết luận

PWM là kỹ thuật quan trọng giúp điều khiển tốc độ động cơ DC mượt mà, chính xác và tiết kiệm năng lượng.

Khi nắm vững PWM, bạn có thể mở rộng sang điều khiển servo, LED RGB, hoặc robot tự hành.

Trong bài tiếp theo, chúng ta sẽ tìm hiểu cách đảo chiều quay của động cơ DC để robot có thể chạy tiến – lùi – rẽ trái – rẽ phải.