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

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

light001

เซนเซอร์แสง

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

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

light008

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

light009

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

light010

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

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

light011

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

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

checkBlack001

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

2556-04-10 17_21_48-การใช้เซนเซอร์แสงตรวจสอบเส้น
สามารถเขียนโปรแกรมได้ดังนี้

Bricx Command Center_2013-04-11_09-58-23

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

lightsensor001

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

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

begin Begin เริ่มต้นในการเขียนโปรแกรม
end End เมื่อต้องการจบโปรแกรม
motorB Motor  B มอเตอร์ B เคลื่อนที่ไปข้างหน้า
motorC Motor C มอเตอร์ C เคลื่อนที่ไปข้างหน้า
2556-04-09 21_34_51-ROBOLAB Untitled 2 Wait for Dark รอจนกระทั่งเซนเซอร์ที่พอร์ต 1 อ่านค่าแสงได้มืดกว่าค่าที่ตั้งไว้ ในที่นี้คือ 45
2556-04-09 21_33_36-Data Logging and Motors Stop All Output หยุดการทำงานของทุกอุปกรณ์ Output เช่น มอเตอร์ หลอดไฟ

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

checkBlack002

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

checkBlack013

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

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

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

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

checkBlack012

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

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

checkBlack015

หรือ

checkBlack018

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

checkBlack014

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

checkBlack016

 

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

checkBlack017

 

 

เอกสารอ้างอิง
ทีมงานสมาร์ทเลิร์นนิ่ง. (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.].

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s