Бұл мақалада біз HC-SR04 ультрадыбыстық қашықтық өлшегіш-сонарды Arduino-ға қосамыз.
Қажетті
- - Ардуино;
- - ультрадыбыстық датчик HC-SR04;
- - сымдарды қосу.
Нұсқаулық
1-қадам
HC-SR04 ультрадыбыстық қашықтық өлшегіштің әрекеті эхолокация принципіне негізделген. Ол ғарышқа дыбыстық импульс шығарады және кедергіден шағылған сигнал алады. Нысанға дейінгі қашықтық дыбыс толқынының кедергіге және артқа таралу уақытымен анықталады.
Дыбыс толқыны қашықтық өлшегіштің TRIG аяғына кем дегенде 10 микросекундтық оң импульсті қолдану арқылы іске қосылады. Импульс аяқталған бойда қашықтық өлшегіш өзінің алдындағы кеңістікке жиілігі 40 кГц дыбыстық импульстарды шығарады. Бұл кезде шағылған сигналдың кідіріс уақытын анықтау алгоритмі іске қосылып, қашықтық өлшегіштің ECHO аяғында логикалық блок пайда болады. Датчик шағылған сигналды анықтай салысымен, ECHO түйреуішінде логикалық нөл пайда болады. Осы сигналдың ұзақтығы (суреттегі «Эхо кідірісі») объектіге дейінгі қашықтықты анықтайды.
HC-SR04 қашықтық өлшеуішінің арақашықтық өлшеу диапазоны - 0,3 см рұқсатымен 4 метрге дейін, бақылау бұрышы - 30 градус, тиімді бұрышы - 15 градус. Күту режимінде ағымдағы тұтыну 2 мА, жұмыс кезінде - 15 мА.
2-қадам
Ультрадыбыстық қашықтық өлшегіштің қуат көзі +5 В кернеуімен жүзеге асырылады, қалған екі түйреуіш Arduino кез-келген сандық порттарына қосылған, біз 11 және 12-ге қосыламыз.
3-қадам
Енді кедергіге дейінгі қашықтықты анықтайтын және оны сериялық портқа шығаратын эскиз жазайық. Алдымен біз TRIG және ECHO түйреуіштерінің сандарын орнатамыз - бұл 12 және 11 түйреуіштер. Содан кейін біз триггерді шығыс деп, ал жаңғырықты кіріс ретінде жариялаймыз. Біз сериялық портты 9600 жылдамдықта баптаймыз. Циклдің () әр қайталануында біз қашықтықты оқып, оны портқа шығарамыз.
GetEchoTiming () функциясы триггер импульсін тудырады. Ол жай ғана 10 микросекундалық импульсті жасайды, бұл дыбыстық дестенің кеңістіктегі қашықтық өлшегіштің сәулеленуін бастауы мүмкін. Содан кейін ол дыбыстық толқынның берілуінен бастап, эхо келгенге дейінгі уақытты есіне алады.
GetDistance () функциясы объектіге дейінгі қашықтықты есептейді. Мектептегі физика курсынан біз қашықтық уақытқа көбейтілген жылдамдыққа тең екенін есте сақтаймыз: S = V * t. Ауадағы дыбыстың жылдамдығы 340 м / с құрайды, микросекундтардағы уақыт біз «дуратуин». Уақытты бірнеше секунд ішінде алу үшін 1 000 000-ға бөліңіз. Дыбыс қашықтықтан екі есе - объектіге және артқа қарай жүретін болғандықтан, арақашықтықты екіге бөлу керек. Сонымен, біз нобайға жазған объектіге дейінгі қашықтық S = 34000 см / сек * ұзақтығы / 1.000.000 сек / 2 = 1.7 см / сек / 100 болады. Микроконтроллер көбейтуді бөлуге қарағанда тезірек орындайды, сондықтан мен «/ 100» -ді «* 0, 01» баламасына ауыстырдым.
4-қадам
Сондай-ақ, көптеген кітапханалар ультрадыбыстық қашықтық өлшегішпен жұмыс істеу үшін жазылған. Мысалы, мынау: https://robocraft.ru/files/sensors/Ultrasonic/HC-SR04/ultrasonic-HC-SR04.zip. Кітапхана стандартты түрде орнатылған: Arduino IDE бар қалтада орналасқан кітапханалар каталогына жүктеу, ашу. Осыдан кейін кітапхананы пайдалануға болады.
Кітапхананы орнатып, жаңа эскиз жазайық. Оның жұмысының нәтижесі бірдей - порттың сериялық мониторы объектке дейінгі қашықтықты сантиметрмен көрсетеді. Егер эскизде float dist_cm = ultrasonic. Ranging (INC) деп жазсаңыз, қашықтық дюйммен көрсетіледі.
5-қадам
Сонымен, біз HC-SR04 ультрадыбыстық қашықтық өлшегішті Arduino-ға қосып, одан мәліметтерді екі түрлі жолмен алдық: арнайы кітапхананы пайдалану және онсыз.
Кітапхананы пайдаланудың артықшылығы - кодтың мөлшері айтарлықтай азаяды және бағдарламаның оқылымдылығы жақсарады, құрылғының қыр-сырына үңілудің қажеті жоқ және оны бірден қолдануға болады. Бірақ бұл кемшілік те: сіз құрылғының қалай жұмыс істейтінін және онда қандай процестер жүретінін аз түсінесіз. Қалай болғанда да, қандай әдісті қолдану сізге байланысты.