Прагляды: 164 Аўтар: Грэйс Час публікацыі: 2021-07-26 Паходжанне: Сайт
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 | Трыгерны ўваход. Arduino падае імпульс 10 мкс, каб пачаць вызначэнне далёкасці. |
| РЭХА | Лічбавы кантакт 10 | Вывад рэха. Arduino счытвае шырыню імпульсу для разліку адлегласці. |
| GND | GND | Зазямленне. |
HC-SR04 працуе на аснове вымярэння часу пралёта. Arduino пасылае трыгерны сігнал высокага ўзроўню працягласцю не менш за 10 мікрасекунд на кантакт TRIG. Затым модуль аўтаматычна адпраўляе восем ультрагукавых імпульсаў частатой 40 кГц і чакае адлюстраванага рэха.
Пры выяўленні адлюстраванага ультрагукавога сігналу штыфт ECHO выдае імпульс высокага ўзроўню. Працягласць гэтага імпульсу - гэта час праходжання ультрагукавой хвалі туды і назад.
Адлегласць = час рэха высокага ўзроўню × хуткасць гуку / 2
У кодзе Arduino звычайная спрошчаная формула:
Адлегласць у см = працягласць × 0,0343 / 2
Працэс сінхранізацыі просты: Arduino ненадоўга падтрымлівае нізкі ўзровень TRIG, адпраўляе высокі імпульс 10 мкс, затым вяртае TRIG да нізкага ўзроўню. HC-SR04 пасылае ультрагукавой выбух і ўстанаўлівае высокі ўзровень ECHO, пакуль адлюстраваны сігнал не вернецца або пакуль вымярэнне не скончыцца.
Каб пазбегнуць няўстойлівых паказанняў, пакідайце невялікую затрымку паміж вымярэннямі. Звычайна выкарыстоўваецца цыкл вымярэння каля 60 мс, каб папярэдняе ультрагукавое рэха паспела знікнуць да наступнага запуску.
Функцыя Arduino pulseIn() выкарыстоўваецца для вымярэння таго, як доўга лічбавы пін застаецца ВЫСОКІМ або НІЗКІМ. Для HC-SR04 Arduino выкарыстоўвае pulseIn(echoPin, HIGH) для счытвання шырыні імпульсу высокага ўзроўню са штыфта ECHO.
| Сінтаксіс | Сэнс |
| pulseIn(пін-код, значэнне) | Счытвае працягласць высокага або нізкага імпульсу. |
| pulseIn(пін-код, значэнне, тайм-аўт) | Счытвае імпульс са значэннем тайм-аўту ў мікрасекундах. |
Рэкамендуецца выкарыстоўваць тайм-аўт. Калі рэха не вяртаецца, функцыя можа спыніць чаканне і вярнуць 0 замест таго, каб занадта доўга блакаваць праграму.
Праводка простая. Падключыце VCC да 5 В, GND да GND, TRIG да лічбавага выхаду Arduino і ECHO да лічбавага ўваходу Arduino. У наступным прыкладзе выкарыстоўваюцца Arduino Uno, TRIG на выснове 9 і ECHO на выснове 10.
Наступная тыповая праграма Arduino пасылае трыгерны імпульс 10 мкс, счытвае шырыню імпульсу ECHO, разлічвае адлегласць у сантыметрах і друкуе вынік на паслядоўным маніторы.
const int trigPin = 9; const int echoPin = 10; вялікая працягласць; плыць адлегласцьCm; несапраўдная ўстаноўка () { pinMode (trigPin, ВЫХОД); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() {digitalWrite(trigPin, LOW); затрымка мікрасекунд (2); digitalWrite(trigPin, HIGH); затрымка мікрасекунд (10); digitalWrite(trigPin, LOW); працягласць = pulseIn(echoPin, HIGH, 30000); if (duration == 0) { Serial.println('Па-за дыяпазонам'); } else { distanceCm = працягласць * 0,0343 / 2; Serial.print('Адлегласць: '); Serial.print(distanceCm); Serial.println(' см'); } затрымка (60); }
Калі вы бачыце значэнні адлегласці ў паслядоўным маніторы, ультрагукавы датчык HC-SR04 і праводка Arduino працуюць правільна. Затым вы можаце выкарыстоўваць даныя аб адлегласці для выяўлення перашкод, кіравання рухам робата, аўтаматычных дзвярэй, напамінкаў аб паркоўцы або праектаў узроўню вадкасці.
Трымайце вымяраны аб'ект у межах рэкамендаванага дыяпазону адлегласці і па-за межамі сляпой зоны 2 см.
Выкарыстоўвайце плоскую і цвёрдую паверхню мішэні для лепшага ультрагукавога адлюстравання.
Пазбягайце вымярэнняў на мяккіх, нахіленых, порыстых або гукапаглынальных матэрыялах.
Выкарыстоўвайце стабільны крыніца сілкавання 5 В і трымайце правадку кароткай і надзейнай.
Дадайце тайм-аўт да pulseIn(), каб прадухіліць працяглую блакіроўку, калі рэха не вяртаецца.
Асерадніце або адфільтруйце некалькі паказанняў, каб паменшыць шум.
Для большай дакладнасці кампенсуйце тэмпературу, таму што хуткасць гуку змяняецца з тэмпературай паветра.
| Ужыванне | Як выкарыстоўваецца HC-SR04 |
| Робат для ўхілення ад перашкод | Выяўляе бліжэйшыя аб'екты і дапамагае робату змяніць кірунак. |
| Датчык адлегласці паркоўкі | Вымярае адлегласць паміж транспартным сродкам і перашкодай. |
| Вызначэнне ўзроўню вадкасці | Вымярае адлегласць ад датчыка да паверхні вадкасці без кантакту. |
| Разумнае смеццевае вядро | Выяўляе руку ці прадмет побач і запускае аўтаматычнае адкрыццё вечка. |
Каб выкарыстоўваць ультрагукавы датчык HC-SR04 з Arduino, падключыце VCC да 5 В, GND да GND, TRIG да лічбавага выхаду і ECHO да лічбавага ўваходу. Адпраўце трыгерны імпульс 10 мкс, прачытайце працягласць рэха з дапамогай pulseIn() і вылічыце адлегласць з дапамогай формулы часу пралёта.
HC-SR04 недарагі, просты ў выкарыстанні і падыходзіць для многіх праектаў вымярэння адлегласці Arduino. Для дасягнення найлепшых вынікаў звярніце ўвагу на мэтавую паверхню, вугал вымярэння, сляпую зону, стабільную магутнасць, апрацоўку тайм-аўту і тэмпературныя эфекты.
Arduino пасылае імпульс 10 мкс на штыфт TRIG. 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 можна выкарыстоўваць для простых бескантактавых праектаў узроўню вады, калі датчык абаронены ад вільгаці і ўсталяваны над паверхняй вадкасці. Для вільготных, адкрытых або прамысловых рэзервуараў рэкамендуецца воданепранікальны ультрагукавы датчык.
Выкарыстоўвайце стабільны крыніца харчавання, трымайце датчык перпендыкулярна да мэты, пазбягайце мяккіх або нахіленых паверхняў, дадайце тайм-аўт pulseIn, выконвайце некалькі паказанняў, выкарыстоўвайце медыянную фільтрацыю і пакідайце каля 60 мс паміж вымярэннямі.