โครงงาน

ตลับเมตรไร้สายระบบอัลตราโซนิกควบคุมด้วย Arduino

อภิรักษ์ นามแถ่ง

 

 

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

 

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

 

          ข้อดีของเครื่องวัดระยะทางแบบไร้สาย คือ ใช้งานง่ายไม่ต้องเสียเวลาม้วนเก็บ การแสดงผลก็รวดเร็วทันใจ ถึงแม้จะมีสิ่งกีดขวางหรืออุปสรรคต่างๆ ก็ยังสามารถวัดและคำณวนพื้นที่ได้ เพียงแค่หันอัลตราโซนิกไปยังจุดที่ต้องการวัดแล้วกดปุ่ม เพียงเท่าแค่นี้ก็รู้ระยะทางแล้ว แถมยังสามารถวัดในสถานที่มืดได้ด้วยเนื่องจากการแสดงผลใช้ LCD ที่มีไฟส่องพื้นหลัง สามารถมองเห็นได้ ไม่ต้องใช้ไฟฉายส่องสายวัดให้ยุ่งยาก อีกทั้งการแสดงผลผู้เขียนได้กำหนดให้แสดงในหน่วยเซนติเมตรและนิ้ว ดังนั้นจึงสะดวกต่อการอ่านค่าและไม่ต้องแปลงหน่วยให้ยุ่งยากอีก ระยะที่โครงงานนี้สามารถวัดได้ คือ 2 เซนติเมตรถึง 4 เมตร (ตามคุณสมบัตรของโมดูลอัลตราโซนิก)

 

          อีกหนึ่งข้อดี คือ สามารถพกไปไหนมาไหนได้ทุกที่ตามที่คุณต้องการ เพราะตัวเครื่องมีน้ำหนักเบาพกพาง่าย เนื่องจากมีขนาดเล็กไม่เกะกะเทอะทะ ใช้แบตเตอรี่ 9 โวลต์เป็นแหล่งจ่าย หากไฟหมดก็สามารถซื้อเปลี่ยนได้ทันที หรือถ้าหากท่านมีแบตเตอรี่สำรอง (Power bank) สำหรับโทรศัพท์ก็สามารถนำมาใช้งานได้เลยทันที ซึ่งผู้เขียนได้ออกแบบให้สามารถเลือกใช้ได้แล้วแต่ความสะดวกของท่านผู้ใช้

 

 

รูปที่ 1 วงจรสมบูรณ์

 

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

 

          รูปที่ 1 เป็นวงจรสมบูรณ์ของโครงงานนี้ จะเห็นว่าวงจรมีไม่มาก หัวใจหลักจะใช้ Arduino UNO เป็นตัวประมาณผลทั้งหมด ได้แก่ ควบคุมการแสดงผลผ่าน LCD ขนาด 16 ตัวอักษร 2 บรรทัด, อ่านค่าการกดสวิตช์สำหรับวัดค่า (SW2) และอ่านค่าระยะทางจากอัลตราโซนิก มาเริ่มทำความเข้าใจกับการทำงานของวงจรได้เลยครับ

 

          ระบบอัลตราโซนิก (Ultrasonic) หมายถึง คลื่นเสียงที่มีความถี่สูงเกินกว่าที่หูมนุษย์จะได้ยิน โดยทั่วไปแล้วหูของมนุษย์โดยเฉลี่ยจะได้ยินเสียงสูงถึงเพียงแค่ประมาณ 15 KHz เท่านั้น ดังนั้นคลื่นเสียงอัลตราโซนิกจึงหมายถึงคลื่นเสียงที่มีความถี่สูงกว่า 20 KHz ขึ้นไป แต่จะมีความถี่สูงแค่ไหนนั้นไม่ได้ระบุเอาไว้ เนื่องจากขึ้นอยู่กับลักษณะการใช้งาน

 

          สาเหตุที่มีการนำเอาคลื่นย่านอัลตราโซนิกมาใช้ก็เพราะว่าเป็นคลื่นทีมีทิศทางทำให้เราสามารถใช้คุณสมบัตินี้มาใช้งานได้ โดยใช้หลักการสะท้อนกลับของคลื่นเสียงของเป้าหมายที่ต้องการ ซึ่งการมีทิศทางของคลื่นเสียงย่านอัลตราโซนิกทำให้เรานำไปใช้งานได้หลายอย่าง เช่น นำไปใช้ในเครื่องควบคุมระยะไกล (Ultrasonic remote control) เครื่องล้างอุปกรณ์ (Ultrasonic cleaner) โดยให้น้ำสั่นที่ความถี่สูง เครื่องวัดความหนาของวัตถุโดยสังเกตระยะเวลาที่คลื่นสะท้อนกลับมา เครื่องวัดความลึกและทำแผนที่ใต้ท้องทะเล ใช้ในเครื่องหาตำแหน่งอวัยวะบางส่วนในร่างกาย ใช้ทดสอบการรั่วไหลของท่อ เป็นต้น

 

 

รูปที่ 2 การสะท้อนที่ทำมุม 15 องศา (Measuring Angle) ของโมดูลอัลตราโซนิก

 

 

รูปที่ 3 Timing Diagram สำหรับการวัดระยะทาง

 

          รูปที่ 3 เป็น Timing Diagram กระบวนการทำงานของอัลตราซิก โดยจะเริ่มจากการส่งสัญญาณลอจิกสูง (Logic High) ที่ขา Trig ยาว 10 ไมโครวินาที เพื่อกระตุ้นให้แหล่งกำเนิดเสียงทำงาน จากนั้นจะส่งพัลส์ความถี่ 40 kHz ออกไป 8 ลูก แล้วก็รอเสียงที่จะสะท้อนกลับมาที่ขา Echo ซึ่งโมดูลอัลตราโซนิกจะมีอยู่ 2 ตัว หนึ่งตัวจะเป็นตัวส่งคลื่นเสียงออกไปส่วนอีกตัวจะเป็นตัวรับความถี่ที่สะท้อนกลับมา และเนื่องจากคุณสมบัติของอุปกรณ์ที่ใช้ในการกำเนิดเสียงมีลักษณะเป็นลำโพง (Horn) จึงทำให้อัลตราโซนิกที่นำมาใช้นี้มีมุมวัด 15 องศา (Measuring Angle) และสามารถวัดระยะห่างได้ตั้งแต่ 2 เซนติเมตรถึง 4 เมตร

 

 

รูปที่ 4 ตัวอย่างการคำนวณเมื่อวัดระยะ 10 เซนติเมตร

 

          รูปที่ 4 เป็นตัวอย่างการวัดที่ระยะ 10 เซนติเมตร โดยใช้ความเร็วของเสียงคือ 340 เมตร/วินาทีหรือ 0.034 เซนติเมตร/ไมโครวินาที ดังนั้นคลื่นเสียงจะต้องเดินทางประมาณ 294 ไมโครวินาที แต่ค่าที่ได้จากขา Echo จะต้องหาร 2 ก่อนนำไปใช้งาน เนื่องจากคลื่นเสียงจะใช้เวลาเดินทางไปและสะท้อนกลับ ดังนั้นการจะได้ระยะทางที่แท้จริงจะต้องหารด้วย 2 และถ้าจะแปลงเป็นหน่วยเซนติเมตรจะต้องเอาระยะที่ได้คูณด้วย 0.034 และหารด้วย 2 อีกทีหนึ่ง

 

          การทำงาน Arduino UNO จะประกาศใช้งานขา Trig ไว้ที่ขา 12 และขา Echo ที่ขา 11 ในส่วนของค่าระยะเวลาที่อ่านได้จากขา Echo จะถูกเก็บไว้ที่ตัวแปร duration ซึ่งตัวแปรนี้จำเป็นต้องประกาศให้เป็น Long เนื่องจากค่าระยะทางนี้จะมีค่าสูงเป็นหลักหลายพันถึงหลักหมื่นนั่นเอง (ที่ระยะทาง 170 เซนติเมตรค่า duration นี้จะเท่ากับ 10,000)

 

 

รูปที่ 5 การประกาศตัวแปรสำหรับโปรแกรม Arduino

 

          การทำงานของ LCD ขนาด 16 ตัวอักษร 2 บรรทัด ในส่วนของการเชื่อมต่อกับ LCD ใช้การสื่อสารอนุกรมแบบ I2C (Inter-Integrated Circuit) ซึ่งการสื่อสารแบบนี้จะใช้เพียง 2 ขาเท่านั้น หากเทียบกับการเชื่อมต่อโดยตรงระหว่าง LCD กับ Arduino นั้นจะใช้ขาเยอะมาก (อย่างต่ำ 6 ขา) ทำให้เปลืองขาที่อาจจะต้องไปใช้งานกับอุปกรณ์ต่อพ่วงอื่นๆ ดังนั้นจะมีการพัฒนานำเอา I2C มาประยุกต์ใช้งานกับ LCD โมดูล เพื่อที่จะลดจำนวนขาที่ต้องใช้จำนวนมาก ให้เหลือเพียง 2 สายเท่านั้น คือขา SCL และ SDA นอกจากนี้ยังสามารถนำขาดังกล่าวนี้ติดต่อกับอุปกรณ์อื่นที่ใช้ I2C ได้บนสายเดียวกันด้วย

 

          หัวใจของ I2C โมดูล คือไอซี PCF8574 ซึ่งทำหน้าที่รับสัญญาณอินพุต I2C มาจาก Arduino จากนั้นจะกำหนดสภาวะเอาต์พุตสำหรับสั่งงาน LCD ให้ทำงานตามคำสั่ง ที่ขา A0, A1 และ A2 (ขา1-3) จะใช้กำหนดตำแหน่ง (Address) สำหรับเข้าถึง LCD ดังที่กล่าวไว้ข้างต้นว่าขา I2C นี้เราสามารถเชื่อมต่ออุปกรณ์ได้หลายตัว ดังนั้นจึงต้องกำหนดตำแหน่งของอุปกรณ์ไว้ด้วย ตัวอย่างเช่น หากงานของท่านจำเป็นต้องใช้ LCD หลายตัว Address นี้เพื่อจะใช้เพื่อเลือกควบคุมจอ LCD ตัวใดตัวหนึ่งได้ ซึ่งโครงงานนี้จะเชื่อมต่อลงกราวด์ของวงจร นั่นแสดงว่าผู้เขียนกำหนดตำแหน่งให้เป็น “000” นั่นเอง ที่ขา 3 ของแอลซีดีจะต่อกับ VR1 (10K) เพื่อทำการปรับระดับความเข้มของตัวอักษรบนหน้าจอ LCD

           

          การใช้งานจะมีสวิตช์อยู่ 2 ตัว โดย SW1 จะใช้สำหรับเปิด-ปิดแรงดัน 9 โวลต์ที่ต่ออยู่กับ CON1 และในส่วนของ SW2 ใช้กดเพื่อวัดระยะทาง ทั้งนี้เพื่อไม่ให้ Arduino วัดตลอดเวลา ซึ่งเหมาะสำหรับท่านที่ต้องการคงค่าไว้บนหน้าจอ LCD แต่ถ้าหากต้องการให้ Arduino วัดค่าตลอดเวลาท่านสามารถกด SW2 ค้างไว้ได้

 

 

รูปที่ 6 ลายวงจรขนาดเท่าแบบ

 

 

รูปที่ 7 ตำแหน่งการลงอุปกรณ์

 

 

 

รูปที่ 8 การบัดกรีคอนเน็กเตอร์ของ LCD

 

การประกอบ

 

          รูปที่ 7 เป็นตำแหน่งการลงอุปกรณ์ของโครงงานนี้ จะสังเกตว่าลายวงจรนั้นมีเพียงด้านบน (Top Layer) และอุปกรณ์ก็จะลงทางด้านบนด้วย (Top Overlay) การลงอุปกรณ์จะค่อนข้างยากกว่าโครงงานทั่วไปสักหน่อย เพราะอุปกรณ์จะบัดกรีด้านลายวงจรพิมพ์ ดังนั้นจึงต้องสังเกตจุดบัดกรีให้ดีและควรใช้หัวแร้งปลายเล็กๆ เพื่อให้สามารถบัดกรีตำแหน่งใต้คอนเน็กเตอร์ได้ดังแสดงในรูปที่ 8

 

          เนื่องจากอุปกรณ์มีน้อยชิ้น แต่ถึงแม้ว่าอุปกรณ์น้อยชิ้นแต่การลงอุปกรณ์นั้นค่อนข้างยุ่งยากพอสมควร จึงควรต้องลงอุปกรณ์ อย่างไรก็ตามการลงอุปกรณ์ก็ควรเริ่มจากตัวที่มีความสูงน้อยที่สุดก่อน อาทิเช่น ลวดจั๊มและตัวต้านทาน เป็นต้น จากนั้นจึงไล่เรียงตามลำดับความสูงจนกระทั่งครบทุกตัว ในส่วนของไอซี IC1 (PCF8574) เป็นประเภท SMD ควรต้องใช้ความระมัดระวังเรื่องความร้อนขณะบัดกรีด้วย เพราะหากแช่หัวแร้งนานจนเกินไปอาจจะทำให้ IC1 เสียหายได้ แต่ก็อย่ากังวลมากจนเกินไป เพราะอันที่จริงหากไม่แช่หัวแร้งไว้นานๆ ก็คงไม่พังง่ายๆ ครับ

 

          เมื่อลงอุปกรณ์จนครบหมดแล้วให้ตรวจสอบแรงดันในวงจรทั้งหมดเสียก่อน โดยให้ใส่บอร์ด Arduino UNO ลงบนซ็อกเก็ตก่อน จากนั้นให้อ้างอิงกับรูปที่ 1 และป้อนแหล่งจ่ายไฟ 9 โวลต์ต่อเข้า CON1 หรือเชื่อมต่อเข้าพอร์ท USB หากใช้แหล่งจ่ายเป็น Power Bank (ดังแสดงในรูปที่ 9) จะต้องระมัดระวังเรื่องตำแหน่งขั้วด้วย จากนั้นให้นำโวลต์มิเตอร์มาวัดระหว่างขา 1 และขา 16 ของ IC1 (หรือขา 1 และ 2 ของ LCD) ถ้าถูกต้องแรงดันที่ได้จะต้องเท่ากับ 5 โวลต์ หากแรงดันที่ได้เป็นไปตามนี้แสดงว่าพร้อมจะทดสอบการทำงานขั้นตอนต่อไปแล้ว 

 

 

รูปที่ 9 การเชื่อมต่อกับแหล่งจ่ายไฟ (เลือกระหว่างแบตเตอรี่ 9 โวลต์กับ Power Bank)

 

ทดสอบการทำงาน

 

          เมื่อมั่นใจว่าการลงอุปกรณ์ถูกต้องครบทุกอย่างแล้วให้ใส่อุปกรณ์ที่เหลือทั้งหมดลงตำแหน่ง จากนั้นให้ไปดาวน์โหลดโปรแกรม Arduino IDE เวอร์ชัน 1.6.4 มาไว้ที่เครื่องคอมพิวเตอร์ของท่าน เนื่องจากไลบรารี่ที่ใช้ร่วมกับโครงงานนี้จะรองรับที่เวอร์ชันดังกล่าวนี้ หากใช้เวอร์ชันอื่นอาจจะไม่สามารถใช้งานโปรแกรมนี้ได้ สามารถไปดาวน์โหลดโปรแกรม Arduino IDE เวอร์ชัน 1.6.4 ได้ที่เว็บไซต์ https://www.arduino.cc/en/Main/OldSoftwareReleases#previous (ดังแสดงในรูปที่ 10)

 

 

รูปที่ 10 เว็บไซต์สำหรับดาวน์โหลด Arduino IDE เวอร์ชัน 1.6.4

 

          หลังจากนั้นไปดาวน์โหลดไฟล์ที่ใช้ร่วมกับโครงงานที่เว็บไซต์ http://electronics.se-ed.com/download ให้ทำการเปิดไฟล์ SemiUltrasonic.ino พร้อมกับทำการอัพโหลดโปรแกรม เมื่อเสร็จแล้วที่หน้าจอ LCD จะแสดงข้อความ “SEMI TAPE” ในบรรทัดแรกและ “READY” ในบรรทัดที่สอง (ดังแสดงในรูปที่ 11)

 

 

รูปที่ 11 หน้าจอ LCD แสดงข้อความหลังจากเปิดเครื่อง

 

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

 

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

 

ตำแหน่งการลงอุปกรณ์

ตัวต้านทาน ¼ วัตต์ +/-5%

R1 22 1 ตัว
R2 4.7k 1 ตัว
VR1 ตัวต้านทานปรับค่าได้ 10k 1 ตัว

ตัวเก็บประจุ
C1 100uF 1 ตัว
C2 0.1uF 1 ตัว

อุปกรณ์สารกึ่งตัวนำ
IC1 PCF8574 1 ตัว

อื่นๆ
CON1 คอนเน็กเตอร์ 2 ขา 1 ตัว
LCD1 แอลซีดีขนาด 16 ตัวอักษร 2 บรรทัด 1 ตัว
SW1 สวิตช์เลื่อน 3 ขา 1 ตัว
SW2 สวิตช์กดติดปล่อยดับตัวใหญ่ 1 ตัว
ULTRASONIC โมดูลอัลตราโซนิก HC-SR04 1 ตัว

หมายเหตุ ซอร์สโค้ดที่ใช้ร่วมกับโครงงานสามารถดาวน์โหลดที่เว็บไซต์ http://electronics.se-ed.com/download

 

สงวนลิขสิทธิ์ ตามพระราชบัญญัติลิขสิทธิ์ พ.ศ. 2539 www.thailandindustry.com
Copyright (C) 2009 www.thailandindustry.com All rights reserved.

ขอสงวนสิทธิ์ ข้อมูล เนื้อหา บทความ และรูปภาพ (ในส่วนที่ทำขึ้นเอง) ทั้งหมดที่ปรากฎอยู่ในเว็บไซต์ www.thailandindustry.com ห้ามมิให้บุคคลใด คัดลอก หรือ ทำสำเนา หรือ ดัดแปลง ข้อความหรือบทความใดๆ ของเว็บไซต์ หากผู้ใดละเมิด ไม่ว่าการลอกเลียน หรือนำส่วนหนึ่งส่วนใดของบทความนี้ไปใช้ ดัดแปลง โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร จะถูกดำเนินคดี ตามที่กฏหมายบัญญัติไว้สูงสุด