บทที่ 5 ขับเคลื่อนหุ่นยนต์ IPST-BOT 208 บทที่ 5 ขับเคลื่อนหุ่นยนต์ IPST-BOT
การจัดการควบคุมมอเตอร์ไฟตรงของหุ่นยนต์ IPST-BOT 209 การจัดการควบคุมมอเตอร์ไฟตรงของหุ่นยนต์ IPST-BOT
การกำหนดตำแหน่งของมอเตอร์สำหรับหุ่นยนต์ IPST-BOT 210 การกำหนดตำแหน่งของมอเตอร์สำหรับหุ่นยนต์ IPST-BOT
การทดลองที่ 1 (ทดสอบการขับและทิศทางการหมุนของชุดเฟืองขับมอเตอร์ไฟตรง) 211 การทดลองที่ 1 (ทดสอบการขับและทิศทางการหมุนของชุดเฟืองขับมอเตอร์ไฟตรง) การเชื่อมต่อทางฮาร์ดแวร์ ต่อชุดเฟืองมอเตอร์ไฟตรงเข้ากับจุดต่อ M1 และ M2 ของแผงวงจร Display-MOTOR โดยมอเตอร์ที่ต่อกับจุด M1 เป็นมอเตอร์ทางซ้าย และมอเตอร์ที่ต่อกับจุด M2 เป็นมอเตอร์ทางขวา
#include <motor.h> void main() { motor(1,80); motor(2,80); } 212 โปรแกรมการทดลองที่ 1 (motor_test.c) ทดสอบการทำงานของวงจรขับมอเตอร์ไฟตรงของหุ่นยนต์ IPST-BOT #include <motor.h> void main() { motor(1,80); motor(2,80); } เมื่อทดสอบการทำงานของวงจรขับมอเตอร์ไฟตรงพบว่าหุ่นยนต์ไม่เคลื่อนที่ตรงไปข้างหน้า ให้ทดลองสลับขั้วสายสัญญาณของมอเตอร์แต่ละตัว จนกระทั่งหุ่นยนต์เคลื่อนที่ตรงไปข้างหน้า
การสร้างฟังก์ชั่น การขับเคลื่อนหุ่นยนต์พื้นฐาน 213 การสร้างฟังก์ชั่น การขับเคลื่อนหุ่นยนต์พื้นฐาน
1.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์ให้เคลื่อนที่ตรงไปข้างหน้า 214 1.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์ให้เคลื่อนที่ตรงไปข้างหน้า หลักการ เกิดจากล้อมอเตอร์ทั้งสองด้านถูกขับไปข้างหน้า ด้วยคำสั่ง motor กำลังเป็นบวกทั้งคู่ #define POW 70 void forward(unsigned int delay) { motor(1,POW); motor(2,POW); sleep(delay); }
2.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์ถอยหลังตรง 215 2.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์ถอยหลังตรง หลักการ เกิดจากล้อมอเตอร์ทั้งสองด้านถูกขับไปข้างหน้า ด้วยคำสั่ง motor กำลังเป็นลบทั้งคู่ #define POW 70 void backward(unsigned int delay) { motor(1,-POW); motor(2,-POW); sleep(delay); }
3.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์เลี้ยวซ้าย 216 3.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์เลี้ยวซ้าย หลักการ เกิดจากมอเตอร์ล้อด้านซ้ายถูกขับไปข้างหลัง และมอเตอร์ล้อด้านขวาถูกขับไปข้างหน้า #define POW 70 void turn_left(unsigned int delay) { motor(1,-POW); motor(2,POW); sleep(delay); }
4.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์เลี้ยวขวา 217 4.ฟังก์ชั่นขับเคลื่อนหุ่นยนต์เลี้ยวขวา หลักการ เกิดจากมอเตอร์ล้อด้านซ้ายถูกขับไปข้างหน้า และมอเตอร์ล้อด้านขวาถูกขับไปข้างหลัง #define POW 70 void turn_right(unsigned int delay) { motor(1,POW); motor(2,-POW); sleep(delay); }
5.ฟังก์ชั่นหยุดหุ่นยนต์ 218 5.ฟังก์ชั่นหยุดหุ่นยนต์ หลักการ เกิดจากมอเตอร์ล้อด้านซ้ายและด้านขวาถูกหยุดขับพร้อมกันทั้งคู่ ด้วยคำสั่ง motor_stop #define POW 70 void pause() { motor_stop(1); motor_stop(2); }
การทดลองที่ 2 (ทดสอบขับเคลื่อนหุ่นยนต์ IPST-BOT แบบพื้นฐาน) 219 การทดลองที่ 2 (ทดสอบขับเคลื่อนหุ่นยนต์ IPST-BOT แบบพื้นฐาน) การเชื่อมต่อทางฮาร์ดแวร์ ต่อชุดเฟืองมอเตอร์ไฟตรงเข้ากับจุดต่อ M1 และ M2 ของแผงวงจร Display-MOTOR โดยมอเตอร์ที่ต่อกับจุด M1 เป็นมอเตอร์ทางซ้าย และมอเตอร์ที่ต่อกับจุด M2 เป็นมอเตอร์ทางขวา
220 โปรแกรมทดสอบหุ่นยนต์ที่ 2 (robo_basic.c) ทดสอบขับเคลื่อนหุ่นยนต์ไปข้างหน้า 2 วินาที แล้วเลี้ยวซ้าย 0.5 วินาที สลับไปมา #include <motor.h> #include <sleep.h> #include <in_out.h> #include <lcd.h> #define POW 70 void forward(unsigned int delay) { motor(1,POW); motor(2,POW); sleep(delay); } void turn_left(unsigned int delay) motor(1,-POW); void main() { lcd("Press SW1"); sw1_press(); while(1) forward(2000); turn_left(500); }