Cơ khí & Servo

Servo là gì? Cách điều khiển Servo SG90

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

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ở)

  1. Motor DC cung cấp lực xoay
  2. Hộp số giảm tốc, tăng moment xoắn
  3. Biến trở đo góc hiện tại và phản hồi về mạch điều khiển
  4. 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 áp4.8–6V
Moment xoắn1.8 kg·cm @ 4.8V
Tốc độ0.1s/60° @ 4.8V
Góc quay0° – 180°
Kết nối3 dây: VCC (đỏ), GND (nâu), Signal (cam/vàng)
Khối lượng9g

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

ServoArduino
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

  1. 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.
  2. Học viên dự đoán chân nguồn, chân tín hiệu và dữ liệu đầu ra.
  3. Chạy code mẫu ở cấu hình an toàn, sau đó thay đổi một tham số.
  4. 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.

Tải PDF
Chia sẻ bài viết

Mục lục bài viết

Tác giả

P

Phạm Gia Huy

Kỹ sư điện tử & Lập trình viên

Thực hành với bộ kit robot

Tự tay lắp ráp và lập trình robot với bộ kit từ Học Lập Trình Robot!

Xem bộ kit