Cách Điều Khiển Động Cơ Servo: PWM, Arduino, Driver AC Servo
Điều khiển động cơ servo là ra lệnh vị trí, tốc độ hoặc momen cho động cơ, rồi để mạch điều khiển so sánh với tín hiệu phản hồi từ cảm biến (chiết áp hoặc encoder) và tự sửa sai cho tới khi khớp. Servo mô hình loại SG90, MG996R được điều khiển bằng xung PWM 50Hz rộng 1–2ms; AC servo công nghiệp được điều khiển qua driver bằng xung và hướng, điện áp analog hoặc mạng truyền thông. Chọn cách điều khiển servo phụ thuộc vào loại servo, bộ điều khiển đang có (Arduino, PLC, board CNC) và yêu cầu chính xác của máy.
Nội dung
- 1) Động cơ servo là gì
- 2) Nguyên tắc điều khiển động cơ DC servo (servo mô hình)
- 3) Sơ đồ mạch điều khiển servo với Arduino
- 4) Điều khiển servo MG996R bằng code Arduino
- 5) Điều khiển nhiều servo bằng mạch PCA9685
- 6) Điều khiển AC servo công nghiệp
- 7) Hộp số giảm tốc cho motor servo
- 8) Các loại động cơ servo
- 9) Ứng dụng điều khiển động cơ servo
- 10) Ưu điểm và nhược điểm của điều khiển servo
- 11) Câu hỏi thường gặp về điều khiển động cơ servo
1) Động cơ servo là gì
Servo là hệ truyền động vòng kín gồm động cơ, cảm biến vị trí và mạch điều khiển. Ở servo công nghiệp, cảm biến là encoder độ phân giải cao (17 bit, 20 bit, 23 bit, tức hàng trăm nghìn tới hàng triệu xung mỗi vòng). Ở servo mô hình RC, cảm biến chỉ là một chiết áp gắn trên trục ra.
Vị trí thực tế đo được đưa về bộ so sánh, đem trừ cho vị trí đích. Sai lệch càng lớn, mạch điều khiển càng cấp nhiều năng lượng cho động cơ để kéo về, sai lệch bằng 0 thì dừng. Đó là lý do servo giữ vị trí chắc, chịu được tải thay đổi mà không mất bước như động cơ bước.

2) Nguyên tắc điều khiển động cơ DC servo (servo mô hình)
a) Cấu tạo bên trong servo RC
Một servo mô hình cổ điển có bốn phần: động cơ DC nhỏ, hộp số bánh răng, chiết áp và mạch điều khiển. Động cơ DC quay nhanh, momen nhỏ; hộp số giảm tốc xuống còn khoảng 50–100 vòng/phút ở trục ra và tăng momen tương ứng. Chiết áp gắn với bánh răng cuối, nên điện áp chiết áp tỷ lệ với góc trục ra.
Mạch điều khiển so sánh điện áp chiết áp với giá trị đặt suy ra từ tín hiệu vào, rồi bật mạch cầu H cho động cơ quay theo hướng làm sai lệch giảm dần, tới khi bằng 0.
b) Tín hiệu PWM điều khiển servo
- Chu kỳ xung 20ms, tức tần số 50Hz.
- Độ rộng xung quyết định góc: khoảng 1ms ứng với 0°, 1.5ms ứng với 90°, 2ms ứng với 180°.
- Nhiều servo thực tế cần dải rộng hơn, 0.5ms cho 0° và 2.5ms cho 180°; nên đo thử từng con.
- Servo quay liên tục 360° thì độ rộng xung quyết định tốc độ và chiều, không phải góc.
3) Sơ đồ mạch điều khiển servo với Arduino
Servo SG90 nhỏ, dòng thấp, có thể đấu thẳng vào Arduino Uno để thử:
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 |
- Dây đỏ là nguồn dương, dây đen hoặc nâu là GND, dây vàng hoặc cam là tín hiệu.
- SG90 dòng tải khoảng 100–250mA, chạy thử lấy 5V từ board được; từ 2 servo trở lên dùng nguồn rời.
- Luôn nối GND nguồn rời chung với GND Arduino.

4) Điều khiển servo MG996R bằng code Arduino
MG996R là servo bánh răng kim loại, momen danh định khoảng 9–11 kg.cm, điện áp 4.8–7.2V. Dòng chạy bình thường vài trăm mA, nhưng dòng kẹt (stall) có thể tới khoảng 2.5A. Vì vậy MG996R luôn cần nguồn 5–6V riêng, đấu thẳng vào chân 5V của Arduino thì board bị reset liên tục khi servo gặp tải.

Cách đấu: chân tín hiệu servo vào một chân số bất kỳ (ví dụ D9), nguồn servo lấy từ nguồn 5V ngoài, GND nguồn ngoài nối chung GND Arduino. Đo thực tế một mẫu MG996R loại phổ thông cho thấy 0° ở khoảng 0.6ms, 90° ở khoảng 1.45ms, 180° ở khoảng 2.3ms; dòng đỉnh đo được khoảng 0.6A khi không kẹt. Hàng sao chép giá rẻ thường yếu hơn thông số in trên vỏ.
Code dùng thư viện Servo có sẵn trong Arduino IDE:
#include <Servo.h> Servo sv; void setup() { sv.attach(9, 600, 2300); // chân 9, xung nhỏ nhất 600µs, lớn nhất 2300µs } void loop() { sv.write(0); delay(1000); sv.write(90); delay(1000); sv.write(180); delay(1000); }Hàm attach khai báo chân và dải độ rộng xung, hàm write đặt góc 0–180°. Thư viện Servo điều khiển được tới 12 servo trên Uno và tới 48 servo trên Arduino Mega.
5) Điều khiển nhiều servo bằng mạch PCA9685
PCA9685 là mạch PWM 16 kênh, độ phân giải 12 bit (4096 mức), giao tiếp I2C, có bộ dao động riêng nên tự phát xung cho 16 servo mà không tốn tài nguyên Arduino. Sáu chân địa chỉ cho phép nối tới 62 mạch trên cùng bus I2C, về lý thuyết điều khiển 992 servo chỉ bằng hai chân SDA, SCL.

Linh kiện cho một cụm thử: servo MG996R, mạch PCA9685, Arduino, nguồn 5V 6A cấp vào cầu đấu nguồn servo của mạch.
a) Cách tính giá trị PWM cho PCA9685
Ở 50Hz, một chu kỳ 20ms chia làm 4096 mức, mỗi mức khoảng 4.88µs. Xung 0.5ms ứng với khoảng 102 mức, xung 2.5ms ứng với khoảng 512 mức. Thực tế mỗi servo một khác, ví dụ dải 102–470 tương ứng 0–180°. Trong code, khai báo địa chỉ mạch, đặt tần số 50Hz, rồi dùng hàm đặt PWM theo kênh hoặc theo góc.
b) Hiệu chỉnh từng servo
Ghép servo thứ hai vào, rất hay gặp chuyện hai con không đứng cùng vị trí dù cùng lệnh. Cách xử lý: khai báo dải xung riêng cho mỗi kênh và chỉnh điểm 90° cho từng con, sau đó các servo sẽ đứng thẳng hàng.
Video cấu hình và các loại AC servo:
6) Điều khiển AC servo công nghiệp
a) Các chế độ điều khiển của driver servo
- Chế độ vị trí (P): bộ điều khiển phát xung và hướng (PUL/DIR) hoặc xung A/B, mỗi xung là một đơn vị dịch chuyển; dùng cho trục máy CNC, máy cắt, bàn xoay.
- Chế độ tốc độ (S): điện áp analog ±10V hoặc lệnh qua mạng đặt tốc độ; dùng cho trục cuốn, trục kéo.
- Chế độ momen (T): đặt lực kéo, dùng cho máy cuốn màng giữ lực căng, máy ép, vặn vít.
- Điều khiển qua mạng: Modbus RS485, CANopen, EtherCAT; một dây mạng điều khiển nhiều trục, đọc được lỗi và vị trí.
b) Thông số điện của AC servo
| Công suất AC servo | Dòng định mức động cơ (gần đúng) | Nguồn cấp driver thường gặp | Momen định mức (3000 vòng/phút) |
| 100W | 0.9–1.1A | 1 pha 220V | 0.32 N.m |
| 200W | 1.5–1.8A | 1 pha 220V | 0.64 N.m |
| 400W | 2.6–2.8A | 1 pha 220V | 1.27 N.m |
| 750W | 4.5–5A | 1 pha hoặc 3 pha 220V | 2.39 N.m |
| 1kW | 5.5–6.5A | 3 pha 220V | 3.18 N.m (dòng 2000 vòng/phút: 4.77 N.m) |
| 2kW | khoảng 11A | 3 pha 220V hoặc 380V tùy dòng máy | 6.37 N.m (dòng 2000 vòng/phút: 9.55 N.m) |
- Momen định mức tính theo M = 9550 × P / n; dòng điện thực xem tem động cơ.
- Servo chịu được quá tải ngắn hạn khoảng 3 lần momen định mức.
- AC servo luôn chạy qua driver servo đi kèm, không dùng biến tần thay thế.
Biến tần dùng cho motor điện 3 pha không đồng bộ, chỉ điều khiển tốc độ; driver servo điều khiển cả vị trí, tốc độ, momen dựa trên encoder. Nhiều máy dùng cả hai: biến tần cho băng tải, servo cho trục định vị.
7) Hộp số giảm tốc cho motor servo
Servo quay nhanh (3000 vòng/phút), momen nhỏ, nên tải nặng hay ghép hộp số hành tinh hoặc hộp số trục vít để giảm tốc, tăng momen và giảm tỷ lệ quán tính tải. Ví dụ servo 400W, 1.27 N.m, ghép hộp số tỉ số 10 hiệu suất khoảng 95% thì momen trục ra khoảng 12 N.m, tốc độ 300 vòng/phút. Hộp số cho servo cần độ rơ (backlash) nhỏ, thường tính bằng arcmin. Các mẫu motor ghép hộp số khác có ở nhóm động cơ giảm tốc.

Video motor giảm tốc IRV 60W, 140W, 250W, 370W, trục ra vuông góc trục vào:
8) Các loại động cơ servo
- Servo mô hình RC (SG90, MG90S, MG996R): động cơ DC + hộp số + chiết áp, góc 180° hoặc quay liên tục.
- DC servo: động cơ DC có chổi than hoặc không chổi than kèm encoder, dùng cho robot, xe tự hành.
- AC servo: động cơ đồng bộ nam châm vĩnh cửu kèm encoder và driver, dùng trong máy công nghiệp.
- Servo có hộp số và servo trục trực tiếp; servo encoder tương đối và encoder tuyệt đối (nhớ vị trí khi mất điện nhờ pin).
Các mẫu servo cho máy công nghiệp xem tại motor servo.
9) Ứng dụng điều khiển động cơ servo
- Điều khiển servo bằng Arduino cho cánh tay robot học tập, robot hình người, xe mô hình, máy bay mô hình.
- Điều khiển AC servo bằng PLC phát xung cho máy cắt dập, máy cấp phôi, bàn xoay chia độ, máy đóng gói gối.
- Servo chế độ momen cho máy cuốn màng, máy cuốn dây, máy xiết ốc tự động.
- Servo qua EtherCAT cho robot công nghiệp, máy CNC nhiều trục, máy gắp đặt linh kiện điện tử.
- Servo ghép hộp số hành tinh cho trục nâng hạ, cửa tự động tải nặng, băng tải định vị chính xác.
10) Ưu điểm và nhược điểm của điều khiển servo
a) Ưu điểm
- Điều khiển vòng kín, không mất vị trí khi tải thay đổi, driver báo lỗi khi sai lệch quá giới hạn.
- Giữ momen gần như không đổi tới tốc độ định mức, tăng tốc nhanh, chịu quá tải ngắn hạn.
- Chạy êm, ít nóng hơn động cơ bước vì chỉ lấy dòng theo tải.
b) Nhược điểm
- Giá cao hơn bộ động cơ bước cùng cỡ.
- Phải dò thông số (tuning) độ cứng, độ lợi; dò sai thì trục rung, kêu.
- Servo RC giá rẻ dùng chiết áp nên độ chính xác và tuổi thọ hạn chế.
11) Câu hỏi thường gặp về điều khiển động cơ servo
a) Người sắp mua bộ servo cần hỏi gì, xác minh gì
- Mua AC servo cần hỏi người bán những gì? Công suất, tốc độ định mức (2000 hay 3000 vòng/phút), momen định mức, quán tính rotor (thấp, trung bình, cao), độ phân giải encoder và encoder tuyệt đối hay tương đối, có phanh hay không, cỡ bích (60, 80, 130mm), đường kính trục và then, chế độ điều khiển driver hỗ trợ (xung, analog, Modbus, EtherCAT), nguồn vào driver 1 pha hay 3 pha.
- Xác minh tem động cơ và driver như thế nào? Mã động cơ và mã driver phải cùng bộ theo bảng ghép của hãng, công suất driver bằng hoặc lớn hơn động cơ. Đối chiếu dòng định mức trên tem: servo 750W mà ghi 2A là bất thường. Kiểm tra cáp encoder và cáp động lực đúng chủng loại, dài bao nhiêu mét.
- Làm sao nhận ra servo mô hình không đúng quảng cáo? MG996R ghi 13 kg.cm nhưng thực tế bản sao thường chỉ 8–10 kg.cm. Thử: gắn cánh tay đòn 10cm, treo dần tạ, xem servo giữ được bao nhiêu gam. Bánh răng nhựa sơn màu kim loại cũng hay gặp, mở nắp kiểm tra.
- Chọn công suất servo theo tải ra sao? Tính momen tải quy về trục động cơ, momen tăng tốc theo quán tính, rồi chọn servo có momen định mức lớn hơn momen hiệu dụng, momen đỉnh lớn hơn momen tăng tốc. Tỷ lệ quán tính tải trên quán tính rotor nên dưới khoảng 10 lần; vượt nhiều thì thêm hộp số.
- Giá bộ servo tham khảo bao nhiêu? Giá trung bình thị trường Việt Nam: servo SG90 vài chục nghìn đồng, MG996R khoảng trăm nghìn; bộ AC servo 400W gồm động cơ, driver, cáp từ vài triệu tới hơn chục triệu đồng tùy hãng; bộ 1–2kW cao hơn tương ứng. Hộp số hành tinh tính riêng.
b) Người đã mua: lắp cho đúng, dùng cho tối ưu
- Đấu nối driver AC servo thế nào? Nguồn chính vào L1, L2 (L3), nguồn điều khiển vào L1C, L2C nếu có; cáp động lực U, V, W ra động cơ đúng thứ tự, không đảo được như motor 3 pha thường; cáp encoder cắm đúng cổng; tín hiệu điều khiển vào cổng I/O. Nối đất vỏ động cơ và driver chung một điểm.
- Cài đặt cơ bản khi chạy lần đầu? Chọn chế độ điều khiển (vị trí, tốc độ, momen), cài tỷ số bánh răng điện tử để số xung lệnh ứng với 1mm hoặc 1 độ dễ tính, chạy jog không tải, sau đó dùng chức năng tự dò (auto tuning) khi đã gắn tải.
- Dùng servo sao cho bền và ít tốn điện? Giữ nhiệt độ tủ điện dưới khoảng 40–45°C, có quạt hút. Lắp điện trở xả cho trục tải lớn hay dừng gấp. Trục đứng (nâng hạ) dùng servo có phanh để không rơi tải khi mất điện.
- Servo RC rung giật khi giữ góc thì làm sao? Thường do nguồn yếu hoặc tải vượt momen. Dùng nguồn 5–6V đủ dòng (mỗi MG996R tính khoảng 1–2A khi chạy nặng), thêm tụ 470–1000µF ở cầu đấu nguồn, rút ngắn dây nguồn.
- Driver báo lỗi quá tải hoặc sai lệch vị trí thì xử lý ra sao? Đọc mã lỗi theo sách hướng dẫn, kiểm tra cơ khí có kẹt, phanh đã nhả chưa, gia tốc có quá gắt, độ lợi có quá thấp. Giảm gia tốc hoặc tăng thời gian tăng tốc trước, rồi mới dò lại thông số.
c) Các lỗi người dùng servo thường mắc và cách chỉnh sửa
- Cấp nguồn servo MG996R từ chân 5V Arduino? Triệu chứng: Arduino reset, servo giật, cổng USB máy tính báo quá dòng. Cách sửa: dùng nguồn 5V riêng, nối chung GND.
- Đảo thứ tự U, V, W của AC servo? Khác motor 3 pha thường, đảo pha servo không làm đổi chiều mà làm động cơ giật mạnh, báo lỗi quá dòng. Cách sửa: đấu đúng màu dây theo cáp hãng; muốn đổi chiều thì đổi bằng thông số trong driver.
- Đi cáp encoder chung máng với cáp động lực? Triệu chứng: lỗi encoder chập chờn, trục nhảy vị trí. Cách sửa: tách máng cáp, dùng cáp có chống nhiễu, nối đất lớp chống nhiễu một đầu.
- Để độ lợi (gain) quá cao khi tuning? Trục kêu rít, rung ở tần số cao khi đứng yên. Cách sửa: giảm độ cứng (rigidity) từng nấc, bật bộ lọc cộng hưởng (notch filter), chạy lại auto tuning với tải thực.
- Dùng servo RC xoay liên tục để định vị? Loại 360° không có phản hồi góc, chỉ chỉnh được tốc độ, nên không đứng đúng góc. Cách sửa: dùng servo 180° cho định vị, hoặc gắn thêm encoder ngoài.
d) Dành cho sinh viên cơ điện mới vào ngành: nên tìm hiểu gì trước
- Cần nắm những khái niệm gì trước khi học servo? Điều khiển vòng hở và vòng kín, bộ điều khiển PID, PWM, encoder (xung A, B, Z, độ phân giải), momen và quán tính, tỷ số truyền, mạch cầu H. Công thức hay dùng: M = 9550 × P / n và momen tăng tốc = J × gia tốc góc.
- Nên tìm hiểu loại động cơ nào trước servo? Học động cơ DC có chổi than trước qua bài động cơ điện 1 chiều, rồi động cơ bước qua bài điều khiển động cơ bước, sau đó tới servo RC, cuối cùng là AC servo công nghiệp.
- Thứ tự thực hành hợp lý? SG90 với Arduino để hiểu PWM 50Hz; MG996R với nguồn rời để hiểu dòng và momen; PCA9685 để điều khiển nhiều trục; sau đó một bộ AC servo nhỏ 100–200W với PLC phát xung, tập cài tỷ số bánh răng điện tử và auto tuning.
- Tự kiểm chứng bằng dụng cụ đo thế nào? Dùng máy hiện sóng hoặc bộ phân tích logic đo độ rộng xung, đối chiếu góc thực bằng thước đo góc. Đồng hồ vạn năng mắc nối tiếp đo dòng servo khi không tải, khi có tải, khi kẹt. Với AC servo, đọc giá trị dòng và tải trên màn hình driver khi chạy.
- Đọc tiếp tài liệu nào? Bài mạch điều khiển động cơ không chổi than giúp hiểu phần công suất của driver, vì AC servo về bản chất là động cơ đồng bộ nam châm vĩnh cửu điều khiển bằng nghịch lưu.
Bài liên quan:
- Động Cơ Servo: Khái Niệm, Cấu Tạo, Nguyên Tắc Hoạt Động, Phân Loại Và Ứng Dụng
- Motor Điện 3 Pha Xuất Khẩu Châu Âu, Cấu Tạo, Ký Hiệu, Tiêu Chuẩn Thiết Kế
- Biến Tần Điều Khiển Tốc Độ Motor 3 Pha, Lợi Ích, Khái Niệm
- Động Cơ Parma, Thương Hiệu Bán Chạy Nhất Việt Nam
- Cách Đấu Điện Motor 1 Pha, Đấu Tụ, Đảo Chiều
- Giá Motor 3 Pha Hitachi, Toshiba, Mitsubishi, ABB, Siemens, Giá Quấn Lại Motor






