Độ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 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ả rô bốt.
Servos cực kỳ hữu ích trong chế tạo người máy. 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 độ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ở, hay 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 nào đó 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 do có một nút dừng cơ khí đượ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ệ với quãng đường mà nó cầ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à điều khiển tỷ lệ .
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 áp dụng cho dây điều khiển. Đây được gọi là Điều chế được mã hóa xung . 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 xem độ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
Làm 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, mặt đấ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 trình đ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 có quy mô đ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 out sẽ thay đổi tương ứng với điện áp đầu vào, V in . 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ó.
Arduino – Động cơ bước
Động cơ bước hoặc động cơ bước là một động cơ đồng bộ, không chổi than, chia một vòng quay đầy đủ thành một số bước. Không giống như động cơ DC không chổi than, quay liên tục khi đặt điện áp DC cố định vào nó, động cơ bước quay theo các góc bước rời rạc.
Do đó, Động cơ bước được sản xuất với các bước trên mỗi vòng quay là 12, 24, 72, 144, 180 và 200, dẫn đến các góc bước là 30, 15, 5, 2,5, 2 và 1,8 độ trên mỗi bước. Động cơ bước có thể được điều khiển có hoặc không có phản hồi.
Hãy tưởng tượng một động cơ trên một chiếc máy bay RC. Động cơ quay rất nhanh theo hướng này hay hướng khác. Bạn có thể thay đổi tốc độ với mức công suất cung cấp cho động cơ, nhưng bạn không thể yêu cầu cánh quạt dừng lại ở một vị trí cụ thể.
Bây giờ hãy tưởng tượng một máy in. Có rất nhiều bộ phận chuyển động bên trong máy in, bao gồm cả động cơ. Một động cơ như vậy hoạt động như bộ nạp giấy, các con lăn quay để di chuyển mảnh giấy khi mực đang được in trên đó. Động cơ này cần có khả năng di chuyển giấy một khoảng cách chính xác để có thể in dòng văn bản tiếp theo hoặc dòng tiếp theo của hình ảnh.
Có một động cơ khác được gắn vào một thanh ren để di chuyển đầu in qua lại. Một lần nữa, thanh ren đó cần được di chuyển một lượng chính xác để in hết chữ cái này đến chữ cái khác. Đây là nơi mà các động cơ bước có ích.
Động cơ bước hoạt động như thế nào?
Một động cơ DC thông thường chỉ quay theo một hướng trong khi động cơ Bước có thể quay theo từng bước chính xác.
Động cơ bước có thể quay một lượng độ (hoặc bước) chính xác như mong muốn. Điều này cho phép bạn kiểm soát toàn bộ động cơ, cho phép bạn di chuyển nó đến một vị trí chính xác và giữ vị trí đó. Nó làm như vậy bằng cách cấp nguồn cho các cuộn dây bên trong động cơ trong một khoảng thời gian rất ngắn. Điều bất lợi là bạn phải cung cấp năng lượng cho động cơ mọi lúc để giữ nó ở vị trí mà bạn mong muốn. Tất cả những gì bạn cần biết bây giờ là, để di chuyển một động cơ bước, bạn yêu cầu nó di chuyển một số bước nhất định theo hướng này hay hướng khác và cho nó biết tốc độ để bước theo hướng đó. Có rất nhiều loại động cơ bước. Các phương pháp được mô tả ở đây có thể được sử dụng để suy ra cách sử dụng các động cơ và trình điều khiển khác không được đề cập trong hướng dẫn này. Tuy nhiên, bạn luôn nên tham khảo bảng dữ liệu và hướng dẫn của động cơ và trình điều khiển cụ thể cho các kiểu
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ơ bước lưỡng cực nhỏ như trong hình dưới đây
- IC điều khiển 1 × LM298
Thủ tục
Làm 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
/* Stepper Motor Control */
#include <Stepper.h>
const int stepsPerRevolution = 90;
// change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(5);
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
// step one revolution in one direction:
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(500);
}
Mã cần lưu ý
Chương trình này điều khiển động cơ bước đơn cực hoặc lưỡng cực. Động cơ được gắn vào chân số 8 – 11 của Arduino.
Kết quả
Động cơ sẽ thực hiện một vòng quay theo một hướng, sau đó một vòng quay theo hướng khác.