Điều khiển động cơ bằng Arduino

Động cơ là một linh kiện được sử dụng rộng rãi và đóng vai trò vô cùng quan trọng trong việc chế tạo và vận hành robot. Động cơ có nhiều loại cũng như có rất nhiều biến thể khác nhau, và một trong số các biến thể đó là loại động cơ cho phép ta điều khiển tốc độ, góc quay .. hay nói khác đi cho phép ta ra lệnh điều khiển và thực thi lệnh đó một cách cực kì chính xác - đó chính là động cơ servo.

Trong giới hạn bài viết này, ta cùng tìm hiểu cách hoạt động của động cơ servo và cách lập trình hoạt động thông qua Arduino.

Tiền đề bài viết

Bài viết nằm trong chuỗi hướng dẫn xây dựng AI Robot. Tôi gọi dự án này là Cheryl Project.

Các bài viết khác về Arduino tại chuyên mục Arduino :: www.stdio.vn/articles/category/65/arduino củaStdio.vn :: www.stdio.vn.

Đối tượng hướng đến

Bài viết dành cho các bạn đã có kiến thức về lập trình C++ và nắm được cơ bản về cách sử dụng Arduino.

Thiết bị cần chuẩn bị

Bài viết này để thực hiện được, bạn đọc cần chuẩn bị các thiết bị sau:

  • 1 x Arduino Uno R3
  • 1 x Servo Motor Tower Pro MG90S hay tương đương.

Động cơ servo

Như đã đề cập bên trên, động cơ servo là loại động cơ cho phép ta điều khiển một cách cực kì chính xác. Vì vậy, khác với động cơ thông thường ta chỉ cần cấp nguồn cho động cơ là có thể vận hành được. Động cơ servo yêu cầu ta phải cấp nguồn (2 dây) và nhận điều khiển từ mạch chính (1 dây), mỗi dây thường được đánh màu như sau:

  • Đỏ: nhận điện nguồn, tuỳ vào loại động cơ mà giá trị này có thể khác nhau
  • Đen: nối với cực âm của mạch
  • Vàng: nhận tín hiệu từ mạch điều khiển

Động cơ servo cũng được chia làm nhiều loại, phụ thuộc vào góc quay tối đa của chúng. 2 loại phổ biến ta hay sử dụng là:

  • Động cơ servo quay 180°: Futaba S3003, MG90[S] ...
  • Động cơ servo quay 360°: MG995, MG996R ...

Lắp đặt động cơ

Động cơ servo tôi sử dụng trong bài viết này là loại Tower Pro MG90S. Động cơ này quay được 180° (trái 90° và phải 90°).

Dựa theo nguyên lý đã trình bày ở trên, ta lắp đặt động cơ theo sơ đồ sau:

  • Dây vàng nối với PIN 9 hay các PIN PWM tương đương (những PIN có kí hiệu ~ ở trước)
  • Dây đỏ nối với nguồn 5V
  • Dây đen nối vào chân âm

Mạch sau khi hoàn tất việc lắp đặt:

Lập trình điều khiển

Arduino cung cấp cho ta sẵn một thư viện để hỗ trợ việc điều khiển hoạt động của động cơ. Nhờ có thư viện này, ta có thể dễ dàng ra lệnh cho động cơ làm theo ý của mình.

Ta sẽ minh hoạ việc sử dụng thư viện này để lập trình cho Arduino điều khiển servo như sau

  1. Servo khởi đầu ở góc 0°
  2. Xoay tới góc 90° và dừng lại trong 1s
  3. Xoay tới góc 180° và dừng lại 1s
  4. Trở về góc 0° và lặp lại quá trình này

Đoạn code thực hiện công việc

  1. #include <Servo.h>
  2. #define SERVO_PIN 9
  3. Servo gServo;
  4.  
  5. void setup()
  6. {
  7. gServo.attach(SERVO_PIN);
  8. }
  9. void loop()
  10. {
  11. gServo.write(0);
  12. delay(1000);
  13.  
  14. gServo.write(90);
  15. delay(1000);
  16.  
  17. gServo.write(180);
  18. delay(1000);
  19. }

Dòng 1: khai báo với hệ thống là trong chương trình ta có sử dụng thư viện servo

Dòng 3: do ở đây ta sử dụng PIN 9 để điều khiển servo, vì vậy tôi đặt một hằng số với tên gọiSERVO_PIN có giá trị là 9

Dòng 5: khai báo đối tượng gServo, từ nay servo của chúng ta sẽ được điều khiển qua đối tượng này

Dòng 9: servo của ta sẽ điều khiển động cơ ở SERVO_PIN.

Dòng 11, 17, 20: điều chỉnh góc xoay của servo.

Tiến hành biên dịch và upload code lên Arduino, nếu mọi thứ chính xác thì ta sẽ có được động cơ servo hoạt động giống như mô tả.