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

Self Balancing Robot - PID Control Algorithm: 3 Steps
Self Balancing Robot - PID Control Algorithm: 3 Steps

Video: Self Balancing Robot - PID Control Algorithm: 3 Steps

Video: Self Balancing Robot - PID Control Algorithm: 3 Steps
Video: PID Control: Arduino Self-Balancing Robot 2024, Դեկտեմբեր
Anonim
Self Balancing Robot - PID վերահսկման ալգորիթմ
Self Balancing Robot - PID վերահսկման ալգորիթմ

Այս նախագիծը ստեղծվել է, քանի որ ինձ հետաքրքրում էր ավելի շատ ծանոթանալ Control Algorithms- ին և ինչպես արդյունավետորեն կիրառել PID օղակները: Նախագիծը դեռ մշակման փուլում է, քանի որ դեռ պետք է ավելացվի Bluetooth մոդուլ, որը թույլ կտա վերահսկել ռոբոտը Bluetooth- ով աշխատող սմարթֆոնից:

Օգտագործված N20 DC շարժիչները համեմատաբար էժան էին, և, հետևաբար, դրանցում զգալի խաղ է ցուցադրվում: Սա հանգեցնում է մի փոքր ցնցման, քանի որ շարժիչները հաղթահարում են «թուլությունը», քանի որ այն ոլորող մոմենտ է կիրառում անիվների վրա: Հետևաբար, անհնար է հասնել կատարյալ հարթ շարժման: Իմ գրած կոդը ողջամտորեն պարզ է, բայց արդյունավետորեն ցուցադրում է PID ալգորիթմի հնարավորությունները:

Նախագծի ամփոփում

Ռոբոտի շասսին 3D տպագրությամբ օգտագործվում է Ender 3 տպիչով և նախատեսված է իրար սեղմելու համար:

Ռոբոտը կառավարվում է Arduino Uno- ի կողմից, որը վերցնում է սենսորային տվյալները MPU6050- ից և վերահսկում է DC շարժիչները արտաքին շարժիչի միջոցով: Այն աշխատում է 7.4V, 1500mAh մարտկոցով: Շարժիչի վարորդը դա կարգավորում է 5 Վ -ի ՝ Arduino- ն սնուցելու համար և 7.4 Վ է մատակարարում շարժիչներին:

Theրագիրը զրոյից գրվել է gitHub- ի «Arduino-KalmanFilter-master» և «Arduino-MPU6050-master» գրադարանների օգնությամբ:

Պարագաներ:

  • 3D տպագիր մասեր
  • Arduino UNO
  • MPU6050 6 առանցքի ցուցիչ
  • D. C շարժիչ
  • N20 DC շարժիչներ (x2)
  • 9 Վ մարտկոց

Քայլ 1: Ռոբոտների կառուցում

Ռոբոտների կառուցում
Ռոբոտների կառուցում
Ռոբոտների կառուցում
Ռոբոտների կառուցում
Ռոբոտների կառուցում
Ռոբոտների կառուցում

Տպել և հավաքել

Ամբողջ կառուցվածքը պետք է սեղմված լինի, բայց ես սոսնձման սոսինձ եմ օգտագործել ՝ բաղադրիչներն ապահովելու համար, որպեսզի ռոբոտը հավասարակշռելիս ամբողջովին կոշտ լինի:

Ես նախագծել եմ Fusion 360- ի մասերը և օպտիմալացրել եմ յուրաքանչյուր մասի `առանց հենարանների տպագրության, որպեսզի թույլ տամ ավելի ամուր հանդուրժողականություն և մակերևույթի ավելի մաքուր ավարտ:

Ender 3 տպիչի վրա օգտագործված պարամետրերն էին `0.16 մմ շերտի բարձրություն @ 40% լցնում բոլոր մասերի համար:

Քայլ 2. 3D տպման ռոբոտ

3D տպման ռոբոտ
3D տպման ռոբոտ

Շասսի (x1)

Ձախ անիվ (x2)

Ձախ շարժիչային բնակարան (x2)

Arduino պատյան (x1)

Քայլ 3. PID վերահսկման ալգորիթմ

PID վերահսկման ալգորիթմ
PID վերահսկման ալգորիթմ

Ես զրոյից գրել եմ PID վերահսկման ալգորիթմ ՝ օգտագործելով gitHub- ի «Arduino-KalmanFilter-master» և «Arduino-MPU6050-master» գրադարանները:

Ալգորիթմի նախադրյալը հետևյալն է.

  • Կարդացեք MPU6050- ի հում տվյալները
  • Օգտագործեք Kalman զտիչը ՝ վերլուծելու ինչպես գիրոսկոպի, այնպես էլ արագացուցիչի տվյալները ՝ սենսորի արագացման պատճառով գիրոսկոպի ընթերցումների անճշտությունները վերացնելու համար: Սա վերադարձնում է համեմատաբար հարթեցված արժեքը սենսորի աստիճանի աստիճանների վրա `երկու տասնորդական նիշ:
  • Հաշվիր E rror- ը անկյան մեջ, այսինքն. Սենսորի և սահմանման կետի միջև ընկած անկյունը:
  • Հաշվիր համաչափ սխալը որպես (Համաչափության հաստատուն x սխալ):
  • Հաշվիր ինտեգրալ սխալը որպես (Ինտեգրման հաստատուն x սխալ) վազող գումար:
  • Հաշվիր ածանցյալ սխալը որպես հաստատուն [տարբերակման հաստատուն] x (սխալի փոփոխություն / ժամանակի փոփոխություն]
  • Գումարեք բոլոր սխալները `շարժիչներին ուղարկվող արագությունը տալու համար:
  • Սխալների անկյունի նշանի հիման վրա հաշվարկեք, թե որ ուղղությամբ շարժել շարժիչները:
  • Օղակը գործելու է անորոշ ժամանակով և հիմնվելու է ելքի վրա, քանի որ մուտքը տատանվում է: Դա հետադարձ կապ է, որն օգտագործում է ելքային արժեքները որպես հաջորդ մուտքի նոր մուտքային արժեքներ:

Վերջնական քայլը PID հանգույցի Kp, Ki & Kd պարամետրերի կարգավորումն է:

  1. Լավ ելակետ է դանդաղ բարձրացնել Kp- ն, մինչև ռոբոտը տատանվի հավասարակշռության կետի շուրջը և կարողանա ընկնել:
  2. Հաջորդը, սկսեք Kd- ն Kp- ի արժեքից մոտ 1% -ով և դանդաղ ավելացեք, մինչև տատանումներն անհետանան, և ռոբոտը սահուն սահում է սղվելիս:
  3. Ի վերջո, Ki- ով սկսեք Kp- ի մոտ 20% -ը և տարբերվեք մինչև ռոբոտը «գերազանցի» սահմանված կետը `ակտիվորեն ընկնելու և ուղղահայաց վերադառնալու համար:

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