Cách điều khiển động cơ Servo với Arduino

Cach Dieu Khien Dong Co Servo Voi Arduino



Động cơ Servo là một loại thiết bị điện có thể thay đổi hoặc xoay vị trí của một vật thể với độ chính xác cao. Ban đầu, chúng được sử dụng để điều khiển cánh máy bay RC, sau đó chúng được sử dụng để chế tạo robot, robot hình người và nhiều dự án tự động hóa. Không giống như động cơ bước, chuyển động của chúng bị giới hạn trong khoảng 0o đến 180o.

Thông thường, động cơ servo có cánh tay có thể được điều khiển bằng Arduino. Động cơ servo bao gồm một hệ thống điều khiển cung cấp Phản hồi về vị trí hiện tại của trục động cơ phản hồi này cho phép di chuyển với độ chính xác cao.

Sơ đồ chân của động cơ Servo

Thông thường, hầu hết các động cơ servo có ba chân:







  • Pin Vcc (Thông thường 5V màu đỏ)
  • Pin GND (Thông thường màu đen 0V)
  • Chân tín hiệu đầu vào (Nhận tín hiệu PWM từ Arduino)



Hoạt động của động cơ Servo

Chúng ta có thể điều khiển động cơ servo bằng cách kết nối chân Vcc với 5V và chân GND với 0V. Trên thiết bị đầu cuối màu vàng, chúng tôi cung cấp PWM tín hiệu điều khiển góc quay của động cơ servo. Chiều rộng của tín hiệu PWM cho chúng ta biết góc mà động cơ sẽ quay cánh tay đòn của nó.



Nếu chúng ta xem xét Datasheet của động cơ servo, chúng ta nhận được các thông số sau:





  • Khoảng thời gian tín hiệu PWM
  • Chiều rộng tối thiểu cho PWM
  • Chiều rộng tối đa cho PWM

Tất cả các thông số này được xác định trước trong thư viện Arduino Servo.

Động cơ Servo với Arduino

Động cơ servo siêu dễ điều khiển với Arduino, nhờ vào Thư viện Servo điều này giúp chúng tôi tùy chỉnh mã của mình theo nhu cầu và cho phép chúng tôi xoay cánh tay servo ở góc mong muốn.



Tất cả ba Tham số được đề cập ở trên đều được cố định trong thư viện Servo. Bằng cách sử dụng các thông số này, chúng ta có thể điều khiển góc của động cơ servo theo cách sau:

  • Nếu độ rộng tín hiệu PWM = WIDTH_MAX, servo sẽ xoay đến 180o
  • Nếu độ rộng tín hiệu PWM = WIDTH_MIIN, servo sẽ xoay về 0o
  • Nếu độ rộng tín hiệu PWM nằm giữa WIDTH_MAX và WIDTH_MIN , động cơ servo sẽ quay trong khoảng từ 0o đến 180o

Chúng tôi có thể tạo tín hiệu PWM mong muốn trên một số chân Arduino. Tín hiệu PWM sẽ được đưa ra tại chân tín hiệu đầu vào của động cơ servo. Kết nối hai chân còn lại của servo với 5v và GND của Arduino.

Cách điều khiển động cơ Servo bằng Arduino

Ở đây tôi sẽ giải thích cách chúng ta có thể kết nối và lập trình động cơ servo bằng Arduino. Tất cả bạn cần là:

  • Arduino UNO
  • Cáp USB B
  • Động cơ servo
  • Dây nhảy

Cách lập trình Servo với Arduino

Sau đây là một số bước đơn giản:

Bước 1: Bao gồm thư viện servo được xác định trước:

# bao gồm < Servo.h >

Bước 2: Tạo Đối tượng Servo:

Servo myservo;

Mẹo: Trong trường hợp nếu bạn đang điều khiển nhiều động cơ servo, bạn phải tạo nhiều đối tượng servo hơn:

Servo myservo1;
Servo myservo2;

Bước 3: Đặt chân điều khiển (9) trên Arduino Uno gửi tín hiệu PWM đến cổng tín hiệu đầu vào của servo:

myservo.attach ( 9 ) ;

Bước 4: Xoay góc động cơ servo đến giá trị mong muốn, ví dụ 90o:

myservo.write ( pos ) ;

Mã Arduino

Mở chương trình ví dụ động cơ servo từ Tệp> Ví dụ> Servo> Quét , một cửa sổ mới sẽ mở ra cho chúng ta thấy bản phác thảo servo của chúng ta:

#include

Servo myservo; // đối tượng servo được tạo điều khiển động cơ servo
int pos = 0 ; // để lưu trữ vị trí servo, một biến mới được tạo
thiết lập vô hiệu ( ) {
myservo.attach ( 9 ) ; // điều này sẽ bộ Pin Arduino 9 Đầu ra PWM
}
vòng lặp vô hiệu ( ) {
( pos = 0 ; pos = 0 ; pos - = 1 ) { // đi từ 180 đến 0 độ
myservo.write ( pos ) ; // yêu cầu servo chuyển đến vị trí 'pos'
sự chậm trễ ( 5 ) ; // chờ đợi 5 ms để servo có thể đạt đến vị trí
}
}

Sau khi chương trình được biên dịch và tải lên, động cơ servo sẽ bắt đầu quay chậm từ vị trí bắt đầu 0 độ đến 180 độ, mỗi lần một độ giống như các bước. Khi động cơ quay xong 180 độ, nó sẽ bắt đầu quay theo hướng ngược lại với điểm bắt đầu, tức là 0 độ.

Sơ đồ

Cách điều khiển động cơ Servo bằng chiết áp

Chúng tôi cũng có thể điều khiển vị trí động cơ servo bằng tay. Để làm điều này, chúng tôi cần một Chiết áp . Chiết áp có ba chân. Kết nối hai chân bên ngoài với 5V Vcc và GND của Arduino và một chân giữa với chân A0 trên bảng Arduino.

Cách lập trình Servo với Potentiometer

Hầu hết bản phác thảo cho chiết áp giống như ví dụ trước. Sự khác biệt duy nhất là một Biến mới val ghim phụ được xác định trước phần thiết lập và vòng lặp của mã.

int potpin = A0;
int val;

Trong phần vòng lặp, chân A0 tương tự được sử dụng để đọc các giá trị cho Biến trở có chức năng analogRead () . Bo mạch Arduino chứa ADC 10 bit (Bộ chuyển đổi tương tự sang kỹ thuật số) cho chúng ta các giá trị từ 0 đến 1023 tùy thuộc vào chiết áp ở vị trí nào:

val = analogRead ( ghim phụ ) ;

Cuối cùng, chúng tôi đã sử dụng bản đồ() có chức năng ánh xạ lại các số từ 0 đến 1023 theo góc của Servo như chúng ta biết động cơ Servo chỉ có thể quay trong khoảng từ 00 đến 1800.

val = bản đồ ( val, 0 , 1023 , 0 , 180 ) ;

Mã Arduino

Mở phác thảo núm có sẵn trong Arduino IDE, đi tới Tệp> Ví dụ> Servo> Knob . Một cửa sổ mới sẽ mở ra cho chúng ta thấy bản phác thảo núm xoay của chúng ta cho servo:

#include
Servo myservo; // Tạo tên đối tượng servo myservo
int potpin = A0; // xác định chân tương tự chiết áp
int val; // Biến đổi cái mà sẽ đọc giá trị chân analog chiết áp

thiết lập vô hiệu ( ) {
myservo.attach ( 9 ) ; // ghim xác định 9 Tín hiệu đầu vào PWM của servo trên Arduino
}
vòng lặp vô hiệu ( ) {
val = analogRead ( ghim phụ ) ; // đọc giá trị từ chiết áp ( giá trị giữa 0 1023 )
val = bản đồ ( val, 0 , 1023 , 0 , 180 ) ; // chia tỷ lệ giá trị để sử dụng với servo ( giá trị giữa 0 180 )
myservo.write ( val ) ; // đặt vị trí servo với giá trị được chia tỷ lệ
sự chậm trễ ( mười lăm ) ; // chờ đợi servo để đến vị trí
}

Đoạn mã trên sẽ giúp chúng ta điều khiển trục động cơ servo bằng chiết áp, trục sẽ quay từ 0 đến 180 độ. Chúng tôi cũng có thể duy trì tốc độ cùng với hướng của servo bằng cách sử dụng nó.

Sơ đồ mạch

Tôi có thể kết nối bao nhiêu Động cơ Servo với Arduino?

Số lượng động cơ servo tối đa mà Arduino UNO có thể xử lý lên đến 12 với thư viện Arduino cho servo và tối đa là 48 servo có thể được kết nối với các bảng như Mega.

Mẹo: Chúng tôi có thể trực tiếp chạy servo bằng cách sử dụng dòng điện Arduino nhưng hãy nhớ nếu động cơ servo rút ra nhiều hơn 500mA thì bo mạch Arduino của bạn có thể tự động thiết lập lại và mất nguồn. Bạn nên luôn sử dụng nguồn điện chuyên dụng cho động cơ servo.

Sự kết luận

Trong hướng dẫn này, chúng tôi đã trình bày về cơ chế điều khiển của động cơ servo với Arduino. Chúng tôi đã trình bày những kiến ​​thức cơ bản về điều khiển vị trí và tốc độ servo bằng chiết áp. Bây giờ bạn đã có ý tưởng về servo và các khả năng cho robot, các dự án RC và tự động hóa bằng cách sử dụng servo là vô tận.