การใช้เซนเซอร์แสงตรวจสอบเส้นดำ


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

เซนเซอร์แสง


          การรับรู้ของตามนุษย์ต่อสีเมื่อเปรียบเทียบกับเซนเซอร์แสง



          การแสดงค่าแสงของเซนเซอร์แสง สามารถทำได้โดยเปิด NXT Controller ไปที่เมนู View



          หากเลือก Reflected Light จะทำให้เซนเซอร์แสงฉายแสงสีแดงไปกระทบวัตถุและวัดแสงที่สะท้อนกลับมาเราสามารถใช้ในการตรวจสอบค่าของแสงที่สะท้อนจากวัตถุได้



          แต่ถ้าเลือกวิธีการวัดค่าแสงแบบ Ambient Light จะไม่มีการฉายแสงสีแดงออกมาจากเซนเซอร์แสง โดยเซนเซอร์แสงจะวัดแสงที่เกิดจากการสะท้อนแสงจากวัตถุโดยรอบเท่านั้น

          ค่าของแสงที่ได้จากการวัดของเซนเซอร์แสงจะเริ่มต้นตั้งแต่ 0% ซึ่งหมายถึงดำสนิทหรือมืด ถึง 100% ซึ่งหมายถึงสว่างมากหรือขาว โดยสามารถแสดงค่าของแสงได้ดังภาพ

การเปรียบเทียบระหว่างค่าเซนเซอร์แสงและเซนเซอร์สี


วิธีการนำค่าแสงที่วัดได้ไปใช้ในการเขียนโปรแกรมให้หุ่นยนต์ตรวจสอบเส้นสีดำ มีดังนี้
ขั้นที่ 1 นำเซนเซอร์แสงที่ติดตั้งกับหุ่นยนต์ไปวัดค่าแสงพื้นผิวที่เป็นสีขาว
ขั้นที่ 2 นำเซนเซอร์แสงตัวเดียวกันไปวัดค่าแสงพื้นผิวที่เป็นสีดำ
ขั้นที่ 3 นำค่าแสงที่เซนเซอร์วัดได้พื้นผิวที่เป็นสีขาวและสีดำมารวมกันแล้วหารด้วยสอง จะได้ค่าที่จะนำไปใช้เป็นเกณฑ์ในการใช้เปรียบเทียบสำหรับเขียนโปรแกรมต่อไป

วิํํธีการหาค่าแสงเืพื่อนำไปใช้เปรียบเทียบ



ตัวอย่างการให้หุ่นยนต์ตรวจสอบเส้นดำ



ขั้นตอนการทำงาน





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


สำหรับโปรแกรม Bricx Command Center


สำหรับโปรแกรม Robolab


ชื่อและการทำงานของไอคอน

 Begin         เริ่มต้นในการเขียนโปรแกรม
 Motor  B มอเตอร์ B เคลื่อนที่ไปข้างหน้า
 Motor C มอเตอร์ C เคลื่อนที่ไปข้างหน้า
 Wait for Dark รอจนกระทั่งเซนเซอร์ที่พอร์ต 1 อ่านค่าแสงได้มืดกว่าค่าที่ตั้งไว้ ในที่นี้คือ 45
 Stop All Output หยุดการทำงานของทุกอุปกรณ์ Output เช่น มอเตอร์ หลอดไฟ
 End เมื่อต้องการจบโปรแกรม


เมื่อหุ่นยนต์สามารถตรวจสอบเส้นดำได้แล้วหนึ่งเส้น ต่อไปก็สามารถประยุกต์ให้หุ่นยนต์สามารถตรวจสอบและนับจำนวนเส้นที่ตรวจพบที่มากกว่าหนึ่งเส้น


ผังงานขั้นตอนการตรวจสอบเส้นดำมากกว่าหนึ่งเส้นและสามารถนับจำนวนเส้นได้มีขั้นตอนดังนี้


ตัวอย่างโปรแกรม


ชื่อและการทำงานของไอคอน

 Zero Light Sensor ตั้งค่าของเซนเซอร์แสงให้เป็นศูนย์
 Empty Container ตั้งค่าของกล่องบรรจุให้เป็นศูนย์
 Loop Forever         เริ่มต้นการวนซ้ำตลอดไป
 End of Forever Loop สิ้นสุดการวนซ้ำตลอดไป
 Light Sensor Fork ทางแยกของเซนเซอร์
 Fork Merge ตัวประสานเซนเซอร์
 Add to Container เพิ่มค่าใส่ในกล่องบรรจุ
 Formatted Text แสดงค่าของตัวแปรที่หน้าจอ LCD

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

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


ข้อเสนอแนะจากประสบการณ์
         การใช้เซนเซอร์แสงตรวจสอบเส้นดำ สิ่งที่ต้องคำนึงมากที่สุด คือ การวัดค่าแสง เพราะถ้าค่าแสงที่วัดมาได้คลาดเคลื่อน จะทำให้หุ่นยนต์ไม่สามารถตรวจสอบพบเส้นดำ ดังนั้นเมื่อต้องการนำหุ่นยนต์ไปปฏิบัติภารกิจในพื้นที่ใด จะต้องไปวัดค่าแสงที่พื้นที่นั้นและขณะกำลังวัดแสงต้องสังเกตว่ามีเงาของตนเองบังแสงหรือไม่
         ความผิดพลาดอีกประการที่จะพบเสมอๆ คือ สถานการณ์ที่ให้หุ่นยนต์นับเส้นดำ ซึ่งเขียนโปรแกรมได้ดังภาพ

หรือ

แต่หน้าสถานการณ์เป็นดังภาพ คือ เส้นหมายเลข 1 มีความหนามากกว่าเส้นอื่นๆ (เส้นที่ 2, 3)


          โปรแกรมจะต้องปรับเปลี่ยนไป คือ ค่า Wait(……..); ในบรรทัดที่ 17 ไม่เช่นนั้นหุ่นยนต์จะนับเส้นจำนวนผิด โดยนับมากกว่า 1 เส้น จนกว่าจะหลุดพ้นจากเส้นที่ 1 ดังรูปตัวอย่าง


หรือที่หมายเลข 1



เอกสารอ้างอิง
ทีมงานสมาร์ทเลิร์นนิ่ง. (2549). เรียนรู้การสร้างหุ่นยนต์ Step by Step. กรุงเทพฯ: บริษัท ด่านสุทธาการพิมพ์ จำกัด.
Martha N. Cyr. (2002). LEGO MindStorms for School Using ROBOLAB. Massachusetts: [n.p.].
The LEGO Group. (2006). NXT User Guide. [n.p.]: [n.p.].