ĐIỀU KHIỂN ĐỘNG CƠ SERVO

LỰA CHỌN ĐỘNG CƠ BƯỚC

Lựa chọn hộp động cơ bước, hộp động cơ servo, hộp động cơ hybrid và một số số phụ khiếu nại đi kèm: Driver điều khiển, phanh từ xuất xắc hộp tụt giảm cho hộp động cơ bước ⇒XEM CÁC LOẠI ĐỘNG CƠ

Trong lí giải này, chúng ta sẽ tò mò cách thức buổi giao lưu của động cơ servo và cách tinh chỉnh và điều khiển động cơ servo bằng trình tinh chỉnh và điều khiển PWM Arduino cùng PCA9685. Bạn cũng có thể xem đoạn clip sau hoặc đọc chỉ dẫn dưới đây.

Bạn đang xem: Điều khiển động cơ servo

Giới thiệu tổng quan lại về động cơ servo

Có các loại hộp động cơ servo và tuấn kiệt chính của chúng là kỹ năng điều khiển đúng mực vị trí của trục. Động cơ servo là một khối hệ thống vòng kín sử dụng bình luận vị trí để điều khiển hoạt động và vị trí ở đầu cuối của nó.

*

Hệ thống vòng kín

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

*

Hệ thống vòng kín đáo Servo

Trong lý giải này, công ty chúng tôi sẽ xem xét chi tiết về các động cơ servo hay gặp. Công ty chúng tôi sẽ giải thích cách các servo này vận động và cách điểu khiển chúng bởi Arduino.

*

Động cơ hay sử dụng là bộ truyền động kích thước bé dại được thực hiện để điều khiển và tinh chỉnh xe ô tô, thuyền, vật dụng bay, v.v. Chúng cũng khá được sử dụng bởi các sinh viên kỹ thuật để chế tạo robot, tạo ra cánh tay robot, robot lấy xúc cảm sinh học, robot hình người, v.v.

*

Ứng dụng hộp động cơ Servo Robot cánh tay Hexapod Robot hình người

⇒Robot vẽ Axidraw Việt Machine áp dụng động cơ servo:Xem tại đây

Cách thức hoạt động của Servo RC / cổ điển

Bên vào một servo cổ diển gồm bốn thành phần chính, hộp động cơ DC, vỏ hộp số, đổi thay trở cùng mạch điều khiển. Động cơ DC có tốc độ cao với mô-men xoắn thấp tuy thế hộp số giảm vận tốc xuống khoảng chừ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 phía bên trong các nguyên tố Mạch tinh chỉnh và điều khiển chiết áp động cơ DC

Chiết áp được gắn thêm trên bánh răng sau cùng hoặc trục đầu ra, cho nên vì vậy động cơ cũng quay tách áp, tạo ra một điện áp tương quan đến góc hoàn hảo nhất của trục đầu ra. Vào mạch điều khiển, điện áp chiết áp này được so sánh với năng lượng điện áp đến từ đường tín hiệu. Giả dụ cần, bộ điều khiển và tinh chỉnh kích hoạt mạch mong H tích hợp cho phép động cơ quay theo hai hướng cho tới 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 phương pháp gửi một loạt các xung qua mặt đường tín hiệu. Tần số của tín hiệu 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ý lúc di chuyển).

*

Tín hiệu tinh chỉnh động cơ RC Servo

Nói chung những xung tất cả tại 1ms khớp ứng với địa điểm 0 độ, 1,5ms mang đến 90 độ với 2ms mang đến 180 độ. Tuy nhiên thời gian buổi tối thiểu và về tối đa của các xung đôi khi có thể chuyển đổi theo các loại không giống nhau và chúng rất có thể là 0,5ms đến 0 độ và 2,5ms đến 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à có tác dụng một ví dụ thực tế về điều khiển và tinh chỉnh một servo cổ xưa 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 bao gồm dòng định hình của servo là 2.5A. Mẫu điện chạy từ bỏ 500mA đến 900mA và điện áp chuyển động từ 4,8 mang đến 7,2V.

*

Điều khiển bộ động cơ Arduino Servo MG996R

Xếp hạng hiện nay tại cho thấy rằ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 chúng tôi phải thực hiện nguồn điện riêng cho nó. Đây là sơ vật mạch đến ví dụ này.

*

Sơ vật dụng mạch điều khiển Arduino

Chúng ta chỉ việc kết nối chân tinh chỉnh và điều khiển của servo với bất kỳ chân tiên tiến nhất nào của board Arduino, kết nối Ground cùng dây dương với nguồn điện áp 5V bên ngoài, đồng thời liên kết ground của Arduino cùng với chân GND của servo.

Code tinh chỉnh và điều khiển động cơ Servo từ bỏ Arduino

Bây giờ họ hãy xem code Arduino để tinh chỉnh và điều khiển động cơ servo. Code rất đối chọi giản. Họ chỉ cần khẳng định chân mà servo được kết nối, xác định chân đó là áp ra output và vào phần vòng lặp tạo ra các xung với chu kỳ và tần số cụ thể như bọn họ đã 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 đã chuyển ra các giá trị sau trong khoảng thời gian các xung vận động với servo. Những xung có thời lượng 0,6ms khớp ứng với vị trí 0 độ, 1,45ms cho 90 độ và 2,3ms đến 180 độ.

Xem thêm: Mua Cục Phát Wifi Sim 4G Cao Cấp, Chính Hãng, Bảo Hành Uy Tín

Tôi đã kết nối một sản phẩm đo vạn năng tiếp nối với servo để kiểm tra dòng điện. Mức mẫu điện về tối đa mà tôi nhậ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, nhưng mà là bạn dạng sao phải chăng hơn, ví dụ có năng suất kém hơn.

*

Động cơ Servo MG996R

Tuy nhiên, chúng ta hãy xem một cách tiện lợi hơn để điều khiển các servo bởi Arduino. Đó là sử dụng thư viện Arduino Arduino.

#include Servo myservo; // create servo object khổng lồ control a servovoid setup() myservo.attach(9,600,2300); // (pin, min, max)void loop() myservo.write(0); // tell servo to go khổng lồ a particular angle delay(1000); myservo.write(90); delay(500); myservo.write(135); delay(500); myservo.write(180); delay(1500); Ở đây bọn họ chỉ phải nạp thư viện, xác định đối tượng người dùng servo và sử dụng hàm attach() khẳng định chân nhưng mà servo được kết nối cũng tương tự xác định giá trị tối thiểu và về tối đa của thời lượng xung. Sau đó, bằng cách sử dụng hàm write (), chúng ta chỉ nên đặt vị trí của servo tự 0 mang lại 180 độ. Với tủ sách này, bạn cũng 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 và tinh chỉnh PWM / Servo Arduino cùng PCA9685

Ngoài ra còn có một bí quyết khác để tinh chỉnh và điều khiển servo bằng Arduino với đó là áp dụng trình tinh chỉnh 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ó gồm một đồng hồ đeo tay tích đúng theo để hoàn toàn có thể chạy 16 động cơ cùng lúc, hoặc hòa bình với Arduino.

*

Trình điều khiển Servo Arduino cùng PCA9685

Chúng ta có thể xâu chuỗi lên tới 62 trình điều khiển này trên cùng một bus I2C. Vày vậy, về mặt lý thuyết, bạn có thể điều khiển cho tới 992 động cơ chỉ bằng hai chân I2C từ bỏ board Arduino. 6 chân chọn địa chỉ được thực hiện để đặt địa chỉ I2C khác nhau cho từng trình điều khiển bổ sung. Chúng ta chỉ cầ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ơ thiết bị mạch và chúng ta cũng có thể nhận thấy rằng chúng ta cần một nguồn cung cấp điện riêng cho các servo.

*

Sơ đồ dùng mạch Arduino với PCA9685

Các linh phụ 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

=> khu vực bán linh kiện điện tử chất lượng:Xem tại đây

Bây giờ hãy xem code Arduino. Để điều khiển trình điều khiển servo này, họ sẽ áp dụng thư viện PCA9685 có thể tải xuống tự 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, và 1000kHz driver.resetDevices(); // Software resets all PCA9685 devices on Wire line driver.init(B000000); // Address pins A5-A0 set to B000000 driver.setPWMFrequency(50); // phối frequency khổng lồ 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 bọn họ cần bao hàm các thư viện cùng xác định đối tượng người sử dụng PCA9685. Sau đó, sử dụng đối tượng người dùng Servo_Evaluator xác minh chu kỳ xung hoặc cổng đầu ra PWM của trình điều khiển. Lưu ý rằng những đầu ra là 12 bit, độ sắc nét 4096 bước. Vày vậy, thời hạn xung 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 buổi 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 đó, các giá trị này vẫn được điều chỉnh theo bộ động cơ servo của bạn. Vào trường đúng theo của tôi, quý hiếm từ 102 đến 470 tương xứng với vị trí 0 mang lại 180 độ.

Trong phần thiết lập, chúng ta cần xác định tốc độ xung I2C, đặt add trình điều khiển và để tần số thành 50Hz.

Trong phần vòng lặp, sử dụng các hàm setChannelPWM () cùng pwmForAngle (), bọn họ chỉ bắt buộc đặt servo theo góc hy vọng muốn.

Tôi đã kết nối một servo vật dụng hai 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ì những động dẫu vậy tôi đang sử dụng là phiên bản sao phải chăng tiền và chúng không đáng tin cậy. Mặc dù nhiên, đây không phải là vụ việc lớn vì thực hiện phiên phiên bản Servo_Evaluator, chúng ta cũng có thể đặt các cài đặt đầu ra không giống nhau cho mỗi servo. Họ cũng rất có thể điều chỉnh địa chỉ 90 độ vào trường thích hợp nó không ban đầu ở giữa. Theo cách đó, tất cả các servo sẽ hoạt động như nhau và vị trí góc chủ yếu xác.

Điều khiển nhiều servo với trình điều khiển PCA9685

Chúng ta đang tới một ví dụ như nữa điều khiển nhiều servo với tương đối nhiều trình điều khiển PCA9685.

*

Điều khiển 22 hộp động cơ Servo với Arduino cùng PCA9685

Với mục tiêu đó, bọn họ cần kết nối những trình điều khiển và tinh chỉnh với nhau và kết nối địa chỉ phù hợp chọn miếng hàn. Đây là sơ đồ vật mạch:

*

Bây giờ bọn họ hãy coi code Arduino

#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, và 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 người dùng PCA9685 riêng cho từng trình điều khiển, xác định địa chỉ cho từng trình điều khiển cũng tương tự đặt tần số thành 50Hz. Hiện nay chỉ phải sử dụng các hàm setChannelPWM () cùng pwmForAngle (), chúng ta cũng có thể đặt bất kỳ servo nào ở bất kỳ trình điều khiển nào nhằm định vị ngẫu nhiên góc nào bọn họ muốn.

Dịch từ:https://howtomechatronics.com/how-it-works/how-servo-motors-work-how-to-control-servos-using-arduino/

Leave a Reply

Your email address will not be published. Required fields are marked *

  • Nam người mẫu khoả thân

  • Điền từ vào chỗ trống tiếng anh

  • Giá gỗ trắc đỏ đen

  • Hỏi khắp thế gian ai từng yêu biết được vì sao bỗng nhiên lại yêu

  • x

    Welcome Back!

    Login to your account below

    Retrieve your password

    Please enter your username or email address to reset your password.