Բովանդակություն:
- Քայլ 1: Աշխատանքի սկզբունքը
- Քայլ 2: Կառուցեք
- Քայլ 3: հավաքում
- Քայլ 4. Նախագծեք ձեր գծի ուղին
- Քայլ 5: Programրագրեք ձեր կոդը
- Քայլ 6: ԿԱՏԱՐՎԱ Է
Video: PID- ի վրա հիմնված ռոբոտին հետևող POLOLU QTR 8RC սենսորային զանգվածով `6 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Բարեւ Ձեզ!
Սա իմ առաջին գրառումն է հրահանգների վերաբերյալ, և այսօր ես ձեզ կհանեմ ճանապարհի վրա և կբացատրեմ, թե ինչպես կարելի է լիցքավորել PID- ի վրա հիմնված գիծը ՝ օգտագործելով ռոբոտին QTR-8RC սենսորային զանգվածի միջոցով:
Ռոբոտի շենք գնալուց առաջ մենք պետք է հասկանանք, թե ինչ է կոչվում որպես PID,
Քայլ 1: Աշխատանքի սկզբունքը
Ինչ է PID- ը ??
PID տերմինը նշանակում է համամասնական, անբաժանելի, ածանցյալ: Պարզապես, այն, ինչ մենք անում ենք PID- ին հետևյալ տողով ներգրավելու հետ, այն է, որ մենք ռոբոտին հրաման ենք տալիս հետևել տողին և հայտնաբերել շրջադարձերը `հաշվարկելով սխալը` հաշվի առնելով, թե ինչպես հեռու է գնացել ուղուց:
հիմնական տերմինները, ինչպես նշված են polalu փաստաթղթերում
Համամասնական արժեքը մոտավորապես համաչափ է ձեր ռոբոտի դիրքին գծի նկատմամբ: Այսինքն, եթե ձեր ռոբոտը ճշգրիտ կենտրոնացած է գծի վրա, մենք ակնկալում ենք համամասնական ճշգրիտ 0:
Ինտեգրալ արժեքը գրանցում է ձեր ռոբոտի շարժման պատմությունը. Այն համաչափ տերմինի բոլոր արժեքների գումարն է, որոնք գրանցվել են ռոբոտի գործարկման պահից:
Ածանցյալը համաչափ արժեքի փոփոխության արագությունն է:
Այս ձեռնարկում մենք կխոսենք միայն Kp և Kd տերմինների մասին, սակայն արդյունքները կարող են կատարվել նաև Ki տերմինի միջոցով: Այն ցուցումները, որոնք մենք ստանում ենք սենսորից, ոչ միայն անալոգային ընթերցումներ են, այլև ռոբոտի դիրքային ընթերցումներ:. Այսպիսով, հիմնականում սենսորը տրամադրում է 0 -ից մինչև 2500 արժեքներ `առավելագույն անդրադարձումից մինչև նվազագույն անդրադարձում, բայց, միևնույն ժամանակ, նաև տեղեկատվություն է տրամադրում այն մասին, թե որքան հեռու է ռոբոտը շեղվել գծից):
Այժմ մենք պետք է հաշվի առնենք սխալի տերմինը. Սա երկու արժեքների սահմանային արժեքի և ընթացիկ արժեքի տարբերությունն է: արժեքը սենսորի ակնթարթային ընթերցումներն են: Օրինակ. գծի և մոտ 7000 -ի դեպքում, եթե դուք չափազանց աջ եք): Մեր նպատակն է սխալը դարձնել զրո: Այդ դեպքում միայն ռոբոտը կարող է սահուն հետևել գծին:
Հետո գալիս է հաշվարկման մասը,.
1) հաշվարկել սխալը:
Սխալ = Սահմանման արժեք - Ընթացիկ արժեք = 3500 - դիրք
Քանի որ ես օգտագործում եմ 8 տվիչ: սենսորը տալիս է 3500 դիրքի ընթերցում, երբ ռոբոտը կատարյալ տեղադրված է: Այժմ, երբ մենք հաշվարկել ենք մեր սխալը, այն սահմանը, որով մեր ռոբոտը շեղվում է ուղու վրայով, ժամանակն է, որ մենք մանրակրկիտ ուսումնասիրենք սխալը և համապատասխանաբար կարգավորենք շարժիչի արագությունը
2) որոշել շարժիչների ճշգրտված արագությունները:
MotorSpeed = Kp * Սխալ + Kd * (Սխալ - LastError);
LastError = Սխալ;
RightMotorSpeed = RightBaseSpeed + MotorSpeed;
LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;
Տրամաբանորեն ասած, 0 -ի սխալը նշանակում է, որ մեր ռոբոտը ձախ է, ինչը նշանակում է, որ մեր ռոբոտը պետք է մի փոքր աջ գնա, ինչը, իր հերթին, նշանակում է, որ աջ շարժիչը պետք է դանդաղեցնի, իսկ ձախը `արագանա: ՍԱ PID!
MotorSpeed արժեքը որոշվում է հենց հավասարումից: RightBaseSpeed- ը և LeftBaseSpeed- ը այն արագություններն են (PWM 0-255 ցանկացած արժեք), որոնցով ռոբոտը աշխատում է, երբ սխալը զրո է:
Իմ կցած կոդը ներառում է նաև, թե ինչպես կարելի է ստուգել սենսորի դիրքի արժեքները, այնպես որ կարող եք բացել սերիական մոնիտորը և վերբեռնել կոդը և ինքներդ համոզվել, թե ինչպես են շարժիչները պտտվում դիրքի փոփոխման դեպքում:
Եթե ձեր ռոբոտը գործարկելիս դժվարությունների հանդիպեք, պարզապես ստուգեք արդյոք դա և տեսեք ՝ փոխելով հավասարումների նշանները !!!
Եվ հիմա Kp- ի և Kd- ի գտնելու ամենաբարդ մասը, ես ստիպված էի ավելի քան 1 ժամ ծախսել իմ ռոբոտը կատարելապես կարգավորելու համար: Պատահական արժեքներ դնելու փոխարեն ես գտա դա որոշելու ավելի հեշտ մեթոդ:
- Սկսեք kp- ով և Kd- ով հավասար 0 -ով, և սկսեք Kp- ով, նախ փորձեք Kp- ը սահմանել 1 և դիտեք ռոբոտը, մեր նպատակն է հետևել գծին, նույնիսկ եթե այն տատանվում է, եթե ռոբոտը գերազանցի և գիծը կորցնի, նվազեցրեք kp արժեքը. Եթե ռոբոտը չի կարող շրջադարձ կատարել և դանդաղաշարժ լինելը բարձրացնել Kp արժեքը:
- Երբ ռոբոտը ինչ -որ չափով հետևում է տողին, կարգավորեք Kd արժեքը (Kd արժեքը> Kp արժեքը) սկսեք 1 -ից և ավելացրեք արժեքը, մինչև չտեսնեք հարթ շարժիչ ՝ ավելի քիչ տատանումներով:
- Երբ ռոբոտը սկսի հետևել գծին, բարձրացրեք արագությունը և տեսեք, արդյոք այն ի վիճակի՞ է պահպանել և հետևել գծին:
Նկատի ունեցեք, որ արագությունը անմիջական ազդեցություն ունի PID- ի կարգաբերման վրա, և երբեմն գուցե ձեզ անհրաժեշտ լինի վերամիավորվել ՝ ձեր ռոբոտի արագությանը համապատասխանելու համար:
Այժմ մենք կարող ենք անցնել մեր ռոբոտի կառուցմանը:
Քայլ 2: Կառուցեք
Arduino atmega 2560 USB մալուխով - սա հիմնական օգտագործվող միկրոկոնտրոլերն է:
Շասսի- ռոբոտի շասսիի համար ես օգտագործել եմ 2 շրջանաձև ակրիլային թիթեղներ, որոնք օգտագործվում են մեկ այլ նախագծի համար, որը կատարյալ է դրա համար: օգտագործելով ընկույզներ և պտուտակներ ես կառուցել եմ 2 հարկանի շասսի, որպեսզի կարողանամ այլ մոդուլներ կցել վերին ափսեին: կամ կարող եք օգտագործել պատրաստի շասսի:
www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…
Միկրոմետաղային շարժիչներ- ռոբոտին արագ պտտվող շարժիչներ էին պետք, որպեսզի կարողանար հաղթահարել PID ռեժիմը, դրա համար ես օգտագործել եմ 6V 400rpm արագությամբ շարժիչներ և համապատասխան բռնակ անիվներ:
www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…
www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…
QTR 8Rc սենսորային զանգված - սա կարող է օգտագործվել գծերի հետևման համար, ինչպես արդեն նշվեց, ես կարծում եմ, որ դուք այժմ հստակ հասկացել եք, թե ինչպես գործել սենսորային զանգվածը PID- ով: կառուցել արագ գծի հետևորդ:
www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…
TB6612FNG Շարժիչի վարորդ. Ես ուզում էի օգտագործել շարժիչ, որը կարող է արագորեն կարգավորել շրջադարձերը և փոխել ուղղությունները, որն ունակ է արդյունավետ արգելակելու շարժիչները, երբ PWM ազդանշանը ցածր էր:
www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…
Լիպո մարտկոց- 11.1 Վ լիպո մարտկոցը օգտագործվում է ռոբոտին էներգիա ապահովելու համար: lipo մարտկոցը կամ 6V Ni-MH մարտկոցի փաթեթը կատարյալ կլինի: Այդ պատճառով ես պետք է օգտագործեմ buck փոխարկիչ `լարումը 6 Վ-ի փոխարկելու համար:
11.1V-
7.4 V-
Buck փոխարկիչ մոդուլ-
Ի հավելումն դրա, ձեզ անհրաժեշտ են թռչկոտող լարեր, ընկույզներ և պտուտակներ, պտուտակահաններ և էլեկտրական ժապավեններ, ինչպես նաև կայծակաճարմանդ `համոզվելու համար, որ ամեն ինչ տեղում է:
Քայլ 3: հավաքում
միացրեք շարժիչները և մի փոքր պտտվող անիվը ափսեի մեջ ՝ օգտագործելով ընկույզներ և պտուտակներ, այնուհետև տեղադրեք QTR սենսորը, շարժիչի վարորդը, arduino տախտակը և վերջապես մարտկոցը շասսիին:
Ահա ինտերնետում գտած կատարյալ դիագրամ, որը պատմում է ձեզ, թե ինչպես պետք է կատարվեն կապերը:
Քայլ 4. Նախագծեք ձեր գծի ուղին
Այժմ թվում է, որ ձեր նախագիծը գրեթե ավարտված է: Համոզվեք, որ ամեն ինչ լավ եք կպցրել: և առայժմ խուսափեք 90 աստիճանի անկյունային հատումներից և խաչմերուկներից, քանի որ դա կոդավորման բարդ դեպք է:
Քայլ 5: Programրագրեք ձեր կոդը
1. Ներբեռնեք և տեղադրեք Arduino- ն
Սեղանի IDE
· Պատուհաններ -
· Mac OS X -
· Linux -
2. Ներբեռնեք և տեղադրեք QTR 8 RC սենսորային զանգվածի ֆայլը Arduino գրադարանների պանակում:
·
· Տեղադրեք ֆայլերը ճանապարհին `C: / Arduino / գրադարաններ
3. Ներբեռնեք և բացեքLINEFOLLOWING.ino
4. Տեղադրեք կոդը arduino տախտակին USB մալուխի միջոցով
Քայլ 6: ԿԱՏԱՐՎԱ Է
այժմ դուք ունեք ձեր կողմից պատրաստված ռոբոտի հաջորդ գիծ:
Հուսով եմ, որ այս ձեռնարկը օգտակար էր:
շուտով կհանդիպենք ևս մեկ նոր նախագծով:
Վայելեք շինարարությունը !!
Խորհուրդ ենք տալիս:
Գունավոր հետևող ռոբոտ ՝ հիմնված բազմակողմանի անիվի և OpenCV- ի վրա ՝ 6 քայլ
Գունավոր հետևող ռոբոտ ՝ հիմնված համակողմանի անիվի և OpenCV- ի վրա. Ես օգտագործում եմ անիվի բազմակողմանի շասսի ՝ իմ գույնի հետագծումն իրականացնելու համար, և ես օգտագործում եմ բջջային ծրագրակազմ, որը կոչվում է OpenCVBot: Շնորհիվ այստեղի ծրագրաշարի մշակողների, շնորհակալություն: OpenCV Bot- ը իրականում հայտնաբերում կամ հետևում է իրական ժամանակի ցանկացած օբյեկտի ՝ պատկերի մշակման միջոցով
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ - IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. 4 քայլ
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ | IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. Բարև ձեզ, այս հրահանգների մեջ մենք կդարձնենք ոչ կոնտակտային ջերմաչափ arduino- ով: Քանի որ երբեմն հեղուկի/պինդի ջերմաստիճանը չափազանց բարձր է կամ ցածր, ապա դժվար է դրա հետ կապ հաստատել և կարդալ այդ դեպքում ջերմաստիճանը
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 Based Midi Generator). Բարև, այսօր ես կբացատրեմ, թե ինչպես պատրաստել ձեր սեփական եղանակի վրա հիմնված փոքր երաժշտության գեներատոր: Այն հիմնված է ESP8266- ի վրա, որը նման է Arduino- ին և արձագանքում է ջերմաստիճանին, անձրևին: և լույսի ուժգնություն: Մի ակնկալեք, որ այն ամբողջ երգեր կամ ակորդներ կհաղորդի
Արբինոյի վրա հիմնված ռոբոտին հետևելը և խուսափելը. 5 քայլ
Ռոբոտին հետևելը և խուսափելը ՝ հիմնված Arduino- ի վրա. Սա պարզ նախագիծ է, որը հետևում է կամ խուսափում է լույսից: Ես այս մոդելավորումը կատարել եմ Proteus 8.6 pro- ում: Պահանջվող բաղադրիչները ՝ -1) Arduino uno. 2) 3 LDR.3) 2 Dc Gear Motors: 4) Մեկ Servo.5) Երեք 1k դիմադրողականություն .6) մեկ H-Bridge l290D7) Մեկը & Անջատիչ անջատիչ [f
Ինչպես միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. 3 քայլ (նկարներով)
Ինչպե՞ս միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. Այդ գծից ամենաճկուն և էժան սարքերից են Sonoff Basic- ը և Sonoff Dual- ը: Սրանք Wi-Fi- ով միացված անջատիչներ են ՝ հիմնված հիանալի չիպի ՝ ESP8266- ի վրա: Մինչդեռ