Դիտումներ՝ 164 Հեղինակ՝ Գրեյս Հրատարակման ժամանակը՝ 2021-07-26 Ծագում: Կայք
Այն 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 | 5 Վ | Ուլտրաձայնային մոդուլի էլեկտրամատակարարում: |
| TRIG | Թվային փին 9 | Գործարկիչի մուտքագրում: Arduino-ն կիրառում է 10us զարկերակ՝ տիրույթ սկսելու համար: |
| ԷԽՈ | Թվային փին 10 | Էխոյի ելք. Arduino-ն կարդում է իմպուլսի լայնությունը՝ հեռավորությունը հաշվարկելու համար: |
| GND | GND | Վերգետնյա միացում: |
HC-SR04-ն աշխատում է թռիչքի ժամանակի չափման միջոցով: Arduino-ն առնվազն 10 միկրովայրկյանանոց բարձր մակարդակի ձգանման ազդանշան է ուղարկում TRIG փին: Այնուհետև մոդուլը ավտոմատ կերպով ուղարկում է ութ 40 կՀց ուլտրաձայնային իմպուլս և սպասում արտացոլված արձագանքին:
Երբ արտացոլված ուլտրաձայնային ազդանշանը հայտնաբերվում է, ECHO քորոցը բարձր մակարդակի իմպուլս է հաղորդում: Այս զարկերակի տեւողությունը ուլտրաձայնային ալիքի հետադարձ ճանապարհորդության ժամանակն է:
Հեռավորություն = Էխոյի բարձր մակարդակի ժամանակ × Ձայնի արագություն / 2
Arduino կոդում ընդհանուր պարզեցված բանաձևը հետևյալն է.
Հեռավորությունը սմ = տևողություն × 0,0343 / 2
Ժամկետավորման գործընթացը պարզ է. Arduino-ն հակիրճ պահում է TRIG-ը ցածր, ուղարկում է 10 us բարձր զարկերակ, այնուհետև վերադարձնում է TRIG-ը ցածր: HC-SR04-ը ուղարկում է ուլտրաձայնային պոռթկում և բարձրացնում է ECHO-ն, մինչև արտացոլված ազդանշանը վերադառնա կամ չափման ժամանակը սպառվի:
Անկայուն ընթերցումներից խուսափելու համար չափումների միջև թողեք կարճ ուշացում: Սովորաբար օգտագործվում է մոտ 60 մս չափման ցիկլ, որպեսզի նախորդ ուլտրաձայնային արձագանքը ժամանակ ունենա անհետանալու մինչև հաջորդ ձգան:
Arduino pulseIn() ֆունկցիան օգտագործվում է չափելու համար, թե որքան երկար է թվային պինդը մնում HIGH կամ LOW: HC-SR04-ի համար Arduino-ն օգտագործում է pulseIn(echoPin, HIGH) ՝ կարդալու իմպուլսի բարձր մակարդակի լայնությունը ECHO փինից:
| Շարահյուսություն | Իմաստը |
| pulseIn (փին, արժեք) | Կարդում է ԲԱՐՁՐ կամ ՑԱԾՐ իմպուլսի տևողությունը: |
| pulseIn (pin, արժեք, timeout) | Կարդում է զարկերակը միկվայրկյաններով ընդմիջման արժեքով: |
Խորհուրդ է տրվում օգտագործել ժամանակի ընդմիջում: Եթե արձագանք չվերադարձվի, ֆունկցիան կարող է դադարեցնել սպասելը և վերադարձնել 0՝ ծրագիրը չափազանց երկար արգելափակելու փոխարեն:
Հաղորդալարերը պարզ են: VCC-ին միացրեք 5V-ին, GND-ին GND-ին, TRIG-ին Arduino թվային ելքային փինին և ECHO-ին Arduino թվային մուտքային փինին: Հետևյալ օրինակը օգտագործում է Arduino Uno-ն, TRIG-ը 9-րդ պինում և ECHO-ն՝ 10-րդ կապում:
Հետևյալ սովորական 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); հետաձգումՄիկրովայրկյան (2); digitalWrite (trigPin, HIGH); հետաձգումՄիկրովայրկյան (10); digitalWrite (trigPin, LOW); տեւողությունը = pulseIn (echoPin, HIGH, 30000); if (duration == 0) { Serial.println('Out of the range'); } else { distanceCm = տեւողությունը * 0,0343 / 2; Serial.print ('Հեռավորություն: '); Serial.print(distanceCm); Serial.println('cm'); } հետաձգում (60); }
Եթե սերիական մոնիտորում տեսնում եք հեռավորության արժեքներ, ապա HC-SR04 ուլտրաձայնային սենսորը և Arduino լարերը ճիշտ են աշխատում: Այնուհետև կարող եք օգտագործել հեռավորության տվյալները խոչընդոտների հայտնաբերման, ռոբոտի շարժման կառավարման, ավտոմատ դռների, կայանման հիշեցումների կամ հեղուկ մակարդակի նախագծերի համար:
Պահեք չափված առարկան առաջարկվող հեռավորության միջակայքում և 2 սմ կույր գոտուց դուրս:
Ուլտրաձայնային ավելի լավ արտացոլման համար օգտագործեք հարթ և ամուր թիրախային մակերես:
Խուսափեք փափուկ, անկյունային, ծակոտկեն կամ ձայնը կլանող նյութերի չափումից:
Օգտագործեք կայուն 5 Վ սնուցման աղբյուր և լարերը կարճ և ապահով պահեք:
Ավելացրե՛ք pulseIn()-ին ժամանակացույց՝ կանխելու երկար արգելափակումը, երբ արձագանք չկա:
Աղմուկը նվազեցնելու համար մի քանի ընթերցումներ միջին կամ միջին զտեք:
Ավելի բարձր ճշգրտության համար փոխհատուցեք ջերմաստիճանը, քանի որ ձայնի արագությունը փոխվում է օդի ջերմաստիճանի հետ:
| Դիմում | Ինչպես է օգտագործվում HC-SR04-ը |
| Խոչընդոտներից խուսափող ռոբոտ | Հայտնաբերում է մոտակա առարկաները և օգնում ռոբոտին փոխել ուղղությունը: |
| Կայանման հեռավորության սենսոր | Չափում է մեքենայի և խոչընդոտի միջև հեռավորությունը: |
| Հեղուկի մակարդակի հայտնաբերում | Չափում է սենսորից մինչև հեղուկ մակերեսի հեռավորությունը առանց շփման: |
| Խելացի աղբարկղ | Հայտնաբերում է մոտակա ձեռքը կամ առարկան և գործարկում է կափարիչի ավտոմատ բացումը: |
Arduino-ի հետ HC-SR04 ուլտրաձայնային սենսոր օգտագործելու համար VCC-ին միացրեք 5V-ին, GND-ին GND-ին, TRIG-ին թվային ելքային փինին և ECHO-ին միացրեք թվային մուտքագրման փինին: Ուղարկեք 10us ձգանային զարկերակ, կարդացեք արձագանքի տևողությունը pulseIn(-ով) և հաշվարկեք հեռավորությունը թռիչքի ժամանակի բանաձևով:
HC-SR04-ը էժան է, հեշտ օգտագործման համար և հարմար է Arduino-ի հեռավորության չափման բազմաթիվ նախագծերի համար: Լավագույն արդյունքների համար ուշադրություն դարձրեք թիրախային մակերեսին, չափման անկյունին, կույր գոտուն, կայուն հզորությանը, ժամանակի բեռնաթափմանը և ջերմաստիճանի էֆեկտներին:
Arduino-ն ուղարկում է 10us զարկերակ TRIG փին: HC-SR04-ը արձակում է ութ 40kHz ուլտրաձայնային իմպուլսներ և բարձրացնում է ECHO փին, մինչև արտացոլված ձայնը վերադառնա: Arduino-ն չափում է այս իմպուլսի ժամանակը և հաշվարկում հեռավորությունը:
Բանաձևն է՝ հեռավորություն = տևողություն × ձայնի արագություն / 2: Արդուինոյի ընդհանուր բանաձևը սանտիմետրերով է՝ հեռավորությունCm = տևողություն × 0,0343/2, որտեղ տևողությունը չափվում է միկրովայրկյաններով:
Էխոյի չափված ժամանակը սենսորից դեպի օբյեկտ և ետ դեպի սենսոր վերադարձի ժամանակն է: 2-ի բաժանումը տալիս է սենսորի և օբյեկտի միջև միակողմանի հեռավորությունը:
Դուք կարող եք օգտագործել Arduino թվային կապի մեծ մասը: Բազմաթիվ օրինակներում TRIG-ը միացված է թվային կապին 9, իսկ ECHO-ն միացված է թվային 10-ին: Կոդը պետք է համապատասխանի ձեր էլեկտրահաղորդման մեջ օգտագործվող կապին:
Ընդհանուր պատճառները ներառում են թուլացած լարերը, անկայուն 5 Վ հոսանք, սխալ TRIG կամ ECHO փին թվեր, տիրույթում գտնվող օբյեկտի բացակայություն, թիրախի անկյունային մակերեսներ, փափուկ նյութեր, արգելափակված սենսորային գլուխներ կամ pulseIn() ֆունկցիայի ժամանակի բացակայություն:
Կույր գոտին այն նվազագույն հեռավորությունն է, որտեղ մոդուլը չի կարող հուսալիորեն չափել: HC-SR04-ի համար կույր գոտին սովորաբար մոտ 2 սմ է: Սրանից ավելի մոտ գտնվող առարկաները կարող են անկայուն ընթերցումներ առաջացնել:
Այո, HC-SR04-ը կարող է օգտագործվել ջրի մակարդակի ոչ կոնտակտային պարզ նախագծերի համար, եթե սենսորը պաշտպանված է խոնավությունից և տեղադրված է հեղուկի մակերեսից վեր: Խոնավ, բացօթյա կամ արդյունաբերական տանկերի համար խորհուրդ է տրվում անջրանցիկ ուլտրաձայնային սենսոր:
Օգտագործեք կայուն սնուցման աղբյուր, սենսորը պահեք թիրախին ուղղահայաց, խուսափեք փափուկ կամ անկյունային մակերեսներից, ավելացրեք pulseIn-ի ժամանակի դադար, կատարեք մի քանի ընթերցումներ, օգտագործեք միջին ֆիլտրում և թույլ տվեք մոտ 60 մվ չափումների միջև: