0981676163Miền Nam
0984601144Miền Bắc

Cách Điều Khiển Động Cơ Servo Và Nguyên Tắc Điều Khiển Động Cơ Dc Servo

17 thg 3 2021 10:07

Có nhiều cách điều khiển động cơ servo và tính năng chủ yếu của chúng là khả năng điều khiển một cách chính xác vị trí của trục. Động cơ servo được xem là một hệ thống vòng kín, trong đó sử dụng cách phản hồi vị trí để có thể điều khiển chuyển động của máy móc và nắm được vị trí cuối cùng của nó.

1. Khái niệm motor servo là gì?

Trong công nghiệp, động cơ servo motor chính là loại cảm biến phản hồi chính xác về vị trí. Do đó, khi điều khiển động cơ servo thường là một bộ code được mã hóa có độ chính xác cao. Trong khi đó, ở các động cơ RC hoặc motor nhỏ hơn, cảm biến vị trí thường dùng là một chiết áp rất đơn giản. 

Vị trí thực tế đã được tìm thấy bởi các thiết bị điều khiển này sẽ được đưa trở lại bộ phát hiện lỗi nơi mà nó được so sánh đối với vị trí đích. Sau đó, theo các lỗi, bộ điều khiển sẽ sửa vị trí thực tế của động cơ để cho nó khớp với vị trí đích.

Động cơ servo motor chính là cảm biến phản hồi chính xác về vị trí

Động cơ servo motor chính là cảm biến phản hồi chính xác về vị trí

Động cơ thường sử dụng bộ truyền động có kích thước nhỏ, chúng được sử dụng để thực hành điều khiển xe ô tô, tàu thuyền, máy bay,... Chúng cũng được áp dụng bởi các sinh viên chuyên ngành kỹ thuật dùng để chế tạo robot, tạo ra cánh tay của robot, robot lấy cảm hứng từ nguyên liệu sinh học, robot hình người,...

2. Nguyên tắc điều khiển động cơ DC servo

Bên trong một động cơ servo cổ điển sẽ có 4 thành phần chính, đó là động cơ DC, hộp số, con biến trở cũng như mạch điều khiển. Động cơ DC có tốc độ tương đối cao và mô men xoắn thấp, nhưng đồng thời hộp số lại giảm tốc độ xuống còn khoảng 60 vòng/ phút, đồng thời gia tăng mô men xoắn lên.

Chiết áp sẽ được gắn trên bánh răng cuối cùng hoặc trên trục đầu ra của nó, do đó động cơ cũng quay theo chiết áp.Từ đó, tạo ra một điện áp liên quan rất lớn đến góc tuyệt đối của cái trục đầu ra. 

Trong mạch điều khiển, điện áp của bộ chiết áp này được đem so sánh với điện áp đến từ ngay đường tín hiệu. Nếu cần, bộ điều khiển này sẽ kích hoạt mạch cầu H nhằm tích hợp cho phép động cơ của máy quay theo 2 hướng cho đến khi cả 2 tín hiệu đạt được mức chênh lệch giữa chúng bằng không.

Một động cơ servo thông thường được điều khiển bằng cách gửi 1 loạt các xung chạy qua đường tín hiệu. Tần số của tín hiệu của điều khiển lúc này phải là 50Hz hoặc 1 chu kỳ xung được tính là 20ms. Độ rộng của xung nhằm giúp xác định vị trí góc của servo cũng như các loại servo này thường có thể xoay được tới 180 độ (chúng có giới hạn vật lý mỗi khi di chuyển).

Nói chung, các xung có được tại 1ms tương ứng với vị trí là 0 độ và 1,5ms 90 độ và 2ms 180 độ. Mặc dù thời gian tối thiểu và thời gian tối đa của các xung đôi khi còn có thể thay đổi được theo các loại khác nhau nhưng chúng có thể là 0,5ms cho 0 độ và 2,5ms ở tại vị trí 180 độ.

3. Sơ đồ mạch điều khiển servo motor

Sơ đồ đấu nối mạch điều khiển servo gồm có:

Arduino Uno

Động cơ Servo SG90

5V

Dây điện màu đỏ

GND

Dây điện màu đen

D9

Dây điện màu vàng

Khi có 1 nguồn điện đi vào bên trong động cơ (Vin), trong trường hợp núm vặn cũng được xoay về hướng R1 thì lúc này điện trở sẽ nhỏ nhất và cường độ dòng điện của động cơ sẽ cao nhất.

Và ngược lại, khi các bạn vặn về hướng R2 thì điện trở sẽ đạt giá trị cao nhất và cường độ dòng điện của nó sẽ giảm dần.

Sơ đồ đấu nối mạch điều khiển servo motor

Sơ đồ đấu nối mạch điều khiển servo motor

4. Điều khiển động cơ servo dùng Code Arduino

Chúng ta hãy tiến hành kiểm tra những thông tin ở trên và làm một ví dụ thực tế về cách điều khiển một servo motor cổ điển bằng Arduino. Sử dụng MG996R đây là 1 động cơ servo có mô men xoắn cao và có bánh răng kim loại cùng với mô men xoắn đạt được 10 kg-cm. Mô-men xoắn cao thì sẽ có dòng điện ổn định của servo là 2.5A. Dòng điện sẽ chạy từ 500mA 900mA và điện áp cũng hoạt động từ 4,8 7,2V.

Xếp hạng hiện tại còn cho thấy rằng động cơ không thể tiến hành kết nối trực tiếp servo này vào với Arduino, nên chúng ta cần phải sử dụng đến nguồn điện riêng cho nó. Đây là sơ đồ mạch điển hình cho ví dụ này.

Điều khiển động cơ servo dùng Code Arduino

Điều khiển động cơ servo dùng Code Arduino

Chúng ta chỉ cần tiến hành kết nối chân điều khiển của servo motor với bất kỳ chân kỹ thuật số nào của bộ phận board Arduino, từ đó sẽ kết nối Ground và dây dương vào nguồn điện 5V bên ngoài, đồng thời kết nối phần ground của Arduino vào chân GND của servo.

Bây giờ chúng ta hãy nhìn vào code Arduino để tiến hành điều khiển động cơ servo. Code rất đơn giản, chỉ cần xác định được chân mà servo motor được kết nối, xác định chân đó chính là đầu ra và trong phần vòng lặp sẽ tạo ra các xung với chu kỳ và tần số cụ thể giống như chúng ta đã giải thích ở phần trên.

Sau một số thử nghiệm, chúng ta có thể đưa ra các giá trị trong khoảng thời gian các xung hoạt động bên trong servo. Các xung có thời lượng khoảng 0,6ms tương ứng với vị trí là 0 độ và 1,45ms cho đến 90 độ và 2,3ms.

Tiếp theo, kết nối một thiết bị đo vạn năng cho nó nối tiếp với servo để tiến hành kiểm tra dòng điện. Mức dòng điện tối đa mà chúng ta nhận thấy là lên tới 0,63A, bởi vì đây không phải là bản gốc của TowerPro MG996R, mà chỉ là bản sao rẻ hơn, cho nên rõ ràng chúng sẽ có hiệu suất kém hơn.

Tuy nhiên, chúng ta hãy sử dụng 1 cách thuận tiện hơn để có thể điều khiển các servo bằng Arduino. Đó là sử dụng hệ thống thư viện Arduino Arduino. Ở đây, bạn chỉ cần nạp thư viện, sau đó xác định đối tượng servo rồi sử dụng hàm attach để xác định chân mà servo motor được kết nối cũng như xác định được giá trị tối thiểu cũng như giá trị tối đa của thời lượng xung. 

Sau đó, chúng ta hãy sử dụng hàm write để tiến hành đặt vị trí của servo từ 0 180 độ. Với thư viện như trên, chúng ta có thể điều khiển cùng 1 lúc tới 12 48 servo bằng cách sử dụng bộ phận board Arduino Mega.

5. Trình điều khiển PWM của motor Servo Arduino và PCA9685

Ngoài ra, người ta còn sử dụng một cách khác để điều khiển được motor servo bằng Arduino, đó là sử dụng trình điều khiển động cơ servo PCA9685. Đây là trình điều khiển servo bao gồm 16 kênh 12 bit, có thể giao tiếp với Arduino bằng bus I2C. Nó có 1 chiếc đồng hồ tích hợp để có thể chạy được cả 16 động cơ cùng lúc, hoặc hoạt động độc lập với Arduino.

Chúng ta có thể xâu chuỗi hoạt động lên tới 62 trình điều khiển này ngay trên cùng một bus I2C. Vì vậy, về mặt lý thuyết, con người có thể điều khiển được tới 992 động cơ mà chỉ dùng 2 chân I2C từ board Arduino. Còn 6 chân chọn địa chỉ cũng sẽ được sử dụng để cài đặt địa chỉ I2C khác nhau cho mỗi trình nhằm điều khiển bổ sung. Chúng ta chỉ cần kết nối với các miếng hàn dựa theo bảng này.

Dưới đây là sơ đồ mạch và chúng ta sẽ nhận thấy rằng, động cơ luôn cần một nguồn cung cấp điện dành riêng cho các servo. 

Trình điều khiển PWM của motor Servo Arduino và PCA9685

Trình điều khiển PWM của motor Servo Arduino và PCA9685

Các linh kiện cần thiết sử dụng:

  • Động cơ motor Servo MG996R
  • Trình điều khiển motor Servo PCA9685 PWM
  • Board Arduino
  • Nguồn cung cấp điện cho động cơ 5V6A DC

Bây giờ hãy kiểm tra code Arduino. Để vận hành được trình điều khiển servo này, chúng ta sẽ sử dụng thư viện PCA9685, bạn có thể tải xuống từ GitHub.

Code Servo Arduino PCA9685

Trước tiên, các bạn cần bao quát, khoanh vùng các thư viện và xác định chính xác đối tượng PCA9685. Sau đó, sử dụng đối tượng Servo Evaluator để xác định chu kỳ xung hoặc tính đầu ra PWM của chương trình điều khiển. Lưu ý rằng các đầu ra thông thường là 12 bit, độ phân giải sẽ được 4096 bước. 

Vì vậy, thời gian xung tối thiểu của động cơ là 0,5ms hoặc 0 độ, chúng sẽ tương ứng với 102 bước và thời lượng xung tối đa là 2,5ms hoặc 180 độ ở vị trí 512 bước. Như đã giải thích ở trước đó, các giá trị này sẽ được tự động điều chỉnh tùy theo động cơ servo của bạn. Trong trường hợp servo cò giá trị từ 102 470 thì sẽ tương ứng với vị trí từ 0 180 độ.

Trong phần thiết lập mạch điều khiển, chúng ta cần xác định được tốc độ xung I2C, đặt địa chỉ của trình điều khiển và cuối cùng là đặt tần số thành 50Hz. Trong phần vòng lặp, bạn hãy sử dụng các hàm set Channel PWM và pwm For Angle, chúng ta chỉ cần cài đặt servo theo góc mà mình mong muốn.

Khi đã kết nối 1 servo thứ 2 cùng với trình điều khiển thì chúng sẽ không ở vị trí giống như ban đầu. Bởi vì các động cơ mà bạn đang sử dụng chỉ là bản sao rẻ tiền và chúng hoàn toàn không đáng tin cậy. 

Tuy nhiên, các bạn cũng đừng lo lắng, đây không phải là vấn đề lớn vì ngoài việc sử dụng phiên bản Servo Evaluator, chúng ta còn có thể đặt thêm các cài đặt đầu ra khác nhau dành cho mỗi servo. Chúng ta cũng có thể tự mình điều chỉnh vị trí 90 độ trong trường hợp động cơ không bắt đầu ở giữa. Theo cách đó, tất cả các servo motor sẽ hoạt động giống y như nhau và vị trí góc cũng chính xác hơn.

Video cấu hình và các loại AC Servo

6. Hộp số giảm tốc motor servo

Video Motor Giảm Tốc IRV 140w 250w 60w 370w, Trục ra Vuông Góc Trục Vào

Kết luận

Chúng ta nên điều khiển động cơ servo tạo đối tượng PCA9685 riêng biệt cho từng trình điều khiển, đồng thời xác định địa chỉ cho từng trình điều khiển của mình cũng như đặt tần số của chúng thành 50Hz. Bây giờ, chỉ cần tiến hành sử dụng các hàm set Channel PWM và hàm pwm For Angle là các bạn đã có thể đặt bất kỳ servo nào cũng như bất kỳ trình điều khiển nào để có thể định vị được các góc mà mình muốn.

Nội Dung Có Thể Bạn Quan Tâm:

7.664 reviews

Tin tức liên quan

Đánh giá các loại Động Cơ Giảm Tốc Wuma nhiều người dùng nhất
Review các loại Motor giảm tốc Peeimoger nhiều người mua nhất
Đánh giá 5 loại động cơ giảm tốc Chenta – Motor Chenta nhiều người dùng nhất
Đánh giá 5 loại động cơ Fabmoda – motor giảm tốc Fabmoda nhiều người dùng nhất
Đánh giá 5 loại động cơ Leon – motor giảm tốc Leonhard được quan tâm nhất
/ /