Arduino Động cơ servo
Trong bài hướng dẫn này, chúng ta sẽ học cách sử dụng động cơ servo với Arduino. Cụ thể, chúng ta sẽ học:
- Cách hoạt động của động cơ servo
- Cách lập trình Arduino để điều khiển động cơ servo
- Cách lập trình Arduino để điều khiển tốc độ của động cơ servo
- Cách cấp nguồn phụ cho động cơ servo có mô-men xoắn cao
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | động cơ servo | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Giới thiệu về động cơ servo
Động cơ servo là một thành phần có thể quay trục (thường từ 0° đến 180°). Nó được dùng để điều khiển vị trí góc của một vật thể.
Bản đồ chân
Động cơ servo được sử dụng trong ví dụ này có ba chân:
- Chân VCC: (thông thường màu đỏ) cần được kết nối với VCC (5V)
- Chân GND: (thông thường màu đen hoặc nâu) cần được kết nối với GND (0V)
- Chân tín hiệu: (thông thường màu vàng hoặc cam) nhận tín hiệu điều khiển PWM từ một chân của Arduino.

Cách hoạt động
Sau khi kết nối chân VCC và chân GND tới 5V và 0V tương ứng, chúng ta có thể điều khiển động cơ servo bằng cách sinh tín hiệu PWM phù hợp tới chân tín hiệu.
Góc được xác định bởi độ rộng xung PWM.
Bảng đặc tính của động cơ servo cung cấp cho chúng ta các tham số sau:
- Chu kỳ PWM (PERIOD)
- Độ rộng tối thiểu của PWM (WIDTH_MAX)
- Độ rộng tối đa của PWM (WIDTH_MIN)
Các tham số này được cố định trong thư viện Servo của Arduino. Chúng ta KHÔNG cần biết giá trị của các tham số.
Góc được xác định như sau:
- Nếu độ rộng PWM bằng WIDTH_MIN, động cơ servo quay về 0°.
- Nếu độ rộng PWM bằng WIDTH_MAX, động cơ servo quay về 180°.
- Nếu độ rộng PWM nằm giữa WIDTH_MIN và WIDTH_MAX, động cơ servo quay tới góc từ 0° đến 180° theo tỷ lệ.

Arduino - Động cơ Servo
Một số chân của Arduino có thể được lập trình để tạo tín hiệu PWM. Chúng ta có thể điều khiển động cơ servo bằng cách kết nối chân tín hiệu của động cơ servo với một chân của Arduino và lập trình để tạo tín hiệu PWM trên chân của Arduino.
Nhờ thư viện Servo của Arduino (Arduino Servo library), việc điều khiển động cơ servo trở nên dễ như ăn bánh. Thậm chí chúng ta còn KHÔNG CẦN biết cách hoạt động của động cơ servo. Chúng ta cũng KHÔNG CẦN biết cách tạo tín hiệu PWM. Chúng ta chỉ CẦN học cách sử dụng thư viện.
Sơ đồ đấu dây
Bạn có thể gặp các sơ đồ mạch trên mạng mô tả một kết nối từ chân VCC của động cơ servo trực tiếp tới chân 5V của bảng Arduino, như hình dưới đây. Mặc dù cách tiếp cận này có thể hoạt động, nó được khuyến cáo không nên làm vì nguy cơ làm hỏng bảng Arduino.

This image is created using Fritzing. Click to enlarge image
Thay vào đó, để bảo vệ bảng Arduino của bạn, chúng tôi mạnh mẽ khuyến nghị sử dụng nguồn cấp ngoài cho động cơ servo. Sơ đồ nối dưới đây minh họa cách kết nối động cơ servo với nguồn cấp ngoài.

This image is created using Fritzing. Click to enlarge image
Vui lòng đảm bảo bạn kết nối GND của nguồn cung cấp bên ngoài với GND của bo mạch Arduino. Đừng bỏ qua bước quan trọng này để vận hành đúng.
Cách Lập Trình Cho Động Cơ Servo
- Bao gồm thư viện:
- Khai báo một đối tượng Servo:
Nếu bạn điều khiển nhiều động cơ servo, bạn chỉ cần khai báo thêm các đối tượng Servo.
- Thiết lập chân điều khiển của Arduino, nối với chân tín hiệu của động cơ servo. Ví dụ, chân 9:
- Cuối cùng, xoay góc của động cơ servo đến góc mong muốn. Ví dụ, 90°:
Mã Arduino
Hướng dẫn từng bước
- Kết nối Arduino với máy tính qua cáp USB
- Mở Arduino IDE, chọn board và cổng đúng
- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino

- Xem kết quả: Động cơ servo quay chậm từ 0 jusqu đến 180° và sau đó quay ngược từ 180° về 0°
Giải thích mã nguồn
Bạn có thể tìm lời giải thích ở dòng chú thích của mã Arduino ở trên.
Cách điều khiển tốc độ của động cơ servo
Thông qua việc sử dụng map() và millis(), chúng ta có thể điều khiển tốc độ của động cơ servo một cách mượt mà mà không làm chậm các đoạn mã khác
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.
Thử thách bản thân
Sử dụng động cơ servo để thực hiện một trong các dự án sau:
- Điều khiển vị trí của động cơ servo bằng một biến trở. Gợi ý: Tham khảo Arduino - Biến trở.
- Tự động mở/đóng thùng rác. Gợi ý: Tham khảo Arduino - Cảm biến siêu âm.
Kiến thức bổ sung
- Thư viện Servo hỗ trợ tối đa 12 động cơ trên Arduino UNO và 48 động cơ trên Arduino Mega.
- Nguồn từ pin 5V của Arduino có thể KHÔNG đủ cho động cơ servo trong một số trường hợp sau:
- Sử dụng một động cơ servo có mô-men xoắn cao, có thể nâng một vật nặng.
- Sử dụng nhiều động cơ servo.
- Không kết nối chân dương của nguồn cấp phụ vào chân 5V của Arduino.
- Phải kết nối chân âm của nguồn cấp phụ với chân GND của Arduino.
Trong các trường hợp này, chúng ta có thể cần cung cấp nguồn cấp điện bổ sung cho động cơ servo.

This image is created using Fritzing. Click to enlarge image
Như chúng ta có thể thấy trong sơ đồ ở trên, chân VCC của động cơ servo không kết nối với chân 5V của Arduino. Nó kết nối với chân dương của một nguồn cấp điện bổ sung.
Xin lưu ý rằng: