Turinys:

Savaime balansuojantis robotas naudojant PID algoritmą (STM MC): 9 žingsniai
Savaime balansuojantis robotas naudojant PID algoritmą (STM MC): 9 žingsniai

Video: Savaime balansuojantis robotas naudojant PID algoritmą (STM MC): 9 žingsniai

Video: Savaime balansuojantis robotas naudojant PID algoritmą (STM MC): 9 žingsniai
Video: Makeblock konstruktorius robotas mBot Ultimate 2.0 2024, Liepa
Anonim
Savaime balansuojantis robotas, naudojant PID algoritmą (STM MC)
Savaime balansuojantis robotas, naudojant PID algoritmą (STM MC)

Pastaruoju metu daug nuveikta atliekant objektų balansavimą. Savarankiško balansavimo koncepcija prasidėjo nuo apverstos švytuoklės balansavimo. Ši koncepcija išplėtė ir orlaivių dizainą. Šiame projekte mes sukūrėme nedidelį savaime balansuojančio roboto modelį, naudojant PID (proporcinį, integralų, išvestinį) algoritmą. Nuo tada šis metodas yra naujas pramoninių procesų valdymo sistemų veidas. Šioje ataskaitoje apžvelgiami objektų savaiminio balansavimo metodai. Šis projektas buvo vykdomas kaip semestro projektas, skirtas suprasti PID koreliaciją su įvairių pramonės procesų efektyvumu. Čia mes sutelkiame dėmesį tik į trumpą PID kontrolės efektyvumo ir taikymo apžvalgą. Šis dokumentas buvo parengtas trumpai supažindinant su valdymo sistemomis ir susijusiomis terminijomis, kartu su projekto motyvais. Buvo atlikti eksperimentai ir stebėjimai, aprašyti privalumai ir trūkumai, baigiant būsimais patobulinimais. Buvo sukurtas savaime balansuojančio roboto modelis, skirtas suprasti PID efektyvumą valdymo sistemos pasaulyje. Atliekant keletą griežtų bandymų ir eksperimentų, buvo nustatyti PID kontrolės sistemos privalumai ir trūkumai. Buvo nustatyta, kad nepaisant daugelio PID kontrolės pranašumų, palyginti su ankstesniais metodais, vis dėlto ši sistema reikalauja daug patobulinimų. Tikimasi, kad skaitytojas gerai supras savęs balansavimo svarbą, PID kontrolės efektyvumą ir trūkumus.

1 žingsnis: Įvadas

Atsiradus kompiuteriams ir industrializavus procesus, per visą žmogaus istoriją visada buvo atliekami tyrimai, siekiant sukurti būdų, kaip atnaujinti procesus ir, svarbiausia, juos valdyti naudojant mašinas savarankiškai. Tikslas yra sumažinti žmogaus dalyvavimą šiuose procesuose, taip sumažinant šių procesų klaidas. Taigi buvo sukurta „valdymo sistemų inžinerijos“sritis. Valdymo sistemos inžinerija gali būti apibrėžta kaip naudojant įvairius metodus, skirtus proceso veikimui kontroliuoti ar pastoviai ir pageidaujamai aplinkai palaikyti, nesvarbu, ar tai rankinis, ar automatinis.

Paprastas pavyzdys galėtų būti kambario temperatūros valdymas. Rankinis valdymas reiškia asmens buvimą svetainėje, kuris tikrina esamas sąlygas (jutiklį), lygina jį su norima verte (apdoroja) ir imasi atitinkamų veiksmų norimai vertei gauti (pavara). Šio metodo problema yra ta, kad jis nėra labai patikimas, nes žmogus yra linkęs į klaidas ar aplaidumą savo darbe. Be to, kita problema yra ta, kad pavaros inicijuoto proceso greitis ne visada yra vienodas, o tai reiškia, kad kartais tai gali įvykti greičiau nei reikalaujama, o kartais - lėtai. Šios problemos sprendimas buvo naudoti mikrovaldiklį sistemai valdyti. Mikrovaldiklis yra

užprogramuotas valdyti procesą pagal nurodytas specifikacijas, prijungtas prie grandinės (bus aptartas vėliau), paduodamas į norimą vertę ar sąlygas ir taip kontroliuoja norimos vertės palaikymo procesą. Šio proceso privalumas yra tas, kad į šį procesą nereikia žmogaus įsikišimo. Be to, proceso greitis yra vienodas

Pagrindinė valdymo sistema

Ankstesnėje diagramoje parodyta labai supaprastinta valdymo sistemos versija. Mikrovaldiklis yra bet kurios valdymo sistemos pagrindas. Tai labai svarbus komponentas, todėl jo pasirinkimas turi būti atliekamas kruopščiai, atsižvelgiant į sistemos reikalavimus. Mikrovaldiklis gauna įvestį iš vartotojo. Ši įvestis nustato norimą sistemos būklę. Mikrovaldiklis taip pat gauna grįžtamąjį ryšį iš jutiklio. Šis jutiklis yra prijungtas prie sistemos išvesties, kurios informacija grąžinama į įvestį. Mikroprocesorius, remdamasis savo programavimu, atlieka įvairius skaičiavimus ir duoda išvestį pavarai. Pavara, remdamasi produkcija, valdo gamyklą, siekdama išlaikyti tas sąlygas. Pavyzdys galėtų būti variklio vairuotojas, vairuojantis variklį, kai variklis yra pavara, o variklis - gamykla. Taigi variklis sukasi tam tikru greičiu. Prijungtas jutiklis nuskaito įrenginio būklę šiuo metu ir grąžina jį mikrovaldikliui. Mikrovaldiklis vėl lygina, atlieka skaičiavimus ir taip ciklas kartojasi. Šis procesas yra pasikartojantis ir begalinis, kai mikrovaldiklis palaiko norimas sąlygas

2 žingsnis: PID pagrįsta valdymo sistema

PID valdymo sistema
PID valdymo sistema
PID valdymo sistema
PID valdymo sistema

PID algoritmas yra efektyvus valdymo sistemos projektavimo metodas.

Apibrėžimas

PID reiškia proporcingą, integralų ir išvestinį. Šiame algoritme įvestas klaidos signalas. Ir ši lygtis taikoma klaidos signalui

U (t) = Kp ∗ e (t) + Kd ∗ d/dt (e (t)) + Ki ∗ integralas (e (t)) (1.1)

Trumpas paaiškinimas

Kaip matyti iš aukščiau pateiktos lygties, klaidų signalų integralas ir darinys apskaičiuojami, padauginami iš jų atitinkamų konstantų ir pridedami kartu su konstanta Kp, padauginta iš e (t). Tada išėjimas tiekiamas į pavarą, kuri priverčia sistemą veikti. Dabar pažiūrėkime į kiekvieną funkcijos dalį paeiliui. Ši funkcija tiesiogiai veikia pakilimo laiką, kritimo laiką, piką fotografuojant, nusistovėjimo laiką ir pastovios būsenos klaidą.

• Proporcinė dalis: proporcinė dalis sumažina pakilimo laiką ir sumažina pastovios būsenos klaidą. Tai reiškia, kad sistemai prireiks mažiau laiko, kad ji pasiektų didžiausią vertę, o kai pasiekia pastovią būseną, pastovios būsenos klaida bus maža. Tačiau tai padidina piko viršijimą.

• Išvestinė dalis: išvestinė dalis sumažina perviršį ir nusistovėjimo laiką. Tai reiškia, kad trumpalaikė sistemos būsena bus labiau slopinama. Be to, sistema pasieks pastovią būseną per trumpesnį laiką. Tačiau tai neturi įtakos pakilimo laikui ar pastovios būsenos klaidai.

• Integruota dalis: neatskiriama dalis sumažina pakilimo laiką ir visiškai pašalina pastovios būsenos klaidą. Tačiau tai padidina piko viršijimą ir nusistovėjimo laiką.

• Derinimas: gera valdymo sistema turės trumpą pakilimo laiką, nusistovėjimo laiką, piko viršijimą ir pastovios būsenos klaidą. Todėl, norint įgyti gerą valdymo sistemą, Kp, Kd, Ki reikia galutinai sureguliuoti, kad būtų pakoreguotas aukščiau išvardytų veiksnių indėlis.

Pridedamas paveikslėlis, rodantis įvairių parametrų keitimo PID algoritme poveikį.

3 žingsnis: Subalansuojantis robotas

Savaime balansuojantis robotas
Savaime balansuojantis robotas

Savaime balansuojantis robotas yra daugiasluoksnis dviejų ratų robotas.

Robotas bandys subalansuoti taikydamas bet kokią nelygią jėgą. Jis subalansuos taikydamas jėgą, priešingą roboto jėgų padariniui.

Savęs balansavimo metodai

Yra keturi robotų savarankiško balansavimo metodai. Jie yra tokie:

Subalansavimas naudojant du IR pakreipimo jutiklius

Tai yra vienas žiauriausių būdų subalansuoti robotą, nes tam reikia labai mažiau aparatūros ir palyginti lengvo algoritmo. Taikant šį metodą, atstumui tarp žemės ir roboto matuoti naudojami du pakreipti IR jutikliai. Remiantis apskaičiuotu atstumu, PID gali būti naudojamas varikliams valdyti, kad robotas būtų tinkamai subalansuotas. Šio metodo trūkumas yra tas, kad IR jutiklis gali praleisti kai kuriuos rodmenis. Kita problema yra ta, kad atstumui apskaičiuoti reikalingas pertraukimas ir kilpos, o tai padidina algoritmo laiko sudėtingumą. Taigi šis roboto balansavimo metodas nėra labai efektyvus.

Subalansuoti naudojant akselerometrą

Akselerometras suteikia mums kūno pagreitį 3 ašimis. Pagreitis, nukreiptas į y ašį (aukštyn) ir x ašį (į priekį), leidžia mums apskaičiuoti gravitacijos kryptį ir apskaičiuoti nuolydžio kampą. Kampas apskaičiuojamas taip:

θ = arktanas (Ay/Ax) (1.2)

Šio metodo trūkumas yra tas, kad roboto judesio metu horizontalus pagreitis taip pat bus pridėtas prie rodmenų, o tai yra aukšto dažnio triukšmas. Taigi pasvirimo kampas bus netikslus.

Balansavimas naudojant giroskopą

Giroskopas naudojamas kampiniams greičiams išilgai trijų ašių apskaičiuoti. Pasvirimo kampas gaunamas naudojant šią lygtį.

θp (i) = θp (i − 1) + 1/6 (vali − 3 + 2vali − 2 + 2vali − 1 + vali) (1.3)

Vienas didelis giroskopo naudojimo trūkumas yra tas, kad jis turi mažą nuolatinės srovės šališkumą, kuris yra žemo dažnio triukšmas, o po kelių laiko grąžintos vertės yra visiškai neteisingos. Tai po integracijos nulinis taškas nutols. Dėl to robotas kurį laiką išliks vertikalioje padėtyje ir, nukritus, nukris.

Subalansavimas naudojant akselerometrą ir giroskopą

Kaip aptarta aukščiau, naudojant tik akselerometrą ar giroskopą, mes neturėsime teisingo nuolydžio kampo. Norėdami tai padaryti, naudokite akselerometrą ir giroskopą. Abu jie yra įterpti į MPU6050. Tokiu būdu mes gauname duomenis iš abiejų ir tada sujungiame juos naudodami Kalmano filtrą arba papildomą filtrą.

• Kalmano filtras: Kalmano filtras pagal triukšmingus matavimus apskaičiuoja geriausią dinaminės sistemos būsenos įvertinimą, sumažindamas vidutinę įverčio paklaidą kvadratu. Jis veikia dviem etapais - prognozavimas ir korekcija, atsižvelgiant į atskiras stochastines lygtis, apibūdinančias sistemos dinamiką. Tačiau tai labai sudėtingas algoritmas, kurį reikia įgyvendinti, ypač naudojant ribotą mikrovaldiklio aparatinę įrangą.

• Papildomas filtras: šis algoritmas pirmiausia naudoja duomenis, gautus iš giroskopo, ir integruoja juos laikui bėgant, kad gautų nuolydžio kampą. Taip pat naudojama nedidelė dalis akselerometro rodmenų. Papildomas filtras iš tikrųjų sumažina akselerometro aukšto dažnio triukšmą ir giroskopo žemo dažnio triukšmą, o po to sulydo, kad gautų geriausią tikslų nuolydžio kampą.

4 žingsnis: Roboto projektavimas

Roboto dizainas
Roboto dizainas

Mes sukūrėme savaime balansuojantį robotą, naudojant proporcinį išvestinį valdiklį, įdiegtą naudojant papildomą filtrą MPU6050. Šis nedidelis savaiminio balansavimo roboto modelis parodys mums valdymo sistemų naudą robotams savaime balansuojant.

Sistemos diegimas:

Sistema yra savaime balansuojantis robotas. Jis įgyvendinamas naudojant PID valdiklį, kuris yra proporcingas integruotas išvestinis valdiklis. Mes subalansuojame robotą, varydami jo ratus jo kritimo kryptimi. Tai darydami, mes stengiamės išlaikyti roboto svorio centrą virš sukimosi taško. Norėdami važiuoti ratais jo kritimo kryptimi, turėtume žinoti, kur krenta robotas ir kokiu greičiu jis krenta. Šie duomenys gaunami naudojant MPU6050, kuris turi akselerometrą ir giroskopą. MPU6050 matuoja nuolydžio kampą ir perduoda išvestį mikrovaldikliui. MPU6050 yra sujungtas su STM lenta per I2C. I2C vienas laidas skirtas laikrodžiui, kuris vadinamas SCL. Kitas yra skirtas duomenų perdavimui, kuris yra SDA. Šiuo atveju naudojamas pagrindinio vergo ryšys. Pradinis adresas ir pabaigos adresas yra nurodyti tam, kad žinotumėte, iš kur prasideda ir kur baigiasi duomenys. Čia įdiegėme MPU6050 papildomą filtrą, kuris yra matematinis filtras, skirtas sujungti akselerometro ir giroskopo išėjimus. Gavęs duomenis iš MPU6050, mikrovaldiklis atliks skaičiavimus, kad žinotų, kur jis krenta. Remdamasis skaičiavimais, STM mikrovaldiklis duos komandas variklio vairuotojui vairuoti transporto priemones kritimo kryptimi, o tai subalansuos robotą.

5 žingsnis: projekto komponentai

Projekto komponentai
Projekto komponentai
Projekto komponentai
Projekto komponentai
Projekto komponentai
Projekto komponentai

Savarankiškai balansuojančio roboto projekte buvo naudojami šie komponentai:

STM32F407

Mikrovaldiklis, sukurtas „ST Microelectronics“. Jis veikia „ARM Cortex-M Architecture“.

Variklio tvarkyklė L298N

Šis IC naudojamas varikliui paleisti. Jis gauna du išorinius įėjimus. Vienas iš mikrovaldiklio, kuris jam tiekia PWM signalą. Reguliuojant pulso plotį, galima reguliuoti variklio greitį. Antrasis jo įėjimas yra įtampos šaltinis, reikalingas varikliui valdyti, kuris mūsų atveju yra 12 V baterija.

Nuolatinės srovės variklis

Nuolatinės srovės variklis veikia nuolatinės srovės šaltiniu. Šiame eksperimente nuolatinės srovės variklis veikia naudojant optinius jungiklius, prijungtus prie variklio tvarkyklės. Varikliui valdyti naudojome „Motor Drive L298N“.

MPU6050

MPU6050 naudojamas gauti informaciją apie tai, kur krinta robotas. Jis matuoja nuolydžio kampą nulinio nuolydžio taško atžvilgiu, kuris yra MPU6050 padėtis, kai programa pradeda veikti.

MPU6050 turi 3 ašių akselerometrą ir 3 ašių giroskopą. Akselerometras matuoja pagreitį išilgai trijų ašių, o giroskopas - kampinį greitį apie tris ašis. Norėdami sujungti išvestį, turime išfiltruoti abiejų triukšmą. Triukšmams filtruoti turime „Kalman“ir papildomą filtrą. Savo projekte įdiegėme papildomą filtrą.

Opto pora 4N35

Optronas yra prietaisas, naudojamas izoliuoti žemos įtampos ir aukštos įtampos grandinės dalį. Kaip rodo pavadinimas, jis veikia šviesos pagrindu. Kai žemos įtampos dalis gauna signalą, aukštos įtampos dalyje teka srovė

6 žingsnis: roboto struktūra

Roboto struktūra paaiškinta taip:

Fizinė struktūra

Savaime balansuojantį robotą sudaro du sluoksniai, pagaminti iš skaidraus plastikinio stiklo. Išsami informacija apie du sluoksnius pateikta žemiau:

Pirmasis sluoksnis

Pirmojo sluoksnio apatinėje dalyje mes įdėjome ląstelę, skirtą maitinti STM plokštę. Taip pat po du 4 voltų variklius buvo sumontuoti kiekvienoje pusėje su padangomis, kad robotas galėtų judėti. Viršutinėje pirmojo sluoksnio dalyje variklių veikimui įdėtos dvi 4 voltų baterijos (iš viso 8 voltai) ir variklio tvarkyklė IC (L298N).

Antrasis sluoksnis

Viršutiniame roboto sluoksnyje mes įdėjome STM plokštę į „Perf Board“. Ant viršutinio sluoksnio uždedama kita 4 opto jungčių perf plokštė. Giroskopas taip pat dedamas ant viršutinio roboto sluoksnio iš apatinės pusės. Abu komponentai dedami į vidurinę dalį, kad svorio centras būtų kuo žemesnis.

Roboto svorio centras

Svorio centras išlaikomas kuo žemesnis. Šiuo tikslu ant apatinio sluoksnio įdėjome sunkias baterijas, o ant viršutinio sluoksnio - lengvus komponentus, tokius kaip STM plokštė ir optronai.

7 žingsnis: kodas

Kodas buvo sudarytas „Atollic TrueStudio“. STM studija buvo naudojama derinimo tikslais.

8 žingsnis: Išvada

Po daugybės eksperimentų ir stebėjimų galiausiai pasiekiame tašką, kuriame apibendriname savo rezultatus ir aptariame, kiek mums pavyko įgyvendinti ir išsiaiškinti sistemos efektyvumą.

Bendra apžvalga

Eksperimento metu variklio greitis buvo sėkmingai kontroliuojamas naudojant PID algoritmą. Tačiau kreivė nėra lygiai tiesi. Tam yra daug priežasčių:

• Jutiklis, nors ir prijungtas prie žemo dažnio filtro, vis tiek suteikia tam tikrų galutinių nukrypimų; taip yra dėl nelinijinių varžų ir kai kurių neišvengiamų analoginės elektronikos priežasčių.

• Variklis nesisuka sklandžiai esant žemai įtampai ar PWM. Jame pateikiami trūkčiojimai, dėl kurių į sistemą gali būti įtrauktos neteisingos vertės.

• Dėl svyravimo jutiklis gali praleisti kai kuriuos plyšius, suteikiančius didesnes vertes. • Kita pagrindinė klaidų priežastis gali būti STM mikrovaldiklio pagrindinis laikrodžio dažnis. Šis STM mikrovaldiklio modelis užtikrina pagrindinį 168MHz laikrodį. Nors šiame projekte buvo išspręsta ši problema, yra bendra nuomonė apie šį modelį, kad jis tiksliai nesuteikia tokio aukšto dažnio.

Atviro kontūro greitis užtikrina labai sklandžią liniją su tik keliomis netikėtomis reikšmėmis. Taip pat veikia PID algoritmas, užtikrinantis labai trumpą variklio nusistovėjimo laiką. Variklio PID algoritmas buvo išbandytas esant įvairiai įtampai, išlaikant pastovų atskaitos greitį. Įtampos pokytis nekeičia variklio greičio, o tai rodo, kad PID algoritmas veikia

Efektyvumas

Čia aptariame PID valdiklio, kurį stebėjome eksperimento metu, efektyvumą.

Paprastas įgyvendinimas

Eksperimentų ir stebėjimų skyriuje matėme, kad PID valdiklį labai lengva įdiegti. Tam reikia tik trijų parametrų arba konstantų, kuriuos reikia nustatyti, kad būtų sukurta greičio valdymo sistema

Neprilygstamas linijinių sistemų efektyvumas

Linijinis PID valdiklis yra pats efektyviausias valdiklių šeimoje, nes logika yra labai paprasta ir taikymas yra plačiai paplitęs tiesinių ar gana linijinių programų atveju.

Apribojimai

Mes abstrakčiai paaiškinome apie šios sistemos apribojimus. Čia aptariame keletą iš jų, kuriuos pastebėjome.

Konstantų pasirinkimas

Mes matėme, kad nors PID valdiklį lengva įdiegti, vis dėlto pagrindinis sistemos trūkumas yra tas, kad konstantų vertės parinkimo žingsnis yra sunkus; nes reikia atlikti įvairius skaičiavimus. Kitas būdas yra pataikymo ir bandymo metodas, tačiau jis taip pat nėra efektyvus.

Konstantos ne visada yra pastovios

Eksperimento rezultatai parodė, kad esant skirtingoms variklio etaloninio greičio vertėms, PID valdiklis netinkamai veikė dėl tų pačių PID konstantų verčių. Skirtingiems greičiams konstantos turėjo būti parinktos skirtingai, ir tai eksponentiškai padidina skaičiavimo išlaidas.

Netiesinis

Mūsų atveju naudojamas PID valdiklis yra linijinis, todėl jis gali būti taikomas tik linijinėms sistemoms. Netiesinėms sistemoms valdiklis turi būti įdiegtas skirtingai. Nors yra įvairių netiesinių PID metodų, jiems reikia pasirinkti daugiau parametrų. Tai dar kartą daro sistemą nepageidaujamą dėl didelių skaičiavimo išlaidų.

Reikalingas pradinis stūmimas

Eksperimentų skyriuje parodėme, kad esant gana mažam atskaitos greičiui, kai pradžioje klaida yra gana maža, PID tiekiamas PWM yra toks mažas, kad nesukuria reikiamo variklio paleidimo momento. Taigi kai kuriuose bandymuose variklis neveikia arba kituose bandymuose yra didelis perviršis ir ilgesnis nusistovėjimo laikas.

9 žingsnis: ypatingas ačiū

Dėkoju savo grupės nariams, kurie padėjo man įgyvendinti šį projektą.

Netrukus įkelsiu nuorodą į vaizdo įrašą.

Tikiuosi, kad jums bus įdomu tai pamokyti.

Tai yra Tahir Ul Haq iš UET. Sveikinimai !!!

Rekomenduojamas: