Turinys:
- 1 žingsnis: Įvadas
- 2 žingsnis: PID pagrįsta valdymo sistema
- 3 žingsnis: Subalansuojantis robotas
- 4 žingsnis: Roboto projektavimas
- 5 žingsnis: projekto komponentai
- 6 žingsnis: roboto struktūra
- 7 žingsnis: kodas
- 8 žingsnis: Išvada
- 9 žingsnis: ypatingas ačiū
Video: Savaime balansuojantis robotas naudojant PID algoritmą (STM MC): 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
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 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 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
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
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:
Savaime balansuojantis robotas - PID valdymo algoritmas: 3 žingsniai
Savaiminio balansavimo robotas - PID valdymo algoritmas: Šis projektas buvo sukurtas, nes man buvo įdomu sužinoti daugiau apie valdymo algoritmus ir kaip efektyviai įgyvendinti funkcines PID kilpas. Projektas dar tik kuriamas, nes dar reikia pridėti „Bluetooth“modulį, kuris
Savaime balansuojantis robotas iš „Magicbit“: 6 žingsniai
Savarankiškas balansavimo robotas iš „Magicbit“: ši pamoka parodo, kaip pasigaminti savaime balansuojantį robotą naudojant „Magicbit dev“plokštę. Šiame projekte, kuris grindžiamas ESP32, mes naudojame „Magicbit“kaip plėtros lentą. Todėl šiame projekte gali būti naudojama bet kuri ESP32 kūrimo plokštė
Savaime balansuojantis robotas: 6 žingsniai (su nuotraukomis)
Savaime subalansuojantis robotas: šioje instrukcijoje mes parodysime, kaip sukurti savaime balansuojantį robotą, kurį sukūrėme kaip mokyklos projektą. Jis pagrįstas kai kuriais kitais robotais, pvz., „NBot“ir kitu „Instructable“. Robotą galima valdyti iš „Android“išmaniojo telefono
Savaime balansuojantis Robo-riteris: 7 žingsniai (su paveikslėliais)
Savaime balansuojantis „Robo-riteris“: vaizdo žaidimai ir stalo žaidimai yra puikus būdas praleisti laiką su draugais ir šeima. Kartais norisi leisti laiką neprisijungus ir atiduoti visą elektroniką, o kitą kartą pasineri į virtualų sporto, arkados ar kovos žaidimų pasaulį
Nuolatinės srovės variklio greičio valdymas naudojant PID algoritmą (STM32F4): 8 žingsniai (su paveikslėliais)
Nuolatinės srovės variklio greičio valdymas naudojant PID algoritmą (STM32F4): sveiki visi! Šį kartą jis yra STM32F407 kaip MC. Tai semestro vidurio projektas. Tikimės, kad jums tai patinka. Tam reikia daug sąvokų ir teorijos, todėl pirmiausia į tai eisime. Atsiradus kompiuteriams ir