Tìm hiểu RC SERVO
Giải pháp Điều Khiển Tốc Độ cho RC SERVO (không
can thiệp phần cứng)
Khảo sát trên động cơ RG946 của hãng TOWARD PRO ( Trung Quốc ) là loại động cơ có chất
lượng tương đối tốt , các thông số thỏa mãn các yêu cầu đặt ra đối với nhiều ứng dụng này , giá
thành chấp nhận được .
Thông số của động cơ:
Bảng dòng tải đo đạc trực tiếp:
(Các giá trị này là giá trị tương đối được đo đạc thủ công bằng VOM số mang tính chất dùng để
ước lượng độ lớn của dòng điện tiêu thụ của động cơ khi động cơ hoạt động)
Điều kiện đo
Dòng điện trung bình
Quay không tải
200mA – 300mA
Có tải nhẹ
Khoảng 400mA – 500mA
Kẹt tải
Khoảng 1.2A
www.robotgiaoduc.com
Dựa vào bảng các giá trị trên ta nhận xét thấy rằng dòng qua động cơ tầm khoảng 200mA đến
500mA .Khi kẹt tải dòng sẽ tăng lên khoảng 1,2A.
IC ổn áp tuyến tính áp ra phẳng hơn IC ổn áp xung.Nh ng tổn hao lớn hơn IC nguồn xung rất
nhiều.Sẽ làm tỏa nhiệt l ợng lớn rất vô ích , đồng th i giảm th i gian hoạt động . Th ng các IC
ồn áp tuyến tính chỉ có các loại ổn áp đ ợc các tải có dòng hoạt động nhỏ .Vì tải là động cơ nên
vấn đề cần nguồn có ngõ ra có áp phẳng không quan trọng bằng việc nguồn có ngõ ra có dòng
lớn . Nên ta sẽ chọn IC nguồn xung cho việc thiết kế nguồn cho RC servo. Và một lý do quan
trọng hơn cả là hiệu suất của loại IC này cao làm tăng th i gian hoạt động ,giảm thiểu tối đa
nhiệt năng sinh ra khi RC hoạt động .
Trong các họ IC ổn áp nguồn xung hiện nay seri LM25xx của hãng National
Semiconductor là loại khá thông dụng tại thị tr ng Việt Nam hiện nay. Ta cần chọn các IC có
định mức dòng càng lớn càng tốt , tần số càng cao càng tốt để các linh kiện gắn ngoài (tụ và cuộn
dây ) có kích th ớc tối thiểu . Tuy nhiên nếu ta sử dụng loại IC nguồn xung có khả năng chỉnh
đ ợc áp ra thì loại IC của hãng MICREL cũng có khả năng thích hợp.
Tập trung so sánh 3 loại IC có dòng danh định lớn.
Tên IC
Dòng điện (A)
Tần số(Khz)
Áp ra (V)
Giá (VND)
LM2576
3
52
5 hoặc ADJ
14.000
LM2596
3
150
5 hoặc ADJ
14.000
MIC29302
3
100
5V
28.000
Ta nhận thấy LM2596 u điểm hơn loại LM2576 mà giá thành lại ngang nhau nên ta sử dụng
LM2596 cho vấn đề thiết kế mạch nguồn
. Đối với mạch điều khiển RC SERVO: Để lựa chọn đ ợc ph ơng án thiết kế mạch điều
khiển RC SERVO ta cần tìm hiểu sơ qua cấu tạo và cách thức động cơ hoạt động.
www.robotgiaoduc.com
Bên trong RC servo
1. Motor
2.Electronics Board
3.Positive Power Wire (Red)
4.Signal Wire (Yellow or White)
5.Negative or Ground Wire (Black)
6.Potentiometer
7.Output Shaft/Gear
8.Servo Attachment Horn/Wheel/Arm
9.Servo Case
10.Integrated Control Chip
Bên trong của một động cơ servo R/C. Servo bao gồm
một động cơ,một chuỗi các bánh răng giảm tốc, một
mạch điều khiển và một vôn kế
Động cơ và vôn kế nối với mạch điều khiển tạo thành mạch hồi tiếp vòng kín. Cả mạch
điều khiển và động cơ đều đ ợc cấp nguồn DC (th ng từ 4.8 – 7.2 V).
Để quay động cơ, tín hiệu số đ ợc gới tới mạch điều khiển . Tín hiệu này kh i động động
cơ , thông qua chuỗi bánh răng , nối với vôn kế . Vị trí của trục vôn kế cho biết vị trí trục ra của
servo . Khi vôn kế đạt đ ợc vị trí mong muốn , mạch điều khiển sẽ tắt động cơ . Động cơ servo
www.robotgiaoduc.com
đ ợc thiết kế để quay có giới hạn chứ không phải quay liên tục nh động cơ DC hay động cơ
b ớc . Mặc dù ta có thể chỉnh động cơ servo R/C quay liên tục nh ng công dụng chính của động
cơ servo là đạt đ ợc góc quay chính xác trong khoảng từ 90 – 180 độ . Việc điều khiển này có
thể ứng dụng để lái robot, di chuyển các tay máy lên xuống, quay một cảm biến để quét khắp
phòng…
Servo và điều biến độ rộng xung
Trục của động cơ servo R/C đ ợc định vị nh vào kỹ thuật gọi là điều biến độ rộng xung
(PWM). Trong hệ thống này, servo là đáp ứng của một dãy các xung số ổn định. Cụ thể hơn,
mạch điều khiển là đáp ứng của một tín hiệu số có các xung biến đổi từ 1 – 2 ms. Các xung này
đ ợc g i đi 50 lần/giây. Chú ý rằng không phải số xung trong một giây điều khiển servo mà là
chiều dài của các xung. Servo đòi hỏi khoảng 30 – 60 xung/giây. Nếu số này qua thấp, độ chính
xác và công suất để duy trì servo sẽ giảm. Với độ dài xung 1 ms, servo đ ợc điều khiển quay
theo một chiều (giả sử là chiều kim đồng hồ )
Điều khiển vị trí của trục ra của động cơ bằng cách điều chế độ rộng xung
Với độ dài xung xung 2 ms, servo quay theo chiều ng ợc lại. Kỹ thuật này còn đ ợc gọi
là tỉ lệ số - chuyển động của servo tỉ lệ với tín hiệu số điều khiển.
Công suất cung cấp cho động cơ bên trong servo cũng tỉ lệ với độ lệch giữa vị trí hiện tại
của trục ra với vị trí nó cần đến. Nếu servo gần vị trí đích, động cơ đ ợc truyền động với tốc
độ thấp . Điều này đảm bảo rằng động cơ không v ợt quá điểm định đến. Nh ng nếu servo xa
vị trí đích nó sẽ đ ợc truyền động với vận tốc tối đa để đến đích càng nhanh càng tốt. Khi trục ra
đến vị trí mong muốn, động cơ giảm tốc. Quá trình t ng chừng nh phức tạp này diễn ra trong
khoảng th i gian rất ngắn - một servo trung bình có thể quay 60 độ trong vòng ¼ - ½ giây.
Vì độ dài xung có thể thay đổi tùy theo hãng chế tạo nên ta phải chọn servo và máy thu
vô tuyến thuộc cùng một hãng để đảm bảo sự t ơng thích. Đối với robot, ta phải làm một vài thí
nghiệm để xác định độ dài xung tối u.
Vai trò của Vôn kế
www.robotgiaoduc.com
Vôn kế trong servo giữ vai trò chính trong việc cho phép định vị trí của trục ra. Vôn kế
đ ợc gắn vào trục ra (trong một vài servo, Vôn kế chính là trục ra). Bằng cách này, vị trí của
Vôn kế phản ánh chính xác vị trí trục ra của servo. Ta đã biết Vôn kế hoạt động nh cung cấp
một điện áp biến thiên cho mạch điều khiển,
Khi cần chạy bên trong Vôn kế chuyển động , điện thế sẽ thay đổi. Mạch điều khiển trong servo
so sánh điện thế này với độ dài các xung số đ a vào và
phát“tín hiệu sai số” nếu điện thế không đúng . Tín hiệu sai số này tỉ lệ với độ lệch giữa vị trí của
Vôn kế và độ dài của tín hiệu vào. Mạch điều khiển sẽ kết hợp tín hiệu sai số này để quay động
cơ. Khi điện thế của Vôn kế và độ dài các xung số bằng nhau, tín hiệu sai số đ ợc loại bỏ và
động cơ ngừng.
Vôn kế thường được dùng như một cầu chia áp.
Khi Vôn kế quay, cần chạy di chuyển dọc theo
chiếu dài thanh điện trở.
Tín hiệu ra của Vôn kế là một điện thế biến thiên từ 0 -5V
Vì vậy để điều khiển đ ợc động cơ thì vấn đề cốt
lõi chính là làm sao ta tạo ra đ ợc các xung có tần số 50hz và có th i gian lên trong tầm nhỏ hơn
2ms . Ta có 3 cách tạo xung nh sau:
* Dùng hàm delay
* Dùng biến đếm và so sánh
* Dùng module PWM
Dùng hàm delay : một chân I/O của vi điều khiển xuất ra mức logic 1 ,sau đó delay 1
khoảng th i gian a (chính là th i gian mức cao của xung điều khiển động cơ mong
muốn ) . Tiếp theo đó kéo chân I/O đó xuống mức 0. Delay thêm 1 khoảng th i gian
nữa cho đủ 20ms . Đây là giải thuật đơn giản , thiết kế phần cứng sẽ gọn nhẹ vì chỉ
dùng các chân I/O là đủ khả năng điều khiển đ ợc động cơ . Mỗi chân I/O t ơng ứng
với 1 chân điều khiển động cơ . Chi phí thi công mạch rất thấp. Tuy nhiên trong giải
thuật này hầu hết th i gian vi điều khiển chẳng làm gì cả ( và cũng chắng có khả năng
xử lý công việc nào cả ) nên muốn sử dụng ph ơng án này ta cần có thêm phần giao
tiếp nó . Tức có nghĩa là thiết kế phần điều khiển RC SERVO thành 1 module chuyên
dùng để delay và có thêm 1 cổng để giao tiếp với module này . Bên cạnh đó nếu dung
nhiều động cơ ta phải so sánh các giá trị delay với nhau để biết đ ợc delay cho động
cơ nào tr ớc , cho động cơ nào sau . Vấn đề này gây khó khăn khi lập trình khi mà ta
không thể viết thuật toán để sắp xếp đ ợc dữ liệu (vì hàm delay sử dụng quá nhiều ).
Dùng giải thuật đếm và so sánh : ý t ng của giải thuật này là tạo 1 biến đếm
khoảng 10us và liên tục đếm cho đến 20ms thì reset biến đếm . Khi đó sẽ cho chân
điều khiển RC SERVO lên 1 . Biến đếm này sẽ đ ợc so sánh với các giá trị chính là
các số chính là các giá trị các độ rộng xung lên của các xung điều khiển động cơ . Nếu
1 so sánh >= xảy ra chân điều khiển sẽ đ ợc set xuống 0. u điểm của giải thuật này
www.robotgiaoduc.com
là dễ dàng cập nhật các số dùng để so sánh ( tức các góc quay mong muốn của động
cơ ) . Nh ng khi chạy nhiều động cơ vì có nhiều so sánh diễn ra mà hàm ngắt dùng để
tăng biến đếm lại có th i gian khá nhỏ nên sẽ làm cho ngõ ra điều khiển động cơ sai
lệch , không chính xác . Điều này khiến các động cơ sẽ bị rung lắc tại vị trí mong
muốn.
Dùng module PWM của vi điều khiển : đây là ph ơng án cho ra xung ổn định nhất
đồng th i dễ dàng cho việc cập nhật các giá trị điều khiển . Nh ng bắt buộc ta phải sử
dụng kênh PWM với độ phân giải tối thiểu là 10 bits để đạt độ mịn t ơng đối chấp
nhận đ ợc khi thay đổi các góc quay của động cơ . Vì bản chất xung điều khiển là các
xung có chu kỳ lớn mà duty cycle lại bé ( nhỏ hơn 10%) nên độ phân giải của kênh
PWM phải lớn để mới thỏa mãn đ ợc 2 điều trên .
Điều tốc RC Servo
Nguyên lý để điều tốc động cơ được thể hiện trên hình vẽ sau
Khi động cơ muốn quay đến 1 góc nào đó , khoảng góc từ góc muốn quay đến góc hiện
tại sẽ đ ợc chia nhỏ thành n khoảng nhỏ.Động cơ quay từ khoảng 1 đến khoảng n . Giữa
mỗi khoảng khi động cơ quay xong nó sẽ nghỉ 1 khoảng th i gian nào đó.Bằng việc thay
đổi khoảng th i gian nghỉ đó ta thay đổi đ ợc vận tốc của động cơ. hình trên:vận tốc
t ơng ứng của hình trên cùng là nhỏ nhất và của hình d ới cùng là lớn nhất , trong
khoảng th i gian 18ms động cơ trên quay đ ợc 1 đoạn nhỏ , động cơ giữa quay đ ợc 2
đoạn nhỏ và động cơ d ới quay đ ợc 5 đoạn nhỏ.
Giải thuật:
www.robotgiaoduc.com
Trong giải thuật này sử dụng 1 ngắt th i gian 0.1s. Khi ngắt xảy ra ta tăng biến đếm i và
và j.Biến i dùng để cập nhật khi nào thì kích cho động cơ chạy , biến j dùng để tính đ ợc
kích động cơ chạy bao nhiêu lần dựa vào góc bắt đầu và kết thúc.Biến i sẽ cập nhật khi
nào kích bằng cách tính số d khi lấy i chia cho vận tốc.
Ví dụ nh tr ng hợp d ới cùng vận tốc=3 , tr ng hợp giữa vận tốc=6 , tr ng hợp trên
cùng vận tốc=9.Một l u ý quan trọng là thực ra vận tốc nói đến đây chỉ là biến dùng để
cập nhật vận tốc thực sự (dùng để tính toán).Vận tốc thực sự của động cơ sẽ tỉ lệ nghịch
với biến vận tốc đ ợc nói đến trên.
www.robotgiaoduc.com
Trong giải thuật này bắt buộc mạch sử dụng để kích động cơ chạy phải là mạch dung
PWM.B i vì trong th i gian nhảy vào ngắt lúc đó sẽ kích động cơ chạy.Th i gian ngắt t ơng đối
nhỏ nên việc chạy bằng delay và giải thuật so sánh không thực hiện đ ợc. Đặc biệt nếu sử dụng
18 động cơ thì th i gian tiêu tốn trong ngắt tối thiểu là 18*20ms.Th i gian này lớn hơn rất nhiều
lần th i gian ngắt 1ms.Dùng PWM thì th i gian này ta không quan tâm mà chỉ quan tâm đến th i
gian lên của xung điều khiển của động cơ vì PWM chạy độc lập với vi điều khiển . Tất nhiên
th i gian tối thiểu giữa 2 lần cập nhật phải >=20ms.Điều đó đ ợc đảm bảo bằng cách chọn các
biến vận tốc và khoảng th i gian ngắt thích hợp.Tuy nhiên nếu điều kiện này không đảm bảo thì
sẽ có những lần kích chạy động cơ bị bỏ lỡ ( thực ra là mạch điều khiển có kích nh ng mà
động cơ không đáp ứng kịp) và góc kích sẽ đ ợc cộng dồn lại khi nào điều kiện này (th i gian 2
lần kích liên tiếp >=20ms) đảm bảo.Đây chính là u điểm tốt v ợt trội mà mạch sử dụng PWM
có đ ợc so với mạch sử dụng 2 ph ơng pháp so sánh và delay nêu ra trên.
Mr Công Nghệ
www.robotgiaoduc.com