วันพฤหัสบดีที่ 26 มกราคม พ.ศ. 2560

ข้อมูลและการใช้าน Laser Distance Scanner (Neato)

                หลังจากที่ห่างหายไปนานนะครับ คราวนี้จะมาแบ่งปันประสบการณ์และข้อมูลที่จำเป็นในการใช้งานสำหรับ Laser Distance Scanner
                ก่อนอื่นก็ต้องขอขอบคุณข้อมูลจาก  hackaday.com  และ   wikispaces   นะครับ  ตอนที่ซื้อตัว LDS มา ข้อมูลการวิธีใช้งานมีน้อยมาก เว็ปก็มีน้อย ยิ่งเป็นภาษาไทยยิ่งไม่ค่อยมี  ก็ได้เว็ปนี้แหละครับที่ละเอียด และมีข้อมูลครบถ้วน   ทำให้ทำโครงงานได้จนสำเร็จครับ

ภาพ LDS

หลักการทำงาน

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


ภาพแสดงเทคนิคสามเหลี่ยมคล้าย (ภาพจาก Hackaday.com)
                  กล่าวคือเมื่อแสงที่ปล่อยออกไปตกกระทบวัตถุ แสงจะกระจายออก เลนจะทำหน้าที่รวมแสงให้ตกกระทบฉากรับ ซึ่งแสงที่ตกกระทบฉากรับจะต้องผ่านจุดศูนย์กลางของเลนส์เสมอ ทำให้ระยะ E เป็นค่าคงที่  ระยะ F คือระยะจากเลนส์ถึงฉากรับซึ่งเป็นค่าคงที่ ส่วนระยะ G คือระยะที่อ่านได้จากแผงเซนเซอร์  เมื่อเรารู้อัตราส่วน F : G ซึ่งจะเท่ากับ D : E และเรารู้ระยะ E ทำให้เราหาค่า D หรือระยะทางจากเซนเซอร์ได้ครับ

การเชื่อมต่อทางไฟฟ้า


ภาพจาก www.hizook.com/
                สำหรับการเชื่อมต่อทางไฟฟ้านะครับ เซนเซอร์ตัวนี้จะมีคอนเนคเตอร์สองตัว คือ
        1.แบบ 4-pin   สำหรับไฟเลี้ยงตัวเซนเซอร์วัดระยะ และสายสัญญาณ
        2.แบบ 2-pin   สำหรับมอเตอร์
                โดยการใช้งาน จะสื่อสารแบบ UART ที่ Buadrate 115,200  โดยใช้สายสี่เส้นประกอบด้วย


           สีดำ  : Ground
  สีแดง : 5V
สีน้ำตาล  : RX   
   สีส้ม  : TX

                ส่วนมอเตอร์ สายไฟสีแดงแสดงขั้วบวก และสีดำแสดงขั้วลบปกติ ต้องต่อให้ถูกขั้วถ้าต่อผิดมอเตอร์จะหมุนกลับด้าน ส่งผลให้ข้อมูลที่อ่านได้ผิดพลาดไปด้วย  โดยทั่วไปถ้าใช้แรงดัน 3.3v ตัวเซนเซอร์จะถูกหมุนที่ความเร็วประมาณ​ 240 RPM แต่ก็อาจคลาดเคลื่อนได้ จึงควรทำการควบคุมแบบ close-loop เพื่อควบคุมความเร็วให้คงที่ 300 RPM เป็นความเร็วที่เหมาะสมที่สุด (เซนเซอร์จะทำงานที่ความเร็ว 180 - 349 RPM)


การอ่านค่า

                เมื่อเราต่อชุดเซนเซอร์เข้ากับ Module USB UART  โดยที่ยังไม่จ่ายไฟให้มอเตอร์จะปรากฏข้อความดังภาพ


เมื่อมอเตอร์เริ่มหมุน จะปรากฏข้อความ Spinning...  แล้วข้อมูลที่ส่งเข้ามาจะไม่สามารถอ่านได้ (ไม่ใช่ข้อความ ตัวอักษร)   แต่จะส่งเป็น package โดย 1 package จะประกอบไปด้วยข้อมูล 22-byte ดังนี้

                    ภาพรวมของข้อมูลคือ ใน 1 package ของข้อมูล จะให้ค่าระยะ 4 ค่าสำหรับแต่ละมุมที่อ่านเป็นลำดับทีละ 1 องศา  และในหนึ่งรอบการหมุนจะมีการส่งข้อมูลทั้งหมด 90 package แต่ละแพคเกจจะมีข้อมูลดังนี้
D0 - D3

1.Speed
        เป็นข้อมูลจำนวนเต็มแบบไม่มีเครื่องหมาย  ( unsigned )  ขนาด 2-byte โดยจะให้ค่าเป็น 64 เท่า ของค่า ความเร็วการหมุน (RPM) ของตัวเซนเซอร์  ใช้ในการควบคุมความเร็วมอเตอร์

2.Package index
        เป็นข้อมูลบอกว่าแพคเกจที่ส่งมาลำดับที่เท่าไหร่  โดย 0xA0 จะเป็นลำดับที่ 0 ไปตามลำดับถึงลำดับที่ 89   และใช้บอกว่าข้อมูลระยะทั้ง 4 ข้อมูลคือมุมที่เท่าใด เช่น ลำดับที่ 0 จะเก็บข้อมูลของมุม      0 ,1,2,3 องศา  ลำดับที่ 1 จะเก็บข้อมูลของมุม 4,5,6,7 องศา ตามลำดับ

3. ข้อมูลของแต่ละมุม (D0 - D3)
        จะเก็บข้อมูลของแต่ละมุม โดยแต่ละตัวจะมีขนาด 4-byte และมีวิธีอ่านค่าที่เหมือนกันนั่นคือ

                `byte 0 : <distance 7:0>`
                `byte 1 : <"invalid data" flag> <"strength warning" flag> <distance 13:8>`
                `byte 2 : <signal strength 7:0>`
                `byte 3 : <signal strength 15:8>`

         ในที่นี้ผมไม่ได้สนใจ bit ของ invalid data flag และ bit ของ strength warning flag แต่จะสนใจแค่ signal strength และ distance  ซึ่งทั้งสองข้อมูลนี้จะตีความแบบจำนวนเต็มไม่คิดเครื่องหมาย โดย distance เป็นข้อมูล 14-bit หน่วยเป็นมิลลิเมตร ซึ่งค่าที่อ่านได้จะอยุ่ในช่วง 15cm - 600cm ส่วน signal strength คือความเข้มของสัญญาณที่สะท้อนกลับมา ซึ่งไม่มีหน่วย และจะแปลผันตามความเข้มของวัตถุที่ลำแสงไปตกกระทบ



สรุปการทดลอง

                ผมได้ใช้ อาดุยโน่ โปรมินิ ทำวงจรควบคุมความเร็วมอเตอร์ แบบ close-loop ใช้เทคนิค PI control  และใช้บลูทูธส่งข้อมูลจากตัวเซนเซอร์มายังคอมพิวเตอร์แบบไร้สายทำให้ง่ายละสะดวกในการทดลอง

                ทางฝั่งคอมพิวเตอร์ ใช้โปรแกรม Processing ide  ในการรับข้อมูล และอ่านค่าจากข้อมูล จากนั้นให้แสดงผลเป็นภาพขึ้นที่หน้าจอคอมพิวเตอร์

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


1 ความคิดเห็น: