แนะนำโมดูลวัดระยะทางด้วยคลื่นอัลตร้าโซนิก HC-SR04
<อ้างอิงจากวารสาร The Prototype Electronics ฉบับที่ 40>
HC-SR04 เป็นโมดูลวัดระยะทางที่ใช้หลักการสะท้อนของคลื่นอัลตร้าโซนิก ราคาประหยัด โดยตัว HC-SR04 มีแหล่งกำเนิดคลื่นอัลตร้าโซนิกส่งไปสะท้อนกับวัตถุที่อยู่ข้างหน้ากลับมายังตัวรับสัญญาณ โดยระยะทางที่วัดได้จะสัมพันธ์กับระยะเวลาที่คลื่นอัลตร้าโซนิกเคลื่อนที่ไปกระทบวัตถุและสะท้อนกลับมายังตัวรับ เมื่อรู้ระยะเวลาที่คลื่นอัลตร้าโซนิกสะท้อนกลับมา จึงนำมาคำนวณหาเป็นระยะทางระหว่างโมดูล HC-SR04 กับวัตถุได้ โดยโมดูล HC-SR04 วัดระยะทางในช่วง 2 ถึง 500 ซม. (5 เมตร) มีความละเอียดอยู่ที่ 0.3 ซม. ใช้ไฟเลี้ยง +5V
โมดูล HC-SR04 พร้อมกับสาย JST3AC-8 จำนวน 2 เส้น เพี่อเชื่อมต่อกับบอร์ดไมโครคอนโทรลเลอร์
การติดต่อกับบอร์ด Unicon
การเชื่อมต่อกับบอร์ด Unicon ของโมดูล HC-SR04 ใช้สายสัญญาณแบบ JST3AC-8 จำนวน 2 เส้น โดยปลายสายด้านหัวต่อ IDC ตัวเมียของสาย JST3AC-8 เส้นที่ 1 ต่อกับคอนเน็กเตอร์ของโมดูล HC-SR04 ที่ขาไฟเลี้ยง (+V), กราวด์ (GND) และ Trigger ส่วนเส้นที่ 2 ให้ต่อสายสัญญาณ (สีขาว เส้นกลาง) กับขา Echo ส่วนหัวต่อ IDC ตัวเมียของสายสีแดงและดำที่เหลือให้ปล่อยลอยไว้ ส่วนปลายสายด้านที่เป็นหัวต่อ JST ให้นำไปเสียบจุดต่อพอร์ต 2 สำหรับขา Trigger และพอร์ต 3 สำหรับขา Echo บนบอร์ด Unicon
วงจรเชื่อมต่อเพื่อใช้งานโมดูล HC-SR04 กับบอร์ด Unicon
ในการสื่อสารข้อมูลกับโมดูล HC-SR04 ใช้ขาสัญญาณ 2 ขา คือ Trigger และ Echo โดยขา Trigger มีไว้สำหรับสั่งงานให้โมดูล HC-SR04 ส่งคลื่นอัลตร้าโซนิกออกไปข้างหน้า เมื่อคลื่นอัลตร้าโซนิกสะท้อนกลับมาจากวัตถุเป้าหมาย จะส่งสัญญาณพัลส์ออกมาทางขา Echo โดยสัญญาณนี้จะมีความกว้างที่สัมพันธ์กับระยะทางที่วัดได้ ดังนั้น ไมโครคอนโทรลเลอร์จะต้องส่งสัญญาณพัลส์ที่มีความกว้างพัลส์อย่างน้อย 10 ไมโครวินาทีไปยังขา Trigger ของโมดูล HC-SR04 แล้วรอรับสัญญาณพัลส์ที่ส่งกลับมาทางขา Echo เพื่อวัดความกว้างของสัญญาณพัลส์
การติดต่อระหว่างบอร์ด Unicon กับโมดูล HC-SR04 เพื่อวัดระยะทาง
เมื่อวัดความกว้างของสัญญาณพัลส์จากขา Echo ในหน่วยไมโครวินาทีแล้ว นำไปคำนวณเป็นระยะทางในหน่วยเซนติเมตรหรือนิ้วได้ดังนี้
ระยะทาง (เซนติเมตร) = (ระยะเวลาในหน่วยไมโครวินาที / 29) / 2
ระยะทาง (นิ้ว) = (ระยะเวลาในหน่วยไมโครวินาที / 74) / 2
เขียนโค้ด
ตัวอย่างโปรแกรมสำหรับติดต่อกับโมดูล HC-SR04 ของบอร์ด Unicon ฟังก์ชั่นหลักของโปรแกรมนี้คือ getDistance(); โดยการทำงานของฟังก์ชั่นนี้ เริ่มต้นด้วยการกำหนดให้ขาพอร์ต 30 เป็นเอาต์พุตดิจิตอล แล้วส่งสัญญาณพัลส์กว้าง 10 ไมโครวินาทีออกไป จากนั้นกำหนดให้ขาพอร์ต 6 เป็นอินพุตดิจิตอล เพื่อรอรับสัญญาณพัลส์กลับมาจากขา Echo ของโมดูล HC-SR04 โดยใช้ฟังก์ชั่น pulseIn(); จากนั้นนำค่าความกว้างของพัลส์ที่วัดได้มาทำการคำนวณเป็นระยะทางในหน่วยเซนติเมตรและนิ้ว
จากนั้นจึงนำค่าที่วัดได้ไปแสดงผลที่จอแสดงผล GLCD-XT ทั้งในหน่วยเซนติเมตรและหน่วยนิ้ว
/***************************************************** * * TITLE : ULTRASONIC RANGING * CATAGORIES : PULSE * CREATED DATE : DECEMBER 9, 2013 * AUTHOR : INNOVATIVE EXPERIMENT CO., LTD. (INEX) * WEBSITE : HTTP://WWW.INEX.CO.TH * DESCRIPTION : Measure distance between HC-SR04 and any object * and show distance on Unicon board's GLCD * in centimetre unit * โปรแกรมวัดระยะทางระหว่าง HC-SR04 กับวัตถุใดๆ * โดยแสดงค่าระยะทางที่วัดได้ในหน่วยเซนติเมตรมาแสดงบน GLCD * ******************************************************/ #include <unicon.h> // Trigger Pin = Pin 30 #define triggerPin 30 // Echo Pin = Pin 6 #define echoPin 6 void setup() { // Clear GLCD screen glcdClear(); // Set output pin for trigger pin pinMode(triggerPin, OUTPUT); // Set output pin for echo pin pinMode(echoPin, INPUT); } void loop() { // Get distance in centimetre unit long data = getRawData(); // Get distance in inch long distance_in = (data / 74) / 2; // Get distance in centimetre long distance_cm = (data / 29) / 2; // Show distance on GLCD glcd(0, 0, "Distance : %d cm ", distance_cm); glcd(1, 0, "Distance : %d in ", distance_in); // Delay 500 milliseconds delay(500); } // Get raw data from HC-SR04 long getRawData() { // Trig high pulse on trigger pin for 10 microseconds digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); // Wait for the echo pin to go HIGH // and get the length of the pulse in microseconds long time = pulseIn(echoPin, HIGH); // Return distance return time; }
โปรแกรมสำหรับติดต่อกับโมดูลวัดระยะทางด้วยคลื่นอัลตร้าโซนิก HC-SR04 ของบอร์ด Unicon
ทดสอบวัดระยะทาง
เมื่อรันโปรแกรม ที่จอแสดงผล GLCD-XT จะแสดงข้อความและค่าของการวัดในหน่วยเซนติเมตรและนิ้วทันที ทดลองใช้มือบังที่ด้านหน้าของโมดูล HC-SR04 แล้วเลื่อนมือเข้าใกล้และถอยห่างออกจากโมดูล สังเกตค่าการวัดที่ได้ อาจตรวจสอบความแม่นยำในการวัดด้วยการใช้ไม้บรรทัดหรือตลับเมตรวัดเทียบได้
จากการทดสอบในพื้นที่โล่งกับวัตถุที่มีรูปร่างแน่นอนเพียง 1 ชิ้น โดยมีการปรับระยะทดสอบอย่างต่อเนื่องพบว่า
โมดูล HC-SR04 วัดระยะทางได้ระหว่าง 2 เซนติเมตร ถึง 5 เมตร แต่ระยะทำการที่ให้ผลค่อนข้างแน่นอนคือ 4 เซนติเมตร ถึง 3 เมตร
ผลการทำงานของโมดูล HC-SR04 บนบอร์ด Unicon