1 Gắn các liên kết cơ khí vào servo Một trong những tiện lợi khi dùng servo R/C cho robot là có nhiều cách khác nhau để gắn các thứ vào servo. Trong mô hình máy bay và xe hơi, các servo thường được gắn một số loại liên kết kéo đẩy. Ví dụ: trong máy bay, servo điều khiển bánh lái được nối với một liên kết kéo đẩy gắn vào bánh lái. Khi servo quay, liên kết sẽ kéo tới lui như sau Hình 8: Bánh lái được gắn vào thân máy bay bằng một khớp bản lề nên khi liên kết chuyển động, bánh lái sẽ đập tới lui. Ta có thể dùng cùng một phần cứng thiết kế cho mô hình máy bay và xe hơi cho robot sử dụng servo. Gắn bánh xe vào servo: Servo được hiệu chỉnh để có thể quay nguyên vòng thường được dùng cho việc di chuyển robot và được trang bị cho các bánh xe. Vì servo thích hợp với các robot vừa và nhỏ (nhỏ hơn 3 pound) nên các bánh xe chỉ có đường kính vào khoảng 2 –5 inch. Các bánh xe đường kính lớn hơn làm robot chạy nhanh hơn nhưng chúng sẽ nặng hơn. Ta không thể dùng bánh xe có đường kính 7 – 10 inch vì như vậy mỗi bánh đã nặng 1,5 pound trong khi giới hạn khối lượng robot chỉ có 3 pound. Phương pháp chung để gắn bánh xe vào servo là dùng đĩa điều khiển tròn quay cùng với servo 2 Hình 9: Mặt dưới của đĩa khớp với trục ra của servo. Ta có thể dán keo hay bắt vít bánh xe vào mặt trên của đĩa. Sau đây là một số ý tưởng: Lốp Lego balloon lớn: có mayơ lõm ăn khớp chính xác với đĩa điều khiển của nhiều loại servo. Ta có thể dán đĩa vào vành bánh xe. Lốp nhẹ: phổ biến trong mô hình máy bay, có thể dán hay bắt vít vào đĩa điều khiển. Lốp có nhiều loại đường kính khác nhau. Nếu muốn ta có thể tán nhỏ mayơ của lốp để nó ăn khớp mịn hơn với đĩa điều khiển. Bánh răng dán hay bắt vít vào đĩa điều khiển có thể được dùng như một bánh xe thay thế hay một bánh răng dẫn động cho bánh xe gắn vào một trục khác. Trong tất cả trường hợp này cần phải duy trì đường vít để có thể siết chặt đĩa điều khiển vào servo. Khi gắn bánh xe hay lốp ta không được chắn lỗ vít. Nếu cần ta có thể chèn vít vào đĩa điều khiển trước, sau đó mới gắn lốp xe. Cần đảm bảo mayơ của bánh xe đủ rộng đối với đường kính của tua vít để có thể siết vít vào trục ra của servo. Gắn servo vào thân robot Servo phải được gắn chặt vào thân robot để động cơ không bị rớt ra khi robot chuyển động. Một số phương pháp thường dùng: Duct tape / Electrical tape: các vật nhờn trên dây đàn hồi nên servo làm chính nó lỏng ra. Dây còn để lại vết nhớt tích lũy. 3 Vòng và móc: sự liên kết chính xác của các nửavòng và móc có thể phức tạp, có nghĩa là mỗi khi ta thay thế servo, bánh xe sẽ bị một sai lệch nhỏ về góc so với thân robot. Điều này làm việc lập trình lặp khó khăn hơn. Tie wrap: ta phải buộc chặt tie wrap để giữ servo cố định, trử khi robot làm bằng kim loại hay nhựa cứng Các phương pháp gắn cứng như dán, bắt vít, cài then servo lên thân robot là những giải pháp tốt vì nó giảm hư hỏng. Gắn servo bằng keo: Dán keo là cách nhanh và dễ nhất để gắn servo lên thân robot làm bằng bất kỳ vật liệu nào bao gồm bìa cứng và nhựa. Ta chỉ cần dùng keo dán loại chắc như keo epoxy, keo nóng chảy (hot melt). Keo nóng chảy không tạo khói như keo epoxy và cũng mau cứng hơn. Trước khi dán keo ta phải làm sạch và làm nhám bề mặt để dính tốt hơn. Gắn servo bằng bắt vít hay cài then: Nhược điểm của việc gắn servo dùng keo là không bền. Để phạm vi linh hoạt lớn hơn ta nên dùng cách bắt vít hay cài then. Tất cả servo đều có lỗ gắn trên khung, ta chỉ cần khoan các lỗ tương ứng trên thân robot. Khung servo chứa nhiều máy phát vô tuyến và các servo riêng biệt (1 – 3 cái). Trên khung cũng có thêm các lỗ tương ứng để ta có thể gắn vào mặt bên hay đáy robot. Đa số khung làm bằng nhựa nên rất dễ khoan thêm lỗ. Ta có thể tự làm khung servo bằng nhôm hay nhựa. Hình 10: thể hiện một mẫu nhưng không theo tỉ lệ 1:1 4 Dẫn động servo Dùng máy phát chức năng: Một động cơ DC 3 dây có 3 dây vào: dây đỏ nối nguồn, dây đen nối đất, dây trắng / vàng nối với tín hiệu điều khiển. Một trong những cách đơn giản nhất để kiểm tra hay dẫn động servo là sử dụng máy phát chức năng để tạo xung, có thể dùng hàm xung vuông của máy phát chức năng. Ta nên điều chỉnh biên độ của xung vuông để tương thích với nguồn cung cấp cho servo. Một khi ta đã điều chỉnh biên độ của xung vuông, ta cũng có thể điều chỉnh độ rộng của dải xung bằng cách điều chỉnh tần số của tín hiệu. Đối với động cơ servo, điểm trung hòa (độ rộng xung mà tại đó động cơ được giữ ở góc 180 o ) vào khoảng 1,52 ms. Bất kỳ xung nào có độ rộng nhỏ hơn 1,52 ms sẽ làm cho động cơ quay một góc nhỏ hơn 90 o và ngược lại. Chú ý rằng động cơ servo chỉ quay trong khoảng (0 o ,180 o ) nếu chưa được hiệu chỉnh. Góc quay này tương ứng với độ rộng xung từ 0,8 – 2,5 ms. Vậy ta phải đảm bảo độ rộng xung tạo ra nằm trong khoảng này. Đối với servo được hiệu chỉnh để quay liên tục, nó sẽ không quay tại độ rộng xung trung hòa, quay theo chiều kim đồng hồ nếu độ rộng xung nhỏ hơn độ rộng xung trung hòa, ngược chiếu kim đồng hồ nếu độ rộng xung lớn hơn (nhưng vẫn phải nằm trong vùng giới hạn trên). Dùng bảng Handy Board: Trong đa số các ứng dụng ta không thể dùng máy phát chức năng để dẫn động động cơ servo. Một trong những cách tiện lợi nhất là dùng Handy Board. Chương trình C có một thư viện cho phép điều khiển động cơ servo, dùng ngõ vào số 9 – PA7, một công cụ điều khiển hai chiều. Thư viện này có thể được đưa lên Handy Board bằng cách load file nhị phân servo.icb và servo.c (file ta ghi chương trình không được đặt tên là servo.c) Sau đây là các hàm của thư viện để điều khiển servo: void servo_on (): cho PA7 phát xung void servo_off (): không cho PA7 phát xung int servo (int period): đặt độ dài xung điều khiển. Giá trị chính là số lần phần dương của xung chữ nhật được tạo ra trên PA7 trong 5 µs để điều khiển servo. Giá trị nhỏ nhất có thể là 1400, lớn nhất là 4860. Giá trị trả về của hàm là chu kỳ thực sự mà phần mềm tạo ra. Ở điểm trung hòa, giá trị này là 2950 khi động cơ servo chưa điều chỉnh và là 2570 khi động cơ đã điều chỉnh int resvo_rad (float angle): đặt góc quay của servo theo radian int resvo_deg (float angle): đặt góc quay của servo theo độ 5 Chương trình mẫu: Đoạn code sau minh họa cách dùng các hàm thư viện để dẫn động động cơ servo: float period=70.0; int k; servo_on; while(1){ k = servo_deg(period); printf(“angle is %d\n”, k); } Đoạn code trên điều khiển động cơ quay 70 o và hiển thị vị trí hiện thời lên màn hình LCD (theo µs của xung). Nếu động cơ được hiệu chỉnh để quay liên tục, động cơ sẽ quay liên tục theo chiều kim đồng hồ. int period=1400.0; int k; servo_on; while(1){ k = servo(period); printf(“period is %d\n”, k); period = period + 100; } Đoạn code trên điều khiển động cơ chưa hiệu chỉnh quay một lượng nhỏ cho đến hki đụng vật cản cơ học. Động cơ sẽ bắt đầu lại ở vị trí 0 sau khi vượt quá giá trị chu kỳ lớn nhất. Động cơ đã hiệu chỉnh thì sẽ quay theo và ngược chiều kim đồng hồ liên tiếp. Đấu tiên khi giá trị chu kỳ nhỏ hơn giá trị trung hòa, động cơ quay theo chiều kim đồng hồ, sau khi vượt quá giá trị chu kỳ trung hòa sẽ quay ngược chiều kim đồng hồ. Sau khi vượt quá giá trị chu kỳ lớn nhất giá trị sẽ trở về 1400 và động cơ lại quay theo chiều kim đồng hồ. Ta có thể quan sát điều này trên màn hình LCD.