Բովանդակություն:
- Պարագաներ
- Քայլ 1: Շինարարություն
- Քայլ 2: Լարերի տեղադրում
- Քայլ 3. Վերահսկողության տեսություն
- Քայլ 4: Օգտագործելով MPU 6050
- Քայլ 5: Կոդավորում
- Քայլ 6: PID- ի կարգաբերման կարգ
- Քայլ 7: Եզրակացություն
Video: Երկու անիվի ինքնահավասարակշռող ռոբոտ ՝ 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Այս հրահանգը կանցնի ինքնահավասարակշռող ռոբոտի նախագծման և կառուցման գործընթացով: Որպես նշում, ես պարզապես ուզում եմ ասել, որ ինքնահավասարակշռող ռոբոտները նոր հասկացություն չեն, և դրանք կառուցվել և փաստաթղթավորվել են ուրիշների կողմից: Ես ուզում եմ օգտագործել այս առիթը ՝ ձեզ հետ կիսվելու այս ռոբոտի իմ մեկնաբանությամբ:
Ի՞նչ է ինքնահավասարակշռող ռոբոտը:
Ինքնահավասարակշռող ռոբոտը համակարգ է, որն օգտագործում է իներցիոն չափման տվյալները, որոնք հավաքվում են ինքնաթիռի սենսորից ՝ շարունակաբար կարգավորելու իր դիրքը ՝ ուղղահայաց պահելու համար:
Ինչպես է դա աշխատում?
Պարզ անալոգիա, որը պետք է հաշվի առնել, շրջված ճոճանակն է: Այն դեպքում, երբ զանգվածի կենտրոնը գտնվում է առանցքային կետից վեր: Այնուամենայնիվ, մեր դեպքում մենք ճոճանակը սահմանափակում ենք 1 աստիճանի ազատությամբ ՝ ունենալով պտույտի մեկ առանցք, մեր դեպքում ՝ երկու անիվների պտույտի առանցքը: Քանի որ ցանկացած տեսակի խանգարում կառաջացնի ռոբոտի ընկնելը, մեզ անհրաժեշտ է ռոբոտին ակտիվորեն հավասարակշռված պահելու մեթոդ: Այստեղ է, որ գործում է մեր փակ հանգույցի ալգորիթմը (PID վերահսկիչ) ՝ իմանալով, թե որ ուղղությամբ է ընկնում մեր ռոբոտը, մենք կարող ենք կարգավորել մեր շարժիչների պտույտի ուղղությունը ՝ համակարգը հավասարակշռված պահելու համար:
Ինչպե՞ս է գործում փակ հանգույցի ալգորիթմը:
Ռոբոտին հավասարակշռված պահելու հիմնական սկզբունքն այն է, որ եթե ռոբոտը առաջ է ընկնում, այն կփոխհատուցի ՝ ռոբոտի ներքևի հատվածը առաջ տանելով, որպեսզի բռնի իրեն և, հետևաբար, ուղղահայաց պահի: Նմանապես, եթե ռոբոտը հետ է ընկնում, այն փոխհատուցելու է ՝ ռոբոտի ներքևը հետ տանելով ՝ իրեն բռնելու համար:
Այսպիսով, այստեղ մենք պետք է երկու բան անենք, առաջինը ՝ մենք պետք է հաշվարկենք ռոբոտի զգացած թեքության անկյունը (Roll) և արդյունքում ՝ մենք պետք է վերահսկենք շարժիչների պտույտի ուղղությունը:
Ինչպե՞ս ենք չափելու թեքության անկյունը:
Թեքության անկյունը չափելու համար մենք կօգտագործենք իներցիոն չափման միավոր: Այս մոդուլները ներառում են արագացուցիչ և գիրոսկոպ:
- Արագացուցիչը էլեկտրամագնիսական սարք է, որը չափում է պատշաճ արագացումը, սա մարմնի արագացումն է ակնթարթային հանգստի շրջանակներում:
- Գիրոսկոպը էլեկտրամեխանիկական սարք է, որը չափում է անկյունային արագությունը և օգտագործվում է սարքի կողմնորոշումը որոշելու համար:
Այնուամենայնիվ, նման սենսորների օգտագործման խնդիրն այն է, որ.
- Արագացուցիչը շատ աղմկոտ է, բայց ժամանակի ընթացքում հետևողական է, անկյունը տարբերվում է հանկարծակի հորիզոնական շարժումներով
- Մյուս կողմից, գիրոսկոպի արժեքը կշարժվի ժամանակի ընթացքում, բայց սկզբնական շրջանում այն բավականին ճշգրիտ է
Այս ուսանելիի համար ես մտադիր չեմ զտիչ ներդնել, փոխարենը, եթե չօգտագործեմ ինքնաթիռի թվային շարժման մշակումը (DMP): Մյուսները օգտագործել են լրացուցիչ զտիչ ՝ սահուն ազդանշան ստանալու համար, կարող եք ընտրել այն մեթոդը, որը Ձեզ դուր է գալիս: քանի որ ռոբոտը հավասարակշռում է ցանկացած իրագործման հետ:
Պարագաներ
Մասեր:
- Arduino Pro Mini 3.3V 8 8 ՄՀց ATMEGA328- ով
- FT232RL 3.3V 5.5V FTDI USB to TTL սերիական ադապտեր մոդուլ
- GY-521 մոդուլ MPU-6050- ով
- Pairույգ N20 միկրո փոխանցման շարժիչ 6V - 300rpm
- L298N շարժիչի վարորդ
- LM2596S DC- ից DC բակ փոխարկիչ
- Մարտկոց (վերալիցքավորվող 9.7V Li-ion մարտկոցի փաթեթ)
- Մարտկոցի ժապավեն
- Երկու նախատիպային PCB տպատախտակներ
- Արական և իգական վերնագիր կապում են ցատկող լարերը
Գործիքներ:
- Oldոդման երկաթ և զոդ
- Նեյլոնե վեցանկյուն տարանջատիչ
- Պտուտակահան ճշգրիտ հավաքածու
- 3D տպիչ
Քայլ 1: Շինարարություն
Քանի որ ես ունեի մուտք դեպի 3D տպիչ, ես որոշեցի 3D տպել շասսին և օգտագործել կանգառներ ՝ ամեն ինչ իրար միացնելու համար:
Ռոբոտը բաղկացած է 4 շերտից
- Ներքևի շերտը միացնում է շարժիչները և ունի ամրացման կետեր L298N շարժիչի շարժիչի մոդուլի համար
- Հաջորդ շերտում տեղադրված է Arduino pro mini- ի տախտակի նախատիպը և դրան ամրացված վերնագրեր
- Երրորդ շերտը ամրացնում է IMU- ն
- Վերին շերտը, որը ես անվանում եմ «բամպերի շերտ» մարտկոցը, կողպեքի փոխարկիչը և դրամական անջատիչը
Իմ նախագծման հիմնական սկզբունքն էր պահել ամեն ինչ մոդուլային: Դրա պատճառն այն էր, որ եթե բաղադրիչներից մեկի հետ ինչ -որ բան սխալ էր, ես հեշտությամբ կարող էի փոխարինել այն, կամ եթե ինձ անհրաժեշտ էր մեկ այլ նախագծի բաղադրիչ, ես կարող եմ հեշտությամբ վերցնել այն ՝ առանց անհանգստանալու, որ նորից չեմ կարողանա օգտագործել համակարգը:
Քայլ 2: Լարերի տեղադրում
Ես մի քանի կանացի վերնագրեր կպցրեցի ծայրամասային տախտակին, որպեսզի համապատասխանեն Arduino pro մինի վերնագրի քորոցներին: Դրանից հետո ես միացրեցի արական վերնագիրը ՝ ամրացնելով տախտակը, որպեսզի թույլ տամ մուտք գործել I/O: Մնացած բաղադրիչները տեղադրված էին 3D տպված շրջանակի վրա և միացված էին jumper լարերի միջոցով:
Քայլ 3. Վերահսկողության տեսություն
Այժմ մենք անցնում ենք նախագծի առանցքին: Ռոբոտը հավասարակշռված պահելու համար մենք պետք է ստեղծենք համապատասխան կառավարման ազդանշան `շարժիչները ճիշտ ուղղությամբ և ճիշտ արագությամբ ռոբոտին հավասարակշռված և կայուն պահելու համար: Դա անելու համար մենք կօգտագործենք հանրաճանաչ կառավարման հանգույցի ալգորիթմ, որը հայտնի է որպես PID վերահսկիչ: Քանի որ հապավումը ենթադրում է, որ այս վերահսկիչի համար կան երեք տերմիններ, դրանք համամասնական, անբաժանելի և ածանցյալ տերմիններն են: Նրանցից յուրաքանչյուրն ուղեկցվում է գործակիցներով, որոնք որոշում են դրանց ազդեցությունը համակարգի վրա: Հաճախ վերահսկիչի իրականացման առավել ժամանակատար մասը յուրաքանչյուր յուրահատուկ համակարգի ձեռքբերումների կարգավորումն է `առավել օպտիմալ պատասխան ստանալու համար:
- Համամասնական տերմինը ուղղակիորեն բազմապատկում է սխալը ՝ ելք տալու համար, ուստի որքան մեծ է սխալը, այնքան մեծ է պատասխանը
- Ինտեգրալ տերմինը առաջացնում է պատասխան ՝ հիմնված սխալի կուտակման վրա ՝ կայուն վիճակի սխալը նվազեցնելու համար: Որքան երկար համակարգն անհավասարակշռված է, այնքան արագ կպատասխանեն շարժիչները
- Ածանցյալ տերմինը սխալի ածանցյալն է, որն օգտագործվում է ապագա արձագանքը կանխատեսելու համար և դրանով իսկ նվազեցնում է տատանումները կայուն վիճակը գերազանցելու պատճառով:
Այս ալգորիթմի հիմնական սկզբունքն է անընդհատ հաշվարկել թեքության անկյունը, որը ցանկալի դիրքի և ընթացիկ դիրքի տարբերությունն է, սա հայտնի է որպես սխալ: Այնուհետև այն օգտագործում է այս սխալի արժեքները և հաշվարկում է համամասնական, անբաժանելի և ածանցյալ պատասխանների գումարը `ելք ստանալու համար, ինչը վերահսկիչ ազդանշաններն են, որոնք ուղարկվում են շարժիչներին: Արդյունքում, եթե սխալը մեծ է, շարժիչներին ուղարկվող կառավարման ազդանշանը մեծ արագությամբ կշրջի շարժիչները `հավասարակշռված վիճակի հասնելու համար: Նմանապես, եթե սխալը փոքր է, կառավարման ազդանշանը կշրջի շարժիչները ցածր արագությամբ `ռոբոտին հավասարակշռված պահելու համար:
Քայլ 4: Օգտագործելով MPU 6050
MPU6050 գրադարան
github.com/jrowberg/i2cdevlib/tree/master/…
Ոչ բոլոր սենսորները միմյանց ճշգրիտ կրկնօրինակներ են: Արդյունքում, եթե երկու MPU 6050 փորձարկեք, կարող եք արագացուցիչի և գիրոսկոպի տարբեր արժեքներ ստանալ, երբ դրանք նույն մակերևույթի վրա են դրված: Այս մշտական անկյան փոխհատուցումը հաղթահարելու համար մենք պետք է նշենք մեր օգտագործած յուրաքանչյուր սենսորը: Այս սցենարի գործարկում.
www.i2cdevlib.com/forums/topic/96-arduino-…
գրել է Լուիս Ռոդենասը, մենք կստանանք փոխհատուցում: Օֆսեթային սխալները կարող են վերացվել ՝ setup () ռեժիմում սահմանելով offset արժեքները:
Թվային շարժման պրոցեսորի օգտագործումը
MPU6050- ը պարունակում է DMP (թվային շարժման պրոցեսոր):
Ի՞նչ է DMP- ը: Դուք կարող եք մտածել DMP- ի մասին որպես ներկառուցված միկրոկառավարիչ, որը մշակում է mpu6050- ի վրա 3 առանցքի գիրոսկոպից և 3 առանցքի արագացուցիչից բարդ շարժումները ՝ օգտագործելով իր շարժման միաձուլման ալգորիթմները: Բեռնաթափել այն մշակումը, որն այլապես կկատարեր Arduino- ն:
Ինչպե՞ս օգտագործել այն: Պարզելու համար, թե ինչպես օգտագործել DMP- ն, անցեք MPU6050_DMP6 ուրվագծի օրինակով, որը գալիս է MPU6050 գրադարանին (Arduino IDE- ում ՝ Ֆայլ-> Օրինակ-> MPU6050-> MPU6050_DMP6): Սա նաև լավ հնարավորություն է ստուգելու, որ ձեր սենսորն իրականում աշխատում է, և որ լարերը ճիշտ են:
Քայլ 5: Կոդավորում
Ես օգտագործեցի Arduino IDE- ն և FTDI ինտերֆեյսը `Arduino pro mini- ն ծրագրավորելու համար:
Օգտագործելով էսքիզների օրինակը (MPU6050_DMP6), որը գալիս է MPU6050 գրադարանին որպես իմ հիմնական կոդ, ես ավելացրել եմ PID () և MotorDriver () գործառույթները:
Ավելացնել գրադարանը
- MPU6050. MPU6050 սենսորից օգտվելու համար մենք պետք է ներբեռնենք I2C մշակողի գրադարանը ffեֆ Ռոուբերգից և այն ավելացնենք Arduino «գրադարաններ» պանակում, որը գտնվում է ձեր համակարգչի ծրագրային ֆայլերում:
- Մետաղալար. Մեզ նաև անհրաժեշտ է Wire գրադարանը, որը թույլ կտա մեզ շփվել I2C սարքերի հետ:
Կեղծ կոդ
Ներառել գրադարանները.
- Մետաղալար. Ժ
- MPU6050
- I2Cdev.h
Նախնականացնել փոփոխականները, հաստատունները և օբյեկտները
Կարգավորում ()
- Սահմանեք շարժիչների կառավարման համար քորոցային ռեժիմ
- Սահմանեք PIN ռեժիմը կարգավիճակի LED- ի համար
- Նախնականացրեք MPU6050- ը և սահմանեք փոխհատուցված արժեքներ
PID ()
Հաշվարկել PID արժեքը
MotorDriver (PID պատասխան)
Օգտագործեք PID արժեքը `շարժիչների արագությունն ու ուղղությունը վերահսկելու համար
Օղակ ()
- Ստացեք տվյալներ DMP- ից
- Callանգահարեք PID () MotorDriver () գործառույթներին
Քայլ 6: PID- ի կարգաբերման կարգ
Սա նախագծի ամենա հոգնեցուցիչ մասն է և պահանջում է մի փոքր համբերություն, եթե չբախտավորվեք: Ահա քայլերը.
- I և D տերմինները սահմանեք 0
- Ռոբոտին բռնելով ՝ կարգավորեք P- ն այնպես, որ ռոբոտը պարզապես սկսի տատանվել հավասարակշռության դիրքի շուրջ
- P հավաքածուի հետ ավելացրեք I այնպես, որ հավասարակշռությունից դուրս ռոբոտը ավելի արագ արագանա: P- ի և I- ի հետ պատշաճ կերպով կարգավորված լինելու դեպքում ռոբոտը պետք է կարողանա ինքնահավասարակշռվել առնվազն մի քանի վայրկյան ՝ որոշակի տատանումներով
- Ի վերջո, D- ի ավելացումը նվազեցնում է տատանումը
Եթե առաջին փորձը գոհացուցիչ արդյունքներ չի տալիս, կրկնում եք P.- ի այլ արժեք ունեցող քայլերը: Տեղյակ եղեք նաև, որ կարող եք հետագայում ճշգրտել PID- ի արժեքները `կատարումն ավելի բարձրացնելու համար: Այստեղ արժեքները կախված են սարքավորումից, մի զարմանաք, եթե ստանաք շատ մեծ կամ շատ փոքր PID արժեքներ:
Քայլ 7: Եզրակացություն
Օգտագործված միկրո շարժիչների շարժիչները դանդաղ էին արձագանքում մեծ խանգարումներին, և քանի որ համակարգը չափազանց թեթև էր, բավարար իներցիա չկար `ցանկալի ճոճանակի էֆեկտ ստանալու համար, այնպես որ, եթե ռոբոտը թեքվի առաջ, այն պարզապես կթեքվի անկյան տակ և կվազի առաջ: Վերջապես, 3D տպված անիվները վատ ընտրություն էին, քանի որ դրանք անընդհատ սայթաքում էին:
Բարելավման առաջարկներ.
- Ավելի արագ պտտվող շարժիչներ ՝ ավելի մեծ պտտվող մոմենտով, այսինքն ՝ DC շարժիչների դեպքում լարման աստիճանը բարձր է, ավելի մեծ ոլորող մոմենտը
- ստանալ ավելի ծանր մարտկոց կամ պարզապես զանգվածը մի փոքր բարձրացնել
- Փոխարինեք 3D տպված անիվները ռետինե անիվներով `ավելի մեծ քաշքշուկ ստանալու համար
Խորհուրդ ենք տալիս:
Ինքնահավասարակշռող ռոբոտ Magicbit- ից ՝ 6 քայլ
Ինքնահավասարակշռող ռոբոտ Magicbit- ից. Այս ձեռնարկը ցույց է տալիս, թե ինչպես պատրաստել ինքնահավասարակշռող ռոբոտ ՝ օգտագործելով Magicbit dev տախտակը: Մենք օգտագործում ենք magicbit- ը որպես զարգացման տախտակ այս նախագծում, որը հիմնված է ESP32- ի վրա: Հետևաբար, այս նախագծում կարող է օգտագործվել ցանկացած ESP32 տախտակ
HeadBot-STEM ուսուցման և իրազեկման համար ինքնահավասարակշռող ռոբոտ. 7 քայլ (նկարներով)
HeadBot-ինքնակարգավորվող ռոբոտ STEM ուսուցման և հեռարձակման համար. Ռոբոտաշինության մրցույթ, Յուջին, Օրեգոն: Այս հայտնի ռոբոտը դարձնում է
Ինչպես ստեղծել հեռակառավարվող 3D տպագրությամբ ինքնահավասարակշռող ռոբոտ. 9 քայլ (նկարներով)
Ինչպես ստեղծել հեռակառավարվող 3D տպագրությամբ ինքնահավասարակշռող ռոբոտ. Սա B-robot- ի նախորդ տարբերակի էվոլյուցիան է: 100% ԲԱ SOԻՆ / Arduino ռոբոտ: ԿՈԴԸ, 3D մասերը և էլեկտրոնիկան բաց են, այնպես որ ազատ զգալ փոփոխեք այն կամ ստեղծեք ռոբոտի հսկայական տարբերակ: Եթե ունեք կասկածներ, գաղափարներ կամ օգնության կարիք ունեք, կատարեք
Proyecto Laboratorio De Mecatrónica (Երկու անիվի հաշվեկշռի ռոբոտ) ՝ 6 քայլ
Proyecto Laboratorio De Mecatrónica (Երկու անիվի հաշվեկշռի ռոբոտ). Այս նախագիծը ամենից շատն է, աշխատում է և աշխատում է «Երկու անիվի հաշվեկշռի ռոբոտ» մշակելու համար: paso a paso y con explicación y concejos. Este es un sistema que consiste en que el robot no se debe caer, se debe de mantener en el
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ ՝ 8 քայլ
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ. Մենք կառուցել ենք համակցված հավասարակշռող և եռանիվ ռոբոտ `կրթական օգտագործման համար դպրոցներում և դպրոցից հետո կրթական ծրագրերում: Ռոբոտը հիմնված է Arduino Uno- ի, սովորական վահանի վրա (շինարարության բոլոր մանրամասները տրամադրված են), Li Ion մարտկոցի տուփով (բոլորը կառուցված են