Lập trình điều khiển Servo motor với board mạch Arduino

Đây là bài 17/17 bài của series môn học Lập trình Arduino cơ bản

1. Giới thiệu Servo motor

Servo motor là một dạng động cơ điện đặc biệt với góc quay nằm trong khoảng từ 0 – 180°. Servo motor thường dùng để đóng ngắt các hệ thống một cách tự động.

Servo motor

Bên trong một server motor.

Bên trong Servo motor

2. Thiết kế mạch điều khiển Servo motor với board Arduino

Mạch điều khiển Servo motor với Arduino gồm 1 board Arduino, 1 Servo motor, có thể thêm 1 biến trở để điều khiển góc quay của Servo motor.

Để Servo motor hoạt động, cần cấp nguồn cho Servo motor. Một chân của motor phải kết nối với một chân của Arduino có khả năng xuất xung PWM (~3, ~ 5, ~ 6, ~ 9, ~ 10, ~ 11) để chịu sự điều khiển của Arduino.

Sơ đồ Proteus Servo motor với Arduino

Có thể dùng thêm biến trở để điều khiển góc quay của Servo motor.

3. Chương trình điều khiển Servo motor

Điều khiển góc quay của Servo motor từ 0-180° và ngược lại

Để lập trình điều khiển Servo motor, chúng ta sử dụng thư viện <Servo.h>. Thư viện này đã được tích hợp sẵn trong Arduino IDE nên không cần cài đặt. Cần khai báo một đối tượng Servo để đại diện cho Servo motor kết nối với Arduino. Dùng hàm write() để gán góc quay cho Servo motor. Góc quay của Servo motor có giá trị trong khoảng từ 0 – 180.

#include <Servo.h>//Khai báo thư viện điều khiển Servo
Servo myservo;//Khai báo đối tượng Servo
int servoPin = 9;//Chân kết nối Servo với Arduino
void setup(){
  myservo.attach(servoPin);//Khai báo chân kết nối Servo với Arduino
}
void loop()
{
  for(int pos = 0; pos < 180; pos += 1){
    myservo.write(pos);//Gán góc quay cho Servo
    delay(15);
  }
  for(int pos = 180; pos>=1; pos-=1){
    myservo.write(pos);//Gán góc quay cho Servo
    delay(15);
  } 
}
Kết quả

Điều khiển góc quay của Servo motor bằng biến trở

Xem lại cách lập trình sử dụng biến trở trong bài Lập trình điều khiển DC motor với board mạch Arduino. Khi giá trị điện áp lấy ra từ biến trở thay đổi thì góc quay của Servo motor thay đổi.

#include <Servo.h>//Khai báo thư viện điều khiển Servo
Servo myservo;//Khai báo đối tượng Servo
int servoPin = 9;//Chân kết nối Servo với Arduino
int rv = A0;//Chân kết nối biến trở với Arduino
void setup(){
  myservo.attach(servoPin);//Khai báo chân kết nối Servo với Arduino
}
void loop()
{
  int value = analogRead(rv);//Đọc giá trị điện áp từ biến trở
  int pos = map(value,0,1023,0,180);//chuyển thang đo của value từ 0-1023 sang 0-180
  myservo.write(pos);//Gán góc quay cho Servo
}
Kết quả
5/5 - (2 bình chọn)
Bài trước và bài sau trong môn học<< Lập trình điều khiển DC motor với board mạch Arduino
Chia sẻ trên mạng xã hội:

2 bình luận về bài viết “Lập trình điều khiển Servo motor với board mạch Arduino

  1. Anh cho em hỏi là: Nếu động cơ bắt đầu chạy, nó tiến tới vị trí trung gian. Nếu bấm nút S1, động cơ sẽ quay theo nhịp về bên trái tất cả 45°. Nếu bấm nút S5, động cơ sẽ quay theo nhịp về bên phải tối đa 45°. Vẫn kết nối pin9 thì như nào ạ. Mong anh giúp

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.