Үзсэн: 164 Зохиогч: Грейс Нийтлэх цаг: 2021-07-26 Гарал үүсэл: Сайт
The HC-SR04 хэт авианы мэдрэгч нь Arduino төслүүдийн хамгийн алдартай зай хэмжих модулиудын нэг юм. Энэ нь саад тотгороос зайлсхийх робот, зогсоолын мэдрэгч, түвшин тодорхойлох, ухаалаг хогийн сав, зай хэмжигч болон бусад контактгүй мэдрэгч бүхий програмуудад өргөн хэрэглэгддэг.
Модуль нь дамжуулагчаар дамжуулан 40 кГц хэт авианы долгионыг ялгаруулдаг. Дууны долгион нь объекттой уулзах үед хүлээн авагч руу буцаж тусдаг. Цуурай цагийг хэмжиж, дууны хурдыг ашигласнаар Arduino мэдрэгч ба объектын хоорондох зайг тооцоолж чадна.
| Параметр | Үнэ цэнэ |
| Ердийн ажлын хүчдэл | 5V DC |
| Статик ажлын гүйдэл | Зарим модулийн хувилбаруудад 5мА-аас бага |
| Үйл ажиллагааны давтамж | 40 кГц хэт авианы долгион |
| Илрүүлэх зай | Нийтлэг хүрээ: 2см-ээс 400см хүртэл; Зарим ашигт тохируулсан хувилбарууд нь илүү урт зайг дэмждэг. |
| Илрүүлэх өнцөг | Ихэвчлэн 15 градусын дотор; өндөр өсөлттэй зарим хувилбарууд нь ойролцоогоор 30 градус хүрч болно. |
| Нарийвчлал | Тохиромжтой туршилтын нөхцөлд ойролцоогоор 0.3 см хүртэл |
| Сохор бүс | Хамгийн бага хэмжих зай 2 см орчим байна |
HC-SR04 хэт авианы модуль нь VCC, TRIG, ECHO, GND гэсэн дөрвөн тээглүүртэй. Arduino нь TRIG зүү рүү богино гох импульс илгээж, дараа нь ECHO зүүгээс буцах импульсийг уншдаг.
| HC-SR04 зүү | Arduino холболт | Чиг үүрэг |
| VCC | 5V | Хэт авианы модулийн цахилгаан хангамж. |
| ТРИГ | Дижитал зүү 9 | Триггер оролт. Arduino зайг эхлүүлэхийн тулд 10us импульс ашигладаг. |
| ЭХО | Дижитал зүү 10 | Цуурай гаралт. Arduino зайг тооцоолохын тулд импульсийн өргөнийг уншдаг. |
| GND | GND | Газрын холболт. |
HC-SR04 нь нислэгийн цагийн хэмжилтээр ажилладаг. Arduino нь TRIG зүү рүү дор хаяж 10 микросекундын өндөр түвшний гох дохиог илгээдэг. Дараа нь модуль нь автоматаар найман 40 кГц хэт авианы импульс илгээж, туссан цуурайг хүлээнэ.
Ойсон хэт авианы дохио илрэх үед ECHO зүү нь өндөр түвшний импульс гаргадаг. Энэ импульсийн үргэлжлэх хугацаа нь хэт авианы долгионы хоёр талын аяллын хугацаа юм.
Зай = Цуурай өндөр түвшний цаг × Дууны хурд / 2
Arduino кодын энгийн хялбаршуулсан томъёо нь:
Зай см-ээр = үргэлжлэх хугацаа × 0.0343 / 2
Хугацаа тогтоох үйл явц нь энгийн: Arduino нь TRIG-ийг богино хугацаанд бага байлгаж, 10us өндөр импульс илгээж, дараа нь TRIG-ийг бага руу буцаана. HC-SR04 нь хэт авианы тэсрэлт илгээж, туссан дохио буцаж ирэх хүртэл эсвэл хэмжилтийн хугацаа дуусах хүртэл ECHO-г өндөр болгодог.
Тогтворгүй уншилтаас зайлсхийхийн тулд хэмжилтийн хооронд богино хугацааны саатал үлдээнэ үү. 60 мс орчим хэмжилтийн циклийг ихэвчлэн ашигладаг тул өмнөх хэт авианы цуурай дараагийн гохоос өмнө алга болох цагтай байдаг.
Arduino pulseIn() функц нь дижитал зүү ӨНДӨР эсвэл БАГА байх хугацааг хэмжихэд ашиглагддаг. HC-SR04-ийн хувьд Arduino нь pulseIn(echoPin, HIGH) ашигладаг. ECHO зүүгээс өндөр түвшний импульсийн өргөнийг уншихын тулд
| Синтакс | Утга |
| pulseIn(зүү, утга) | ӨНДӨР эсвэл БАГА импульсийн үргэлжлэх хугацааг уншина. |
| pulseIn(зүү, утга, хугацаа) | Микросекундээр завсарлагааны утгатай импульсийг уншина. |
Хугацаа ашиглахыг зөвлөж байна. Хэрэв цуурай буцаж ирээгүй бол функц хүлээхээ зогсоож, програмыг хэт удаан блоклохын оронд 0-г буцаана.
Утас нь шууд байна. VCC-ийг 5V-д, GND-ийг GND-д, TRIG-ийг Arduino дижитал гаралтын пин рүү, ECHO-г Arduino дижитал оролтын пин-д холбоно. Дараах жишээнд Arduino Uno, 9-р зүү дээр TRIG, 10-р зүү дээр ECHO ашигладаг.
Дараах ердийн Arduino програм нь 10us триггер импульс илгээж, ECHO импульсийн өргөнийг уншиж, зайг сантиметрээр тооцож, үр дүнг цуврал монитор дээр хэвлэдэг.
const int trigPin = 9; const int echoPin = 10; урт хугацаа; хөвөх зайСм; хүчингүй тохиргоо() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } хүчингүй давталт() { digitalWrite(trigPin, LOW); сааталМикросекунд(2); digitalWrite(trigPin, HIGH); сааталМикросекунд(10); digitalWrite(trigPin, LOW); үргэлжлэх хугацаа = pulseIn(echoPin, HIGH, 30000); if (үргэлжлэх хугацаа == 0) { Serial.println ('Хүрээнээс гадуур'); } else { зайСм = үргэлжлэх хугацаа * 0.0343 / 2; Serial.print('Зай: '); Цуваа.хэвлэх(зай см); Serial.println('см'); } саатал(60); }
Хэрэв та цуврал монитор дээр зайны утгыг харвал HC-SR04 хэт авианы мэдрэгч болон Arduino утас зөв ажиллаж байна. Дараа нь та зайны өгөгдлийг саад тотгор илрүүлэх, роботын хөдөлгөөнийг хянах, автомат хаалга, зогсоолын сануулга эсвэл шингэний түвшний төслүүдэд ашиглаж болно.
Хэмжсэн объектыг санал болгож буй зайд, 2 см-ийн сохор бүсээс гадуур байлга.
Хэт авианы тусгалыг илүү сайн болгохын тулд хавтгай, хатуу зорилтот гадаргууг ашигла.
Зөөлөн, өнцөгтэй, сүвэрхэг, дуу шингээх материалыг хэмжихээс зайлсхий.
Тогтвортой 5V тэжээлийн хангамж ашиглаж, утсыг богино, найдвартай байлга.
Цуурай буцаж ирэхгүй үед удаан блоклохоос сэргийлэхийн тулд pulseIn()-д завсарлага нэмнэ үү.
Дуу чимээг багасгахын тулд хэд хэдэн уншилтыг дундаж буюу медианаар шүүнэ.
Илүү нарийвчлалтай болгохын тулд дууны хурд нь агаарын температураас хамаарч өөрчлөгддөг тул температурыг нөхнө.
| Өргөдөл | HC-SR04 хэрхэн ашиглагддаг вэ |
| Саадаас зайлсхийх робот | Ойролцоох объектуудыг илрүүлж, роботын чиглэлийг өөрчлөхөд тусалдаг. |
| Зогсоолын зай мэдрэгч | Машин ба саад хоорондын зайг хэмждэг. |
| Шингэний түвшинг илрүүлэх | Мэдрэгчээс шингэний гадаргуу хүртэлх зайг контактгүйгээр хэмждэг. |
| Ухаалаг хогийн сав | Ойролцоох гар эсвэл объектыг илрүүлж, тагийг автоматаар нээхийг идэвхжүүлнэ. |
Arduino-той HC-SR04 хэт авианы мэдрэгчийг ашиглахын тулд VCC-ийг 5V-д, GND-ийг GND-д, TRIG-ийг дижитал гаралтын зүү рүү, ECHO-г дижитал оролтын пин рүү холбоно. 10us гох импульс илгээж, цуурай үргэлжлэх хугацааг pulseIn() ашиглан уншиж, нислэгийн цагийн томъёогоор зайг тооцоол.
HC-SR04 нь хямд, хэрэглэхэд хялбар бөгөөд Arduino зайны хэмжилтийн олон төслүүдэд тохиромжтой. Хамгийн сайн үр дүнд хүрэхийн тулд зорилтот гадаргуу, хэмжилтийн өнцөг, сохор бүс, тогтвортой хүч, ажиллах хугацаа, температурын нөлөөнд анхаарлаа хандуулаарай.
Arduino нь TRIG зүү рүү 10us импульс илгээдэг. HC-SR04 нь 40 кГц-ийн найман хэт авианы импульс ялгаруулж, туссан дуу буцаж ирэх хүртэл ECHO зүүг өндөр болгодог. Arduino нь энэ импульсийн хугацааг хэмжиж, зайг тооцдог.
Томъёо нь зай = үргэлжлэх хугацаа × дууны хурд / 2. Сантиметрээр нийтлэг Arduino томьёо нь зайCm = үргэлжлэх хугацаа × 0.0343 / 2 бөгөөд үргэлжлэх хугацааг микросекундээр хэмждэг.
Хэмжсэн цуурайны хугацаа нь мэдрэгчээс объект руу буцах, мэдрэгч рүү буцах хугацаа юм. 2-т хуваах нь мэдрэгч ба объектын хоорондох нэг талын зайг өгнө.
Та ихэнх Arduino дижитал зүү ашиглаж болно. Олон жишээн дээр TRIG нь дижитал зүү 9-д, ECHO нь дижитал зүү 10-д холбогдсон байдаг. Код нь таны утсанд ашигласан зүүтэй таарч байх ёстой.
Нийтлэг шалтгаанууд нь сул утас, тогтворгүй 5V хүчдэл, буруу TRIG эсвэл ECHO зүү дугаар, хүрээн доторх объект байхгүй, зорилтот гадаргуу нь өнцөгтэй, зөөлөн материал, мэдрэгчийн толгой бөглөрсөн эсвэл pulseIn() функцэд хугацаа хэтрээгүй байна.
Сохор бүс нь модулийг найдвартай хэмжих боломжгүй хамгийн бага зай юм. HC-SR04-ийн хувьд сохор бүс нь ихэвчлэн 2 см орчим байдаг. Үүнээс ойр байгаа объектууд тогтворгүй уншилт үүсгэж болзошгүй.
Тийм ээ, мэдрэгчийг чийгээс хамгаалж, шингэний гадаргуугаас дээш суурилуулсан бол HC-SR04-ийг усны түвшний холбоо барихгүй энгийн төслүүдэд ашиглаж болно. Чийглэг, гадаа эсвэл үйлдвэрлэлийн савны хувьд ус нэвтэрдэггүй хэт авианы мэдрэгч ашиглахыг зөвлөж байна.
Тогтвортой тэжээлийн хангамж ашиглах, мэдрэгчийг зорилтот түвшинд перпендикуляр байлгах, зөөлөн эсвэл өнцөгт гадаргуугаас зайлсхийх, импульсийн хугацаа нэмэх, олон уншилт хийх, медиан шүүлтүүрийг ашиглах, хэмжилтийн хооронд 60 мс орчим зай үлдээгээрэй.