การเคลื่อนที่ของหุ่นยนต์เป็นสิ่งสำคัญสำหรับหุ่นยนต์ที่จะทำงานในสภาพแวดล้อมต่าง ๆ ประเภทของการเคลื่อนที่ของหุ่นยนต์สามารถแบ่งออกเป็น 6 ประเภทหลักๆ ดังนี้
1. การเคลื่อนที่โดยใช้ล้อ (Wheel-Drive Locomotion) เป็นการเคลื่อนที่ที่พบมากที่สุดในหุ่นยนต์ เนื่องจากล้อเป็นกลไกที่เรียบง่ายและมีประสิทธิภาพในการเคลื่อนที่บนพื้นผิวเรียบ ตัวอย่างของหุ่นยนต์ที่ใช้การเคลื่อนที่แบบล้อ ได้แก่ รถบัส รถยนต์ และรถเข็น
การเคลื่อนที่โดยใช้ล้อ (wheel-drive locomotion) คือหุ่นยนต์ที่ใช้ล้อในการเคลื่อนที่ เหมาะสำหรับหุ่นยนต์ทั่วไปที่ใช้งานบนพื้นราบ โดยมีข้อดีคือ หุ่นยนต์จะสามารถเคลื่อนที่ได้อย่างรวดเร็ว การควบคุมง่าย ดังนั้นหุ่นยนต์ส่วนใหญ่จึงถูกสร้างให้เป็นหุ่นยนต์ที่เคลื่อนที่โดยใช้ล้อ สำหรับข้อจำกัดของการเคลื่อนที่ลักษณะนี้คือ หุ่นยนต์ไม่สามารถจะไปในพื้นที่ต่างระดับได้ การเดินทางในพื้นที่ขรุขระไปได้อย่างยากลำบาก
การเคลื่อนที่โดยใช้ล้อ (wheel-drive locomotion)
การเคลื่อนที่โดยใช้ล้อสายพาน (track-drive locomotion) คือหุ่นยนต์ที่ใช้ล้อสายพานในการเคลื่อนที่ เหมาะสำหรับหุ่นยนต์ที่ใช้งานในพื้นที่ขรุขระหรือพื้นที่ที่มีความต่างระดับ การควบคุมสามารถทำได้ง่ายเหมือนหุ่นยนต์ล้อทั่วไป แต่หุ่นยนต์ไม่สามารถเคลื่อนที่ด้วยความเร็วสูงได้ และอาจก่อให้เกิดความเสียหายต่อพื้นผิวบริเวณที่หุ่นยนต์เคลื่อนที่ผ่านเนื่องจากการตะกรุยของล้อสายพาน
การเคลื่อนที่โดยใช้ล้อสายพาน (track-drive locomotion)
ขอบคุณ https://engineerknowledge.blogspot.com/2011/09/blog-post_26.html
การเคลื่อนที่โดยใช้ขา (legged locomotion) คือหุ่นยนต์ที่ใช้ขาในการเคลื่อนที่ โดยเลียนแบบมาจากสิ่งมีชีวิต เช่น หุ่นยนต์เดินหกขา สี่ขา หรือสองขา ซึ่งหุ่นยนต์สามารถเคลื่อนที่ไปได้ในทุกที่ ทุกสภาพพื้นผิว สามารถก้าวข้ามผ่านสิ่งกีดขวางต่าง ๆได้ มีความสามารถในการเคลื่อนที่ดีกว่าล้อ ส่วนข้อจำกัดคือ เคลื่อนที่ช้า การควบคุมทำได้ค่อนข้างยากกว่าการเคลื่อนที่แบบใช้ล้อ และการรักษาสมดุลเป็นสิ่งที่จำเป็นมากสำหรับหุ่นยนต์ประเภทนี้ โดยเฉพาะหุ่นยนต์ที่ใช้สองขาในการเคลื่อนที่
การเคลื่อนที่โดยใช้ขา (legged locomotion)
การเคลื่อนที่โดยการบิน (flight locomotion) คือหุ่นยนต์ที่ใช้ปีก หรือใบพัดในการเคลื่อนที่ ซึ่งหุ่นยนต์สามารถเคลื่อนที่รวดเร็ว และเข้าไปในพื้นที่เสี่ยงภัยหรือเข้าถึงลำบากได้ ซึ่งงานส่วนใหญ่ของหุ่นยนต์ประเภทนี้ก็คือการสำรวจ เนื่องจากหุ่นยนต์บินมีระยะในการปฏิบัติงานได้ค่อนข้างไกล การควบคุมจากระยะไกลจึงเข้ามามีบทบาทอย่างมาก ระบบควบคุมระยะจึงต้องดีและเสถียรมาก ๆ
การเคลื่อนที่โดยการบิน (flight locomotion)
ขอบคุณ https://engineerknowledge.blogspot.com/2011/09/blog-post_26.html
การเคลื่อนที่ในน้ำ (swimming locomotion) คือหุ่นยนต์ที่ใช้ใบพัดหรือครีบในการเคลื่อนที่ และมีถังอับเฉาในการควบคุมการลอยตัวของหุ่นยนต์ ซึ่งได้แก่หุ่นยนต์ปลา และหุ่นยนต์เรือดำน้ำ ซึ่งส่วนใหญ่จะใช้ในงานสำรวจ เนื่องจากการเคลื่อนที่ใต้น้ำการควบคุมนั้นไม่สามารถใช้ภาพมาใช้ในการนำทางได้ การควบคุมจึงต้องใช้อุปกรณ์ตรวจรู้หรือสัมผัสอย่างอื่นมานำทางแทน เช่น ระบบการสะท้อนกลับของคลื่นเสียง การควบคุมจึงต้องมีความระมัดระวังเป็นอย่างมาก
การเคลื่อนที่ในน้ำ (swimming locomotion)
ขอบคุณ https://engineerknowledge.blogspot.com/2011/09/blog-post_26.html
การเคลื่อนที่ในรูปแบบอื่น (other locomotion) คือหุ่นยนต์ที่ไม่ใช้ขาและล้อในการเคลื่อนที่เช่น หุ่นยนต์งูจะใช้การรวมแรงลัพธ์ที่เกิดจาการบิดเคลื่อนที่ไปมาในแต่ละข้อ ขับดันให้เคลื่อนที่ไปข้างหน้า ข้อดีของหุ่นยนต์ประเภทนี้คือ สามารถเคลื่อนที่ไปได้ในทุกสภาพพื้นผิว ขึ้นที่สูงได้ และยังมีความสามารถในการเข้าที่แคบ จึงสามารถปฏิบัติงานได้อย่างหลากหลาย และข้อดีอีกอย่างของหุ่นยนต์ประเภทนี้คือในแต่ละข้อต่อของหุ่นยนต์ที่ประกอบกันจะเหมือนกัน ดังนั้นถ้ามีบางข้อต่อที่เกิดความเสียหายขึ้น จะสามารถสังเกตุได้ง่ายและแทนด้วยข้อต่ออื่นได้ทันที
การเคลื่อนที่ของหุ่นยนต์ ต้องคำนึงถึงวิธีการหรือรูปแบบของการเคลื่อนที่ด้วยเหตุผลหลายประการ เช่น การมช้แบตเตอรี่ในการเคลื่อนที่
หุ่นยนต์ Teacher Robot
หุ่นยนต์ตัวนี้มี 3 ล้อ ซึ่งมีลักษณะเหมือนสามเหลี่ยมด้านเท่าที่ ซึ่งเวกเตอร์การเดินจึงไม่เหมือนแบบ 4 ล้อ และเป็น DC Motor
DC Motor คือมอเตอร์ไฟฟ้ากระแสตรง (DC Motor) เป็นมอเตอร์ที่เปลี่ยนพลังงานไฟฟ้ากระแสตรงเป็นพลังงานกล โดยอาศัยหลักการของสนามแม่เหล็กไฟฟ้า มอเตอร์ไฟฟ้ากระแสตรงสามารถแบ่งออกเป็น 2 ประเภทหลักๆ ตามลักษณะของการต่อขดลวดสนามกับขดลวดอาร์เมเจอร์ ดังนี้
1. มอเตอร์แบบอนุกรม (Series Motor) ขดลวดสนามและขดลวดอาร์เมเจอร์ต่ออนุกรมกัน ส่งผลให้กระแสไฟฟ้าที่ไหลผ่านขดลวดทั้งสองมีค่าเท่ากัน เมื่อโหลดเพิ่มขึ้นกระแสไฟฟ้าที่ไหลผ่านขดลวดทั้งสองก็จะเพิ่มขึ้นด้วย ทำให้แรงบิดของมอเตอร์เพิ่มขึ้นเช่นกัน มอเตอร์แบบอนุกรมจึงเหมาะกับงานที่ต้องการแรงบิดสูง เช่น รถไฟฟ้า เครนไฟฟ้า เครื่องดูดฝุ่น เครื่องผสมอาหาร
2. มอเตอร์แบบขนาน (Parallel Motor) ขดลวดสนามและขดลวดอาร์เมเจอร์ต่อขนานกัน ส่งผลให้กระแสไฟฟ้าที่ไหลผ่านขดลวดทั้งสองมีค่าต่างกัน ขึ้นอยู่กับความต้านทานของขดลวดแต่ละชุด เมื่อโหลดเพิ่มขึ้น กระแสไฟฟ้าที่ไหลผ่านขดลวดอาร์เมเจอร์จะเพิ่มขึ้น แต่กระแสไฟฟ้าที่ไหลผ่านขดลวดสนามจะลดลง ทำให้แรงบิดของมอเตอร์ลดลงเล็กน้อย มอเตอร์แบบขนานจึงเหมาะกับงานที่ต้องการความเร็วคงที่ เช่น พัดลม ปั๊มน้ำ
นอกจากนี้ มอเตอร์ไฟฟ้ากระแสตรงยังสามารถแบ่งออกได้เป็นอีกหลายประเภท เช่น
- มอเตอร์แบบสนามแม่เหล็กถาวร (Permanent Magnet Motor) ใช้แม่เหล็กถาวรเพื่อสร้างสนามแม่เหล็กถาวร
- มอเตอร์แบบสนามแม่เหล็กเหนี่ยวนำ (Induction Motor) ใช้ขดลวดสนามเพื่อสร้างสนามแม่เหล็กเหนี่ยวนำ
- มอเตอร์แบบแปรงถ่าน (Brushed Motor) ใช้แปรงถ่านในการสัมผัสกับชุดคอมมูเทเตอร์เพื่อเปลี่ยนทิศทางกระแสไฟฟ้าในขดลวดอาร์เมเจอร์
- มอเตอร์แบบไร้แปรงถ่าน (Brushless Motor) ใช้เซนเซอร์ Hall Effect ในการตรวจจับทิศทางของสนามแม่เหล็กเพื่อเปลี่ยนทิศทางกระแสไฟฟ้าในขดลวดอาร์เมเจอร์
หลักการทำงานของมอเตอร์ไฟฟ้ากระแสตรง
มอเตอร์ไฟฟ้ากระแสตรงทำงานโดยอาศัยหลักการของสนามแม่เหล็กไฟฟ้า เมื่อกระแสไฟฟ้าไหลผ่านขดลวดจะเกิดสนามแม่เหล็กขึ้นรอบ ๆ ขดลวด หากนำขดลวดสองชุดที่มีขั้วแม่เหล็กต่างกันมาวางใกล้กัน ขดลวดทั้งสองก็จะผลักหรือดูดกัน ขึ้นอยู่กับขั้วแม่เหล็กของขดลวดทั้งสอง
ในมอเตอร์ไฟฟ้ากระแสตรง ส่วนที่อยู่กับที่เรียกว่าสเตเตอร์ ส่วนที่เคลื่อนที่เรียกว่าโรเตอร์ สเตเตอร์จะมีขดลวดสนามอยู่ ส่วนโรเตอร์จะมีขดลวดอาร์เมเจอร์อยู่ เมื่อจ่ายกระแสไฟฟ้าให้กับขดลวดสนาม จะเกิดสนามแม่เหล็กถาวรขึ้นรอบๆ ขดลวดสนาม สนามแม่เหล็กนี้จะกระทำต่อขดลวดอาร์เมเจอร์ที่อยู่รอบๆ ทำให้โรเตอร์หมุน
ความเร็วรอบของมอเตอร์ไฟฟ้ากระแสตรงจะขึ้นอยู่กับแรงดันไฟฟ้าที่จ่ายให้กับขดลวดอาร์เมเจอร์ และแรงต้านทานของขดลวดอาร์เมเจอร์ ยิ่งแรงดันไฟฟ้าที่จ่ายให้กับขดลวดอาร์เมเจอร์สูง ความเร็วรอบของมอเตอร์ก็จะยิ่งสูงขึ้นยิ่งแรงต้านทานของขดลวดอาร์เมเจอร์สูง ความเร็วรอบของมอเตอร์ก็จะยิ่งต่ำลง
แรงบิดของมอเตอร์ไฟฟ้ากระแสตรงจะขึ้นอยู่กับกระแสไฟฟ้าที่ไหลผ่านขดลวดอาร์เมเจอร์และสนามแม่เหล็กถาวร ยิ่งกระแสไฟฟ้าที่ไหลผ่านขดลวดอาร์เมเจอร์สูง แรงบิดของมอเตอร์ก็จะยิ่งสูงขึ้นยิ่งสนามแม่เหล็กถาวรมีกำลังแรง แรงบิดของมอเตอร์ก็จะยิ่งสูงขึ้น
การใช้งานมอเตอร์ไฟฟ้ากระแสตรง
มอเตอร์ไฟฟ้ากระแสตรงถูกนำมาใช้งานกันอย่างแพร่หลายในอุปกรณ์ต่างๆ เช่น
- เครื่องใช้ไฟฟ้าภายในบ้าน เช่น พัดลม ปั๊มน้ำ เครื่องดูดฝุ่น
- เครื่องมือเครื่องจักรกล เช่น เครื่องกลึง เครื่องกัด เครื่องเจาะ
- ยานพาหนะ เช่น รถไฟฟ้า รถไฟ
- อุปกรณ์ทางการแพทย์ เช่น เครื่องช่วยหายใจ เครื่องล้างไต
ข้อดีของมอเตอร์ไฟฟ้ากระแสตรง
มอเตอร์ไฟฟ้ากระแสตรงมีข้อดีหลายประการ ดังนี้
- ควบคุมความเร็วรอบได้ง่าย
- ควบคุมแรงบิดได้ง่าย
- ทนทานต่อการใช้งาน
- มีขนาดกะทัดรัด
ข้อเสียของมอเตอร์ไฟฟ้ากระแสตรง
มอเตอร์ไฟฟ้ากระแสตรงมีข้อเสียบางประการ ดังนี้
- ประสิทธิภาพต่ำกว่ามอเตอร์ไฟฟ้ากระแสสลับ
- มีเสียงรบกวนมากกว่ามอเตอร์ไฟฟ้ากระแสสลับ
- ต้องใช้แปรงถ่าน ซึ่งอาจเกิดการสึกหรอและทำให้เกิดประกายไฟได้
ลักษณะการเคลื่อนที่มี 2 ประเภท
1. การเคลื่อนที่แบบใช้ Delay การเคลื่อนที่ลักษณะนี้จะส่งผลทำให้เซ็นเซอร์ตัวอื่น ๆ ไม่ทำงาน
2. การเคลื่อนที่แบบไม่ใช้ Delay เซ็นเซอร์ตัวอื่น ๆ ทำงานปกติ
Library MotorMove
1. MotorMove (
ใช้สำหรับสร้ง object
2. Begin0
กำหนดค่าเริ่มต้นก่อนใช้งาน
3. MoveForward(int speed)
สั่งให้หุ่นยนต์เคลื่อนที่ไปด้านหน้าด้วยความเร็วที่กำหนด จะไม่หยุดจนกว่าจะ MoveStop()
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
4. MoveBackward(int speed)
สั่งให้หุ่นยนต์เคลื่อนที่ไปด้านหลังด้วยความเร็วที่กำหนด จะไม่หยุดจนกว่าจะ MoveStop0
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ speed
5. TurnRight(int speed)
สั่งให้หุ่นยนต์หมุนตามเข็มนาฬิกาด้วยความเร็วที่กำหนด จะไม่หยุดจนกว่าจะ MoveStop0
- ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ speed
6. TurnLeft(int speed)
สั่งให้หุ่นยนต์หมุนทวนเข็มนาฬิกาด้วยความเร็วที่กำหนด จะไม่หยุดจนกว่าจะ MoveStop0
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
7. SlidLeft(int speed)
สั่งให้หุ่นยนต์เคลื่อนที่ไปด้านซ้ายด้วยความเร็วที่กำหนด จะไม่หยุดจนกว่าจะ MoveStop0
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
8. SlidRight(int speed)
สั่งให้หุ่นยนต์เคลื่อนที่ไปด้านขวาด้วยความเร็วที่กำหนด จะไม่หยุดจนกว่าจะ MoveStop0
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
9. MoveStop()
สั่งให้หุ่นยนต์หยุดเคลื่อนที่
10. resetMove()
reset countLoop
11. TimeBegin(Move move', unsigned int amountMove)
สั่งให้หุ่นยนต์เคลื่อนที่ตามชุดคำสั่ง ตัวอย่างชุดคำสั่ง
move[O].mode = "F"; ทิศทาง F B TR TL SL SR
move[0].speed = 200; ความเร็ว
move[0].interval = 1000; ระยะเวลา(millisecond)
- move arrayของชุดคำสั่ง
- amountMove ขนาดarray
12. MoveForwardWithDelay(int speed, int interval)
สั่งให้หุ่นยนต์เคลื่อนที่ไปด้านหน้าด้วยความเร็วและระยะเวลาที่กำหนด
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
- interval ระยะเวลาที่ต้องการ(millisecond)
13. MoveBackwardWith Delay (int speed, int interval)
สั่งให้หุ่นยนต์เคลื่อนที่ไปด้านหลังด้วยความเร็วและระยะเวลาที่กำหนด
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
- interval ระยะเวลาที่ต้องการ(millisecond)
14. TurnRightWithDelay (int speed, int interval)
สั่งให้หุ่นยนต์หมุนตามเข็มนาฬิกาด้วยความเร็วและระยะเวลาที่กำหนด
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
- interval ระยะเวลาที่ต้องการ(millisecond)
15. TurnLeftWithDelay(int speed, int interval)
สั่งให้หุ่นยนต์หมุนทวนเข็มนาฬิกาด้วยความเร็วและระยะเวลาที่กำหนด
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
- interval ระยะเวลาที่ต้องการ(millisecond)
16. SlideLeftWithDelay(int speed, int interval)
สั่งให้หุ่นยนต์เคลื่อนที่ไปทางซ้ายด้วยความเร็วและระยะเวลาที่กำหนด
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
- interval ระยะเวลาที่ต้องการ(millisecond)
17. SlideRightWithDelay(int speed, int interval)
สั่งให้หุ่นยนต์เคลื่อนที่ไปทางขวาด้วยความเร็วและระยะเวลาที่กำหนด
- speed ความเร็วที่ต้องการ 0 ถึง 255 *ไม่ควรน้อยไปหุ่นยนต์จะไม่ขยับ
- interval ระยะเวลาที่ต้องการ(millisecond)
การต่อวงจร
DC Motorแบบ 6 เส้น (ล้อซ้าย)
- เส้นที่ 1 สีแดง VCC ต่อที่ 12 โวลต์จากแบตเตอรี่
- เส้นที่ 2 สีดำ GND ต่อที่ Pin GND
- เส้นที่ 3 สีเหลือง ต่อที่ Pin S36
- เส้นที่ 4 สีเขียว ต่อที่ Pin S37
- เส้นที่ 5 สีส้ม ต่อที่ Pin S38
- เส้นที่ 6 สีน้ำเงิน ต่อที่ Pin S9
DC Motorแบบ 6 เส้น (ล้อขวา)
- เส้นที่ 1 สีแดง VCC ต่อที่ 12 โวลต์จากแบตเตอรี่
- เส้นที่ 2 สีดำ GND ต่อที่ Pin GND
- เส้นที่ 3 สีเหลือง ต่อที่ Pin S23
- เส้นที่ 4 สีเขียว ต่อที่ Pin S25
- เส้นที่ 5 สีส้ม ต่อที่ Pin S26
- เส้นที่ 6 สีน้ำเงิน ต่อที่ Pin S8
การเขียนโค้ดควบคุม
หลักการทำงาน
จากโค้ดเป็นการสั่งให้มอเตอร์ล้อเคลื่อนที่โดยใช้ Delay โดยการพิมพ์เลข 0-5 บน Serial Monitor เพื่อเรียกฟังก์ชันการเคลื่อนที่
ป้อนเลข 0 หุ่นยนต์เคลื่อนที่ไปด้านหน้า
ป้อนเลข 1 หุ่นยนต์เคลื่อนที่ไปด้านหลัง
ป้อนเลข 2 หุ่นยนต์เคลื่อนที่เลี้ยวขวา
ป้อนเลข 3 หุ่นยนต์เคลื่อนที่เลี้ยวซ้าย
ป้อนเลข 4 หุ่นยนต์เคลื่อนที่สไลด์ไปทางซ้าย
ป้อนเลข 5 หุ่นยนต์เคลื่อนที่สไลด์ไปทางขวา
|