Қараулар: 164 Автор: Грейс Басылым уақыты: 26.07.2021 Шығу орны: Сайт
The HC-SR04 ультрадыбыстық сенсор - Arduino жобалары үшін ең танымал қашықтықты өлшеу модульдерінің бірі. Ол кедергілерді болдырмайтын роботтарда, тұрақ сенсорларында, деңгейді анықтауда, ақылды қоқыс жәшіктерінде, қашықтық өлшегіштерінде және басқа контактісіз сезгіш қолданбаларда кеңінен қолданылады.
Модуль таратқыш арқылы 40 кГц ультрадыбыстық толқындарды шығарады. Дыбыс толқыны объектімен кездескенде, ол қабылдағышқа кері шағылысады. Эхо уақытын өлшеу және дыбыс жылдамдығын пайдалану арқылы Arduino сенсор мен объект арасындағы қашықтықты есептей алады.
| Параметр | Мән |
| Әдеттегі жұмыс кернеуі | 5В тұрақты ток |
| Статикалық жұмыс тогы | Кейбір модуль нұсқаларында 5мА-дан аз |
| Жұмыс жиілігі | 40 кГц ультрадыбыстық толқын |
| Анықтау қашықтығы | Жалпы диапазон: 2 см-ден 400 см-ге дейін; кейбір пайдаға қарай реттелетін нұсқалар ұзағырақ диапазонды қолдауы мүмкін. |
| Анықтау бұрышы | Әдетте 15 градус ішінде; жоғарырақ кейбір нұсқалар шамамен 30 градусқа жетуі мүмкін. |
| Дәлдік | Қолайлы сынақ жағдайында шамамен 0,3 см-ге дейін |
| Соқыр аймақ | Ең аз өлшеу қашықтығы шамамен 2 см |
HC-SR04 ультрадыбыстық модулінде төрт түйреуіш бар: VCC, TRIG, ECHO және GND. Arduino TRIG істікшесіне қысқа триггер импульсін жібереді, содан кейін ECHO істікшесінен қайтару импульсін оқиды.
| HC-SR04 түйреуіш | Arduino қосылымы | Функция |
| VCC | 5В | Ультрадыбыстық модуль үшін қуат көзі. |
| ТРИГ | Сандық пин 9 | Триггер енгізу. Ардуино диапазонды бастау үшін 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 істікшесінен жоғары деңгейлі импульс енін оқу үшін
| Синтаксис | Мағынасы |
| impulseIn(pin, мән) | ЖОҒАРЫ немесе ТӨМЕН импульс ұзақтығын оқиды. |
| pulseIn(pin, мән, күту уақыты) | Микросекундтарда күту уақыты мәні бар импульсті оқиды. |
Күту уақытын пайдалану ұсынылады. Ешбір жаңғырық қайтарылмаса, функция күтуді тоқтатып, бағдарламаны тым ұзақ блоктаудың орнына 0 мәнін қайтара алады.
Сымдар қарапайым. VCC-ті 5В-қа, GND-ді GND-ге, TRIG-ті Arduino-ның цифрлық шығыс істікшесіне және ECHO-ны Arduino-ның сандық кіріс пиніне қосыңыз. Келесі мысалда Arduino Uno, 9 істікшеде TRIG және 10 істікшеде ECHO қолданылады.
Келесі әдеттегі Arduino бағдарламасы 10us триггер импульсін жібереді, ECHO импульсінің енін оқиды, қашықтықты сантиметрмен есептейді және нәтижені сериялық мониторда басып шығарады.
const int trigPin = 9; const int echoPin = 10; ұзақ мерзімділік; қалқымалы қашықтықCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); ұзақтығы = pulseIn(echoPin, HIGH, 30000); if (ұзақтығы == 0) { Serial.println('Ауқымнан тыс'); } else { қашықтықCm = ұзақтық * 0,0343 / 2; Serial.print('Қашықтық: '); Serial.print(дистанциясм); Serial.println('см'); } кешігу(60); }
Сериялық мониторда қашықтық мәндерін көрсеңіз, HC-SR04 ультрадыбыстық сенсор және Arduino сымдары дұрыс жұмыс істейді. Содан кейін қашықтық деректерін кедергілерді анықтау, робот қозғалысын басқару, автоматты есіктер, тұрақ туралы еске салғыштар немесе сұйықтық деңгейі жобалары үшін пайдалануға болады.
Өлшенген нысанды ұсынылған қашықтық ауқымында және 2 см соқыр аймақтан тыс жерде ұстаңыз.
Жақсырақ ультрадыбыстық шағылысу үшін тегіс және қатты мақсатты бетті пайдаланыңыз.
Жұмсақ, бұрышты, кеуекті немесе дыбысты жұтатын материалдарды өлшеуден аулақ болыңыз.
Тұрақты 5 В қуат көзін пайдаланыңыз және сымдарды қысқа және қауіпсіз ұстаңыз.
Ешбір жаңғырық қайтарылмаған кезде ұзақ бұғаттауды болдырмау үшін 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 сандық істікшеге қосылған. Код сымдарыңызда қолданылатын істіктерге сәйкес болуы керек.
Жалпы себептерге сымдардың босауы, тұрақсыз 5 В қуаты, қате TRIG немесе ECHO істік нөмірлері, диапазонда нысанның болмауы, бұрыштық мақсатты беттер, жұмсақ материалдар, блокталған сенсор бастары немесе pulseIn() функциясында күту уақытының болмауы жатады.
Соқыр аймақ - модуль сенімді түрде өлшей алмайтын ең аз қашықтық. HC-SR04 үшін соқыр аймақ әдетте шамамен 2 см құрайды. Бұдан жақынырақ нысандар тұрақсыз көрсеткіштерді тудыруы мүмкін.
Иә, сенсор ылғалдан қорғалған және сұйықтық бетінен жоғары орнатылған болса, HC-SR04 су деңгейінің жанаспайтын қарапайым жобалары үшін пайдаланылуы мүмкін. Ылғалды, сыртқы немесе өнеркәсіптік резервуарлар үшін су өткізбейтін ультрадыбыстық сенсор ұсынылады.
Тұрақты қуат көзін пайдаланыңыз, сенсорды нысанаға перпендикуляр ұстаңыз, жұмсақ немесе бұрышты беттерден аулақ болыңыз, импульстің күту уақытын қосыңыз, бірнеше көрсеткіштерді алыңыз, медиандық сүзуді пайдаланыңыз және өлшемдер арасында шамамен 60 мс қалдырыңыз.