Arduino - Động cơ Servo

Động cơ Servo là một thiết bị nhỏ có trục đầu ra. Trục này có thể được định vị đến các vị trí góc cụ thể bằng cách gửi cho servo một tín hiệu được mã hóa. Miễn là tín hiệu được mã hóa tồn tại trên đường đầu vào, servo sẽ duy trì vị trí góc của trục. Nếu tín hiệu được mã hóa thay đổi, vị trí góc của trục thay đổi. Trong thực tế, các servo được sử dụng trong máy bay điều khiển bằng sóng vô tuyến để định vị các bề mặt điều khiển như thang máy và bánh lái. Chúng cũng được sử dụng trong ô tô điều khiển bằng sóng radio, con rối và tất nhiên, cả robot.

Servos cực kỳ hữu ích trong chế tạo robot. Các động cơ nhỏ, có mạch điều khiển tích hợp và cực kỳ mạnh mẽ so với kích thước của chúng. Một servo tiêu chuẩn như Futaba S-148 có mô-men xoắn 42 oz / inch, rất mạnh so với kích thước của nó. Nó cũng lấy công suất tỷ lệ với tải cơ học. Do đó, một servo được tải nhẹ không tiêu tốn nhiều năng lượng.

Ruột của động cơ servo được hiển thị trong hình sau. Bạn có thể thấy mạch điều khiển, động cơ, một bộ bánh răng và vỏ máy. Bạn cũng có thể thấy 3 sợi dây kết nối với thế giới bên ngoài. Một dành cho nguồn (+ 5volts), nối đất, và dây màu trắng là dây điều khiển.

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

Động cơ servo có một số mạch điều khiển và một chiết áp (một biến trở, còn gọi là nồi) được kết nối với trục đầu ra. Trong hình trên, có thể thấy chiếc nồi nằm ở phía bên phải của bảng mạch. Nồi này cho phép mạch điều khiển theo dõi góc hiện tại của động cơ servo.

Nếu trục ở đúng góc, thì động cơ sẽ tắt. Nếu mạch nhận thấy rằng góc không đúng, nó sẽ quay động cơ cho đến khi nó ở một góc mong muốn. Trục đầu ra của servo có thể di chuyển đến một nơi xung quanh 180 độ. Thông thường, nó nằm ở đâu đó trong phạm vi 210 độ, tuy nhiên, nó thay đổi tùy thuộc vào nhà sản xuất. Một servo bình thường được sử dụng để điều khiển chuyển động góc từ 0 đến 180 độ. Về mặt cơ học, nó không có khả năng quay xa hơn nữa do cơ khí dừng được tích hợp trên bánh răng đầu ra chính.

Công suất đặt vào động cơ tỷ lệ thuận với quãng đường nó đi được. Vì vậy, nếu trục cần quay một quãng đường lớn, động cơ sẽ chạy hết tốc lực. Nếu nó chỉ cần quay một lượng nhỏ, động cơ sẽ chạy với tốc độ chậm hơn. Đây được gọi làproportional control.

Làm thế nào để bạn giao tiếp với góc mà Servo nên quay?

Dây điều khiển được sử dụng để giao tiếp góc. Góc được xác định bởi khoảng thời gian của một xung được đưa vào dây điều khiển. Đây được gọi làPulse Coded Modulation. Servo dự kiến ​​sẽ thấy một xung sau mỗi 20 mili giây (0,02 giây). Độ dài của xung sẽ xác định động cơ quay được bao xa. Ví dụ, một xung 1,5 mili giây sẽ làm cho động cơ quay sang vị trí 90 độ (thường được gọi là vị trí trung tính). Nếu xung ngắn hơn 1,5 mili giây, thì động cơ sẽ quay trục về gần 0 độ. Nếu xung dài hơn 1,5 mili giây, trục quay gần 180 độ.

Thành phần bắt buộc

Bạn sẽ cần các thành phần sau:

  • 1 × bảng Arduino UNO
  • 1 × Động cơ Servo
  • IC điều khiển 1 × ULN2003
  • Điện trở 1 × 10 KΩ

Thủ tục

Thực hiện theo sơ đồ mạch và thực hiện các kết nối như trong hình dưới đây.

Phác thảo

Mở phần mềm Arduino IDE trên máy tính của bạn. Mã hóa bằng ngôn ngữ Arduino sẽ điều khiển mạch của bạn. Mở tệp phác thảo mới bằng cách nhấp vào Mới.

Mã Arduino

/* Controlling a servo position using a potentiometer (variable resistor) */

#include <Servo.h>
   Servo myservo; // create servo object to control a servo
   int potpin = 0; // analog pin used to connect the potentiometer
   int val; // variable to read the value from the analog pin

void setup() {
   myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {
   val = analogRead(potpin);
   // reads the value of the potentiometer (value between 0 and 1023)
   val = map(val, 0, 1023, 0, 180);
   // scale it to use it with the servo (value between 0 and 180)
   myservo.write(val); // sets the servo position according to the scaled value
   delay(15);
}

Mã cần lưu ý

Động cơ servo có ba đầu cuối - nguồn, nối đất và tín hiệu. Dây nguồn thường có màu đỏ và phải được kết nối với chân 5V trên Arduino. Dây nối đất thường có màu đen hoặc nâu và phải được kết nối với một đầu cuối của IC ULN2003 (10 -16). Để bảo vệ bo mạch Arduino của bạn khỏi bị hư hỏng, bạn sẽ cần một số IC điều khiển để làm điều đó. Ở đây chúng tôi đã sử dụng IC ULN2003 để điều khiển động cơ servo. Chân tín hiệu thường có màu vàng hoặc cam và phải được kết nối với chân số 9 của Arduino.

Kết nối chiết áp

Bộ chia điện áp / bộ chia điện thế là các điện trở trong một mạch nối tiếp điều chỉnh điện áp đầu ra theo một tỷ lệ cụ thể của điện áp đầu vào được áp dụng. Sau đây là sơ đồ mạch -

$$ V_ {out} = (V_ {in} \ times R_ {2}) / (R_ {1} + R_ {2}) $$

V out là điện thế đầu ra, phụ thuộc vào điện áp đầu vào được đặt vào (V in ) và điện trở (R 1 và R 2 ) trong chuỗi. Có nghĩa là dòng điện chạy qua R 1 cũng sẽ chạy qua R 2 mà không bị phân chia. Trong phương trình trên, khi giá trị của R 2 thay đổi, V ra sẽ thay đổi tương ứng với điện áp đầu vào, V trong .

Thông thường, một chiết áp là một bộ chia điện thế, có thể chia tỷ lệ điện áp đầu ra của mạch dựa trên giá trị của biến trở, được chia tỷ lệ bằng cách sử dụng núm vặn. Nó có ba chân: GND, Tín hiệu và + 5V như trong sơ đồ bên dưới -

Kết quả

Bằng cách thay đổi vị trí NOP của nồi, động cơ servo sẽ thay đổi góc của nó.