โมดูลวัดระยะทางด้วยอัลตร้าโซนิค ZX-HCSR04

ZX-HCSR04 เป็นโมดูลวัดระยะทางที่ใช้หลักการสะท้อนของคลื่นอัลตร้าโซนิก โดยตัว ZX-HCSR04 มีแหล่งกำเนิดคลื่นอัลตร้าโซนิกส่งไปสะท้อนกับวัตถุที่อยู่ข้างหน้ากลับมายังตัวรับสัญญาณ โดยระยะทางที่วัดได้จะสัมพันธ์กับระยะเวลาที่คลื่นอัลตร้าโซนิกเคลื่อนที่ไปกระทบวัตถุและสะท้อนกลับมายังตัวรับ เมื่อรู้ระยะเวลาที่คลื่นอัลตร้าโซนิกสะท้อนกลับมา จึงนำมาคำนวณหาเป็นระยะทางระหว่าง ZX-HCSR04 กับวัตถุได้ โดยโมดูล ZX-HCSR04 วัดระยะทางในช่วง 2 ถึง 400 ซม. (4 เมตร) มีความละเอียดอยู่ที่ 0.3 ซม. ใช้ไฟเลี้ยง +5V
ติดตั้ง ZX-HCSR04 กับ POP-X2 Rover

1. เตรียมอุปกรณ์ตามรูป

2. นำชิ้นต่อมุมฉากยึดกับ ZX-HCSR04 โดยร้อยสกรู 3×10 มม.และขันยึดด้วยนอต 3 มม.

3. นำสกรู 3×10 มม. อีก 2 ตัวร้อยเข้าที่ด้านหน้าของ POP-X2 Rover ใช้นอต 3 มม.ขันเข้าไปเบาๆ

4. นำชุด ZX-HCSR04 เสียบเข้ากับสกรูที่ร้อยรอไว้ แล้วขันนอตยึดให้แน่น

5. นำสาย JST3AA-8 ต่อจาก ZX-HCSR04 เข้ากับบอร์ด POP-X2
ขา Trig
ต่อกับขา 17
ขา Echo ต่อกับขา 19
ชุดคำสั่งอ่านค่าระยะทางจาก ZX-HCSR04
คำสั่ง sonar()รูปแบบsonar() คืนค่าระยะทางที่วัดได้หน่วยเป็นเซนติเมตร โดยจะต้องต่อขา Trig เข้ากับขา 17 ขา Echo เข้ากับขา 19 รูปแบบsonar(tp,ec) คืนค่าระยะทางที่วัดได้หน่วยเป็นเซนติเมตร โดย tp ตำแหน่งขาที่ต่อขา Trig ec ตำแหน่งขาที่ต่อขา Echo ตัวอย่างx=sonar(26,28); // อ่านค่าระยะทางเป็นเซนติเมตร โดยระบุขา Trig = 26 และ Echo = 28 คำสั่ง sonarTime()รูปแบบsonarTime() เป็นอ่านค่าระยะเวลาที่ตรวจจับการสะท้อนได้ เป็นค่าดิบ ข้อดีคือมีความละเอียดมากกว่าคำสั่ง sonar() โดยขาที่ trig จะต่อกับขา 17 และ echo ต่อกับขา 19 |
ตัวอย่างที่ 16 อ่านค่าระยะทางแสดงผลที่ GLCD

#include <popx2.h>
void setup() {
glcdMode(1);
setTextSize(5);
}
void loop() {
glcd(1, 1, "%d ", sonar());
}
การทำงาน
คำสั่งนี้จะอ่านค่าจาก ZX-HCSR04 ให้ผลลัพธ์เป็นเซนติเมตรออกมา นำไปแสดงที่ glcd โดยกำหนดขนาดตัวอักษรเป็น 5 เท่าเพื่อเห็นระยะทางชัดๆ กันเลย
คำสั่งตรวจสอบเงื่อนไข whileรูปแบบwhile (เงื่อนไข) { ทำคำสั่งจนกว่าเงื่อนไขจะเป็นเท็จ } สามารถออกจากลูปของ while แบบทันทีได้ด้วยคำสั่ง break; |
ตัวอย่างที่ 17 เคลื่อนที่และหยุดเมื่อพบสิ่งกีดขวาง

#include <popx2.h>
void setup() {
}
void loop() {
OK();
fd(50);
while (sonar() > 8);
bk(100); delay(50); ao();
}
การทำงาน
ตอนเริ่มต้นรอให้กดปุ่ม OK ก่อน จากนั้นสั่งให้รถเคลื่อนที่ไปด้านหน้า แล้วตรวจจับว่าระยะทางที่อ่านได้น้อยกว่า 8 เซนติเมตรหรือยัง ถ้าระยะทางน้อยกว่า 8 เซนติเมตร จะสั่งให้รถหยุดกะทันหัน โดยการสั่งถอยหลังช่วงเวลาสั้นๆ แล้วสั่งหยุด
ตัวอย่างที่ 18 เคลื่อนที่ต่อเนื่องหลบหลีกสิ่งกีดขวาง

#include <popx2.h>
void setup() {
OK();
}
void loop() {
fd(50);
if(sonar()<8){
bk(50);
beep();
delay(300);
tl(50);
delay(1200);
}
}
การทำงาน
ก่อนจะให้รถทำงานจะต้องกดปุ่ม OK ก่อน จากนั้นรถจะเคลื่อนที่ไปด้านหน้า และตรวจสอบว่าค่าระยะทางน้อยกว่า 8 เซนติเมตรหรือไม่ ถ้าน้อยกว่า ให้ถอยหลังส่งเสียงบี๊ปพร้อมหน่วงเวลา 0.3 วินาที เมื่อถอยหลังแล้วให้เลี้ยวซ้ายอีก 1.2 วินาที จากนั้นวนทำซ้ำเคลื่อนที่ตรงไปข้างหน้าต่อไป
สำหรับเรื่องการตรวจวัดระยะทางด้วยอัลตร้าโซนิกยังมีตัวอย่างไม่มากนัก จะมีตัวอย่างเพิ่มเติมหลักจากติดตั้งอุปกรณ์ตัวอื่นๆ เพิ่มเติมแล้วครับ คอยติดตามการติดตั้งและใช้งานอุปกรณ์ตัวอื่นๆ ต่อไปครับ
