<< Go Back

         การเคลื่อนที่ของหุ่นยนต์เป็นสิ่งสำคัญสำหรับหุ่นยนต์ที่จะทำงานในสภาพแวดล้อมต่าง ๆ ประเภทของการเคลื่อนที่ของหุ่นยนต์สามารถแบ่งออกเป็น 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 หุ่นยนต์เคลื่อนที่สไลด์ไปทางขวา


 

<< Go Back