Անկյունի չափում `օգտագործելով գիրո, արագացուցիչ և արդուինո. 5 քայլ
Անկյունի չափում `օգտագործելով գիրո, արագացուցիչ և արդուինո. 5 քայլ
Anonim

Սարքը կոպիտ նախատիպ է այն բանի, թե ի վերջո ինչ կդառնա ինքնահավասարակշռող ռոբոտ, սա անցքի երկրորդ մասն է (կարդացեք արագացուցիչի արագությունը և կառավարեք շարժիչը ինքնահավասարակշռության համար): Այստեղ կարելի է գտնել միայն գիրոյի առաջին մասը: Այս ուսանելիի վրա մենք կչափենք անկյունը ՝ օգտագործելով և՛ գիրո, և՛ արագացուցիչ, և տեխնիկայի միջոցով միացնել երկու սենսորը ՝ սահուն ազդանշան ստանալու համար: Տեխնիկան կոչվում է «լրացուցիչ ֆիլտր»: նախորդը

Քայլ 1: Այն, ինչ մեզ պետք կգա

Որոշ մասեր կարող են փոխարինվել, և ծածկագրում որոշակի փոփոխություններ պետք է կատարվեն `ձեր սարքավորումների համար համապատասխան: Այս նախագծում մենք կօգտագործենք. (արագացուցիչի համար)- Nunchuck Wii ադապտեր Arduino- ի համար

Քայլ 2: Կառուցել…

Շղթան բաղկացած է գիրոսկոպից, որը միացված է անմիջապես ձեր arduino- ի 0 պորտին և I2C նավահանգստում միացված nunchuck wii- ին: Կիրոսի հավաքում. 1. - միացրեք գիրոն հացատախտակին 2: - մետաղալարեր երբևէ. արագացուցիչ ՝ 1. - միացրեք ադապտորը nunchuck2- ին: - միացրեք nunchuck- ը arduino- ում `օգտագործելով ադապտեր 3: - տեղադրեք արագաչափ սենսորը, ինչպես վերը նշված լուսանկարը

Քայլ 3: Որոշ լրացուցիչ տեղեկություններ նախքան մեր գործը շարունակելը

Երկու սենսորներից էլ մենք կարող ենք չափել անկյունը, բայց օգտագործելով երկու հստակ տեխնիկա: Կիրոսի միջոցով անկյունը չափելու համար մենք պետք է ինտեգրենք ազդանշանը: Բայց ինչու՞ պետք է դա անենք: Քանի որ գիրոն մեզ տալիս է անկյունային արագություն, ուստի անկյուն ստանալու համար պարզ միջոց է անկյունային արագությունը բազմապատկել ժամանակով [անկյուն = անկյուն + w * dt] Արագացուցիչի միջոցով անկյունը չափելու համար մենք պետք է զգանք յուրաքանչյուրի ծանրությունը: արագացուցիչի առանցքը, ինչ է դա նշանակում, սենսորի յուրաքանչյուր ուղղությամբ ինքնահոս արագացման կանխատեսումը մեզ պատկերացում է տալիս անկյունի մասին: [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Այսպիսով, ինչու՞ ենք մենք մեկ սենսորի փոխարեն օգտագործել երկու սենսոր: Երկու սենսորային հատկություններից առավելություն ստանալու համար: Եթե դուք դիտում եք գիրո տվյալների անընդհատ աճը, դա կոչվում է դրեյֆ, և արագացուցիչի տվյալները փոքր ժամանակ շատ են փոխվում: Իսկ ինչպե՞ս միացնել երկու ազդանշանը: Մենք կօգտագործենք տեխնիկա, որը կոչվում է լրացուցիչ զտիչ: Ես չգիտեմ դրա ճշգրիտ տեսությունը, բայց դա լավ է աշխատում: Ինտերնետում կան որոշ տեղեկություններ, պարզապես գուգլեք, եթե լրացուցիչ տեղեկությունների կարիք ունեք: Այս հղումը շատ տեղեկություններ ունի և կարող է օգտակար լինել: զտված_անկյուն = HPF*(ֆիլտրացված_անկյուն + w*dt) + LPF*(angle_accel); որտեղ HPF + LPF = 1 HPF- ի և LPF- ի արժեքները կարելի է գտնել այս հղումով ՝ filter.pdf ֆայլում: Շնորհակալություն ձեզ «The DIY Segway» - ից:

Քայլ 4: Կոդ

Կոդը ադապտացիա է այն կոդից, որը ես օգտագործել եմ մեկ այլ նախագծում: Հավանաբար կան որոշ փոփոխականներ, որոնք չօգտագործված են: Ես գրադարանից օգտվել եմ https://todbot.com/blog/ կայքի nunchuck տվյալները կարդալու համար: Շնորհակալություն Tod E. Kurt: Կոդի վերաբերյալ մեկնաբանությունները պորտուգալերեն են, ազատ ժամանակ ունենալուն պես ես կթարգմանեմ այն: Սերիայի տողից ստացված ծածկագիրը որոշ թվեր ունի այս օրինակով. Dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Այսպիսով, դուք կարող եք պահպանել այս արժեքները սերիական տերմինալում և գծապատկերել գրաֆիկական պատկեր կամ օգտագործել անկյունը այլ բաների համար: ziped. Պարզապես ապասեղմեք, բացեք և վերբեռնեք այն ձեր arduino- ում:

Քայլ 5: Թեստավորում և եզրակացություն

Համակարգը ստուգելու համար ես տվյալները պահեցի Termite կոչվող ծրագրի միջոցով, այնուհետև ներմուծեք այս տվյալները Excel- ում և գծագրեք գրաֆիկը ՝ տեսնելու, թե որքան լավ է իմ զտիչը: Արդյունքները զարմանալի են: Իհարկե, դուք կարող եք օգտագործել ազդանշանը շարժիչ կամ այլ բաներ վարելու համար: commentsանկացած մեկնաբանություն, կասկած, տեղեկատվություն չկա, պարզապես ասեք ինձ, և ես այն ուղղում եմ: Խնդրում եմ, եթե դա ձեզ դուր է գալիս, գնահատեք: Շնորհակալություն բոլորիդ:

Խորհուրդ ենք տալիս: