Turinys:
Video: Savaime balansuojantis robotas - PID valdymo algoritmas: 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Šis projektas buvo sumanytas, nes man buvo įdomu sužinoti daugiau apie valdymo algoritmus ir kaip efektyviai įgyvendinti funkcines PID kilpas. Projektas vis dar yra kūrimo etape, nes dar reikia pridėti „Bluetooth“modulį, kuris leis valdyti robotą iš „Bluetooth“išmaniojo telefono.
Naudoti N20 nuolatinės srovės varikliai buvo palyginti pigūs, todėl jie turi daug laisvės. Tai sukelia nedidelį trūkčiojimą, nes varikliai įveikia „atotrūkį“, nes ratams taikomas sukimo momentas. Taigi beveik neįmanoma pasiekti visiškai sklandaus judesio. Mano parašytas kodas yra gana paprastas, tačiau efektyviai parodo PID algoritmo galimybes.
Projekto santrauka:
Roboto važiuoklė yra atspausdinta 3D naudojant „Ender 3“spausdintuvą ir suprojektuota taip, kad būtų galima prispausti.
Robotas valdomas „Arduino Uno“, kuris paima jutiklio duomenis iš MPU6050 ir valdo nuolatinės srovės variklius per išorinę variklio tvarkyklę. Jis veikia su 7,4 V, 1500 mAh baterija. Variklio vairuotojas reguliuoja tai iki 5 V, kad maitintų „Arduino“, ir tiekia varikliams 7,4 V įtampą.
Programinė įranga buvo parašyta nuo nulio naudojant „gitHub“bibliotekas „Arduino-KalmanFilter-master“ir „Arduino-MPU6050-master“.
Priedai:
- 3D spausdintos dalys
- Arduino UNO
- MPU6050 6 ašių jutiklis
- DC variklio vairuotojas
- N20 nuolatinės srovės varikliai (x2)
- 9 V baterija
1 žingsnis: Roboto kūrimas
Spausdinimas ir surinkimas
Visa konstrukcija turėtų būti prispaudžiama, tačiau komponentams pritvirtinti naudoju superklijus, kad robotas būtų visiškai standus balansuojant.
Aš suprojektavau „Fusion 360“dalis ir optimizavau kiekvieną dalį spausdinti be atramų, kad būtų užtikrintos griežtesnės tolerancijos ir švaresnė paviršiaus apdaila.
„Ender 3“spausdintuvo nustatymai buvo tokie: 0,16 mm sluoksnio aukščio ir 40% užpildymo visoms dalims.
2 žingsnis: 3D spausdinimo robotas
Važiuoklė (x1)
Kairysis ratas (x2)
Kairysis variklio korpusas (x2)
„Arduino“dėklas (x1)
3 žingsnis: PID valdymo algoritmas
Aš parašiau PID valdymo algoritmą nuo nulio, naudodamas „gitHub“bibliotekas „Arduino-KalmanFilter-master“ir „Arduino-MPU6050-master“.
Algoritmo prielaida yra tokia:
- Skaitykite neapdorotus duomenis iš MPU6050
- Naudokite „Kalman“filtrą, kad išanalizuotumėte giroskopo ir akselerometro duomenis, kad pašalintumėte giroskopo rodmenų netikslumus dėl jutiklio pagreičio. Tai grąžina santykinai išlygintą jutiklio žingsnio vertę laipsniais iki dviejų skaičių po kablelio.
- Apskaičiuokite E rror kampe, t.
- Apskaičiuokite proporcingą paklaidą kaip (proporcingumo konstanta x paklaida).
- Apskaičiuokite integralinę klaidą kaip einamąją sumą (integracijos konstanta x klaida).
- Išvestinės klaidos apskaičiavimas kaip pastovus kaip [(diferenciacijos konstanta) x (klaidos pokytis / laiko pokytis)]
- Sumokite visas klaidas, kad gautumėte greitį, kuris turi būti siunčiamas varikliams.
- Pagal klaidos kampo ženklą apskaičiuokite, kuria kryptimi pasukti variklius.
- Ciklas veiks neribotą laiką ir bus grindžiamas išvestimi, nes įvestis kinta. Tai grįžtamojo ryšio kilpa, kurioje išvesties vertės naudojamos kaip naujos įvesties vertės kitai iteracijai.
Paskutinis žingsnis yra suderinti PID ciklo Kp, Ki & Kd parametrus.
- Geras atspirties taškas yra lėtai didinti Kp, kol robotas svyruoja aplink pusiausvyros tašką ir gali suklupti.
- Tada pradėkite Kd nuo maždaug 1% Kp vertės ir lėtai didinkite, kol svyravimai išnyks ir robotas sklandžiai slys, kai bus stumiamas.
- Galiausiai pradėkite nuo Ki maždaug 20% Kp ir keiskite tol, kol robotas „peržengs“nustatytą vertę, kad aktyviai pagautų kritimą ir grįžtų į vertikalę.
Rekomenduojamas:
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ė
„HeadBot“-savaime subalansuojantis robotas STEM mokymuisi ir informavimui: 7 žingsniai (su nuotraukomis)
„HeadBot“-savarankiškai subalansuojantis robotas, skirtas STEM mokymuisi ir informavimui: „Headbot“-dviejų pėdų aukščio, savaime subalansuojantis robotas-yra Pietų Eugenijaus robotų komandos (SERT, FRC 2521), konkurencingos PIRMOSIOS mokyklos robotų komandos, sumanymas. Robotikos varžybos, iš Eugenijus, Oregonas. Šis populiarus pagalbos robotas leidžia
Balansavimo robotas / 3 ratų robotas / STEM robotas: 8 žingsniai
Balansavimo robotas / 3 ratų robotas / STEM robotas: Mes sukūrėme kombinuotą balansavimo ir 3 ratų robotą, skirtą naudoti mokyklose ir po pamokų. Robotas sukurtas naudojant „Arduino Uno“, pasirinktinį skydą (pateikiama visa konstrukcijos informacija), „Li Ion“akumuliatorių paketą (visa tai atitinka
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į