วันอังคารที่ 15 มกราคม พ.ศ. 2556

รูปแบบการเลี้ยวของหุ่นยนต์

          มอเตอร์ เป็นอุปกรณ์ที่เปรียบเสมือนกล้ามเนื้อของมนุษย์ กล่าวคือเมื่อร่างกายของมนุษย์รับข้อมูลจากตาหรือหูแล้ว สมองจะทำการตัดสินใจจะส่งสัญญาณผ่านระบบประสาทไปยังกล้ามเนื้อ โดยกล้ามเนื้อจะทำหน้าที่ควบคุมให้อวัยวะแขน ขา ทำงาน ในหุ่นยนต์ก็เช่นเดียวกัน มอเตอร์จะทำหน้าที่รับสัญญาณไฟฟ้าจากภาคควบคุม (Controller) โดยมอเตอร์จะควบคุมการทำงานของระบบแมคคานิคให้ทำงานตามที่สั่งการ
ภาพแสดง Servo motor

          การควบคุมให้หุ่นยนต์เคลื่อนที่เดินหน้าและถอยหลัง สามารถกำหนดได้ 2 วิธี คือ

          วิธีที่ 1 การควบคุมการเคลื่อนที่ด้วยเวลา ดังนี้



จากโปรแกรมมีฟังก์ชันที่เกี่ยวข้องกับการเขียนโปรแกรม คือ

OnFwd(Outputs Port, Power) คือ ฟังก์ชันที่ใช้ควบคุมให้มอเตอร์เดินหน้า (Outputs Port พอร์ตที่ติดต่อกับมอเตอร์, Power ค่าตั้งแต่ 0 ถึง 100 สามารถใส่เป็นค่าลบหากต้องการทิศตรงข้าม)
OnRev(Outputs Port, Power) คือ ฟังก์ชันที่ใช้ควบคุมให้มอเตอร์ถอยหลัง (Outputs Port พอร์ตที่ติดต่อกับมอเตอร์, Power ค่าตั้งแต่ 0 ถึง 100 สามารถใส่เป็นค่าลบหากต้องการทิศตรงข้าม)
Wait(milliseconds) คือ ฟังก์ชันที่ใช้สำหรับกำหนดเวลาในการทำงาน (Milliseconds เวลาเป็นมิลลิวินาที (วินาที x 1000))
Off(Outputs Port) คือ ฟังก์ชันที่ใช้ปิดการทำงานมอเตอร์ พร้อมกับหยุด (Outputs Port พอร์ตที่ติดต่อกับมอเตอร์)

          วิธีที่ 2 การควบคุมการเคลื่อนที่ด้วยองศาการหมุนของมอเตอร์



          มอเตอร์ของชุดหุ่นยนต์จะเป็น Servo motor ซึ่งมีเซนเซอร์อยู่ภายในแล้ว โดยเซนเซอร์จะใช้การวัดเป็นองศา 1 รอบการหมุนจะเท่ากับ 360 องศา



          เราสามารถดูค่าของเซนเซอร์ได้ที่เมนู View


1. เลือกไอคอน Motor degree
2. เลือกพอร์ตที่เชื่อมต่อกับเซนเซอร์
3. ลองดันมอเตอร์ไปกับพื้น
4. ดูค่าที่ได้รับที่หน้าจอ จะเป็นค่าของจำนวนองศาที่ล้อหมุน

สามารถเขียนโปรแกรมได้ดังนี้


จากโปรแกรมมีฟังก์ชันที่เกี่ยวข้องกับการเขียนโปรแกรม คือ

RotateMotor(Outputs Port,Power,Angle) (Outputs Port พอร์ตที่ติดต่อกับมอเตอร์ื, Power ค่าตั้งแต่ 0 ถึง 100 สามารถใส่เป็นค่าลบหากต้องการทิศตรงข้าม , Angle สามารถใส่เป็นค่าลบหากต้องการทิศทางตรงกันข้าม)

          นอกจากการควบคุมให้หุ่นยนต์เดินหน้าและถอยหลังแล้ว หุ่นยนต์จะมีการเคลื่อนที่ด้วยการเลี้ยว ซึ่งสามารถจำแนกลักษณะการเลี้ยวตามการควบคุมของมอเตอร์ได้ 5 รูปแบบ ดังนี้

แบบที่ 1 มอเตอร์ด้านเดียวหมุนไปข้างหน้า

ภาพแสดงการเลี้ยวแบบที่ 1 มอเตอร์ด้านเดียวหมุนไปข้างหน้า

แบบที่ 2 มอเตอร์ด้านเดียวหมุนถอยหลัง

ภาพแสดงการเลี้ยวแบบที่ 2 มอเตอร์ด้านเดียวหมุนถอยหลัง

แบบที่ 3 มอเตอร์ทั้งสองด้านหมุนพร้อมกันในทิศตรงกันข้าม
ภาพแสดงการเลี้ยวแบบที่ 3 มอเตอร์ด้านเดียวหมุนพร้อมกันในทิศตรงกันข้าม

แบบที่ 4 มอเตอร์ทั้งสองด้านหมุนพร้อมกันไปหน้าในทิศเดียวกันแต่กำลังต่างกัน

ภาพแสดงการเลี้ยวแบบที่ 4 มอเตอร์ด้านเดียวหมุนพร้อมกันไปหน้าในทิศเดียวกันแต่กำลังต่างกัน

แบบที่ 5 มอเตอร์ทั้งสองด้านหมุนพร้อมกันถอยหลังในทิศเดียวกันแต่กำลังต่างกัน

ภาพแสดงการเลี้ยวแบบที่ 5 มอเตอร์ด้านเดียวหมุนพร้อมกันถอยหลังในทิศเดียวกันแต่กำลังต่างกัน

          สิ่งที่สำคัญที่สุดในการเคลื่อนที่ไปทางซ้ายหรือขวาของหุ่นยนต์ คือ การควบคุมการจ่ายพลังงานของมอเตอร์ มอเตอร์ไฟฟ้าที่ใช้ในการสร้างหุ่นยนต์ส่วนใหญ่จะเป็นแบบมอเตอร์ไฟฟ้ากระแสตรง เนื่องจากสามารถควบคุมความเร็วในการหมุนและทิศทางของการหมุนได้ง่าย โดยใช้แหล่งจ่ายที่เป็นแบตเตอรี่ที่สามารถหาได้ไม่ยาก และต้องเลือกขนาดของความเร็วรอบและแรงบิดให้เหมาะสมกับงาน


ข้อเสนอแนะจากประสบการณ์
          รูปแบบการเลี้ยว 5 แบบที่ได้กล่าวมาข้างต้น จะทำงานได้มีประสิทธิภาพ เกิดจากการนำไปใช้ให้เหมาะสมกับสถานการณ์ เช่น เมื่อต้องการเลี้ยวในพื้นที่แคบ ควรเลือกใช้การเลี้ยวแบบที่ 3 มอเตอร์ทั้งสองด้านหมุนพร้อมกันในทิศตรงกันข้าม เพราะการเลี้ยวแบบนี้มอเตอร์ทั้งสองด้านจะทำงานพร้อมกันทำให้เกิดรัศมีการเลี้ยวที่สั้นที่สุด สามารถเลี้ยวได้รวดเร็วใช้เวลาสั้น ถ้ามีพื้นที่ค่อนข้างกว้าง อาจจะเลือกใช้แบบที่ 4 หรือแบบที่ 5 เพราะทั้งสองแบบมีรูปแบบการเลี้ยวที่คล้ายกับการเข้าโค้ง

ภาพแสดงการเปรียบเทียบรูปแบบการเลี้ยวในแบบที่ 1 และ 4



เอกสารอ้างอิง
ทีมงานสมาร์ทเลิร์นนิ่ง. (2549). เรียนรู้การสร้างหุ่นยนต์ Step by Step. กรุงเทพฯ: บริษัท ด่านสุทธาการพิมพ์ จำกัด.
Daniele Benedettelli. (2007). Programming LEGO NXT Robots using NXC. [n.p.]: [n.p.].
John C. Hansen. (2009). LEGO NXT power programming : robotics in C. 2nd ed. United States: Variant Press.
The LEGO Group. (2006). Quick Start Guide : Using The NXT with Robolab 2.9. [n.p.]: [n.p.].