CÁCH ĐIỀU KHIỂN AC SERVO MOTOR
Lựa chọn động cơ bước, động cơ servo, hộp động cơ hybrid và một vài số phụ kiện đi kèm: Driver điều khiển, phanh từ hay hộp giảm tốc cho động cơ bước ⇒XEM CÁC LOẠI ĐỘNG CƠ
Trong lí giải này, bọn họ sẽ mày mò cách thức buổi giao lưu của động cơ servo với cách điều khiển và tinh chỉnh động cơ servo bằng trình tinh chỉnh và điều khiển PWM Arduino cùng PCA9685. Bạn có thể xem video sau hoặc đọc hướng dẫn dưới đây.
Bạn đang xem: Cách điều khiển ac servo motor
Giới thiệu tổng quan tiền về hộp động cơ servo
Có những loại hộp động cơ servo và khả năng chính của bọn chúng là tài năng điều khiển chính xác vị trí của trục. Động cơ servo là một hệ thống vòng bí mật sử dụng ý kiến vị trí để điều khiển chuyển động và vị trí ở đầu cuối của nó.

Hệ thống vòng kín
Trong công nghiệp bộ động cơ servo là loại cảm biến phản hồi vị trí, thường là 1 bộ code hóa gồm độ đúng chuẩn cao, trong khi trong số động cơ RC hoặc nhỏ dại hơn, cảm ứng vị trí thường là một chiết áp đối chọi giản. Vị trí thực tế được tra cứu thấy bởi các thiết bị này được đưa quay trở lại bộ phát hiện nay lỗi chỗ nó được so sánh với địa chỉ đích. Sau đó, theo lỗi, bộ tinh chỉnh sửa vị trí thực tiễn của hộp động cơ để khớp với địa chỉ đích.

Hệ thống vòng kín đáo Servo
Trong trả lời này, công ty chúng tôi sẽ coi xét cụ thể về các động cơ servo hay gặp. Chúng tôi sẽ lý giải cách các servo này hoạt động và biện pháp điểu khiển chúng bằng Arduino.

Động cơ hay được dùng là cỗ truyền hễ kích thước nhỏ được áp dụng để điều khiển xe ô tô, thuyền, trang bị bay, v.v. Chúng cũng được sử dụng bởi những sinh viên kỹ thuật để sản xuất robot, tạo ra cánh tay robot, robot lấy cảm hứng sinh học, robot hình người, v.v.

Ứng dụng động cơ Servo Robot cánh tay Hexapod Robot hình người
⇒Robot vẽ Axidraw Việt Machine thực hiện động cơ servo:Xem tại đây
Cách thức buổi giao lưu của Servo RC / cổ điển
Bên vào một servo cổ diển gồm bốn nhân tố chính, bộ động cơ DC, hộp số, biến đổi trở và mạch điều khiển. Động cơ DC có vận tốc cao và mô-men xoắn thấp cơ mà hộp số giảm tốc độ xuống khoảng 60 vòng / phút, đồng thời tăng mô-men xoắn.

Cách thức hoạt động của Servo bên trong các yếu tố Mạch tinh chỉnh chiết áp bộ động cơ DC
Chiết áp được lắp trên bánh răng cuối cùng hoặc trục đầu ra, cho nên vì thế động cơ cũng quay phân tách áp, tạo thành một năng lượng điện áp liên quan đến góc tuyệt vời của trục đầu ra. Vào mạch điều khiển, điện áp tách áp này được đối chiếu với năng lượng điện áp tới từ đường tín hiệu. Trường hợp cần, bộ tinh chỉnh kích hoạt mạch mong H tích hợp cho phép động cơ cù theo nhì hướng cho đến khi nhì tín hiệu đạt mức chênh lệch bằng không.
Một động cơ servo được điều khiển bằng cách gửi một loạt những xung qua con đường tín hiệu. Tần số của tín hiệu điều khiển và tinh chỉnh phải là 50Hz hoặc một chu kỳ xung là 20ms. Độ rộng lớn của xung xác định vị trí góc của servo và những loại servo này thường rất có thể xoay 180 độ (chúng có số lượng giới hạn vật lý khi di chuyển).

Tín hiệu điều khiển động cơ RC Servo
Nói chung các xung bao gồm tại 1ms tương ứng với địa điểm 0 độ, 1,5ms đến 90 độ với 2ms đến 180 độ. Tuy nhiên thời gian buổi tối thiểu và tối đa của các xung đôi khi có thể đổi khác theo các loại không giống nhau và chúng hoàn toàn có thể là 0,5ms cho 0 độ với 2,5ms mang lại vị trí 180 độ.
Điều khiển động cơ Arduino Servo
Chúng ta hãy chất vấn những thông tin trên và làm cho một ví dụ thực tế về điều khiển và tinh chỉnh một servo cổ điển bằng Arduino. Tôi sẽ áp dụng MG996R, một hộp động cơ servo mô-men xoắn cao bao gồm bánh răng sắt kẽm kim loại với mô-men xoắn 10 kg-cm. Mô-men xoắn cao có dòng định hình của servo là 2.5A. Loại điện chạy tự 500mA đến 900mA và điện áp chuyển động từ 4,8 đến 7,2V.

Điều khiển hộp động cơ Arduino Servo MG996R
Xếp hạng hiện nay tại cho biết thêm rằng cửa hàng chúng tôi không thể liên kết trực tiếp servo này cùng với Arduino, nên cửa hàng chúng tôi phải áp dụng nguồn năng lượng điện riêng mang lại nó. Đây là sơ đồ gia dụng mạch mang lại ví dụ này.

Sơ thiết bị mạch tinh chỉnh và điều khiển Arduino
Chúng ta chỉ việc kết nối chân tinh chỉnh của servo với bất kỳ chân tiên tiến nhất nào của board Arduino, liên kết Ground cùng dây dương với điện áp nguồn 5V mặt ngoài, đồng thời kết nối ground của Arduino với chân GND của servo.
Code điều khiển động cơ Servo tự Arduino
Bây giờ chúng ta hãy coi code Arduino để tinh chỉnh động cơ servo. Code rất đối chọi giản. Chúng ta chỉ cần khẳng định chân cơ mà servo được kết nối, khẳng định chân đó là áp ra output và trong phần vòng lặp tạo thành các xung với chu kỳ luân hồi và tần số ví dụ như chúng ta đã phân tích và lý giải ở trên.
#define servoPin 9void setup() pinMode(servoPin, OUTPUT);void loop() // A pulse each 20ms digitalWrite(servoPin, HIGH); delayMicroseconds(1450); // Duration of the pusle in microseconds digitalWrite(servoPin, LOW); delayMicroseconds(18550); // 20ms - duration of the pusle // Pulses duration: 600 - 0deg; 1450 - 90deg; 2300 - 180degSau một số trong những thử nghiệm, tôi đã đưa ra những giá trị sau trong khoảng thời gian các xung hoạt động với servo. Những xung tất cả thời lượng 0,6ms tương xứng với địa chỉ 0 độ, 1,45ms đến 90 độ với 2,3ms cho 180 độ.
Xem thêm: Phê Phán Quan Điểm: " Sự Sụp Đổ Của Liên Xô Và Đông Âu Là, Tuyên Giáo An Giang
Tôi đã kết nối một máy đo vạn năng nối tiếp với servo để kiểm soát dòng điện. Mức loại điện về tối đa nhưng mà tôi phân biệt là lên đến mức 0,63A. Vâng, cũng chính vì đây chưa phải là bản gốc TowerPro MG996R, mà lại là bạn dạng sao phải chăng hơn, rõ ràng có công suất kém hơn.

Động cơ Servo MG996R
Tuy nhiên, bọn họ hãy coi một cách dễ dàng hơn để điều khiển và tinh chỉnh các servo bằng Arduino. Đó là thực hiện thư viện Arduino Arduino.
#include Servo myservo; // create servo object to lớn control a servovoid setup() myservo.attach(9,600,2300); // (pin, min, max)void loop() myservo.write(0); // tell servo to lớn go lớn a particular angle delay(1000); myservo.write(90); delay(500); myservo.write(135); delay(500); myservo.write(180); delay(1500); Ở đây chúng ta chỉ cần nạp thư viện, xác định đối tượng người dùng servo và áp dụng hàm attach() khẳng định chân nhưng mà servo được kết nối cũng như xác định vị trị tối thiểu và tối đa của thời lượng xung. Sau đó, bằng phương pháp sử dụng hàm write (), chúng ta chỉ cần đặt địa chỉ của servo trường đoản cú 0 cho 180 độ. Với thư viện này, bạn có thể điều khiển cho tới 12 servo cùng lúc hoặc 48 servo bằng cách sử dụng board Arduino Mega.
Trình điều khiển PWM / Servo Arduino và PCA9685
Ngoài ra còn tồn tại một phương pháp khác để tinh chỉnh và điều khiển servo bởi Arduino và đó là thực hiện trình điều khiển servo PCA9685. Đây là trình tinh chỉnh servo cùng servo 16 kênh 12 bit, tiếp xúc với Arduino bởi bus I2C. Nó tất cả một đồng hồ tích vừa lòng để có thể chạy 16 hộp động cơ cùng lúc, hoặc độc lập với Arduino.

Trình điều khiển và tinh chỉnh Servo Arduino với PCA9685
Chúng ta có thể xâu chuỗi lên tới 62 trình điều khiển và tinh chỉnh này trên và một bus I2C. Bởi vì vậy, về phương diện lý thuyết, chúng ta cũng có thể điều khiển tới 992 động cơ chỉ bằng hai chân I2C trường đoản cú board Arduino. 6 chân chọn địa chỉ được áp dụng để đặt địa chỉ I2C không giống nhau cho từng trình điều khiển bổ sung. Họ chỉ nên kết nối những miếng hàn theo bảng này.

Địa chỉ PCA9685 lựa chọn Chân Board I2CAddress
Đây là sơ đồ dùng mạch và bạn có thể nhận thấy rằng bọn họ cần một nguồn cung cấp điện riêng cho những servo.

Sơ đồ gia dụng mạch Arduino cùng PCA9685
Các linh kiện cần thiếtĐộng cơ Servo MG996RTrình điều khiển Servo PCA9685 PWMBoard ArduinoNguồn cung ứng điện 5V- 6A DC=> địa điểm bán linh kiện điện tử hóa học lượng:Xem tại đây
Bây giờ hãy coi code Arduino. Để điều khiển và tinh chỉnh trình điều khiển và tinh chỉnh servo này, bọn họ sẽ thực hiện thư viện PCA9685 rất có thể tải xuống trường đoản cú GitHub .
Code Arduino PCA9685#include #include "PCA9685.h"PCA9685 driver;// PCA9685 outputs = 12-bit = 4096 steps// 2.5% of 20ms = 0.5ms ; 12.5% of 20ms = 2.5ms// 2.5% of 4096 = 102 steps; 12.5% of 4096 = 512 stepsPCA9685_ServoEvaluator pwmServo(102, 470); // (-90deg, +90deg)// Second Servo// PCA9685_ServoEvaluator pwmServo2(102, 310, 505); // (0deg, 90deg, 180deg)void setup() Wire.begin(); // Wire must be started first Wire.setClock(400000); // Supported baud rates are 100kHz, 400kHz, & 1000kHz driver.resetDevices(); // Software resets all PCA9685 devices on Wire line driver.init(B000000); // Address pins A5-A0 set khổng lồ B000000 driver.setPWMFrequency(50); // phối frequency to lớn 50Hzvoid loop() driver.setChannelPWM(0, pwmServo.pwmForAngle(-90)); delay(1000); driver.setChannelPWM(0, pwmServo.pwmForAngle(0)); delay(1000); driver.setChannelPWM(0, pwmServo.pwmForAngle(90)); delay(1000);Trước tiên chúng ta cần bao gồm các thư viện với xác định đối tượng PCA9685. Sau đó, sử dụng đối tượng người tiêu dùng Servo_Evaluator khẳng định chu kỳ xung hoặc cổng output PWM của trình điều khiển. Chú ý rằng các đầu ra là 12 bit, độ sắc nét 4096 bước. Do vậy, thời hạn xung buổi tối thiểu là 0,5ms hoặc 0 độ sẽ tương xứng với 102 cách và thời lượng xung tối đa là 2,5ms hoặc 180 độ tại phần 512 bước. Nhưng mà như đã giải thích trước đó, những giá trị này vẫn được kiểm soát và điều chỉnh theo hộp động cơ servo của bạn. Trong trường vừa lòng của tôi, quý giá từ 102 cho 470 tương xứng với vị trí 0 đến 180 độ.
Trong phần thiết lập, chúng ta cần khẳng định tốc độ xung I2C, đặt địa chỉ cửa hàng trình tinh chỉnh và điều khiển và để tần số thành 50Hz.
Trong phần vòng lặp, sử dụng những hàm setChannelPWM () và pwmForAngle (), chúng ta chỉ yêu cầu đặt servo theo góc mong muốn muốn.
Tôi đã liên kết một servo lắp thêm hai cùng với trình điều khiển và như tôi dự đoán, nó không ở vị trí y như ban đầu, và sẽ là vì các động tuy vậy tôi đang thực hiện là bạn dạng sao phải chăng tiền và chúng không xứng đáng tin cậy. Tuy nhiên, đây không hẳn là sự việc lớn vì áp dụng phiên bản Servo_Evaluator, bạn cũng có thể đặt các thiết đặt đầu ra không giống nhau cho mỗi servo. Họ cũng rất có thể điều chỉnh vị trí 90 độ trong trường hợp nó không bước đầu ở giữa. Theo phong cách đó, toàn bộ các servo sẽ chuyển động như nhau với vị trí góc thiết yếu xác.
Điều khiển nhiều servo với trình điều khiển PCA9685
Chúng ta đã tới một lấy ví dụ như nữa điều khiển và tinh chỉnh nhiều servo với nhiều trình tinh chỉnh và điều khiển PCA9685.
Xem thêm: Đi Du Học Tiếng Anh Là Gì ? Tự Vựng Tiếng Anh Chủ Đề Du Học Đi Du Học Trong Tiếng Anh Là Gì

Điều khiển 22 hộp động cơ Servo cùng với Arduino với PCA9685
Với mục tiêu đó, chúng ta cần kết nối các trình tinh chỉnh với nhau và kết nối địa chỉ phù hợp lựa chọn miếng hàn. Đây là sơ vật dụng mạch:

#include #include "PCA9685.h"PCA9685 driver;// PCA9685 outputs = 12-bit = 4096 steps// 2.5% of 20ms = 0.5ms ; 12.5% of 20ms = 2.5ms// 2.5% of 4096 = 102 steps; 12.5% of 4096 = 512 stepsPCA9685_ServoEvaluator pwmServo(102, 470); // (-90deg, +90deg)// Second ServoPCA9685_ServoEvaluator pwmServo2(102, 310, 505); // (0deg, 90deg, 180deg)void setup() Wire.begin(); // Wire must be started first Wire.setClock(400000); // Supported baud rates are 100kHz, 400kHz, and 1000kHz driver.resetDevices(); // Software resets all PCA9685 devices on Wire line driver.init(B000000); // Address pins A5-A0 set lớn B000000 driver.setPWMFrequency(50); // mix frequency to lớn 50Hzvoid loop() driver.setChannelPWM(0, pwmServo.pwmForAngle(-90)); delay(1000); driver.setChannelPWM(0, pwmServo.pwmForAngle(0)); delay(1000); driver.setChannelPWM(0, pwmServo.pwmForAngle(90)); delay(1000);Vì vậy, họ nên tạo đối tượng PCA9685 riêng đến từng trình điều khiển, xác định địa chỉ cửa hàng cho từng trình điều khiển cũng giống như đặt tần số thành 50Hz. Hiện giờ chỉ nên sử dụng những hàm setChannelPWM () và pwmForAngle (), chúng ta cũng có thể đặt ngẫu nhiên servo nào ở bất kỳ trình điều khiển và tinh chỉnh nào nhằm định vị bất kỳ góc nào họ muốn.
Dịch từ:https://howtomechatronics.com/how-it-works/how-servo-motors-work-how-to-control-servos-using-arduino/