โมดูลวัดระยะทางด้วยอัลตร้าโซนิค 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 วินาที จากนั้นวนทำซ้ำเคลื่อนที่ตรงไปข้างหน้าต่อไป
สำหรับเรื่องการตรวจวัดระยะทางด้วยอัลตร้าโซนิกยังมีตัวอย่างไม่มากนัก จะมีตัวอย่างเพิ่มเติมหลักจากติดตั้งอุปกรณ์ตัวอื่นๆ เพิ่มเติมแล้วครับ คอยติดตามการติดตั้งและใช้งานอุปกรณ์ตัวอื่นๆ ต่อไปครับ