บทที่ 18: การเขียนโปรแกรมอ่านค่าจากเซนเซอร์วัดระยะวัตถุ (Ultrasonic Sensor)

UTEN BOONLIAM Avatar
บทที่ 18 / 26

บทที่ 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

การเขียนโปรแกรมอ่านค่าจากเซนเซอร์วัดระยะวัตถุ

  1. เขียนโปรแกรมตามตัวอย่างด้านล่าง

  2. จากนั้นทำการ 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 จะได้ระยะห่างระหว่างตัวเซนเซอร์กับวัตถุมีหน่วยเป็นเซนติเมตร

แบบฝึกหัดสำหรับทบทวนความเข้าใจและประยุกต์ใช้งานจริง

  1. ให้ออกระบบเปิด-ปิดประตูอัตโนมัติ โดยใช้อัลตร้าโซนิคเป็นเซนเซอร์ในการตรวจเช็ค ถ้ามีคนอยู่หน้าเซนเซอร์ในระยะ 30cm ให้ทำการเปิดประตู(Relay 1 ON) โดย LED สีเขียวจะติด แต่ถ้าระยะของคนอยู่ห่างออกจากนั้น ให้ทำการปิดประตู(Relay 1 OFF) และLED สีแดงติด พร้อมกันแสดงระยะของวัตถุทางหน้าจอ LCD16x430)

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *