16
POP-BOT Application : 1. รายการชิ้นสวนของชุดกลไกแขนจับ (Gripper kit) 1 : แผนบานพับ (hinge mount) 2 : สลัก (dowel pin) 3 : เพลตเชื่อมตอ (linkage plate) 4 : แขนเชื่อมตอมือจับ (gripper link) 5 : ทอโลหะ #4 ยาว 1 นิ้ว 6 : แผนมือจับ (gripper plate) 7 : สกรู 3 มม. ยาว 1.25 นิ้ว 8 : นอต 3 มม. 9 : สปริง 10 : คันชัก (control arm) 11 : เซอรโวมอเตอร 12 : ลวดบังคับ (actuator rod) 13 : บูตทองเหลือง 14 : เทปโฟม 15 : สกรู 3 มม. ยาว 1/4 นิ้ว 16 : ตัวยึดเซอรโวมอเตอร 17 : สกรู 3 มม. ยาว 3/8 นิ้ว 18 : นอตล็อก 3 มม. 19 : เสารอง 3 มม. ยาว 1.25 นิ้ว

POP-BOT_Gripper

Embed Size (px)

DESCRIPTION

POP-BOT gripper application note

Citation preview

Page 1: POP-BOT_Gripper

1

POP-BOT Application :

1. รายการช้ิ นส วนของชุ ดกลไกแขนจั บ (Gripper kit)

1 : แผ นบานพั บ (hinge mount) 2 : สลั ก (dowel pin) 3 : เพลตเช่ื อมต อ (linkage plate)

4 : แขนเชื่ อมต อมื อจั บ (gripper link) 5 : ท อโลหะ #4 ยาว 1 นิ้ ว 6 : แผ นมื อจั บ (gripper plate)

7 : สกรู 3 มม. ยาว 1.25 น้ิ ว 8 : นอต 3 มม. 9 : สปริ ง

10 : คั นชั ก (control arm) 11 : เซอร โวมอเตอร 12 : ลวดบั งคั บ (actuator rod)

13 : บู ตทองเหลื อง 14 : เทปโฟม 15 : สกรู 3 มม. ยาว 1/4 นิ้ ว

16 : ตั วยึ ดเซอร โวมอเตอร 17 : สกรู 3 มม. ยาว 3/8 นิ้ ว 18 : นอตล็ อก 3 มม.

19 : เสารอง 3 มม. ยาว 1.25 น้ิ ว

Page 2: POP-BOT_Gripper

2

2. ขั้ นตอนการประกอบ

(1) นํ าท อโลหะใส ลงไปในร องของแขนเชื ่อมต อมื อจั บฝ งที่ ลาดตํ่ ากว า จากนั ้นนํ าแผ นมื อจั บประกบยึ ดแล วใช สกรู และนอตขั นยึ ด สั งเกตแนวเอี ยงมี ลั กษณะดั งรู ป โดยทํ าเหมื อนกั นสองชุ ดในลั กษณะกล ับกระจกก ัน

ร ูปที ่ 1 แสดงแนวทางในการประกอบชิ ้นส วนต างๆ ของกลไกแขนจ ับ โดยอ างอ ิงหมายเลขของชิ ้นส วนตรงก ับรายการชิ ้นส วนทั ้งหมด

Page 3: POP-BOT_Gripper

3

(2) ต ัดเทปโฟมความยาวพอเหมาะ ต ิดลงบนแผ นม ือจ ับด านใน เพื ่อช วยให การจ ับว ัตถ ุกระช ับขึ ้น

(3) ใส ท อโลหะลงในร องที ่เหล ือของแขนเชื ่อมต อม ือจั บ แล วนํ าแผ นเพลตเชื ่อมต อประกบบนล าง ย ึดเข าด วยกั นโดยสกรู และนอต การหั นแผ นเพลตเชื ่อมต อเพื่ อประกอบเข าด วยกั นมี ทิ ศทางที่ ต องระวั งดู ได จากรู ปในขั้ นที่ 3.1 และ 3.3

Page 4: POP-BOT_Gripper

4

(4) นํ าแท งคั นชั กประกบยึ ดที่ ด านบนของแขนจั บ แล วใช สกรู ขั นยึ ด จากนั้ นนํ าบู ตทองเหลื องยึ ดเข ากั บปลายของคั นชั กและล็ อกให แน นด วยแท งยางเล็ กๆ สี ดํ า

(5) จะได ส วนของกลไกมื อจั บ ดั งรู ป ทดลองขยั บมื อจั บให มี การกางออกและหนี บเข า จะต องทํ าได อย างเป นอิ สระ ไม ติ ดขั ด

(6) น ําฉากโลหะ 5x2 ร ู (ม ีในช ุด POP-BOT) 2 ชิ ้นย ึดเข าก ับแผ นบานพ ับ (ชิ ้นส วนหมายเลข 1) ด วยสกร ูและนอต 3 มม. ที ่ร ูที ่ 4 ของฉากโลหะ จากนั ้นนํ าสปร ิงเส ียบเข าก ับก านที ่ยื ่นออกมาของแผ นบานพ ับ

Page 5: POP-BOT_Gripper

5

(7) นั บจากขั้ นตอนนี้ เป นการสร างโครงหุ นยนต ของ POP-BOT ใหม เพื่ อให รองรั บกั บการติ ดตั้ งกลไกแขนจั บ นํ าชุ ดเฟ องข ับมอเตอร ยึ ดเข าก ับแผ นฐานด วยสกรู 3x6 มม. (สั ้นสุ ด) ยึ ดจากด านล างขึ้ นมาด ังร ูป

(8) นํ าแผ นบานพั บจากขั้ นตอนที่ (6) ยึ ดเข ากั บด านหน าของฐานหุ นยนต

Page 6: POP-BOT_Gripper

6

(9) นํ ากลไลมื อจั บที่ ทํ าไว ตั้ งแต ขั้ นตอนที่ (5) ยึ ดเข ากั บฐานหุ นยนต โดยใช สลั ก (ชิ้ นส วนหมายเลข2) สอดเข าไปในช องของแผ นบานพ ับ จากนั ้นยื ดสปริ งให เส ียบเข าก ับแผ นเพลตเชื ่อมต อแผ นบนของกลไลม ือจ ับ ในขั ้นตอนนี ้ควรใช ค ีมช วยในการย ืดและย ึดสปริ งให ติ ดเข าก ับกลไกดั งรู ปขั ้นตอนที ่ 9.2

(10) นํ าฉากโลหะขนาด 2x2 รู (มี ในชุ ด POP-BOT แล ว) จํ านวน 2 ชิ้ นมาประกบยึ ดด วยสกรู และขั นด วยนอต ทํ า 2 ชุ ดเหมื อนกั น จากนั้ นยึ ดเข ากั บด านข างของเซอร โวมอเตอร ดั งรู ป

Page 7: POP-BOT_Gripper

7

(11) นํ าเซอร โวมอเตอร ที่ ยึ ดฉากโลหะแล ว ยึ ดเข าก ับฐานหุ นยนต ในอี กด านหนึ่ งของหุ นยนต ซึ่ งอยู คนละฝ งก ับกลไกมื อจ ับ

(12) ถอดก านหมุ นของเซอร โวมอเตอร ออกมา ใช คั ตเตอร หรื อสว านคว านรู ของเซอร โวมอเตอร ให กว างประมาณ 2.5 มิ ลลิ เมตร จากนั ้นนํ าลวดทองเหล ือง (ลวดบั งค ับ-ช้ิ นส วนหมายเลข 12) มาพ ับแบ งครึ่ ง ด านปลายดั ดโค งประมาณ 45 องศา ดั งรู ป สอดลวดเข าไปในรู ที่ คว านไว แล วของก านหมุ นของเซอร โวมอเตอร

Page 8: POP-BOT_Gripper

8

(13) สอดปลายของลวดเข าที ่บู ตทองเหล ือง แล วใช สกร ูที่ ให มาก ับชุ ดของบู ตทองเหลื องข ันยึ ด แต ย ังไม ต องขั นให แน น จากนั้ นสวมก านหมุ นของเซอร โวมอเตอร เข าก ับแกนหม ุน แล วปรั บให แกนหม ุนของเซอร โวมอเตอร มาอยู ในตํ าแหน งซ ายส ุด จะเห ็นว า ที ่ตํ าแหน งนี ้แผ นม ือจ ับทั ้งสองแผ นจะแนวต ิดกั น จากนั้ นใช สกรู ที ่มากั บเซอร โวมอเตอร ข ันยึ ดก านหมุ นให แน น

(14) ปรั บระยะแขนจั บให พอดี จากนั้ นข ันสกร ูยึ ดลวดทองเหลื องให แน น

Page 9: POP-BOT_Gripper

9

(15) เตรี ยมเสารองโลหะ เสารองพลาสติ ก และสกรู 3x35 มม. ดั งรู ปไว สองชุ ด

(16) ร อยสกรู 3x35 มม. จากด านล างของแผ นฐานในตํ าแหน งดั งรู ปผ านเสารองพลาสต ิก และยึ ดด วยเสารองโลหะ

(17) นํ ากล องรองกะบะถ านและสกรู ห ัวตั ด 3x6 มม. ขั นยึ ดกล องรองเข ากั บปลายของเสารองโลหะ

Page 10: POP-BOT_Gripper

10

(18) นํ าบอร ดควบค ุมติ ดตั ้งลงในกล องรองกะบะถ านบนโครงหุ นยนต POP-BOT ต อสายของชุ ดเฟ องขั บมอเตอร ไฟตรง, เซอร โวมอเตอร และตั วตรวจจั บต างๆ ก็ จะได หุ นยนต POP-BOT Gripper พร อมสํ าหรั บการเขี ยนโปรแกรมเพื ่อทดสอบการทํ างาน

Page 11: POP-BOT_Gripper

11

3. ต ัวอย างก ิจกรรมการใช งานกลไกแขนจ ับ (gripper) ก ับหุ นยนต POP-BOT

ในกิ จกรรมนี้ เป นการแนะนํ าตั วอย างการพั ฒนาโปรแกรมเพื่ อเคลื่ อนย ายวั ตถุ (กระป อง)จากจุ ด A ไปยั งจุ ด B ในสนามทดสอบตามรู ป

START

A B

3.1 การเชื่ อมต อทางฮาร ดแวร เพิ่ มเติ มสํ าหรั บ POP-BOT

ต อเซอร โวมอเตอร เข ากั บจุ ดต อ SERVO PORT 7

ต อแผงวงจรตรวจจั บแสงสะท อน ZX-03 หรื อ ZX-03R ทางซ ายเข ากั บจุ ดต อพอร ต 17/A3

ต อแผงวงจรตรวจจั บแสงสะท อน ZX-03 หรื อ ZX-03R ทางขวาเข ากั บจุ ดต อพอร ต 15/A1

3.2 ขั้ นตอน

(1) สร างไฟล ชื่ อ RobotGripper และพิ มพ โปรแกรมภาษา C ตามที่ แสดงในโปรแกรมที่ 1

(2) คอมไพล และอั ปโหลดไปยั งหุ นยนต POP-BOT ที ่ติ ดตั ้งกลไกแขนจ ับและตั วตรวจจ ับเส นไว เร ียบร อยแล ว

Page 12: POP-BOT_Gripper

12

#include <popbot.h> // ผนวกไลบรารี POP-BOT#include <Smotor.h> // ผนวกไลบรารี เพื่ อใช งานเซอร โวมอเตอร สํ าหรั บกิ จกรรมนี้ #define POW 60 // กํ าหนดกํ าลั งขั บมอเตอร ที่ 60%#define SERVO_ACTIVE 10 // กํ าหนดตํ าแหน งการหนี บกระป องที่ 10#define SERVO_OFF 180 // กํ าหนดตํ าแหน งการปล อยกระป องที่ 180#define Ref 500 // ค าอ างอิ งในการแยกแยะเส นสี ดํ ากั บพื้ นสี ขาวSmotor myservo; // ประกาศตั วแปรออปเจ็ กต ในการควบคุ มเซอร โวมอเตอร int left; // ประกาศตั วแปรเก็ บค าจากเซนเซอร ตรวจจั บเส นทางด านซ ายint right; // ประกาศตั วแปรเก็ บค าจากเซนเซอร ตรวจจั บเส นทางด านขวาvoid forward(unsigned int time) // หุ นยนต เคลื่ อนที่ ไปข างหน า{

motor(1,POW);motor(2,POW);sleep(time);

}void backward(unsigned int time) // หุ นยนต เคลื่ อนที่ ไปข างหลั ง{

motor(1,-POW);motor(2,-POW);sleep(time);

}void turn_left(unsigned int time) // หุ นยนต เคลื่ อนที่ หมุ นตั วเลี้ ยวซ าย{

motor(1,-POW);motor(2,POW);sleep(time);

}void turn_right(unsigned int time) // หุ นยนต เคลื่ อนที่ หมุ นตั วเลี้ ยวขวา{

motor(1,POW);motor(2,-POW);sleep(time);

}void pause() // หยุ ดการเคลื่ อนที่ ของหุ นยนต {

motor_stop(ALL);}void cross_right() // หุ นยนต พบแยกเส นตั ด กํ าหนดให เลี้ ยวขวา{

while(1){

left = analog(3);right = analog(1);if(left>Ref && right>Ref)

โปรแกรมที่ 1 ไฟล RobotGripper.pde สํ าหรั บควบคุ มหุ นยนต POP-BOT ให เคลื่ อนที่ ตามเส นเพ่ื อเคลื ่อนย ายว ัตถ ุจากจ ุดหนึ ่งไปย ังจ ุดที ่ก ําหนด (ม ีต อ)

Page 13: POP-BOT_Gripper

13

โปรแกรมที่ 1 ไฟล RobotGripper.pde สํ าหรั บควบคุ มหุ นยนต POP-BOT ให เคลื่ อนที่ ตามเส นเพ่ื อเคลื ่อนย ายว ัตถ ุจากจ ุดหนึ ่งไปย ังจ ุดที ่ก ําหนด (ม ีต อ)

{forward(1);

}if(left<Ref && right>Ref){

turn_left(5);}if(left>Ref && right<Ref){

turn_right(5);}if(left<Ref && right<Ref){

forward(50);turn_right(400);break;

}}

}void cross_pass() // หุ นยนต พบแยกเส นตั ดให เคลื่ อนที่ ผ านข ามเส นตั ดไป{

while(1){

left = analog(3);right = analog(1);if(left>Ref && right>Ref){

forward(1);}if(left<Ref && right>Ref){

turn_left(10);}if(left>Ref && right<Ref){

turn_right(10);}if(left<Ref && right<Ref){

forward(100);break;

}}

}void cross_left() // หุ นยนต พบแยกเส นตั ด กํ าหนดให เลี้ ยวซ าย{

while(1){

left = analog(3);right = analog(1);

Page 14: POP-BOT_Gripper

14

โปรแกรมที่ 1 ไฟล RobotGripper.pde สํ าหรั บควบคุ มหุ นยนต POP-BOT ให เคลื่ อนที่ ตามเส นเพ่ื อเคลื ่อนย ายว ัตถ ุจากจ ุดหนึ ่งไปย ังจ ุดที ่ก ําหนด (ม ีต อ)

if(left>Ref && right>Ref){

forward(1);}if(left<Ref && right>Ref){

turn_left(10);}if(left>Ref && right<Ref){

turn_right(10);}if(left<Ref && right<Ref){

forward(30);turn_left(850);break;

}}

}void cross_stop() // หุ นยนต พบแยกเส นตั ดให หยุ ด{

while(1){

left = analog(3);right = analog(1);if(left>Ref && right>Ref){

forward(1);}if(left<Ref && right>Ref){

turn_left(10);}if(left>Ref && right<Ref){

turn_right(10);}if(left<Ref && right<Ref){

backward(50); // หยุ ดและถอยหลั งเมื่ อพบจุ ดตั ดpause();break;

}}

}void uturn() // กลั บตั วหุ นยนต {

backward(200);turn_right(700);

}

Page 15: POP-BOT_Gripper

15

โปรแกรมที่ 1 ไฟล RobotGripper.pde สํ าหรั บควบคุ มหุ นยนต POP-BOT ให เคลื่ อนที่ ตามเส นเพ่ื อเคลื ่อนย ายว ัตถุ จากจ ุดหนึ ่งไปย ังจ ุดที ่กํ าหนด (จบ)

void sleepServo(unsigned int tm) // หน วงเวลาพร อมกั บส งพั ลส กระตุ นเซอร โวมอเตอร ให รั กษาตํ าแหน ง{

unsigned int count,i;unsigned int freq=2;if(tm<freq){

myservo.refresh();delay(tm);

}else{

count=tm/freq;for(i=0;i<count;i++){

myservo.refresh();delay(freq);

}}

}void setup(){

myservo.attach(7); // กํ าหนดเป ดการใช งานเซอร โวมอเตอร ช อง 7myservo.write(SERVO_OFF); // กํ าหนดให ตํ าแหน งเริ่ มต นคลิ ปเปอร กางแขนจั บsleepServo(2000); // หน วงเวลาพร อมๆกั บการสั่ งให เซอร โวมอเตอร ทํ างานwhile(in(2)==1); // รอจนกระทั่ งมี การกดสวิ ตช ที่ ตํ าแหน ง Di2

}void loop(){

cross_pass(); // หุ นยนต พบแยกเส นตั ดที่ 1 ให ผ านข ามเส นตั ดไปcross_stop(); // หุ นยนต พบแยกเส นตั ดที่ 2 ให หยุ ดเพื่ อเตรี ยมหนี บกระป องที่ จุ ด AsleepServo(1000); // หน วงเวลาพร อมๆก ับการสั ่งให เซอร โวมอเตอร ท ํางานประมาณ 1 ว ินาที myservo.write(SERVO_ACTIVE); // สั่ งให เซอร โวมอเตอร เปลี่ ยนตํ าแหน งมาหนี บกระป องsleepServo(2000); // หน วงเวลาพร อมๆก ับการสั ่งให เซอร โวมอเตอร ท ํางานประมาณ 2 ว ินาที

uturn(); // ถอยหลั งเล็ กน อยและหมุ นกลั บตั วเพ่ื อจํ าเดิ นทางไปยั งจุ ด Bcross_left(); // หุ นยนต พบแยกเส นตั ดที่ 3 ให หมุ นตั วเลี้ ยวซ ายcross_pass(); // หุ นยนต พบแยกเส นตั ดที่ 4 ให ผ านข ามเส นตั ดไปcross_left(); // หุ นยนต พบแยกเส นตั ดที่ 5 ให หมุ นตั วเลี้ ยวซ าย

cross_stop(); // หุ นยนต พบแยกเส นตั ดที่ 6 ให หยุ ดเพื่ อเตรี ยมปล อยกระป องที่ จุ ด B myservo.write(SERVO_OFF); // สั่ งให เซอร โวมอเตอร เปลี่ ยนตํ าแหน งปล อยกระป อง sleepServo(2000); // หน วงเวลาพร อมๆ กั บการขั บเซอร โวมอเตอร ให ทํ างาน 2 วิ นาที while(1); // หยุ ดโปรแกรมไว ที่ จุ ดนี้ }

Page 16: POP-BOT_Gripper

16

(3) กดสวิ ตช ที่ ตํ าแหน ง Di2 เพื่ อปล อยตั วหุ นยนต ออกจากจุ ด START สั งเกตการทํ างานของหุ นยนต POP-BOT Gripper

หลั งจากโปรแกรมเริ่ มทํ างานประมาณ 2 วิ นาที บอร ดควบคุ มจะทํ าการขั บเซอร โวมอเตอร ของกลไกแขนจ ับเพื ่อให กางม ือจ ับออก จากนั ้นหุ นยนต เคลื ่อนที ่ตามเส น ไปจนพบจ ุดต ัดที ่ 1หุ นยนต จะเคลื่ อนที่ ข ามจุ ดตั ดหรื อทางแยกไป จนกระทั่ งพบจุ ดตั ดที่ สอง ซึ่ งก็ คื อ จุ ด A หุ นยน ก็ จะหนี บวั ตถุ และยกขึ้ น จากนั้ นเคลื่ อนที ่ตามเส นมาย ังจุ ด B แล ววางวั ตถุ ลง