Trang 38
Học xong bài này em sẽ:
- Biết các lệnh điều khiển động cơ DC và động cơ servo của robot.
- Biết và lập trình điều khiển được robot chuyển động cánh tay.
Khởi động
Các em đã từng được quan sát robot chuyển động chưa? Làm thế nào để robot có thể chuyển động được? Trong các nhà máy, người ta sử dụng cánh tay robot để thực hiện một số công đoạn trong sản xuất thay cho con người. Cơ chế để điều khiển cánh tay robot là gì?
1. Lập trình điều khiển động cơ DC
Hoạt động 1: Tìm hiểu các lệnh điều khiển động cơ DC Đọc, thảo luận để hiểu các lệnh cơ bản điều khiển động cơ DC của robot giáo dục. |
a) Các lệnh điều khiển động cơ DC
Trong Bài 2 em đã làm quen với động cơ DC thường dùng để tạo chuyển động cho các bánh xe của robot. Động cơ DC chỉ có hai chiều xoay: (1) xoay từ trái sang phải theo chiều kim đồng hồ (quy ước gọi là chiều tiễn) và ngược lại (2) xoay từ phải sang trái ngược chiều kim đồng hồ (chiều lùi). Câu lệnh để điều khiển động cơ DC có thể được mô tả như sau:
Xoay động cơ (chiều, tốc độ)
Trong đó, tham số chiều nhận một trong hai giá trị "tiễn" hoặc "lùi"; tham số tốc độ nhận một giá trị nguyên từ 0 đến 255.
Chú ý: Trong thực tế, để động cơ DC của robot hoạt động ổn định với tốc độ xác định cần đảm bảo nguồn điện đủ theo quy định. Nếu nguồn điện yếu hơn quy định thì có thể dẫn đến sai số hoặc động cơ không hoạt động. Ngoài ra, bề mặt hoặc địa hình di chuyển cũng sẽ ảnh hưởng đến tốc độ của động cơ DC.
Các robot thường dùng hai động cơ DC độc lập là M1 và M2 kết nối với các cổng tương ứng trên bảng mạch điều khiển. Khi lắp ráp, các động cơ được quy định kết nối như sau:
Trang 39
– Động cơ lắp bên trái được kết nối với cổng M1.
– Động cơ lắp bên phải được kết nối với cổng M2.
Các robot đều hỗ trợ các lệnh trong Bảng 9.1 để điều khiển từng động cơ DC M1, M2 độc lập.
Bảng 9.1. Các lệnh để điều khiển động cơ DC
Lệnh | Tham số | Mô tả ý nghĩa |
Xoay động cơ DC M1 (chiều, tốc độ) | chiều ("tiến", "lùi") tốc độ (từ 0 đến 255) | Điều khiển động cơ M1 (động cơ trái) chuyển động theo chiều kim đồng hồ (nếu chiều = "tiến") hoặc ngược lại (nếu chiều = “lùi"). |
Xoay động cơ DC M2 (chiều, tốc độ) | chiều (“tiến", "lùi") tốc độ (từ 0 đến 255) | Điều khiển động cơ tại cổng M2 (động cơ phải). Ý nghĩa tương tự lệnh điều khiển động cơ M1. |
b) Điều khiển robot chuyển động
Để điều khiển robot chuyển động cần thiết lập các lệnh điều khiển đồng thời cả hai động cơ DC M1 và M2. Sau đây là phân tích một số trường hợp.
1) Chuyển động thẳng: Hai động cơ được thiết lập với các tham số như nhau.
Xoay động cơ DC M1 (tiến, tốc độ)
Xoay động cơ DC M2 (tiến, tốc độ)
2) Chuyển động lùi: Hai động cơ cùng "lùi" với cùng tốc độ.
Xoay động cơ DC M1 (lùi, tốc độ)
Xoay động cơ DC M2 (lùi, tốc độ)
3) Điều khiển robot rẽ trái: Có nhiều cách thực hiện, ví dụ:
– Cho động cơ trái dừng lại, động cơ phải vẫn chuyển động tiến.
Xoay động cơ DC M1 (tiến, 0)
Xoay động cơ DC M2 (tiến, tốc độ)
– Cho động cơ trái đi lùi, động cơ phải vẫn chuyển động tiến.
Xoay động cơ DC M1 (lùi, tốc độ)
Xoay động cơ DC M2 (tiến, tốc độ)
– Cho cả hai động cơ cùng chuyển động tiến nhưng tốc độ của M1 nhỏ hơn tốc độ của M2.
Xoay động cơ DC M1 (tiến, tốc độ 1)
Xoay động cơ DC M2 (tiến, tốc độ 2)
4) Điều khiển robot rẽ phải: Trường hợp này xử lí tương tự trường hợp rẽ trái.
5) Điều khiển robot dừng lại: Đặt tốc độ chuyển động của cả 2 động cơ bằng 0.
Xoay động cơ DC M1 (tiến, 0)
Xoay động cơ DC M2 (tiến, 8)
c) Các câu lệnh lập trình tích hợp điều khiển robot chuyển động Trong lập trình điều khiển robot, người ta thường thiết lập các lệnh tích hợp điều khiển chuyển động như trong Bảng 9.2.
Trang 40
Bảng 9.2. Các lệnh tích hợp điều khiển chuyển động
Câu lệnh | Tham số | Ý nghĩa |
Đi thẳng (tốc độ) | tốc độ (từ 0 đến 255) | Điều khiển robot chuyển động thẳng với <tốc độ>. |
Đi lùi (tốc độ) | tốc độ (từ 0 đến 255) | Điều khiển robot chuyển động lùi với <tốc độ>. |
Dừng lại | tốc độ (từ 0 đến 255) | Điều khiển robot dừng lại. |
Xoay trái (tốc độ) | tốc độ (từ 0 đến 255) | Điều khiển robot xoay trái với <tốc độ. |
Xoay phải (tốc độ) | tốc độ (từ 0 đến 255) | Điều khiển robot xoay phải với <tốc độ>. |
Đợi (thời gian) | thời gian tính bằng | Chương trình dừng không thực hiện giây trong <thời gian> tính bằng giây. |
d) Ví dụ minh hoạ
Ví dụ 1. Cần điều khiển robot chuyển động từ vị trí A đến vị trí B và dừng lại. Đặt robot tại vị trí A và hướng về B. Chương trình điều khiển có thể như sau:
Bắt đầu chương trình
Đi thẳng (158)
Đợi 2 giây
Dừng lại
Hình 9.1. Sơ đồ điều khiển robot đi thẳng
Phân tích: Chương trình sẽ cho robot đi thẳng với tốc độ 150 trong thời gian 2 giây. Để điều khiển robot dừng lại tại vị trí B chúng ta phải điều chỉnh hai tham số tốc độ (150) và thời gian (2 giây) để đạt được mục đích.
Chú ý: Nếu chương trình bỏ đi lệnh Đợi 2 giây thì robot sẽ đứng im một chỗ. Lí do là khi ra lệnh điều khiển Đi thẳng(150), robot chưa kịp chuyển động thì chương trình đã thực hiện lệnh Dừng lại và do vậy robot sẽ đứng im. Do đó lệnh Đợi 2 giây là rất quan trọng, lệnh sẽ cho phép robot di chuyển trong 2 giây trước khi dừng lại.
Ví dụ 2. Điều khiển A đi đến B, sau đó quay trái và đi đến C rồi dừng lại. Đặt robot tại vị trí A và hướng về B. Chương trình điều khiển có thể như sau:
Bắt đầu chương trình
Đi thẳng (150)
Đợi 2 giây
Xoay trái (100)
Đợi 0.5 giây
Đi thẳng (150)
Đợi 1.5 giây
Dừng lại
Hình 9.2. Sơ đồ điều khiển robot đi thẳng và rẽ trái
Phân tích: Chương trình sẽ điều khiển robot chuyển động từ A đến B (xem Ví dụ 1), sau đó thực hiện hai lệnh Xoay trái (100) và Đợi 0.5 giây để robot rẽ trái, sau đó đi tiếp đến C thì dừng lại. Em cần điều chỉnh các tham số để robot thực sự rẽ trái và đi tiếp đến C.
Trang 41
Câu hỏi
Em hãy viết câu lệnh điều khiển robot quay lại 180° và đi tiếp.
2. Lập trình điều khiển động cơ servo
Hoạt động 2: Tìm hiểu cách điều khiển động cơ servo Đọc, thảo luận về câu lệnh điều khiển của động cơ servo và mô hình ứng dụng hai động cơ servo. |
a) Cách điều khiển động cơ servo
Khác với động cơ DC có thể điều khiển được chiều xoay và tốc độ xoay, động cơ servo chỉ có thể thực hiện được lệnh xoay cánh tay động cơ đến vị trí được lập trình sẵn nhưng không điều khiển được tốc độ xoay (Hình 9.3).
Hình 9.3. Minh hoạ vị trí của động cơ servo
Chiều xoay của động cơ servo là hướng khi chúng ta quan sát trực diện với mặt trục xoay. Theo quy ước, chiều xoay từ phải sang trái tức ngược chiều kim đồng hồ của động cơ servo sẽ tính từ góc 0° đến 180°. Ta có hình ảnh minh hoạ các vị trí góc của động cơ servo như Hình 9.4. Góc xoay của động cơ servo là từ 0° đến 180°.
Hình 9.4. Các góc xoay của động cơ servo
Như vậy lệnh điều khiển động cơ servo sẽ có hai tham số là cổng kết nối và góc xoay cần điều khiển của động cơ.
Bảng 9.3. Lệnh điều khiển động cơ servo
Lệnh | Tham số | Mô tả ý nghĩa |
Xoay động cơ servo (cổng, góc) | cổng (vị trí cổng I/O có kết nối với động cơ) góc (từ 0° đến 180°) | Điều khiển động cơ servo có kết nối tại cổng <cổng> xoay đến vị trí góc <góc tính theo độ. |
b) Mô hình cánh tay robot điều khiển bởi hai động cơ servo
Cánh tay robot là một loại thiết bị cơ khí được thiết kế để thực hiện các chức năng tương tự như cánh tay của con người và thường được sử dụng trong các dây chuyền lắp ráp, thay thế linh kiện tại các nhà máy.
Trang 42
Chúng ta sẽ quan sát một mô hình cánh tay robot đơn giản bao gồm phần tay máy và cơ cấu gắp đồ vật được điều khiển bởi hai động cơ servo: động cơ 1 điều khiển tay máy nâng lên/hạ xuống; động cơ 2 điều khiển đóng/mở cơ cấu gắp.
Hình 9.5 mô tả một mô hình cánh tay máy hai bậc như vậy.
Động cơ 1 dùng để nâng (hạ) cánh tay robot. Góc nâng được xác định bởi quy trình lắp ghép cơ khí của cánh tay. Ví dụ góc = 90 là vị trí nằm ngang, góc = 80 là vị trí đứng thẳng của cánh tay.
Động cơ 2 dùng để mở, đóng hai tay của cơ cấu gắp các đồ vật.
Hình 9.6 Mô hình cánh tay máy hai bậc.
e) Ví dụ bài toán điều khiển cánh tay robot hai động cơ
Khởi động chương trình
Xoay động cơ SERVO (5, 90)
Xoay động cơ SERVO (6, 85)
Goc_xoay = 90
← Thiết lập vị trí ban đầu: động cơ 1 cổng 5, động cơ 2 cổng 6
repeat 10
Xoay động cơ SERVO (6, 100)
Đợi 6.5 giây
← Điều khiển nắm tay gấp (mô phỏng động tác gắp đồ vật)
while Góc_ xoay < 150
Goc_xoay = Goc_xoay + 2
Xoay động cơ SERVO (5, Goc_xoay) .
Đợi 0.05 giây
← Sử dụng biến nhớ Góc_xoay để điều khiển áanh tay robot từ từ nâng lên vị trí 150°. Biến nhớ góc xoay luôn bằng giá trị góc xoay hiện thời của động cơ 2.
while Goc_xoay > 90
Goc_xoay = Goc_xoay - 2
Xoay động cơ SERVO (5, Goc_ xoay)
Đợi 0.05 giây
← Sử dụng biến nhớ Goc_ xoay để điều khiển cánh tay robot từ từ hạ xuống vị trí 90°.
Xoay động cơ SERVO (6, 85)
Đợi 6.5 giây
← Điều khiển tay gắp mở ra (mô phỏng động tác thả đồ vật).
Chương trình được viết bằng các lệnh mã giả như sau:
Giả sử tham số của hai động cơ như sau:
- Động cơ 1 kết nối tại công 5, có góc xoay từ 90° đến 150°. Góc 90° là hướng nằm ngang góc 150° là hướng lên trên.
- Động cơ 2 kết nối tại cổng 6, có góc quay từ 85° đến 100°. Đây là động cơ điều khiển cơ cấu gắp đồ vật: 85° là mở hai tay gắp, 100° là đóng hai tay gắp. Ban đầu
Trang 43
cần thiết lập động cơ 1 đến vị trí góc xoay 90° (hướng ngang), động cơ 2 đến vị trí góc 85° (hai tay gắp mở).
Chương trình sẽ lặp lại 10 lần thao tác gắp đồ vật như sau:
+ Hai tay của cơ cấu gắp đóng lại để gắp đồ vật.
+ Tay máy nâng dần vật lên đến góc 150°, sau đó tay máy hạ dần vật xuống vị trí ban đầu là 90°.
+ Hai tay thuộc cơ cấu gắp mở ra để thả đồ vật.
Hình 9.6 là đoạn chương trình trên được viết trên phần mềm GaraBlock để điều khiển cánh tay hai bậc của robot G-Robot.
Thiết lập góc xoay của động cơ 1 tại góc 90°, góc xoay động cơ 2 tại 85°
Lặp 10 lần
Đóng hai tay gắp đồ vật tại 100°
Nâng đồ vật lên vị trí tương ứng 150°
Hạ đồ vật xuống vị tương ứng 90°
Cuối cùng mở hai tay gắp đồ vật để chuẩn bị cho lần tiếp theo
Hình 9.6. Chương trình điều khiển cánh tay hai bậc của robot G-Robot
Câu hỏi
1. Em hãy giải thích ý nghĩa của hai lệnh Đợi 0.5 giây trong chương trình ở Hình 9.6.
2. Em hãy cho biết hai lệnh thiết lập tham số ban đầu của động cơ tại cổng 5 và 6 trong chương trình ở Hình 9.6 có thể thay đổi vị trí được không.
LUYỆN TẬP
1. Em hãy viết chương trình bằng mã giả lập để điều khiển robot di chuyển theo cạnh của hình vuông cho trước theo chiều ngược kim đồng hồ.
2. Em hãy nêu sự khác biệt cơ bản giữa lập trình động cơ DC và động cơ servo.
VẬN DỤNG
1. Em hãy viết lại các chương trình điều khiển robot chuyển động được giới thiệu trong bài, sử dụng lệnh điều khiển từng động cơ M1 và M2.
2. Em hãy tìm hiểu thêm các kiểu kết nối ứng dụng khác của cánh tay robot hai bậc.
Bình Luận
Để Lại Bình Luận Của Bạn