จำนวนผู้เข้าชม: 164 ผู้แต่ง: Grace เวลาเผยแพร่: 26-07-2021 ที่มา: เว็บไซต์
ที่ เซ็นเซอร์อัลตราโซนิ ก HC-SR04 เป็นหนึ่งในโมดูลการวัดระยะทางที่ได้รับความนิยมมากที่สุดสำหรับโครงการ Arduino มีการใช้กันอย่างแพร่หลายในหุ่นยนต์หลีกเลี่ยงสิ่งกีดขวาง เซ็นเซอร์จอดรถ การตรวจจับระดับ ถังขยะอัจฉริยะ เครื่องวัดระยะทาง และแอปพลิเคชันการตรวจจับแบบไม่สัมผัสอื่นๆ
โมดูลนี้ปล่อยคลื่นอัลตราโซนิก 40kHz ผ่านเครื่องส่งสัญญาณ เมื่อคลื่นเสียงกระทบกับวัตถุ คลื่นเสียงจะสะท้อนกลับไปยังเครื่องรับ ด้วยการวัดเวลาสะท้อนและใช้ความเร็วของเสียง Arduino สามารถคำนวณระยะห่างระหว่างเซ็นเซอร์และวัตถุได้
| พารามิเตอร์ | ค่า |
| แรงดันไฟฟ้าทำงานทั่วไป | 5 โวลต์กระแสตรง |
| กระแสไฟฟ้าทำงานแบบคงที่ | น้อยกว่า 5mA ในบางเวอร์ชันของโมดูล |
| ความถี่ในการทำงาน | คลื่นอัลตราโซนิก 40kHz |
| ระยะการตรวจจับ | ช่วงทั่วไป: 2 ซม. ถึง 400 ซม. บางเวอร์ชันที่ปรับอัตราขยายอาจรองรับช่วงที่ยาวขึ้น |
| มุมการตรวจจับ | โดยปกติภายใน 15 องศา; บางรุ่นที่มีอัตราขยายสูงกว่าอาจมีอุณหภูมิถึงประมาณ 30 องศา |
| ความแม่นยำ | สูงถึงประมาณ 0.3 ซม. ภายใต้สภาวะการทดสอบที่เหมาะสม |
| โซนตาบอด | ระยะการวัดขั้นต่ำประมาณ 2 ซม |
โมดูลอัลตราโซนิก HC-SR04 มีสี่พิน: VCC, TRIG, ECHO และ GND Arduino ส่งพัลส์ทริกเกอร์แบบสั้นไปยังพิน TRIG จากนั้นอ่านพัลส์ส่งคืนจากพิน ECHO
| พิน HC-SR04 | การเชื่อมต่อ Arduino | การทำงาน |
| วีซีซี | 5V | แหล่งจ่ายไฟสำหรับโมดูลอัลตราโซนิก |
| หนุน | พินดิจิตอล 9 | อินพุตทริกเกอร์ Arduino ใช้พัลส์ 10us เพื่อเริ่มตั้งแต่ |
| เอคโค่ | พินดิจิตอล 10 | เอาท์พุตเสียงสะท้อน Arduino อ่านความกว้างพัลส์เพื่อคำนวณระยะทาง |
| จีเอ็นดี | จีเอ็นดี | การต่อสายดิน |
HC-SR04 ทำงานโดยการวัดเวลาการบิน Arduino ส่งสัญญาณทริกเกอร์ระดับสูงอย่างน้อย 10 ไมโครวินาทีไปยังพิน TRIG จากนั้นโมดูลจะส่งพัลส์อัลตราโซนิก 40kHz แปดพัลส์โดยอัตโนมัติและรอเสียงสะท้อนที่สะท้อน
เมื่อตรวจพบสัญญาณอัลตราโซนิกที่สะท้อน ขา ECHO จะส่งเอาต์พุตพัลส์ระดับสูง ระยะเวลาของพัลส์นี้คือเวลาเดินทางไปกลับของคลื่นอัลตราโซนิก
ระยะทาง = เวลาสะท้อนระดับสูง × ความเร็วเสียง / 2
ในโค้ด Arduino สูตรอย่างง่ายทั่วไปคือ:
ระยะทางเป็นซม. = ระยะเวลา × 0.0343 / 2
กระบวนการกำหนดเวลานั้นง่ายมาก: Arduino คง TRIG ไว้ต่ำในช่วงสั้นๆ แล้วส่งพัลส์สูง 10us จากนั้นเปลี่ยน TRIG ไปที่ต่ำ HC-SR04 จะส่งคลื่นอัลตราโซนิกและตั้งค่า ECHO ให้สูงจนกระทั่งสัญญาณที่สะท้อนกลับมาหรือหมดเวลาการวัด
เพื่อหลีกเลี่ยงการอ่านค่าที่ไม่เสถียร ให้เว้นช่วงหน่วงสั้นๆ ระหว่างการวัดต่างๆ โดยทั่วไปจะใช้รอบการวัดประมาณ 60 มิลลิวินาที ดังนั้นเสียงสะท้อนอัลตราโซนิกก่อนหน้านี้จึงมีเวลาที่จะหายไปก่อนทริกเกอร์ครั้งถัดไป
ฟังก์ชัน Arduino PulseIn() ใช้เพื่อวัดระยะเวลาที่พินดิจิทัลคงค่าสูงหรือต่ำ สำหรับ HC-SR04 นั้น Arduino จะใช้ พัลส์อิน (echoPin, HIGH) เพื่ออ่านความกว้างพัลส์ระดับสูงจากพิน ECHO
| ไวยากรณ์ | ความหมาย |
| พัลส์อิน (พิน, ค่า) | อ่านระยะเวลาของพัลส์สูงหรือต่ำ |
| PulseIn(พิน, ค่า, หมดเวลา) | อ่านพัลส์ด้วยค่าหมดเวลาในหน่วยไมโครวินาที |
แนะนำให้ใช้การหมดเวลา หากไม่มีการส่งคืนเสียงสะท้อน ฟังก์ชันสามารถหยุดรอและส่งกลับ 0 แทนที่จะบล็อกโปรแกรมนานเกินไป
การเดินสายไฟมีความตรงไปตรงมา เชื่อมต่อ VCC กับ 5V, GND ถึง GND, TRIG กับพินเอาท์พุตดิจิทัล Arduino และ ECHO กับพินอินพุตดิจิทัล Arduino ตัวอย่างต่อไปนี้ใช้ Arduino Uno, TRIG บนพิน 9 และ ECHO บนพิน 10
โปรแกรม Arduino ทั่วไปต่อไปนี้จะส่งทริกเกอร์พัลส์ 10us อ่านความกว้างพัลส์ ECHO คำนวณระยะทางเป็นเซนติเมตร และพิมพ์ผลลัพธ์ใน Serial Monitor
const int ตรีโกณมิติ = 9; const int echoPin = 10; ระยะเวลายาวนาน ระยะทางลอยCm; การตั้งค่าเป็นโมฆะ () { pinMode (trigPin, OUTPUT); pinMode(echoPin, อินพุต); อนุกรมเริ่มต้น(9600); } วงโมฆะ () { digitalWrite (trigPin, LOW); ดีเลย์ไมโครวินาที(2); digitalWrite (ตรีโกณมิติ, สูง); ดีเลย์ไมโครวินาที (10); digitalWrite (ตรีโกณมิติ, ต่ำ); ระยะเวลา = พัลส์อิน (echoPin, สูง, 30000); ถ้า (ระยะเวลา == 0) { Serial.println ( 'อยู่นอกขอบเขต '); } อื่น { DistanceCm = ระยะเวลา * 0.0343 / 2; Serial.print('ระยะทาง: '); Serial.print(distanceCm); Serial.println(' ซม.'); } ล่าช้า (60); }
หากคุณเห็นค่าระยะทางใน Serial Monitor แสดงว่าเซ็นเซอร์อัลตราโซนิก HC-SR04 และสายไฟ Arduino ทำงานอย่างถูกต้อง จากนั้นคุณสามารถใช้ข้อมูลระยะทางสำหรับการตรวจจับสิ่งกีดขวาง การควบคุมการเคลื่อนไหวของหุ่นยนต์ ประตูอัตโนมัติ การเตือนการจอดรถ หรือโครงการระดับของเหลว
รักษาวัตถุที่วัดให้อยู่ในระยะที่แนะนำและอยู่นอกเขตตาบอด 2 ซม.
ใช้พื้นผิวเป้าหมายที่เรียบและแข็งเพื่อการสะท้อนอัลตราโซนิกที่ดีขึ้น
หลีกเลี่ยงการวัดวัสดุที่อ่อนนุ่ม ทำมุม มีรูพรุน หรือดูดซับเสียง
ใช้แหล่งจ่ายไฟ 5V ที่เสถียร และเดินสายไฟให้สั้นและปลอดภัย
เพิ่มการหมดเวลาให้กับ PulseIn() เพื่อป้องกันการบล็อกนานเมื่อไม่มีเสียงสะท้อนกลับมา
กรองค่าที่อ่านได้หลายค่าโดยเฉลี่ยหรือค่ามัธยฐานเพื่อลดเสียงรบกวน
เพื่อความแม่นยำที่สูงขึ้น ให้ชดเชยอุณหภูมิเนื่องจากความเร็วเสียงเปลี่ยนแปลงไปตามอุณหภูมิอากาศ
| แอปพลิเคชัน | วิธีการใช้งาน HC-SR04 |
| หุ่นยนต์หลบเลี่ยงสิ่งกีดขวาง | ตรวจจับวัตถุใกล้เคียงและช่วยให้หุ่นยนต์เปลี่ยนทิศทาง |
| เซ็นเซอร์ระยะการจอดรถ | วัดระยะห่างระหว่างรถและสิ่งกีดขวาง |
| การตรวจจับระดับของเหลว | วัดระยะห่างจากเซ็นเซอร์ถึงพื้นผิวของเหลวโดยไม่ต้องสัมผัส |
| ถังขยะอัจฉริยะ | ตรวจจับมือหรือวัตถุที่อยู่ใกล้เคียง และสั่งงานการเปิดฝาอัตโนมัติ |
หากต้องการใช้เซ็นเซอร์อัลตราโซนิก HC-SR04 กับ Arduino ให้เชื่อมต่อ VCC กับ 5V, GND กับ GND, TRIG กับพินเอาท์พุตดิจิทัล และ ECHO กับพินอินพุตดิจิทัล ส่งทริกเกอร์พัลส์ 10us อ่านระยะเวลาเสียงก้องด้วย PulseIn() และคำนวณระยะทางด้วยสูตรเวลาบิน
HC-SR04 มีราคาไม่แพง ใช้งานง่าย และเหมาะสำหรับโครงการวัดระยะทาง Arduino หลายโครงการ เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด โปรดใส่ใจกับพื้นผิวเป้าหมาย มุมการวัด โซนบอด พลังงานที่เสถียร การจัดการระยะหมดเวลา และผลกระทบของอุณหภูมิ
Arduino ส่งพัลส์ 10us ไปยังขา TRIG HC-SR04 ปล่อยพัลส์อัลตราโซนิก 40kHz แปดพัลส์ และตั้งค่าพิน ECHO ให้สูงจนกระทั่งเสียงที่สะท้อนกลับมา Arduino วัดเวลาพัลส์นี้และคำนวณระยะทาง
สูตรคือ ระยะทาง = ระยะเวลา × ความเร็วของเสียง / 2 ในหน่วยเซนติเมตร สูตร Arduino ทั่วไปคือ DistanceCm = ระยะเวลา × 0.0343 / 2 โดยที่ระยะเวลาวัดเป็นไมโครวินาที
เวลาสะท้อนที่วัดได้คือเวลาไปกลับจากเซ็นเซอร์ไปยังวัตถุและกลับไปยังเซ็นเซอร์ การหารด้วย 2 จะทำให้มีระยะห่างทางเดียวระหว่างเซ็นเซอร์กับวัตถุ
คุณสามารถใช้พินดิจิทัล Arduino ส่วนใหญ่ได้ ในหลายตัวอย่าง TRIG เชื่อมต่อกับพินดิจิทัล 9 และ ECHO เชื่อมต่อกับพินดิจิทัล 10 รหัสจะต้องตรงกับพินที่ใช้ในการเดินสายไฟของคุณ
สาเหตุที่พบบ่อย ได้แก่ สายไฟหลวม กำลังไฟ 5V ไม่เสถียร หมายเลขพิน TRIG หรือ ECHO ไม่ถูกต้อง ไม่มีวัตถุอยู่ในระยะ พื้นผิวเป้าหมายที่ทำมุม วัสดุที่อ่อนนุ่ม หัวเซนเซอร์ถูกบล็อก หรือไม่มีการหมดเวลาในฟังก์ชันพัลส์อิน ()
โซนตาบอดคือระยะทางต่ำสุดที่โมดูลไม่สามารถวัดได้อย่างน่าเชื่อถือ สำหรับ HC-SR04 โซนตาบอดมักจะอยู่ที่ประมาณ 2 ซม. วัตถุที่อยู่ใกล้กว่านี้อาจทำให้การอ่านค่าไม่เสถียร
ได้ HC-SR04 สามารถใช้กับโครงการระดับน้ำที่ไม่สัมผัสธรรมดาได้ หากเซ็นเซอร์ได้รับการปกป้องจากความชื้นและติดตั้งไว้เหนือพื้นผิวของเหลว สำหรับถังชื้น กลางแจ้ง หรือถังอุตสาหกรรม แนะนำให้ใช้เซ็นเซอร์อัลตราโซนิกกันน้ำ
ใช้แหล่งจ่ายไฟที่เสถียร ให้เซ็นเซอร์ตั้งฉากกับเป้าหมาย หลีกเลี่ยงพื้นผิวที่อ่อนหรือเป็นมุม เพิ่มการหมดเวลาของพัลส์อิน อ่านค่าได้หลายครั้ง ใช้การกรองค่ามัธยฐาน และเผื่อเวลาประมาณ 60 มิลลิวินาทีระหว่างการวัด