การใช้โมดูลตรวจจับสัญญาณและเซนเซอร์อัลตราโซนิก HC-SR04

ดาวน์โหลดไฟล์ที่เกี่ยวข้อง> PWM_Capture_Demo.7z

กล่าวนำ

บทความนี้แสดงตัวอย่างการใช้บล็อกเซตไวจัง (PWM Capture) ร่วมกับไมโครคอนโทรลเลอร์เพื่อวัดความกว้างของสัญญาณพัลส์วิดธ์มอดูเลชัน (Pulse Width Modulation :PWM) ซึ่งมีความต้องการใช้งานอยู่หลายงานด้วยกัน ในที่นี้จะขอยกตัวอย่างกรณีศึกษา การใช้งานร่วมกับเซนเซอร์อัลตราโซนิก ซึ่งเป็นเซนเซอร์ที่ใช้สำหรับวัดระยะทางแบบไม่สัมผัส

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

HC-SR04 เป็นเซนเซอร์โมดูลสำหรับตรวจจับวัตถุและวัดระยะทางแบบไม่สัมผัส [1-2] โดยใช้คลื่นอัลตราโซนิก ซึ่งเป็นคลื่นเสียงความถี่สูงเกินกว่าการได้ยินของมนุษย์ วัดระยะได้ตั้งแต่ 2 – 400 เซนติเมตร หรือ 1 – 156 นิ้ว สามารถต่อใช้งานกับไมโครคอนโทรลเลอร์ได้ง่าย ใช้พลังงานต่ำ เหมาะกับการนำไปประยุกต์ใช้งานด้านระบบควบคุมอัตโนมัติ หรืองานด้านหุ่นยนต์ หลักการทำงาน จะเหมือนกันกับการตรวจจับวัตถุด้วยเสียงของค้างคาว ตามรูปที่ 1 โดยจะประกอบไปด้วยตัว รับ-ส่ง อัลตราโซนิก ตัวส่งจะส่งคลื่นความถี่ 40 kHz ออกไปในอากาศด้วยความเร็วประมาณ 346 เมตรต่อวินาที และตัวรับจะคอยรับสัญญาณที่สะท้อนกลับจากวัตถุ เมื่อทราบความเร็วในการเคลื่อนที่ของคลื่น, เวลาที่ใช้ในการเดินทางไป-กลับ (t) ก็จะสามารถคำนวณหาระยะห่างของวัตถุ (S) ได้จาก

 S = 346 × 0.5t                                    (1)

รูปที่ 1 หลักการตรวจจับและวัดระยะห่างระหว่างวัตถุด้วยคลื่นเสียง

รูปที่ 1 หลักการตรวจจับและวัดระยะห่างระหว่างวัตถุด้วยคลื่นเสียง

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

 

การต่อใช้งานโมดูล

โมดูลนี้มีจุดต่อใช้งานทั้งหมด 4 จุด การใช้งานบอร์ด STM32F4DISCOVERY การทดลองในเบื้องต้นสามารถต่อวงจรอย่างง่ายได้โดยใช้โปรโตบอร์ดและสายไฟต่อวงจรตามรูปที่ 2 ทั้งนี้ต้องตรวจสอบคุณสมบัติของพอร์ตของไมโครคอนโทรลเลอร์จากดาต้าชีท [3] ว่าสามารถทนระดับแรงดันลอจิก High (5V) ได้

  1. ขา VCC สำหรับต่อแรงดันไฟเลี้ยงไม่เกิน 5V
  2. ขา Trig เป็นขาอินพุตรับสัญญาณพัลส์ความกว้าง 10 ไมโครวินาทีเพื่อกระตุ้นการสร้างคลื่นอัลตราโซนิกความถี่ 40KHz ออกสู่อากาศจากตัวส่ง
  3. ขา Echo เป็นขาเอาต์พุตสำหรับส่งสัญญาณพัลส์ออกจากโมดูลไปยังไมโครคอนโทรลเลอร์ เพื่อตรวจจับความกว้างของสัญญาณพัลส์และคำนวณเป็นระยะทาง
  4. ขา GND สำหรับต่อจุดกราวด์ร่วมแรงดันและสัญญาณ

 pic02_HC-SR04

รูปที่ 2 การต่อใช้งานโมดูลอัลตราโซนิก HC-SR04

          ตามคุณลักษณะของเซนเซอร์ จะต้องสร้างสัญญาณพัลส์ความกว้างไม่น้อยกว่า 10 msec ป้อนเข้าที่ขา Trig หลังจากนั้นอีกประมาณ 1.4 msec จึงจะเริ่มมีสัญญาณพัลส์เกิดขึ้นที่ขา Echo มีความกว้างของสัญญาณตั้งแต่ 150 usec – 25 msec ซึ่งถ้าหากกว้างกว่านี้จะถือว่าตรวจไม่พบวัตถุ หลังจากนั้นควรหน่วงเวลาออกไปอีก 10 mS จึงจะส่งสัญญาณ Trig ออกไปอีกรอบ ตามรูปที่ 3

pic03_HC-SR04_timing

รูปที่ 3 สัญญาณที่ขา Trig และขา Echo ของโมดูลเซนเซอร์อัลตราโซนิก HC-SR04

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

ระยะทาง (cm) = ความกว้างของสัญญาณ Echo * 106 /58                         (2)

ระยะทาง (inch) = ความกว้างของสัญญาณ Echo * 106 /148                        (3)

ทดสอบการทำงานของเซนเซอร์เบื้องต้น

การทดลองนี้เป็นการทดสอบการทำงานในเบื้องต้นของเซนเซอร์ โดยอ่านข้อมูลจากเซนเซอร์แล้วส่งไปแสดงผลบนพีซี  ให้ต่อเซนเซอร์โมดูลเข้ากับบอร์ดทดลอง aMG Lab Kit-F4 ตามรูปที่ 4 จากนั้นให้โปรแกรมตามรูปที่ 5 อาศัยข้อมูลคุณลักษณะของเซนเซอร์จากรูปที่ 3 โปรแกรมนี้ได้สร้างสัญญาณ Trig ความกว้าง 1 mS ความถี่ 27 Hz ออกทางขา PB7 ของไมโครคอนโทรลเลอร์ บล็อก PWM Capture ใช้สำหรับตรวจวัดความกว้างสัญญาณ Echo ที่เข้ามาทางขา PB6 และส่งข้อมูลซึ่งประกอบไปด้วย ความกว้างของสัญญาณ Echo, เปอร์เซ็นต์ดิวตี้ไซเคิลของสัญญาณ Echo, และความถี่ของสัญญาณ Trig ไปแสดงที่พีซีด้วยบล็อก USART  

pic04_HC-SR04&Waijung

รูปที่ 4 การต่อใช้งานโมดูลอัลตราโซนิกกับบอร์ดทดลอง aMG Lab Kit-F4

pic5_ultrasonic_targetpic05_HC-SR04&Waijungpic05_HC-SR04&Waijungpic05_HC-SR04&Waijung

รูปที่ 5 โปรแกรมฝังตัวในไมโครคอนโทรลเลอร์

ให้โปรแกรมรับค่าที่ส่งมาจากไมโครฯ ตามรูปที่ 6 สัญญาณความกว้างพัลส์จะถูกแปลงให้อยู่ในหน่วยmsec และหารด้วย 58 เพื่อแสดงค่าระยะทางที่ตรวจจับวัตถุได้ในหน่วยเซนติเมตร

pic06_HC-SR04&Waijung

รูปที่ 6 การโปรแกรมรับค่าในฝั่งของพีซี

ตัวอย่างการทำระบบแยกอิสระ

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

pic07_HC-SR04&Waijungpic07_HC-SR04&Waijung

รูปที่ 7 การต่อวงจรเพื่อทดสอบการทำงานแบบแยกอิสระ

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

  pic08_HC-SR04&Waijung

รูปที่ 8 – โปรแกรมฝังตัวในไมโครคอนโทรลเลอร์

pic08_2_HC-SR04&Waijung

รูปที่ 8 – โปรแกรมใน Subsystem

pic09_HC-SR04&Waijung

รูปที่ 9 การทดสอบความเชื่อถือได้ของเซนเซอร์

 สรุป

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

อ้างอิง

[1]    HC-SR04 User Guide> http://www.elecfreaks.com/store/download/product/Sensor/HC-SR04/ HC-SR04_Ultrasonic_Module_User_Guide.pdf [2]    Product User’s Manual – HC-SR04 Ultrasonic Sensor> https://docs.google.com/document/d/ 1Y-yZnNhMYy7rwhAgyL_pfa39RsB-x2qR4vP8saG73rE/edit [3]    STM32F401xD, STM32F401xE Data Sheet> http://www.st.com/st-web-ui/static/active/en/ resource/technical/document/datasheet/DM00102166.pdf