Chuyên đề arduino – Điều khiển động cơ DC bằng arduino

     Điều khiển động cơ DC là một trong những ứng dụng thường được sử dụng trong các bài lập trình arduino. Động cơ DC sử dụng rất nhiều trong các robot, hay ứng dụng chuyển động. Bài viết này hướng dẫn cho các bạn cách điều khiển động cơ DC bằng phương pháp trực tiếp bằng xung PWM.

 NỘI DUNG BÀI VIẾT  

  • Động cơ dc là gì?
  • Cấu tạo và nguyên lý hoạt động của động cơ DC
  • Cách điều khiển động cơ DC
  • Ứng dụng điều khiển động cơ DC

 1.  ĐỘNG CƠ DC LÀ GÌ? 

     Động cơ DC là động cơ sử dụng nguồn điện 1 chiều để điều khiển. Khi có nguồn điện 1 chiều cấp cho động cơ thì động cơ sẽ quay. Đầu dây ra của động cơ này thường gồm có hai dây (dây nguồn Vcc và dây GND). DC motor là một loại động cơ một chiều với động cơ quay liên tục. Hầu hết những động cơ DC cũng sẽ quay với tốc độ cao. Tốc độ không tải của động cơ DC nếu như không giảm tốc thì có thể đạt từ 1000RPM đến 40.000RPM.

Động cơ DC

 

  2. CẤU TẠO ĐỘNG CƠ DC 

Cấu tạo động cơ DC

 

     Gồm có 3 phần chính đó là rotor (phần ứng), stato (phần cảm) và phần cổ góp – chỉnh lưu.

  • Stator của động cơ điện 1 chiều thường sẽ là 1 hoặc nhiều những cặp nam châm vĩnh cửu, hoặc là nam châm điện.
  • Rotor có những cuộn dây quấn và được nối với những nguồn điện một chiều.
  • Bộ phận chỉnh lưu có nhiệm vụ là đổi chiều của dòng điện trong khi chuyển động quay của roto là liên tục. Thông thường thì bộ phận này gồm có một bộ cổ góp và một bộ chổi than để tiếp xúc với cổ góp.

     Động cơ là một thiết bị tạo ra chuyển động quay liên tục 360°. Có nhiều loại động cơ nhưng động cơ motor là một trong những loại động cơ được sử dụng phổ biến nhất. Bởi vì động cơ DC điều khiển dễ dàng và có thể kiểm soát được tốc độ.

    Chỉ cần cấp nguồn dương (+) vào chân dương và nguồn âm (-) vào chân âm cho DC motor thì nó sẽ tự động quay liên tục 360°. Nếu cấp các nguồn dương và âm vào các chân ngược lại thì động cơ sẽ quay theo chiều ngược lại.

 3. CÁCH ĐIỀU KHIỂN ĐỘNG CƠ DC 

     Để điều khiển động cơ DC bằng arduino chúng ta có thể thực hiện điều khiển trực tiếp bằng các chân xung PWM. Tín hiệu PWM sẽ điều khiển được tốc độ động cơ DC bằng cách thay đổi điện áp trung bình trên xung PWM. Các bạn có thể xem lại bài viết về xung PWM trong chuỗi bài về arduino này.

     Ngoài cách điều khiển trực tiếp động cơ bằng xung PWM. Các bạn có thể điều khiển bằng module điều khiển động cơ L298N. Để điều khiển động cơ qua module L298N tôi sẽ có bài hướng dẫn khác.

     Trong bài viết này tôi hướng dẫn cho các bạn sử dụng các chân PWM (~3, ~5, ~6, ~9, ~10, ~11) để điều khiển động cơ DC. Các chân này khi cần điều khiển các bạn phải sử dụng analogWrite() để xuất tín hiệu. Và bạn cần lưu ý rằng, các giá trị sử dụng cho lệnh này là giá trị định danh. Ví dụ như để điều khiển tốc độ tăng dần, các bạn có thể sử dụng xung PWM ở các mức 25%, 50%, 75%, 100% với các giá trị định danh là 63, 127, 191, 255.

 4. ỨNG DỤNG ĐIỀU KHIỂN ĐỘNG CƠ DC 

   4.1 Chương trình điều khiển động cơ độc lập

  Viết chương trình điều khiển động cơ DC bằng cách xuất dữ liệu từ arduino. Tín hiệu điều khiển được thực hiện trực tiếp thông qua các chân xung PWM.

    Các linh kiện cần thiết

Linh kiện Số lượng
Bo arduino UNO 01
Động cơ 1 chiều 01

   Sơ đồ kết nối phần cứng

Điều khiển động cơ DC bằng xung PWM

   Đoạn code chương trình 

int Motor =10;

void setup(){
  pinMode(Motor, OUTPUT);
}

void loop(){
  analogWrite(Motor, 255);
  delay(10000); 
}

     Trong ví dụ này, tôi chỉ hướng dẫn cho các bạn cách xuất tín hiệu PWM để điều khiển động cơ DC. Do vậy chúng ta chỉ cần thay đổi giá trị định danh cho hàm analogWrite() mà thôi. Giá trị định danh thay đổi từ 0 đến 255 sẽ điều khiển tốc độ động cơ tăng dần.

4.2 Chương trình điều khiển động cơ có sử dụng biến trở điều khiển tốc độ

     Với chương trình sử dụng biến trở để điều khiển động cơ sẽ thường sử dụng nhiều trong thực tế. Vì khi người dùng muốn thay đổi tốc độ chỉ cần vặn biến trở là được. Và phương pháp thực hiện cũng rất đơn giản. Các bạn chỉ cần đọc giá trị từ biến trở từ đó xuất xung PWM tương ứng lên cho động cơ là được.

     Tuy nhiên, tôi cần lưu ý cho các bạn là thanh ghi mà arduino định nghĩa đọc dữ liệu từ biến trở là thanh ghi 10 bit. Còn thanh ghi để sử dụng cho các chân xuất xung PWM là thanh ghi 8 bit. Điều này sẽ ảnh hương trực tiếp đến việc tính toán giá trị định danh cho 2 thanh ghi là khác nhau.

     Bởi vì, thanh ghi đọc dữ liệu của biến trở có giá trị định danh tương ứng 5V là 1023. Còn giá trị định danh cho chân xuất xung PWM ở 5V là 255. Do vậy, chúng ta không thể đọc giá trị từ biến trở mà gán trực tiếp ngay cho chân xuất PWM được. Chúng ta cần tính toán lại giới hạn giá trị định danh. Và trong arduino đã định nghĩa sẵn cho các bạn một hàm để thay đổi nhanh chóng cho việc này. Đó là hàm map().

    Cú pháp:     map(<Giá trị định danh cần chuyển đổi>,<Giới hạn thấp nhất ban đầu>,<Giới hạn cao nhất ban đầu>,<Giới hạn thấp nhất chuyển đến>,<Giới hạn cao nhất chuyển đến>);

     Ví dụ: bạn cần chuyển giá trị định danh 175 từ thanh ghi 10 bit ( từ 0 đến 1023) sang thanh ghi 8 bit (từ 0 đến 255) thì các bạn có công thức như sau:

     map(175, 0 , 1023 , 0 , 255); 

     Các linh kiện cần thiết

Linh kiện Số lượng
Bo arduino UNO 01
Động cơ 1 chiều 01
Biến trở 01

   Sơ đồ kết nối phần cứng

   

      Đoạn code chương trình

int Motor =10;
int btro = A0;
int giatri1, giatri2;

void setup(){
  pinMode(Motor, OUTPUT);
}

void loop(){
  giatri1= analogRead(btro);
  giatri2=map(giatri1, 0, 1023, 0, 255);
  analogWrite(Motor, giatri2);
  delay(10000); 
}

     Trong ví dụ này, các bạn có thể thấy rằng giatri1 chính là giá trị định danh đọc từ biến trở. Chúng ta phải dùng lệnh map() để chuyển thành giatri2. Từ biến giatri2 chúng ta mới có thể xuất ra lệnh PWM cho động cơ DC.

 

 


Categories:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *