Servo là gì? Cách điều khiển Servo SG90
5 phút đọc30/04/2024Phạm Gia Huy

Tìm hiểu cấu tạo, nguyên lý và cách điều khiển servo với Arduino. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.
Servo là gì? Cách điều khiển Servo SG90
Cấu tạo servo
Servo = Motor DC + Hộp số + Encoder vị trí (biến trở)
- Motor DC cung cấp lực xoay
- Hộp số giảm tốc, tăng moment xoắn
- Biến trở đo góc hiện tại và phản hồi về mạch điều khiển
- IC điều khiển so sánh vị trí mong muốn và thực tế, điều chỉnh motor
SG90 — thông số kỹ thuật
| Thông số | Giá trị |
|---|---|
| Điện áp | 4.8–6V |
| Moment xoắn | 1.8 kg·cm @ 4.8V |
| Tốc độ | 0.1s/60° @ 4.8V |
| Góc quay | 0° – 180° |
| Kết nối | 3 dây: VCC (đỏ), GND (nâu), Signal (cam/vàng) |
| Khối lượng | 9g |
Nguyên lý điều khiển PWM
Servo đọc tín hiệu PWM 50Hz (20ms/chu kỳ):
- 1ms pulse width → 0°
- 1.5ms pulse width → 90° (trung tâm)
- 2ms pulse width → 180°
Kết nối với Arduino
| Servo | Arduino |
|---|---|
| Dây đỏ (VCC) | 5V (nguồn riêng nếu > 1 servo) |
| Dây nâu (GND) | GND |
| Dây cam/vàng (Signal) | Pin PWM (3, 5, 6, 9, 10, 11) |
Code Servo.h cơ bản
cpp
#include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9); // kết nối với pin 9
myServo.write(0); // về vị trí 0°
delay(500);
}
void loop() {
myServo.write(0); delay(1000);
myServo.write(90); delay(1000);
myServo.write(180); delay(1000);
myServo.write(90); delay(1000);
}Điều khiển nhiều servo cùng lúc
cpp
#include <Servo.h>
Servo s1, s2, s3;
void setup() {
s1.attach(6);
s2.attach(7);
s3.attach(8);
// Home position
s1.write(90); s2.write(90); s3.write(90);
delay(1000);
}
void wave() {
for (int angle = 0; angle <= 180; angle += 5) {
s1.write(angle);
s2.write(180 - angle);
s3.write(angle);
delay(20);
}
}
void loop() { wave(); }Lưu ý quan trọng
- Nguồn điện: mỗi servo cần tối đa 600mA. Arduino 5V chỉ cung cấp 500mA tổng — dùng nguồn ngoài nếu > 1 servo
- Không ép cơ học: cầm tay giữ horn khi servo đang chạy sẽ làm hỏng hộp số
- Góc an toàn: dùng 10°–170° thay vì 0°–180° để tránh cơ cấu kẹt cứng
Gợi ý dùng bài viết trong lớp học
Câu hỏi khởi động
- Linh kiện/kỹ thuật trong bài giải quyết vấn đề gì trong robot thật?
- Nếu nối sai nguồn hoặc đọc sai tín hiệu, robot sẽ biểu hiện như thế nào?
- Có cách nào đo hoặc quan sát hiện tượng thay vì đoán lỗi không?
Hoạt động thực hành nhanh
- Giáo viên cho học viên xem linh kiện hoặc sơ đồ liên quan đến chủ đề Servo là gì? Cách điều khiển Servo SG90.
- Học viên dự đoán chân nguồn, chân tín hiệu và dữ liệu đầu ra.
- Chạy code mẫu ở cấu hình an toàn, sau đó thay đổi một tham số.
- Mỗi nhóm ghi nhận lỗi gặp phải và cách kiểm tra theo thứ tự nguồn, GND, tín hiệu, code.
Checklist kỹ thuật
- Luôn kiểm tra điện áp hoạt động trước khi nối với board điều khiển.
- In dữ liệu ra Serial Monitor khi làm việc với cảm biến hoặc thuật toán.
- Với motor/servo, cấp nguồn tải riêng và nối chung GND với board.
- Ghi lại thông số đã calibration để lần sau không phải chỉnh lại từ đầu.
Câu hỏi ôn tập
- Thông số nào quan trọng nhất khi chọn linh kiện này cho robot?
- Lỗi nào dễ xảy ra nhất trong lớp học và cách phát hiện nhanh nhất là gì?
- Có thể mở rộng kiến thức này thành dự án robot nào?
Tài nguyên tải về
Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.
Chia sẻ bài viết