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

เมื่อดูหลักการทำงาน เพื่อนำไปสู่ความเข้าใจในการประยุกต์สำหรับเขียนโปรแกรม โดยเริ่มที่การส่งสัญญาณเริ่มต้นความยาว 10uSec ออกไป จากนั้นจะส่งคลื่นเสียงความถี่ 40 kHz ออกไป 8 พัลส์ แล้วรอฟังเสียงสะท้อนครับ ตัวซ้ายจะเป็นตัวส่งคลื่นเสียงออกไป ส่วนตัวขวาในรูปจะเป็นตัวรับความถี่ที่สะท้อนกลับมา

เนื่องด้วยความถี่ที่ส่งออกไป จะแปรผันตามอุณหภูมิ ดังนั้นเวลาผู้ผลิตเขียนโปรแกรมออกแบบไว้ก็อยู่ที่อุณหภูมิทำงานที่อาจจะแตกต่างจากบ้านเรา ก็ทำให้ค่าที่วัดได้มีความผิดพลาดไปบ้าง และปัจจัยหนึ่งที่อาจจะทำให้เกิดค่าที่คลาดเคลื่อนคือช่วงวัด และมุมที่สามารถวัดได้ โดยอัลตร้าโซนิคเซนเซอร์ที่อยู่บนบอร์ด Arduino Learning Kit มีมุมวัด 15 องศา (Measuring Angle) และสามารถวัดระยะห่างได้ตั้งแต่ 2 ซม. จนถึง 4 เมตร

ขาสัญญาณที่ใช้เชื่อมต่อกับอัลตร้าโซนิคเซนเซอร์มีอยู่ 2 pin ด้วยกันคือ Trig และ Echo โดยใช้ร่วมกับโมดูลอื่นบนบอร์ดด้วย ดังนั้นในการใช้งานจำเป็นที่จะต้องทำการเลื่อน DIP Switch ไปตำแหน่ง ON และสลับกลับมาตำแหน่ง OFF เมื่อเลิกใช้
| ECHO | TRIG | |
|---|---|---|
| Arduino Uno | 7 | 8 |
| Arduino Nano | 12 | 13 |
| ESP32(ESP-WROM-32) | 2 | 4 |
ตารางที่ 18. 1 ขาที่ต่อใช้งานกับ Ultrasonic sensor
การเขียนโปรแกรมอ่านค่าจากเซนเซอร์วัดระยะวัตถุ
-
เขียนโปรแกรมตามตัวอย่างด้านล่าง -
จากนั้นทำการ upload ให้กับ Arduino หรือ ESP32 เสร็จแล้วให้ทำการดูผลจาก Serial Monitor

จากโค้ดด้านบน เป็นการวัดระยะห่างของวัตถุที่อยู่ด้านหน้าของเซนเซอร์อัลตร้าโซนิค มีหน่วยเป็นเซนติเมตร เมื่อทดลองขยับวัตถุให้เข้าใกล้ หรือ ใกล้ จะเห็นการเปลี่ยนแปลงของตัวเลข
อธิบายการทำงานของโค้ด
-
บรรทัดที่ 1-2 เป็นการกำหนดขาที่ต่อกับเซนเซอร์อัลตร้าโซนิค
-
ในฟังก์ชัน setup จะกำหนดฟังก์ชันของแต่ละขาสัญญาณ
-
ในฟังก์ชัน loop บรรทัดที่ 11 – 17 จะส่งสัญญาณพัลส์ไปทางขา Trig โดยจะส่งลอจิก LOW ไปเป็นระยะเวลา 5uSec จากนั้นส่งลอจิก HIGH ไปเป็นระยะเวลา 10uSec แล้วกลับมาเป็น LOW
-
บรรทัดที่ 16 จะเป็นการความกว้างของสัญญาณพัลส์ โดยอ่านสัญญาณพัลส์จากขา Echo เมื่อมีค่าเป็น HIGH ฟังก์ชัน pulseIn() จะรอให้ขามีค่าเป็น HIGH ก่อนแล้วจึงเริ่มจับเวลา และรอให้ขามีค่าเป็น LOW จะหยุดการจับเวลา ส่งค่ากลับเป็นความยาวของพัลส์ในหน่วย ไมโครวินาที
-
บรรทัดที่ 17 จะนำค่าความกว้างพัลส์ที่ได้คุณกับ 0.0173681 จะได้ระยะห่างระหว่างตัวเซนเซอร์กับวัตถุมีหน่วยเป็นเซนติเมตร
แบบฝึกหัดสำหรับทบทวนความเข้าใจและประยุกต์ใช้งานจริง
-
ให้ออกระบบเปิด-ปิดประตูอัตโนมัติ โดยใช้อัลตร้าโซนิคเป็นเซนเซอร์ในการตรวจเช็ค ถ้ามีคนอยู่หน้าเซนเซอร์ในระยะ 30cm ให้ทำการเปิดประตู(Relay 1 ON) โดย LED สีเขียวจะติด แต่ถ้าระยะของคนอยู่ห่างออกจากนั้น ให้ทำการปิดประตู(Relay 1 OFF) และLED สีแดงติด พร้อมกันแสดงระยะของวัตถุทางหน้าจอ LCD16x430)






Leave a Reply