Điều Khiển Motor Brushless Bằng Arduino - Sử dụng module ESC

Xin chào các bạn bạn! Lâu nay chúng ta đã quen với loại động cơ thông thường gồm 2 dây được điều khiển bằng các module điều khiển động cơ. Nhưng  nhược điểm là công suất không được cao. Khi muốn làm các dự án cần motor công suất cao như dây phơi đồ tự thu khi trời mưa, băng tải chạy thời gian thực,..thì ta sẽ cần một loại motor khác có công suất cao hơn. Giải pháp đó chính là motor brushless hay còn gọi là motor không chổi than.

Bởi vì đây là loại motor khá mới mẻ nên mình sẽ viết riêng một bài giới thiệu về nó. Còn bây giờ mình cứ tạm hiểu nó sử dụng điện DC 3 pha và không có chổi than.

Vậy làm sao để điều khiển nó?

Nó có tới 3 dây trong khi module chỉ hỗ trợ 2 dây. Vậy làm sao? Chúng ta sẽ sử dụng một thiết bị mới gọi là ESC. ESC là điều tốc cho motor brushless, hoạt động bằng cách băm xung cho chân tín hiệu. Còn cấu tạo bên trong thế nào thì mình cũng không rõ.

Sơ đồ dây:

Bên phải: Gồm 3 dây nối với 3 dây motor. Chú ý: Nối dây ở giữa của ESC với dây ở giữa của motor, còn 2 dây còn lại không quan trọng. Bởi nếu đảo 2 dây ấy thì ta chỉ đổi chiều motor.

Bên trái: Gồm 2 dây to tướng là dây cấp nguồn công suất cho motor. Nhìn xem 3 dây bé tí kia khá giống 3 dây servo đúng không. Chuẩn rồi nó hoạt động và code lập trình khá giống với servo(Hoạt động cùng băm xung còn code thì lát nữa sẽ rõ). À quên, phải giới thiệu chức năng 3 dây này đã: Dây đen là cực âm, dây đỏ cho ra nguồn 5V, dây vàng là dây tín hiệu nối với arduino (Nối với chân PWM nha).

Thực hành

Chúng ta sẽ điều khiển tốc độ của motor bằng cách băm cho esc 1 xung dài từ 1ms-2ms. Như vậy 1ms được coi là mức LOW, 2ms được coi là mức HIGH nha.

Chuẩn bị

Lắp mạch

Các bạn lắp theo sơ đồ sau:

 

Code

Mình sẽ sử dụng ké thư viện servo nha. Giờ thì hiểu giống code ở đau chưa :D.

#include<Servo.h>
 
Servo ESC; 
 
int val; //Đọc biến trở
int vel; //Độ dài xung gửi cho ESc
 
void setup()
{
  ESC.attach(9);
}
 
void loop()
{
  val=analogRead(A5);
  vel=map(val,0,1023,1000,2000);
  ESC.writeMicroseconds(vel);
}

Các bạn nên ngắt kết nối nguồn của ESC khi thực hiện việc tải lên. Chỉ cần sau khi tải các chương trình thì kết nối lại pin.

Động cơ sẽ bíp khi ESC được kích hoạt . Sau đó, bạn có thể gửi các giá trị số nguyên giữa 1000 và 2000 để thay đổi tốc độ.

Kết thúc

Chúc các bạn thành công. Cảm ơn đã theo dõi. Nếu có thắc mắc gì thì cứ cmt nha.

lên
27 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

State Machine Với Arduino

   Xin chào các bạn! Hôm nay mình sẽ giới thiệu với các bạn một cách lập trình, quản lý code khá thú vị và mới lạ, đó chính là State Machine hay trạng thái máy. Đây là một cách thức lập trình cũng được sử dụng khá nhiều cho các hệ thống, phần mềm, máy móc trong thực tế. Dưới đây, mình chỉ viết những gì mình biết và tìm hiểu được nên có gì sai sót, mong các bạn đã biết về state machine hãy góp ý cho mình bên dưới phần comment để bài viết hoàn thiện hơn. Bắt đầu thôi!

lên
10 thành viên đã đánh giá bài viết này hữu ích.

Sự khác biệt giữa vi xử lý và vi điều khiển

Chào! Hôm nay mình sẽ giúp các bạn tìm hiểu sự khác biệt giữa vi điều khiển (VĐK) và vi xử lí (VXL). Để từ đó ta sẽ có cái nhìn tổng quát về 2 loại vi mạch này. Không dài dòng nữa, zô luôn nha.

lên
37 thành viên đã đánh giá bài viết này hữu ích.