Điều khiển động cơ DC với TB6612FNG và Arduino
Trong hướng dẫn này, chúng ta sẽ học cách điều khiển tốc độ và hướng của động cơ DC bằng mô-đun điều khiển động cơ TB6612FNG. Thiết lập này sẽ cho phép chúng ta điều khiển hai động cơ một cách độc lập, cung cấp một cách thực tế để chế tạo robot bánh xe hoặc các dự án cơ khí hóa. Ngoài ra, chúng ta sẽ khám phá cách sử dụng Điều chế độ rộng xung (PWM) để điều khiển chính xác tốc độ của từng động cơ, nâng cao khả năng chuyển động của dự án.
Trong suốt hướng dẫn này, chúng ta sẽ sử dụng bo mạch Arduino cùng với bo mạch mở rộng TB6612FNG và hai động cơ giảm tốc DC. TB6612FNG là một bản nâng cấp lớn so với các bộ điều khiển lưỡng cực cũ như L298N vì nó sử dụng MOSFET hiệu suất cao. Điều này đặc biệt hữu ích trong các ứng dụng chạy bằng pin, nơi cần độ bền và hiệu suất năng lượng, vì bộ điều khiển này cung cấp nhiều năng lượng hơn cho động cơ mà không bị quá nhiệt hoặc yêu cầu tản nhiệt lớn.
Để làm rõ hơn về cách thiết lập và lập trình, hãy xem video liên quan tại (trong video ở 00:00).
Phần cứng được giải thích
Các thành phần chính trong dự án này bao gồm bộ điều khiển động cơ TB6612FNG, bộ vi điều khiển (Arduino) và hai động cơ DC. Bộ điều khiển TB6612FNG nhận tín hiệu logic dòng điện thấp từ Arduino và sử dụng chúng để chuyển nguồn điện dòng cao từ pin đến động cơ. Nó thường có các chân chuyên dụng cho nguồn logic, nguồn động cơ, điều khiển hướng (AIN1, AIN2, BIN1, BIN2) và điều khiển tốc độ (PWMA, PWMB).
Động cơ DC nhận nguồn điện được điều chế từ các chân đầu ra của bộ điều khiển (A01/A02 và B01/B02) để quay. Chân chờ (STBY) hoạt động như một công tắc chính, cung cấp một cách nhanh chóng để vô hiệu hóa động cơ và đưa chip vào trạng thái ngủ năng lượng thấp. Mỗi thành phần đóng một vai trò quan trọng trong việc đảm bảo hệ thống truyền động hoạt động trơn tru và hiệu quả.
Chi tiết từ bảng dữ liệu
|
Nhà sản xuất |
Toshiba (IC) / Nhiều nhà sản xuất (Mô-đun) |
|---|---|
|
Số bộ phận |
TB6612FNG |
|
Điện áp Logic/IO |
2.7 V đến 5.5 V |
|
Điện áp cung cấp (VM) |
2.7 V đến 15 V |
|
Dòng điện đầu ra (mỗi kênh) |
1.2 A liên tục |
|
Dòng điện đỉnh (mỗi kênh) |
3.2 A |
|
Hướng dẫn tần số PWM |
Lên đến 100 kHz |
|
Ngưỡng logic đầu vào |
Cao: > 2.0V, Thấp: < 0.8V (ở 5V VCC) |
|
Sụt áp / RDS(on) / bão hòa |
0.5 Ω (điển hình) |
|
Giới hạn nhiệt |
Có mạch ngắt nhiệt tích hợp |
|
Kiểu đóng gói |
SSOP24 / Bo mạch mở rộng |
|
Ghi chú / biến thể |
Thay thế L298N với hiệu suất cao hơn nhiều. |
-
Đảm bảo mức điện áp phù hợp (khớp VCC với 5V của Arduino hoặc 3.3V của ESP32).
-
Cung cấp nguồn pin riêng cho chân VM (Nguồn động cơ).
-
Thận trọng nối tất cả các chân mass (pin, Arduino và mô-đun) lại với nhau để tránh hoạt động bất thường.
-
Kiểm tra các kết nối trước khi cấp nguồn để tránh đoản mạch.
-
Luôn kéo chân STBY lên mức CAO, nếu không động cơ sẽ không chạy.
Hướng dẫn nối dây
Bắt đầu bằng cách kết nối nguồn và mass cho tất cả các thành phần. Kết nối mass từ Arduino của bạn với thanh âm của breadboard. Sau đó, kết nối cực dương của pin ngoài với chân VM trên bộ điều khiển động cơ và chân 5V của Arduino với chân VCC trên bộ điều khiển.
Tiếp theo, nối dây các đầu vào logic: kết nối AIN1 với chân kỹ thuật số 2 trên Arduino, AIN2 với chân kỹ thuật số 4 và PWMA với một chân hỗ trợ PWM, chẳng hạn như chân kỹ thuật số 5. Đối với động cơ thứ hai, kết nối BIN1 với 7, BIN2 với 8 và PWMB với chân 6. Đảm bảo kết nối chân STBY với chân kỹ thuật số 9.
Đối với đầu ra đến động cơ, kết nối hai đầu của động cơ DC đầu tiên của bạn với A01 và A02. Kết nối động cơ DC thứ hai của bạn với B01 và B02. Kiểm tra kỹ rằng tất cả các mass được chia sẻ trên thanh mass chung.
Ví dụ mã & Hướng dẫn chi tiết
Hãy xem xét một số định danh chính và đoạn mã được sử dụng trong dự án. Phần đầu tiên của mã khởi tạo các chân cho điều khiển hướng, tốc độ và chờ:
const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;
Ở đây, AIN1 và AIN2 được gán để điều khiển hướng của Động cơ A, trong khi PWMA sẽ được sử dụng để điều khiển tốc độ thông qua PWM. STBY cho phép Arduino đánh thức chip hoặc đưa nó vào trạng thái ngủ.
Tiếp theo, hàm setup cấu hình các chân này làm đầu ra và kích hoạt chip:
void setup() { pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(STBY, OUTPUT); // Kích hoạt trình điều khiển động cơ digitalWrite(STBY, HIGH);}
Các lệnh pinMode() đặt các chân ở chế độ đầu ra. Đặt STBY ở mức HIGH đảm bảo TB6612FNG hoạt động và sẵn sàng nhận lệnh.
Trong hàm loop, chúng ta ra lệnh cho động cơ quay về phía trước với tốc độ tối đa, dừng lại, rồi đảo chiều:
void loop() { // Quay về phía trước với tốc độ tối đa digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, 255); delay(2000); // Dừng (Trôi tự do) digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); analogWrite(PWMA, 0); delay(1000);}
Ở đây, đặt AIN1 ở mức HIGH và AIN2 ở mức LOW báo cho cầu H bên trong đẩy dòng điện theo một hướng. analogWrite(PWMA, 255) áp dụng tốc độ tối đa. Để dừng, chúng ta kéo cả hai chân điều hướng xuống mức LOW.
Để biết thêm chi tiết và mã hoàn chỉnh với điều khiển động cơ kép và các hàm tùy chỉnh, vui lòng tham khảo chương trình đầy đủ được tải bên dưới bài viết.
Trình diễn / Điều mong đợi
Sau khi hoàn tất việc nối dây và tải mã lên, bạn sẽ thấy động cơ quay về phía trước trong hai giây, tạm dừng một giây, rồi lặp lại chu kỳ (nếu bạn đã thêm logic đảo chiều, nó sẽ quay ngược lại tiếp theo). Đảm bảo động cơ phản hồi chính xác với tín hiệu PWM; nếu nó quay ngược khi bạn mong đợi nó quay về phía trước, chỉ cần hoán đổi dây nối với A01 và A02 (trong video tại 12:30).
Các lỗi thường gặp bao gồm quên kéo chân STBY lên mức HIGH, hoặc cố gắng cấp nguồn trực tiếp cho động cơ từ chân 5V của Arduino thay vì dùng pin riêng trên chân VM, điều này có thể khiến Arduino khởi động lại khi tải nặng. Hãy chắc chắn kiểm tra lại nguồn điện và các điểm nối đất chung.
Nghĩ bạn có thể cần
-
Amazon
-
AmazonBuy TB6612FNG or DRV8833 motor driver board from AliExpresss.click.aliexpress.com
Tài nguyên & tài liệu tham khảo
Chưa có tài nguyên nào.
Tập tin📁
Bảng dữ liệu (pdf)
-
motor driver TB6612FNG datasheet
motor_driver_TB6612FNG_datasheet.pdf0.20 MB