3 mạch điều khiển vị trí và đảo chiều động cơ RC servo với arduino

Tìm hiểu về 3 sơ đồ mạch điều khiển đảo chiều và vị trí của động cơ RC servo. Cấu tạo và cách hoạt động của loại động cơ này?

Cấu tạo và nguyên lý hoạt động của động cơ RC servo

Cấu tạo của động cơ RC servo

Động cơ RC servo có cấu tạo một động cơ điện, biến áp, mạch điện tử và hộp số. Biến áp được gắn với trục đầu ra của động cơ để xác định vị trí của góc quay thực tế. Sau đó so sánh với vị trí mục tiêu do bộ điều khiển cài đặt. Trong bài viết này sẽ sử dụng bộ điều khiển là Arduino UNO R3.

cấu tạo của rc servo motor

Cấu tạo của động cơ RC Servo

Mạch điện tử dựa xác định vị trí thực tế của trục đầu ra để điều khiển trục quay đến vị trí đặt trước. Do đó đây là một hệ thông điều khiển vòng kín.

Hộp số động cơ sử dụng có tỉ số truyền giảm để làm tăng moment cho trục đầu ra. Do đó điều này cũng đồng thời làm giảm tốc độ đầu ra của trục khoảng 60 RPM.

Nguyên lý hoạt động của động cơ RC servo

Động cơ servo được điều khiển bằng việc gửi tín hiệu xung PWM đến chân tín hiệu của RC Servo. Độ rộng của xung PWM xác định vị trí của trục đầu ra. Góc quay tối thiểu của động cơ RC servo là 0 độ và tối đa là 180 độ.

Động cơ hoạt động với tốc độ trung bình khi sau 20ms xuất hiện một xung vuông. Nếu thay đổi thời gian xuất hiện xung này có thể điều chỉnh được tốc độ của động cơ. Tuy nhiên nếu tần số xung quá nhỏ hoặc quá lớn sẽ dẫn đến động cơ không đáp ứng được.

Động rộng của xung xác định góc quay của động cơ. Ví dụ với độ rộng xung 1,5ms động cơ quay 90 độ, độ rộng 1ms thì động cơ quay ngược về vị trí 0 độ. Độ rộng xung 2ms động cơ quay đến vị trí 180 độ (hình bên dưới).

Mytranshop.com khuyên bạn nên xem:  Nguyên lý của 2 sơ đồ mạch điện chạy luân phiên 2 timer và 1 timer

nguyên lý hoạt động của rc servo motor

Khi động cơ servo nhận được lệnh di chuyển sẽ quay đến vị trí và giữ tại vị trí đó. Nếu một lực bên ngoài tác động có xu hướng làm thay đổi vị trí trục, thì động cơ chống lại sự di chuyển đó với moment xoắn định mức. Tuy nhiên động cơ không giữ được vị trí đó mãi, do đó xung điều khiển vị trí phải được lặp lại để động cơ quay về vị trí.

3 mạch điều khiển đảo chiều và vị trí động cơ RC servo

1. Điều khiển góc quay của động cơ RC servo

+ Sơ đồ đấu dây:

Kết nối chân điều khiển của động cơ với chân 9 của Arduino. Mạch bên dưới sử dụng nguồn 5V bên ngoài để cấp cho động cơ, cần lưu ý kết nối GND của Arduino với GND của nguồn.

điều khiển góc quay động cơ servo

Điều khiển góc quay của đông cơ servo

+ Chương trình Arduino

Chương trình Arduino dưới đây điều khiển động cơ servo quay một góc đến vịt trí 90 độ, sau đó dừng 1s. Tiếp theo quay thêm một góc 90 độ để đến vị trí 180 độ, sau đó dừng 1s. Cuối cùng động cơ sẽ quay một góc 180 độ theo chiều ngược lại để về vị trí 0 độ và chu kỳ được lặp lại.

Để đơn giản cho việc lập trình thì ta sử dụng thư viện Servo.h. Việc thay đổi thời gian của xung điều khiển đã được quy đổi về giá trị góc quay với thư viện Servo.h

/* Điều khiển góc quay động cơ RC servo */

#include <Servo.h>

Servo myservo;  // Định nghĩa 1 đối tượng servo mới

#define servoPin 9 // định nghĩa chân 9 là chân điều khiển servo

void setup() {

  myservo.attach(servoPin);// Liên kết đối tượng Servo đã tạo với chân điều khiển

}

void loop() {

  myservo.write(90); // Điều khiển động cơ quay đến góc 90 độ

  delay(1000); // Dừng lại 1 s

  myservo.write(180); // Động cơ quay đến vị trí 180 độ

  delay(1000);

  myservo.write(0); // Động cơ quay về vị trí 0 độ

  delay(1000);

 }

2. Điều khiển đảo chiều, vị trí, tốc độ động cơ RC servo

+ Sơ đồ kết nối

Mytranshop.com khuyên bạn nên xem:  3 sơ đồ, nguyên lý mạch đảo chiều sao tam giác.

Hình bên dưới là sơ đồ kết nối Arduino với động cơ servo. Ở đây ta vẫn sử dụng chân điều khiển kết nối với chân 9. Nhưng giả sử động cơ cần điều khiển có công suất nhỏ nên có thể dùng nguồn của Arduino cấp nguồn cho động cơ. Ta cần biết dòng cấp lớn nhất của chân 5V của Arduino có thể lên đến 500mA.

điều khiển đảo chiều và vị trí động cơ rc servo

Sơ đồ kết nối RC servo motor với Arduino Uno R3

+ Chương trình Arduino

Chương trình dưới đây có chức năng điều khiển đảo chiều, vị trí và tốc độ động cơ servo. Động cơ quay một cách từ từ, từ vị trí 0 về vị trí 180 độ. Sau đó tiếp tục từ từ theo chiều ngược lại từ vị trí 180 độ về vị trí 0. Tốc độ giữa 2 lần quay là khác nhau do thời gian xuất hiện giữa các xung PWM là khác nhau.

/* Chương trình cho mạch điều khiển vị trí và đảo chiều quay động cơ rc servo*/

#include <Servo.h>

Servo myservo;

#define servoPin 9 // Kêt nối chân 9 arduino

int angle = 0; // Định nghĩa góc cần quay

void setup() {n:

  myservo.attach(servoPin); // liên kết với chân điều khiển

}

void loop() {

   // Động cơ quay từ vị trí 0 đến vị trí 180 độ với tốc độ chậm

  for (angle = 0; angle <= 180; angle += 1) {

    myservo.write(angle);

    delay(30);

  }

  // Động cơ quay từ vị trí 180 độ về 0 với tốc độ nhanh hơn

  for (angle = 180; angle >= 0; angle -= 1) {

    myservo.write(angle);

    delay(15);

  }

  delay(2000);

}

Video tham khảo thực tế

3. Điều khiển vị trí, đảo chiều động cơ rc servo với biến trở

+ Sơ đồ kết nối

Mạch bên dưới sử dụng biến trở để làm nguồn tham chiếu cho góc quay của động cơ. Arduino đọc giá trị biến trở tại chân A0, sau đó chuyển sang giá trị PWM tương ứng tại chân 9 để điều khiển động cơ.

Mytranshop.com khuyên bạn nên xem:  4 loại công tắc wifi Sonoff bán chạy nhất và hướng dẫn sử dụng

điều khiển đảo chiều và vị trí động cơ servo dùng biến trở

Sơ đồ điều khiển vị trí, đảo chiều động cơ rc servo với biến trở

    + Chương trình trên Arduino

Chương trình dưới đây được viết với nhiệm vụ thay đổi vị trí, đảo chiều động cơ rc servo khi ta vặn biến trở. Arduino đọc giá trị điện áp từ biến trở, sau đó quy đổi thành góc quay tham chiếu. Sau đó Arduino xuất xung PWM để điều khiển động cơ quay đến vị trí tham chiếu.

/* Điều khiển vị trí động cơ với góc quay tham chiếu từ biến trở*/

#include <Servo.h> // Thư viện điều khiển động cơ servo

#define servoPin 9 // Chân điều tín hiệu của động cơ kết nối chân 9 arduino

#define potPin A0 // Kết nối biến trở với chân A0 của arduino

int angle = 0; // tạo biến thay đổi góc quay

int reading = 0; // Biến lưu giá trị đọc được từ biến trở

Servo myservo; // Tạo một đối tượng Servo mới

void setup() {

  myservo.attach(servoPin); // Liên kết đối tượng Servo với chân điều khiển

}

void loop() {

  reading = analogRead(potPin); // đọc và lưu giá trị điện áp từ biến trở

  angle = map(reading, 0, 1023, 0, 180); // chuyển đổi giá trị đọc được từ biến trở thành góc quay từ 0 – 180

  myservo.write(angle); // Điều khiển động cơ quay đến vị trí tham chiếu từ biến trở

  delay(15); // Chờ 15ms để động cơ quay đến vị trí mong muốn trước khi xuât xung điều khiển tiếp theo

}

Tham khảo video thực tế

>>> Xem thêm:

4 loại contactor 3 pha thông dụng nhất – nên sử dụng loại nào

TOP 6 mạch điều khiển tốc độ động cơ 3 pha – ưu nhược điểm từng mạch

3 mạch điều khiển sao tam giác và đảo chiều động cơ dùng timer và PLC

Bài viết tham khảo

How servo motors work – Jameco.com

Servo Arduino tutorials – Makerguides.com

Leave a Comment