Servo được sử dụng khá nhiều trong các hệ thống làm nhiệm vụ điều khiển vị trí hoặc góc quay của thiết bị. Servo thực chất là một động cơ DC với hệ thống bánh răng đặc biệt giúp nó có thể được điều khiển chính xác góc quay. Trong bài này chúng ta làm quen với việc sử dụng Servo.
Servo có 3 dây: 2 dây cấp nguồn & 1 dây tín hiệu. Thông thường chúng được đánh dấu theo màu: đỏ và đen để cấp nguồn; vàng cam hoặc xanh cho tín hiệu. Có thể sử dụng lối ra 5V trên bo Arduino để nuôi servo.
Theo sơ đồ, nối dây tín hiệu vào chân số 9. Hoặc bất cứ chân nào được đánh dấu (~) phía trước, nó cho phép cung cấp xung PWM nhưng cần chú ý sửa số chân tương ứng trong chương trình.
Mạch thứ nhất sử dụng một biến trở để điều khiển góc quay của Servo.
Biến trở được nối sao cho chân giữa (cầu phân áp) được nối vào chân A0 trên bo Arduino.
Chương trình ví dụ
#include <Servo.h> // Nạp thư viện cần thiết Servo myservo; // khởi tạo từ thư viện int potpin = 0; // chân 0 nối đến biến trở int val; // biến lưu giá trị void setup() { myservo.attach(9); // chân điều khiển servo } void loop() { val = analogRead(potpin); // đọc giá trị 0-1023 val = map(val, 0, 1023, 0, 180); // chuyển về góc 0-180 myservo.write(val); // quay servo delay(15); // chờ servo di chuyển }
Mạch thứ hai điều khiển góc quay servo qua tín hiệu nhận được từ máy tính. Tùy loại servo mà góc quay được điều chỉnh cho phù hợp. Trong ví dụ này, servo có góc quay từ 0 –> 180 độ
#include <Servo.h> Servo myservo; int potpin = 0; int val; void setup() { myservo.attach(9); Serial.begin(9600); } void loop() { if(Serial.available()) { val = Serial.parseInt(); // chuyển về dạng số myservo.write(val); Serial.println(val); delay(150); } }