Բովանդակություն:

PID- ի վրա հիմնված ռոբոտին հետևող POLOLU QTR 8RC սենսորային զանգվածով `6 քայլ (նկարներով)
PID- ի վրա հիմնված ռոբոտին հետևող POLOLU QTR 8RC սենսորային զանգվածով `6 քայլ (նկարներով)

Video: PID- ի վրա հիմնված ռոբոտին հետևող POLOLU QTR 8RC սենսորային զանգվածով `6 քայլ (նկարներով)

Video: PID- ի վրա հիմնված ռոբոտին հետևող POLOLU QTR 8RC սենսորային զանգվածով `6 քայլ (նկարներով)
Video: Ռոբին. արհեստական բանականության վրա հիմնված առաջին հայկական ռոբոտը 2024, Հուլիսի
Anonim
PID- ի վրա հիմնված տող ռոբոտին հետևող POLOLU QTR 8RC սենսորային զանգվածով
PID- ի վրա հիմնված տող ռոբոտին հետևող POLOLU QTR 8RC սենսորային զանգվածով

Բարեւ Ձեզ!

Սա իմ առաջին գրառումն է հրահանգների վերաբերյալ, և այսօր ես ձեզ կհանեմ ճանապարհի վրա և կբացատրեմ, թե ինչպես կարելի է լիցքավորել 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 ժամ ծախսել իմ ռոբոտը կատարելապես կարգավորելու համար: Պատահական արժեքներ դնելու փոխարեն ես գտա դա որոշելու ավելի հեշտ մեթոդ:

  1. Սկսեք kp- ով և Kd- ով հավասար 0 -ով, և սկսեք Kp- ով, նախ փորձեք Kp- ը սահմանել 1 և դիտեք ռոբոտը, մեր նպատակն է հետևել գծին, նույնիսկ եթե այն տատանվում է, եթե ռոբոտը գերազանցի և գիծը կորցնի, նվազեցրեք kp արժեքը. Եթե ռոբոտը չի կարող շրջադարձ կատարել և դանդաղաշարժ լինելը բարձրացնել Kp արժեքը:
  2. Երբ ռոբոտը ինչ -որ չափով հետևում է տողին, կարգավորեք Kd արժեքը (Kd արժեքը> Kp արժեքը) սկսեք 1 -ից և ավելացրեք արժեքը, մինչև չտեսնեք հարթ շարժիչ ՝ ավելի քիչ տատանումներով:
  3. Երբ ռոբոտը սկսի հետևել գծին, բարձրացրեք արագությունը և տեսեք, արդյոք այն ի վիճակի՞ է պահպանել և հետևել գծին:

Նկատի ունեցեք, որ արագությունը անմիջական ազդեցություն ունի 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: ԿԱՏԱՐՎԱ Է

Image
Image

այժմ դուք ունեք ձեր կողմից պատրաստված ռոբոտի հաջորդ գիծ:

Հուսով եմ, որ այս ձեռնարկը օգտակար էր:

շուտով կհանդիպենք ևս մեկ նոր նախագծով:

Վայելեք շինարարությունը !!

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