Arduino Động cơ một chiều
Trong bài hướng dẫn này, chúng ta sẽ học:
- Cách hoạt động của động cơ DC
- Cách điều khiển tốc độ và chiều quay của động cơ DC.
- Cách điều khiển một động cơ DC bằng bộ điều khiển L298N.
- Cách điều khiển hai động cơ DC bằng bộ điều khiển L298N.
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | L298N Motor Driver Module | ||
| 1 | × | 5V DC Motor | ||
| 1 | × | 5V Power Adapter for 5V DC motor | ||
| 1 | × | DC Power Jack | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về Động cơ một chiều
Sơ đồ đấu nối động cơ DC
Động cơ DC có hai dây:
- Dây dương tính: thường màu đỏ
- Dây âm tính: thường màu đen

Cách hoạt động
Khi bạn mua một động cơ DC, bạn cần biết động cơ DC hoạt động ở điện áp nào. Hãy lấy một động cơ DC 12V làm ví dụ.
Khi bạn cấp nguồn cho động cơ DC 12V bằng nguồn 12V:
- 12V và GND đến dây dương và dây âm, tương ứng: động cơ DC quay với tốc độ tối đa theo hướng kim đồng hồ
- 12V và GND đến dây âm và dây dương, tương ứng: động cơ DC quay với tốc độ tối đa theo hướng ngược chiều kim đồng hồ
Như đã mô tả ở trên, khi đảo cực nguồn giữa hai dây của động cơ DC, hướng quay sẽ bị đảo ngược. Phương pháp này được dùng để điều khiển hướng quay của động cơ DC. Tất nhiên, không phải bằng cách thay đổi thủ công mà bằng lập trình.
Nếu chúng ta cấp nguồn cho động cơ DC dưới 12V, động cơ vẫn quay nhưng không ở vận tốc tối đa. Điều này có nghĩa là nếu chúng ta thay đổi điện áp của nguồn cấp, chúng ta có thể thay đổi tốc độ của động cơ DC. Tuy nhiên, phương pháp này không được sử dụng trong thực tế vì khó kiểm soát điện áp của nguồn cấp. Thay vào đó, ta cố định điện áp của nguồn và điều khiển tốc độ của động cơ DC thông qua tín hiệu PWM. Tỷ lệ duty của PWM càng cao thì động cơ DC quay càng nhanh.

Cách điều khiển động cơ DC bằng Arduino
Điều khiển động cơ DC bao gồm hai yếu tố: tốc độ và hướng. Arduino có thể sinh tín hiệu PWM. Tuy nhiên, tín hiệu PWM này có điện áp và dòng điện thấp, chúng ta không thể sử dụng nó để điều khiển động cơ DC. Chúng ta cần dùng một driver phần cứng ở giữa Arduino và động cơ DC. Driver thực hiện hai công việc:
- Khuếch đại tín hiệu PWM từ Arduino (dòng điện và điện áp) để điều khiển tốc độ
- Nhận tín hiệu điều khiển từ Arduino để đổi cực nguồn cấp nhằm điều khiển hướng

※ Lưu ý:
- Hướng dẫn này có thể áp dụng cho tất cả các động cơ DC. Động cơ DC 12V chỉ là một ví dụ.
- Khi bạn điều khiển một động cơ DC 5V, dù đầu ra của pin Arduino cấp 5V (giống với điện áp của động cơ DC), bạn vẫn cần một bộ driver ở giữa Arduino và động cơ DC vì đầu ra của pin Arduino không cung cấp đủ dòng điện cho động cơ DC.
Có nhiều loại chip; các module (ví dụ như L293D, L298N) có thể được sử dụng làm bộ điều khiển động cơ DC. Trong hướng dẫn này, chúng ta sẽ sử dụng driver L298N.
Về Bộ điều khiển L298N
Driver L298N có thể được sử dụng để điều khiển động cơ DC và động cơ bước. Trong bài hướng dẫn này, chúng ta học cách sử dụng nó để điều khiển động cơ DC.
Bố trí chân của bộ điều khiển L298N

Bộ điều khiển L298N có thể điều khiển hai động cơ DC độc lập cùng lúc, được gọi là động cơ A và động cơ B. Bộ điều khiển L298N có 13 chân:
Các chân chung cho cả hai động cơ:
- Chân VCC: cấp nguồn cho động cơ. Nó có thể có điện áp từ 5V đến 35V.
- Chân GND: là chân đất chung, cần được kết nối với GND (0V).
- Chân 5V: cấp nguồn cho mô-đun L298N. Nó có thể được cấp bằng 5V từ Arduino.
Chân động cơ A (Kênh A):
- Các chân ENA: được sử dụng để điều khiển tốc độ của Động cơ A. Việc tháo jumper và kết nối chân này với đầu vào PWM sẽ cho phép chúng ta điều khiển tốc độ của Động cơ A.
- Các chân IN1 và IN2: được sử dụng để điều khiển hướng quay của Động cơ A. Khi một trong hai chân ở mức HIGH và chân kia ở mức LOW, Động cơ A sẽ quay. Nếu cả hai đầu vào đều ở mức HIGH hoặc đều ở mức LOW, Động cơ A sẽ dừng.
- Các chân OUT1 và OUT2: được kết nối với Động cơ A.
Các chân của Motor B (Kênh B):
- Các chân ENB được dùng để điều khiển tốc độ của Động cơ B. Việc loại bỏ jumper và nối chân này với đầu vào PWM sẽ cho phép chúng ta điều khiển tốc độ của Động cơ B.
- Các chân IN3 và IN4 được dùng để điều khiển hướng quay của Động cơ B. Khi một chân ở mức cao và chân kia ở mức thấp, Động cơ B sẽ quay. Nếu cả hai đầu vào đều ở mức cao hoặc thấp, Động cơ B sẽ dừng.
- Các chân OUT3 và OUT4 được kết nối với Động cơ B.
Như đã mô tả ở trên, bộ điều khiển L298N có hai nguồn cấp đầu vào:
- Một dành cho động cơ DC (chân VCC và GND): từ 5 đến 35V.
- Một dành cho hoạt động nội bộ của mô-đun L298N (chân 5V và GND): từ 5 đến 7V.
Bộ điều khiển L298N cũng có ba jumper cho các mục đích nâng cao hoặc mục đích khác. Để đơn giản hơn, vui lòng loại bỏ toàn bộ jumper khỏi bộ điều khiển L298N.
Chúng ta có thể điều khiển hai động cơ DC độc lập cùng lúc bằng cách sử dụng Arduino và bộ điều khiển L298N. Để điều khiển mỗi động cơ, chúng ta chỉ cần ba chân từ Arduino.
※ Lưu ý:
Phần còn lại của bài hướng dẫn này điều khiển một động cơ DC bằng kênh A. Việc điều khiển động cơ DC khác cũng tương tự.
Cách Điều Khiển Tốc Độ Động Cơ DC Bằng Bộ Điều Khiển L298N
Việc điều khiển tốc độ của động cơ DC bằng cách tạo tín hiệu PWM tới chân ENA của L298N rất đơn giản. Chúng ta có thể làm điều này bằng cách:
- Nối một chân của Arduino với ENA của L298N
- Tạo tín hiệu PWM cho chân ENA bằng cách sử dụng hàm analogWrite(). Driver L298N khuếch đại tín hiệu PWM cho động cơ DC
Tốc độ là một giá trị nằm giữa 0 và 255. Nếu tốc độ bằng 0, động cơ dừng. Nếu tốc độ bằng 255, động cơ quay ở tốc độ tối đa.
Cách Điều Khiển Hướng Quay của Động Cơ DC bằng Bộ Điều Khiển L298N
Hướng quay của động cơ có thể được điều khiển bằng cách áp dụng tín hiệu HIGH/LOW cho các chân IN1 và IN2. Bảng dưới đây minh họa cách điều khiển hướng quay ở cả hai kênh.
| IN1 pin | IN2 pin | Direction |
|---|---|---|
| LOW | LOW | Motor A stops |
| HIGH | HIGH | Motor A stops |
| HIGH | LOW | Motor A spins Clockwise |
| LOW | HIGH | Motor A spins Anti-Clockwise |
- Điều khiển động cơ A quay theo chiều kim đồng hồ
- Điều khiển động cơ A quay ngược chiều kim đồng hồ
※ Lưu ý:
Hướng quay bị đảo ngược nếu các chân OUT1 và OUT2 kết nối với hai chân của động cơ DC theo cách ngược lại. Nếu đúng như vậy, chỉ cần hoán đổi giữa chân OUT1 và OUT2 hoặc thay đổi tín hiệu điều khiển trên chân IN1 và IN2 trong mã nguồn.
Cách Dừng Động Cơ DC Đang Quay
Có hai cách để dừng động cơ DC.
- Điều khiển vận tốc về 0
- Điều khiển hai chân IN1 và IN2 về cùng một giá trị (LOW hoặc HIGH)
- Hoặc
Cách điều khiển động cơ DC bằng bộ điều khiển L298N.
Sơ đồ đấu dây
Xin tháo bỏ cả ba jumper trên mô-đun L298N trước khi đấu dây.

This image is created using Fritzing. Click to enlarge image
Mã Arduino
Đoạn mã dưới đây thực hiện điều gì:
- Tăng tốc động cơ DC
- Đổi hướng quay
- Giảm tốc động cơ DC
- Dừng động cơ DC
Hướng dẫn từng bước
- Loại bỏ cả ba jumper trên mô-đun L298N.
- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
- Bạn sẽ thấy:
- Động cơ DC được tăng tốc và sau đó quay ở tốc độ tối đa trong 1 giây
- Hướng của động cơ DC được thay đổi
- Động cơ DC quay ở tốc độ tối đa trong 1 giây theo hướng ngược lại
- Động cơ DC giảm tốc
- Động cơ DC dừng 1 giây
- Quá trình ở trên được lặp lại.
※ Lưu ý:
Trong bài hướng dẫn này, chúng ta học cách điều khiển tốc độ của động cơ DC theo tỷ lệ với tốc độ tối đa. Để điều khiển tốc độ tuyệt đối (vòng mỗi giây), chúng ta cần sử dụng bộ điều khiển PID và một bộ mã hóa. Việc điều khiển tốc độ tuyệt đối của động cơ DC sẽ được trình bày trong một bài hướng dẫn khác.
Cách điều khiển hai động cơ DC bằng bộ điều khiển L298N
(sắp ra mắt)
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.