Այս անգամ մենք կզբաղվենք ADXL335 անալոգային եռաքայլ արագացուցչակը Arduino- ին միացնելու հետ:
Անհրաժեշտ է
- - Arduino;
- - արագացուցաչափ ADXL335;
- - անհատական համակարգիչ `Arduino IDE զարգացման միջավայրով:
Հրահանգներ
Քայլ 1
Արագացման վեկտորը որոշելու համար օգտագործվում են արագացուցիչներ: ADXL335 արագացուցիչն ունի երեք առանցք, և դրա շնորհիվ այն կարող է որոշել արագացման վեկտորը եռաչափ տարածքում: Շնորհիվ այն բանի, որ ձգողականության ուժը նաև վեկտոր է, արագացուցիչը կարող է որոշել իր կողմնորոշումը եռաչափ տարածության մեջ ՝ համեմատած Երկրի կենտրոնի հետ:
Պատկերում ներկայացված են նկարներ անձնագրից (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) ADXL335 արագացուցչի համար: Այստեղ ցուցադրվում են արագացուցիչի զգայունության կոորդինատային առանցքները տարածության մեջ սարքի մարմնի երկրաչափական տեղադրման հետ կապված, ինչպես նաև 3 արագացուցիչաչափի ալիքներից լարման արժեքների աղյուսակ ՝ կախված տարածության մեջ նրա կողմնորոշումից: Աղյուսակում տրված տվյալները տրված են հանգստի վիճակում գտնվող սենսորի համար:
Եկեք ավելի սերտ նայենք, թե ինչ է մեզ ցույց տալիս արագաչափիչը: Թող սենսորը հորիզոնական պառկի, օրինակ ՝ սեղանի վրա: Այդ դեպքում արագացման վեկտորի պրոյեկցիան հավասար կլինի 1g- ի Z առանցքի երկայնքով, կամ Zout = 1g: Մյուս երկու առանցքները կունենան զրոներ. Xout = 0 և Yout = 0. Երբ սենսորը շրջվի «մեջքին», այն կուղղվի ինքնահոս վեկտորի համեմատ հակառակ ուղղությամբ, այսինքն. Zout = -1 գ Նմանապես, չափումները կատարվում են բոլոր երեք առանցքների վրա: Ակնհայտ է, որ արագացուցիչը կարող է տեղակայվել ըստ ցանկության տարածության մեջ, այնպես որ մենք բոլոր երեք ալիքներից զրոյից բացի այլ ընթերցումներ ենք վերցնելու:
Եթե զոնդը ուժեղ թափ է տալիս ուղղահայաց Z առանցքի երկայնքով, ապա Zout- ի արժեքը մեծ կլինի «1 գ» -ից: Առավելագույն չափելի արագացումը ցանկացած ուղղությամբ առանցքներից յուրաքանչյուրում «3 գ» է (այսինքն `« գումարած »-ով և« մինուսով »):
Քայլ 2
Կարծում եմ ՝ մենք հասկացանք արագացուցչի աշխատանքի սկզբունքը: Այժմ եկեք նայենք կապի դիագրամը:
ADXL335 անալոգային արագացուցիչի չիպը բավականին փոքր է և տեղավորված է BGA փաթեթում, և տանը դժվար է այն տեղադրել տախտակի վրա: Հետեւաբար, ես կօգտագործեմ պատրաստի GY-61 մոդուլ `ADXL335 արագացուցիչով: Չինական առցանց խանութներում նման մոդուլներն արժեն գրեթե կոպեկ:
Արագաչափաչափը գործարկելու համար անհրաժեշտ է +3, 3 Վ լարման մատակարարել մոդուլի VCC քորոցին: Սենսորի չափման ալիքները միացված են Arduino- ի անալոգային քորոցներին, օրինակ `« A0 »,« A1 »և« A2 »: Սա է ամբողջ շրջանը:)
Քայլ 3
Եկեք այս ուրվագիծը բեռնենք Arduino հիշողության մեջ: Մենք կկարդանք ընթերցումները երեք ալիքների անալոգային մուտքերից, դրանք կվերափոխենք լարման և դուրս կգանք սերիական պորտ:
Arduino- ն ունի 10 բիթային ADC, իսկ առավելագույն թույլատրված քորոցային լարումը 5 վոլտ է: Չափված լարումները կոդավորված են բիթերով, որոնք կարող են վերցնել ընդամենը 2 արժեք `0 կամ 1. Սա նշանակում է, որ ամբողջ չափման տիրույթը բաժանվելու է (1 + 1) -ով 10-րդ հզորության, 1024 հավասար հատվածների վրա:
Ընթերցումները վոլտերի վերափոխելու համար հարկավոր է անալոգային մուտքում չափված յուրաքանչյուր արժեքը բաժանել 1024-ի (հատվածներ), ապա բազմապատկել 5-ի վրա (վոլտ):
Եկեք տեսնենք, թե իրականում ինչ է գալիս արագացուցչից, որպես օրինակ օգտագործելով Z առանցքը (վերջին սյունը): Երբ սենսորը հորիզոնական դիրքում է և նայում է վերև, թվերը գալիս են (2.03 +/- 0,01): Այսպիսով, սա պետք է համապատասխանի Z + առանցքի երկայնքով «+ 1 գ» արագացմանը և 0 աստիճանի անկյան: Մատով խփեք սենսորը: Թվերը գալիս են (1, 69 +/- 0, 01), որոնք պետք է համապատասխանեն «-1 գ» -ին և 180 աստիճանի անկյունին:
Քայլ 4
Եկեք արագացուցչից վերցնենք արժեքները 90 և 270 աստիճանի անկյուններում և դրանք մուտքագրենք աղյուսակ: Աղյուսակը ցույց է տալիս արագացուցչի ռոտացիայի անկյունները (սյուն «A») և համապատասխան Zout արժեքները վոլտերով (սյուն «B»):
Հստակության համար ցուցադրվում է Zout- ի ելքի վրա պտտման տեսանկյունից լարման սյուժե: Կապույտ դաշտը հանգստի գոտին է (1 գ արագացումով): Գրաֆիկի վրա վարդագույն վանդակը մարժա է, որպեսզի մենք կարողանանք չափել արագացումը մինչև + 3 գ և մինչև -3 գ:
90 աստիճանի պտտման ժամանակ Z առանցքն ունի զրոյական արագացում: Դրանք 1.67 վոլտ արժեքը Z առանցքի համար պայմանական զրո է: Դրանից հետո կարող եք գտնել արագացումը ՝
g = Zout - Zo / զգայունություն_z, այստեղ Zout- ը միլիվոլտով չափված արժեքն է, Zo- ն `միլիվոլտով զրոյական արագացման արժեքը, զգայունությունը_զ-ը Z առանցքի երկայնքով սենսորի զգայունությունն է: ճշգրտեք արագացուցաչափը և հաշվարկեք զգայունության արժեքը հատուկ ձեր համար: ցուցիչ ՝ օգտագործելով բանաձևը.
զգայունություն_զ = [((0 աստիճան) - ((90 աստիճան)] * 1000. Այս դեպքում աքսելերաչափիչի զգայունությունը Z առանցքի երկայնքով = (2, 03 - 1, 68) * 1000 = 350 մՎ: Նմանապես, զգայունությունը պետք է հաշվարկվի X և Y առանցքների համար:
Աղյուսակի «C» սյունը ցույց է տալիս հինգ անկյունների համար հաշվարկված արագացումը 350 զգայունության պայմաններում: Ինչպես տեսնում եք, դրանք գործնականում համընկնում են Նկար 1-ում ցույց տրվածների հետ:
Քայլ 5
Հիշելով երկրաչափության հիմնական ընթացքը, մենք ստանում ենք արագացուցչի ռոտացիայի անկյունները հաշվարկելու բանաձև.
angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx]:
Արժեքները ռադիաներով են: Դրանք աստիճաններ դարձնելու համար բաժանեք Pi- ով և բազմապատկելով 180-ով:
Արդյունքում, բոլոր առանցքների երկայնքով արագացուցչի արագացման և պտտման անկյունները հաշվարկող ամբողջական ուրվագիծը ներկայացված է նկարում: Մեկնաբանությունները բացատրություններ են տալիս ծրագրի ծածկագրի համար:
«Serial.print ()» պորտին ելք կատարելիս «\ t» նիշը նշանակում է էջանիշի նիշ, որպեսզի սյունները հավասար լինեն, իսկ արժեքները տեղադրվեն մեկը մյուսի տակ: «+» նշանակում է տողերի միացում (միացում): Ավելին, «String ()» օպերատորը հստակ ասում է կազմողին, որ թվային արժեքը պետք է վերածվի տողի: Կլոր () օպերատորը անկյունը կլորացնում է մոտակա 1 աստիճանի:
Քայլ 6
Այսպիսով, մենք իմացանք, թե ինչպես վերցնել և մշակել տվյալներ ADXL335 անալոգային արագացուցիչից ՝ օգտագործելով Arduino: Այժմ մեր նախագծերում կարող ենք օգտագործել արագացուցիչը: