norr@manorshi.com         +86-519-89185720
1
ศูนย์ข่าว

จะใช้เซ็นเซอร์อัลตราโซนิคกับ Arduino ได้อย่างไร?

จำนวนผู้เข้าชม: 164     ผู้แต่ง: Grace เวลาเผยแพร่: 26-07-2021 ที่มา: เว็บไซต์

ปุ่มแชร์เฟสบุ๊ค
ปุ่มแชร์ทวิตเตอร์
ปุ่มแชร์ไลน์
ปุ่มแชร์วีแชท
ปุ่มแชร์ของ LinkedIn
ปุ่มแชร์ Pinterest
ปุ่มแชร์ Whatsapp
ปุ่มแชร์ Kakao
ปุ่มแชร์ Snapchat
ปุ่มแชร์โทรเลข
แชร์ปุ่มแชร์นี้

วิธีใช้เซนเซอร์อัลตราโซนิกกับ Arduino: คู่มือ HC-SR04

ที่ เซ็นเซอร์อัลตราโซนิ ก HC-SR04 เป็นหนึ่งในโมดูลการวัดระยะทางที่ได้รับความนิยมมากที่สุดสำหรับโครงการ Arduino มีการใช้กันอย่างแพร่หลายในหุ่นยนต์หลีกเลี่ยงสิ่งกีดขวาง เซ็นเซอร์จอดรถ การตรวจจับระดับ ถังขยะอัจฉริยะ เครื่องวัดระยะทาง และแอปพลิเคชันการตรวจจับแบบไม่สัมผัสอื่นๆ

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

โมดูลเซ็นเซอร์อัลตราโซนิก HC-SR04 สำหรับการวัดระยะทาง Arduino

HC-SR04 พารามิเตอร์ทางเทคนิคหลัก

พารามิเตอร์ ค่า
แรงดันไฟฟ้าทำงานทั่วไป 5 โวลต์กระแสตรง
กระแสไฟฟ้าทำงานแบบคงที่ น้อยกว่า 5mA ในบางเวอร์ชันของโมดูล
ความถี่ในการทำงาน คลื่นอัลตราโซนิก 40kHz
ระยะการตรวจจับ ช่วงทั่วไป: 2 ซม. ถึง 400 ซม. บางเวอร์ชันที่ปรับอัตราขยายอาจรองรับช่วงที่ยาวขึ้น
มุมการตรวจจับ โดยปกติภายใน 15 องศา; บางรุ่นที่มีอัตราขยายสูงกว่าอาจมีอุณหภูมิถึงประมาณ 30 องศา
ความแม่นยำ สูงถึงประมาณ 0.3 ซม. ภายใต้สภาวะการทดสอบที่เหมาะสม
โซนตาบอด ระยะการวัดขั้นต่ำประมาณ 2 ซม

คำอธิบายพิน HC-SR04

โมดูลอัลตราโซนิก HC-SR04 มีสี่พิน: VCC, TRIG, ECHO และ GND Arduino ส่งพัลส์ทริกเกอร์แบบสั้นไปยังพิน TRIG จากนั้นอ่านพัลส์ส่งคืนจากพิน ECHO

พิน HC-SR04 การเชื่อมต่อ Arduino การทำงาน
วีซีซี 5V แหล่งจ่ายไฟสำหรับโมดูลอัลตราโซนิก
หนุน พินดิจิตอล 9 อินพุตทริกเกอร์ Arduino ใช้พัลส์ 10us เพื่อเริ่มตั้งแต่
เอคโค่ พินดิจิตอล 10 เอาท์พุตเสียงสะท้อน Arduino อ่านความกว้างพัลส์เพื่อคำนวณระยะทาง
จีเอ็นดี จีเอ็นดี การต่อสายดิน

HC-SR04 เซ็นเซอร์อัลตราโซนิก pinout VCC TRIG ECHO GND

หลักการทำงานของเซนเซอร์อัลตราโซนิก HC-SR04

HC-SR04 ทำงานโดยการวัดเวลาการบิน Arduino ส่งสัญญาณทริกเกอร์ระดับสูงอย่างน้อย 10 ไมโครวินาทีไปยังพิน TRIG จากนั้นโมดูลจะส่งพัลส์อัลตราโซนิก 40kHz แปดพัลส์โดยอัตโนมัติและรอเสียงสะท้อนที่สะท้อน

เมื่อตรวจพบสัญญาณอัลตราโซนิกที่สะท้อน ขา ECHO จะส่งเอาต์พุตพัลส์ระดับสูง ระยะเวลาของพัลส์นี้คือเวลาเดินทางไปกลับของคลื่นอัลตราโซนิก

ระยะทาง = เวลาสะท้อนระดับสูง × ความเร็วเสียง / 2

ในโค้ด Arduino สูตรอย่างง่ายทั่วไปคือ:

ระยะทางเป็นซม. = ระยะเวลา × 0.0343 / 2

เวลาโมดูลอัลตราโซนิก HC-SR04 ของหลักการทำงานของเที่ยวบิน

แผนภาพเวลาโมดูลอัลตราโซนิก HC-SR04

กระบวนการกำหนดเวลานั้นง่ายมาก: Arduino คง TRIG ไว้ต่ำในช่วงสั้นๆ แล้วส่งพัลส์สูง 10us จากนั้นเปลี่ยน TRIG ไปที่ต่ำ HC-SR04 จะส่งคลื่นอัลตราโซนิกและตั้งค่า ECHO ให้สูงจนกระทั่งสัญญาณที่สะท้อนกลับมาหรือหมดเวลาการวัด

เพื่อหลีกเลี่ยงการอ่านค่าที่ไม่เสถียร ให้เว้นช่วงหน่วงสั้นๆ ระหว่างการวัดต่างๆ โดยทั่วไปจะใช้รอบการวัดประมาณ 60 มิลลิวินาที ดังนั้นเสียงสะท้อนอัลตราโซนิกก่อนหน้านี้จึงมีเวลาที่จะหายไปก่อนทริกเกอร์ครั้งถัดไป

พื้นฐานการเขียนโปรแกรม Arduino: ฟังก์ชั่นพัลส์อิน

ฟังก์ชัน Arduino PulseIn() ใช้เพื่อวัดระยะเวลาที่พินดิจิทัลคงค่าสูงหรือต่ำ สำหรับ HC-SR04 นั้น Arduino จะใช้ พัลส์อิน (echoPin, HIGH) เพื่ออ่านความกว้างพัลส์ระดับสูงจากพิน ECHO

ไวยากรณ์ ความหมาย
พัลส์อิน (พิน, ค่า) อ่านระยะเวลาของพัลส์สูงหรือต่ำ
PulseIn(พิน, ค่า, หมดเวลา) อ่านพัลส์ด้วยค่าหมดเวลาในหน่วยไมโครวินาที

แนะนำให้ใช้การหมดเวลา หากไม่มีการส่งคืนเสียงสะท้อน ฟังก์ชันสามารถหยุดรอและส่งกลับ 0 แทนที่จะบล็อกโปรแกรมนานเกินไป

บอร์ด Arduino ใช้กับเซนเซอร์วัดระยะอัลตราโซนิก HC-SR04

วิธีการเชื่อมต่อเซ็นเซอร์อัลตราโซนิก HC-SR04 กับ Arduino

การเดินสายไฟมีความตรงไปตรงมา เชื่อมต่อ VCC กับ 5V, GND ถึง GND, TRIG กับพินเอาท์พุตดิจิทัล Arduino และ ECHO กับพินอินพุตดิจิทัล Arduino ตัวอย่างต่อไปนี้ใช้ Arduino Uno, TRIG บนพิน 9 และ ECHO บนพิน 10

แผนภาพการเดินสายไฟ Arduino Uno สำหรับเซ็นเซอร์อัลตราโซนิก HC-SR04

รหัส Arduino เซ็นเซอร์อัลตราโซนิก HC-SR04

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

โปรแกรมกำหนดระยะเซ็นเซอร์อัลตราโซนิก Arduino HC-SR04

วิธีปรับปรุงความแม่นยำในการวัด HC-SR04

  • รักษาวัตถุที่วัดให้อยู่ในระยะที่แนะนำและอยู่นอกเขตตาบอด 2 ซม.

  • ใช้พื้นผิวเป้าหมายที่เรียบและแข็งเพื่อการสะท้อนอัลตราโซนิกที่ดีขึ้น

  • หลีกเลี่ยงการวัดวัสดุที่อ่อนนุ่ม ทำมุม มีรูพรุน หรือดูดซับเสียง

  • ใช้แหล่งจ่ายไฟ 5V ที่เสถียร และเดินสายไฟให้สั้นและปลอดภัย

  • เพิ่มการหมดเวลาให้กับ PulseIn() เพื่อป้องกันการบล็อกนานเมื่อไม่มีเสียงสะท้อนกลับมา

  • กรองค่าที่อ่านได้หลายค่าโดยเฉลี่ยหรือค่ามัธยฐานเพื่อลดเสียงรบกวน

  • เพื่อความแม่นยำที่สูงขึ้น ให้ชดเชยอุณหภูมิเนื่องจากความเร็วเสียงเปลี่ยนแปลงไปตามอุณหภูมิอากาศ

การใช้งานทั่วไปของโครงการ Arduino Ultrasonic Sensor

แอปพลิเคชัน วิธีการใช้งาน HC-SR04
หุ่นยนต์หลบเลี่ยงสิ่งกีดขวาง ตรวจจับวัตถุใกล้เคียงและช่วยให้หุ่นยนต์เปลี่ยนทิศทาง
เซ็นเซอร์ระยะการจอดรถ วัดระยะห่างระหว่างรถและสิ่งกีดขวาง
การตรวจจับระดับของเหลว วัดระยะห่างจากเซ็นเซอร์ถึงพื้นผิวของเหลวโดยไม่ต้องสัมผัส
ถังขยะอัจฉริยะ ตรวจจับมือหรือวัตถุที่อยู่ใกล้เคียง และสั่งงานการเปิดฝาอัตโนมัติ

สรุป

หากต้องการใช้เซ็นเซอร์อัลตราโซนิก HC-SR04 กับ Arduino ให้เชื่อมต่อ VCC กับ 5V, GND กับ GND, TRIG กับพินเอาท์พุตดิจิทัล และ ECHO กับพินอินพุตดิจิทัล ส่งทริกเกอร์พัลส์ 10us อ่านระยะเวลาเสียงก้องด้วย PulseIn() และคำนวณระยะทางด้วยสูตรเวลาบิน

HC-SR04 มีราคาไม่แพง ใช้งานง่าย และเหมาะสำหรับโครงการวัดระยะทาง Arduino หลายโครงการ เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด โปรดใส่ใจกับพื้นผิวเป้าหมาย มุมการวัด โซนบอด พลังงานที่เสถียร การจัดการระยะหมดเวลา และผลกระทบของอุณหภูมิ

คำถามที่พบบ่อยเกี่ยวกับเซนเซอร์อัลตราโซนิก Arduino HC-SR04

เซ็นเซอร์อัลตราโซนิก HC-SR04 ทำงานร่วมกับ Arduino อย่างไร

Arduino ส่งพัลส์ 10us ไปยังขา TRIG HC-SR04 ปล่อยพัลส์อัลตราโซนิก 40kHz แปดพัลส์ และตั้งค่าพิน ECHO ให้สูงจนกระทั่งเสียงที่สะท้อนกลับมา Arduino วัดเวลาพัลส์นี้และคำนวณระยะทาง

สูตรระยะทางสำหรับโปรเจ็กต์ HC-SR04 Arduino คืออะไร

สูตรคือ ระยะทาง = ระยะเวลา × ความเร็วของเสียง / 2 ในหน่วยเซนติเมตร สูตร Arduino ทั่วไปคือ DistanceCm = ระยะเวลา × 0.0343 / 2 โดยที่ระยะเวลาวัดเป็นไมโครวินาที

เหตุใดเราจึงแบ่งผลลัพธ์ของเซ็นเซอร์อัลตราโซนิคด้วย 2

เวลาสะท้อนที่วัดได้คือเวลาไปกลับจากเซ็นเซอร์ไปยังวัตถุและกลับไปยังเซ็นเซอร์ การหารด้วย 2 จะทำให้มีระยะห่างทางเดียวระหว่างเซ็นเซอร์กับวัตถุ

ฉันควรใช้พิน Arduino ตัวใดกับ TRIG และ ECHO

คุณสามารถใช้พินดิจิทัล Arduino ส่วนใหญ่ได้ ในหลายตัวอย่าง TRIG เชื่อมต่อกับพินดิจิทัล 9 และ ECHO เชื่อมต่อกับพินดิจิทัล 10 รหัสจะต้องตรงกับพินที่ใช้ในการเดินสายไฟของคุณ

เหตุใดเซ็นเซอร์อัลตราโซนิก HC-SR04 ของฉันจึงส่งกลับค่าศูนย์หรือค่าสุ่ม

สาเหตุที่พบบ่อย ได้แก่ สายไฟหลวม กำลังไฟ 5V ไม่เสถียร หมายเลขพิน TRIG หรือ ECHO ไม่ถูกต้อง ไม่มีวัตถุอยู่ในระยะ พื้นผิวเป้าหมายที่ทำมุม วัสดุที่อ่อนนุ่ม หัวเซนเซอร์ถูกบล็อก หรือไม่มีการหมดเวลาในฟังก์ชันพัลส์อิน ()

จุดบอดของเซนเซอร์อัลตราโซนิก HC-SR04 คืออะไร

โซนตาบอดคือระยะทางต่ำสุดที่โมดูลไม่สามารถวัดได้อย่างน่าเชื่อถือ สำหรับ HC-SR04 โซนตาบอดมักจะอยู่ที่ประมาณ 2 ซม. วัตถุที่อยู่ใกล้กว่านี้อาจทำให้การอ่านค่าไม่เสถียร

HC-SR04 สามารถวัดระดับน้ำด้วย Arduino ได้หรือไม่?

ได้ HC-SR04 สามารถใช้กับโครงการระดับน้ำที่ไม่สัมผัสธรรมดาได้ หากเซ็นเซอร์ได้รับการปกป้องจากความชื้นและติดตั้งไว้เหนือพื้นผิวของเหลว สำหรับถังชื้น กลางแจ้ง หรือถังอุตสาหกรรม แนะนำให้ใช้เซ็นเซอร์อัลตราโซนิกกันน้ำ

ฉันจะทำให้การอ่านเซ็นเซอร์อัลตราโซนิค Arduino มีเสถียรภาพมากขึ้นได้อย่างไร

ใช้แหล่งจ่ายไฟที่เสถียร ให้เซ็นเซอร์ตั้งฉากกับเป้าหมาย หลีกเลี่ยงพื้นผิวที่อ่อนหรือเป็นมุม เพิ่มการหมดเวลาของพัลส์อิน อ่านค่าได้หลายครั้ง ใช้การกรองค่ามัธยฐาน และเผื่อเวลาประมาณ 60 มิลลิวินาทีระหว่างการวัด

สารบัญ