Động cơ là một linh kiện được sử dụng rộng rãi, đó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.
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
Phân loại động cơ servo
Độ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 được 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 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 sẵn một thư viện để hỗ trợ việc điều khiển hoạt động của động cơ, ra lệnh cho động cơ làm theo mong muốn.
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:
- Servo khởi đầu ở góc 0°
- Xoay tới góc 90° và dừng lại trong 1s
- Xoay tới góc 180° và dừng lại 1s
- 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
#include <Servo.h> #define SERVO_PIN 9 Servo gServo; void setup() { gServo.attach(SERVO_PIN); } void loop() { gServo.write(0); delay(1000); gServo.write(90); delay(1000); gServo.write(180); delay(1000); }
- 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ọi SERVO_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ả.