1
POP-BOT Application :
1. รายการชิ้นสวนของชุดกลไกแขนจับ (Gripper kit)
1 : แผนบานพับ (hinge mount) 4 : แขนเชือมต ่ อมือจับ (gripper link) 7 : สกรู 3 มม. ยาว 1.25 นิ้ว 10 : คันชัก (control arm) 13 : บูตทองเหลือง 16 : ตัวยึดเซอรโวมอเตอร 19 : เสารอง 3 มม. ยาว 1.25 นิ้ว
2 : สลัก (dowel pin) 5 : ทอโลหะ #4 ยาว 1 นิว้ 8 : นอต 3 มม. 11 : เซอรโวมอเตอร 14 : เทปโฟม 17 : สกรู 3 มม. ยาว 3/8 นิว้
3 : เพลตเชื่อมตอ (linkage plate) 6 : แผนมือจับ (gripper plate) 9 : สปริง 12 : ลวดบังคับ (actuator rod) 15 : สกรู 3 มม. ยาว 1/4 นิว้ 18 : นอตล็อก 3 มม.
2
รูปที่ 1 แสดงแนวทางในการประกอบชินส ้ วนตางๆ ของกลไกแขนจับ โดยอางอิงหมายเลขของชินส ้ วน ตรงกับรายการชินส ้ วนทังหมด ้
2. ขั้นตอนการประกอบ (1) นําทอโลหะใสลงไปในรองของแขนเชือมต ่ อมือจับฝงที ่ลาดตํากว ่ า จากนันนํ ้ าแผนมือจับประกบ ยึดแลวใชสกรูและนอตขันยึด สังเกตแนวเอียงมีลักษณะดังรูป โดยทําเหมือนกันสองชุดในลักษณะ กลับกระจกกัน
3
(2) ตัดเทปโฟมความยาวพอเหมาะ ติดลงบนแผนมือจับดานใน เพือช ่ วยใหการจับวัตถุกระชับขึน้
(3) ใสทอโลหะลงในรองทีเหลื ่ อของแขนเชือมต ่ อมือจับ แลวนําแผนเพลตเชือมต ่ อประกบบนลาง ยึด เขาดวยกันโดยสกรูและนอต การหันแผนเพลตเชือมต ่ อเพื่อประกอบเขาดวยกันมีทิศทางที่ตองระวัง ดูไดจากรูปในขั้นที่ 3.1 และ 3.3
4
(4) นําแทงคันชักประกบยึดที่ดานบนของแขนจับ แลวใชสกรูขันยึด จากนั้นนําบูตทองเหลืองยึดเขา กับปลายของคันชักและล็อกใหแนนดวยแทงยางเล็กๆ สีดํา
(5) จะไดสวนของกลไกมือจับ ดังรูป ทดลองขยับมือจับใหมีการกางออกและหนีบเขา จะตองทําได อยางเปนอิสระ ไมติดขัด (6) นําฉากโลหะ 5x2 รู (มีในชุด POP-BOT) 2 ชินยึ ้ ดเขากับแผนบานพับ (ชินส ้ วนหมายเลข 1) ดวยสกรู และนอต 3 มม. ทีรู่ ที่ 4 ของฉากโลหะ จากนันนํ ้ าสปริงเสียบเขากับกานทียื่ นออกมาของแผ ่ นบานพับ
5
(7) นับจากขั้นตอนนี้เปนการสรางโครงหุนยนตของ POP-BOT ใหม เพื่อใหรองรับกับการติดตังกล ้ ไกแขนจับ นําชุดเฟองขับมอเตอรยึดเขากับแผนฐานดวยสกรู 3x6 มม. (สันสุ ้ ด) ยึดจากดานลางขึ้นมา ดังรูป
(8) นําแผนบานพับจากขั้นตอนที่ (6) ยึดเขากับดานหนาของฐานหุนยนต
6
(9) นํากลไลมือจับที่ทําไวตังแต ้ ขั้นตอนที่ (5) ยึดเขากับฐานหุนยนต โดยใชสลัก (ชินส ้ วนหมายเลข 2) สอดเขาไปในชองของแผนบานพับ จากนันยื ้ ดสปริงใหเสียบเขากับแผนเพลตเชือมต ่ อแผนบนของ กลไลมือจับ ในขันตอนนี ้ ควรใช ้ คีมชวยในการยืดและยึดสปริงใหติดเขากับกลไกดังรูปขันตอนที ้ ่ 9.2
(10) นําฉากโลหะขนาด 2x2 รู (มีในชุด POP-BOT แลว) จํานวน 2 ชินมาประกบยึ ้ ดดวยสกรูและขัน ดวยนอต ทํา 2 ชุดเหมือนกัน จากนั้นยึดเขากับดานขางของเซอรโวมอเตอร ดังรูป
7
(11) นําเซอรโวมอเตอรที่ยึดฉากโลหะแลว ยึดเขากับฐานหุนยนตในอีกดานหนึ่งของหุนยนต ซึ่งอยู คนละฝงกั บกลไกมือจับ
(12) ถอดกานหมุนของเซอรโวมอเตอรออกมา ใชคัตเตอรหรือสวานควานรูของเซอรโวมอเตอรให กวางประมาณ 2.5 มิลลิเมตร จากนันนํ ้ าลวดทองเหลือง (ลวดบังคับ-ชิ้นสวนหมายเลข 12) มาพับแบง ครึ่ง ดานปลายดัดโคงประมาณ 45 องศา ดังรูป สอดลวดเขาไปในรูที่ควานไวแลวของกานหมุนของ เซอรโวมอเตอร
8
(13) สอดปลายของลวดเขาทีบู่ ตทองเหลือง แลวใชสกรูที่ใหมากับชุดของบูตทองเหลืองขันยึด แตยัง ไมตองขันใหแนน จากนั้นสวมกานหมุนของเซอรโวมอเตอรเขากับแกนหมุน แลวปรับใหแกนหมุน ของเซอรโวมอเตอรมาอยูในตํ าแหนงซายสุด จะเห็นวา ทีตํ่ าแหนงนีแผ ้ นมือจับทังสองแผ ้ นจะแนวติด กัน จากนั้นใชสกรูทีมากั ่ บเซอรโวมอเตอรขันยึดกานหมุนใหแนน
(14) ปรับระยะแขนจับใหพอดีจากนั้นขันสกรูยึดลวดทองเหลืองใหแนน
9
(15) เตรียมเสารองโลหะ เสารองพลาสติก และสกรู 3x35 มม. ดังรูปไวสองชุด
(16) รอยสกรู 3x35 มม. จากดานลางของแผนฐานในตําแหนงดังรูปผานเสารองพลาสติก และยึดดวย เสารองโลหะ
(17) นํากลองรองกะบะถานและสกรูหัวตัด 3x6 มม. ขันยึดกลองรองเขากับปลายของเสารองโลหะ
10
(18) นําบอรดควบคุมติดตังลงในกล ้ องรองกะบะถานบนโครงหุนยนต POP-BOT ตอสายของชุดเฟอง ขับมอเตอรไฟตรง, เซอรโวมอเตอร และตัวตรวจจับตางๆ ก็จะไดหุนยนต POP-BOT Gripper พรอม สําหรับการเขียนโปรแกรมเพือทดสอบการทํ ่ างาน
11
3. ตัวอยางกิจกรรมการใชงานกลไกแขนจับ (gripper) กับหุนยนต POP-BOT ในกิ จกรรมนี้เปนการแนะนําตัวอยางการพัฒนาโปรแกรมเพื่อเคลื่ อนยายวัตถุ (กระปอง) จากจุด A ไปยังจุด B ในสนามทดสอบตามรูป A
B
START
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 ทีติ่ ดตังกลไกแขนจั ้ บและตัวตรวจจับเสน ไวเรียบรอยแลว
12
#include <popbot.h> #include <Smotor.h> #define POW 60 #define SERVO_ACTIVE 10 #define SERVO_OFF 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)
// ผนวกไลบรารี POP-BOT // ผนวกไลบรารีเพือใช ่ งานเซอรโวมอเตอรสําหรับกิจกรรมนี้ // กําหนดกําลังขับมอเตอรที่ 60% // กําหนดตําแหนงการหนีบกระปองที่ 10 // กําหนดตําแหนงการปลอยกระปองที่ 180 // คาอางอิงในการแยกแยะเสนสีดํากับพืนสี ้ ขาว // ประกาศตัวแปรออปเจ็กตในการควบคุมเซอรโวมอเตอร // ประกาศตัวแปรเก็บคาจากเซนเซอรตรวจจับเสนทางดานซาย // ประกาศตัวแปรเก็บคาจากเซนเซอรตรวจจับเสนทางดานขวา // หุนยนต เคลื่อนที่ไปขางหนา
// หุนยนต เคลื่อนที่ไปขางหลัง
// หุนยนต เคลื่อนที่หมุนตัวเลียวซ ้ าย
// หุนยนต เคลื่อนที่หมุนตัวเลียวขวา ้
// หยุดการเคลื่อนที่ของหุนยนต // หุนยนต พบแยกเสนตัด กําหนดใหเลี้ยวขวา
โปรแกรมที่ 1 ไฟล RobotGripper.pde สําหรับควบคุมหุนยนต POP-BOT ใหเคลื่อนทีตามเส ่ นเพื่อ เคลือนย ่ ายวัตถุจากจุดหนึงไปยั ่ งจุดทีกํ่ าหนด (มีตอ)
13
{ 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);
// หุนยนต พบแยกเสนตัดใหเคลื่อนที่ผานขามเสนตัดไป
// หุนยนต พบแยกเสนตัด กําหนดใหเลี้ยวซาย
โปรแกรมที่ 1 ไฟล RobotGripper.pde สําหรับควบคุมหุนยนต POP-BOT ใหเคลื่อนทีตามเส ่ นเพื่อ เคลือนย ่ ายวัตถุจากจุดหนึงไปยั ่ งจุดทีกํ่ าหนด (มีตอ)
14
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); }
// หุนยนต พบแยกเสนตัดใหหยุด
// หยุดและถอยหลังเมื่อพบจุดตัด
// กลับตัวหุนยนต
โปรแกรมที่ 1 ไฟล RobotGripper.pde สําหรับควบคุมหุนยนต POP-BOT ใหเคลื่อนทีตามเส ่ นเพื่อ เคลือนย ่ ายวัตถุจากจุดหนึงไปยั ่ งจุดทีกํ่ าหนด (มีตอ)
15
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); // กําหนดเปดการใชงานเซอรโวมอเตอรชอง 7 myservo.write(SERVO_OFF); // กําหนดใหตําแหนงเริ่มตนคลิปเปอรกางแขนจับ sleepServo(2000); // หนวงเวลาพรอมๆกับการสั่งใหเซอรโวมอเตอรทํางาน while(in(2)==1); // รอจนกระทังมี ่ การกดสวิตชทีตํ่ าแหนง Di2 } void loop() { cross_pass(); // หุนยนต พบแยกเสนตัดที่ 1 ใหผานขามเสนตัดไป cross_stop(); // หุนยนต พบแยกเสนตัดที่ 2 ใหหยุดเพือเตรี ่ ยมหนีบกระปองที่จุด A sleepServo(1000); // หนวงเวลาพรอมๆกับการสังให ่ เซอรโวมอเตอรทํางานประมาณ 1 วินาที myservo.write(SERVO_ACTIVE); // สังให ่ เซอรโวมอเตอรเปลี่ยนตําแหนงมาหนีบกระปอง sleepServo(2000); // หนวงเวลาพรอมๆกับการสังให ่ เซอรโวมอเตอรทํางานประมาณ 2 วินาที uturn(); cross_left(); cross_pass(); cross_left(); cross_stop(); myservo.write(SERVO_OFF); sleepServo(2000); while(1);
// ถอยหลังเล็กนอยและหมุนกลับตัวเพื่อจําเดินทางไปยังจุด B // หุนยนต พบแยกเสนตัดที่ 3 ใหหมุนตัวเลียวซ ้ าย // หุนยนต พบแยกเสนตัดที่ 4 ใหผานขามเสนตัดไป // หุนยนต พบแยกเสนตัดที่ 5 ใหหมุนตัวเลียวซ ้ าย // หุนยนต พบแยกเสนตัดที่ 6 ใหหยุดเพือเตรี ่ ยมปลอยกระปองที่จุด B // สังให ่ เซอรโวมอเตอรเปลี่ยนตําแหนงปลอยกระปอง // หนวงเวลาพรอมๆ กับการขับเซอรโวมอเตอรใหทํางาน 2 วินาที // หยุดโปรแกรมไวทีจุ่ ดนี้
}
โปรแกรมที่ 1 ไฟล RobotGripper.pde สําหรับควบคุมหุนยนต POP-BOT ใหเคลื่อนทีตามเส ่ นเพื่อ เคลือนย ่ ายวัตถุจากจุดหนึงไปยั ่ งจุดทีกํ่ าหนด (จบ)
16
(3) กดสวิตชที่ตําแหนง Di2 เพื่อปลอยตัวหุนยนตออกจากจุด START สังเกตการทํางานของ หุนยนต POP-BOT Gripper หลังจากโปรแกรมเริ่มทํางานประมาณ 2 วินาที บอรดควบคุมจะทําการขับเซอรโว มอเตอรของกลไกแขนจับเพือให ่ กางมือจับออก จากนันหุ ้ นยนต เคลือนที ่ ตามเส ่ น ไปจนพบจุดตัดที่ 1 หุนยนต จะเคลื่อนที่ขามจุดตัดหรือทางแยกไป จนกระทั่งพบจุดตัดที่สอง ซึ่งก็คือ จุด A หุนยน ก็จะ หนีบวัตถุและยกขึ้น จากนั้นเคลื่อนทีตามเส ่ นมายังจุด B แลววางวัตถุลง