Obsah:

Samovyvažovací robot - algoritmus riadenia PID: 3 kroky
Samovyvažovací robot - algoritmus riadenia PID: 3 kroky

Video: Samovyvažovací robot - algoritmus riadenia PID: 3 kroky

Video: Samovyvažovací robot - algoritmus riadenia PID: 3 kroky
Video: Position Controller vs Velocity Controller 2024, November
Anonim
Samovyvažovací robot - riadiaci algoritmus PID
Samovyvažovací robot - riadiaci algoritmus PID

Tento projekt bol koncipovaný, pretože ma zaujímalo dozvedieť sa viac o riadiacich algoritmoch a o tom, ako efektívne implementovať funkčné slučky PID. Projekt je stále vo fáze vývoja, pretože ešte bude pridaný modul Bluetooth, ktorý umožní ovládanie robota zo smartfónu s podporou Bluetooth.

Použité jednosmerné motory N20 boli relatívne lacné, a preto v nich bolo veľa hry. To vedie k malému trhaniu, pretože motory prekonávajú „vôľu“, pretože na kolesá aplikuje krútiaci moment. Preto je takmer nemožné dosiahnuť dokonale plynulý pohyb. Kód, ktorý som napísal, je primerane jednoduchý, ale efektívne ukazuje schopnosti algoritmu PID.

Zhrnutie projektu:

Podvozok robota je vytlačený 3D tlačiarňou Ender 3 a je navrhnutý tak, aby do seba zapadol.

Robot je riadený Arduino Uno, ktoré preberá údaje zo senzorov z MPU6050 a riadi jednosmerné motory prostredníctvom externého ovládača motora. Napájanie zaisťuje batéria 7,4 V, 1 500 mAh. Ovládač motora to reguluje na 5 V na napájanie Arduina a dodáva motorom 7,4 V.

Softvér bol napísaný úplne od začiatku pomocou knižníc „Arduino-KalmanFilter-master“a „Arduino-MPU6050-master“od gitHub.

Zásoby:

  • 3D tlačené diely
  • Arduino UNO
  • 6-osý snímač MPU6050
  • Ovládač motora D. C
  • Motory N20 DC (x2)
  • 9V batéria

Krok 1: Zostavenie robota

Robot Build
Robot Build
Robot Build
Robot Build
Robot Build
Robot Build

Tlač a montáž

Celá konštrukcia by mala byť lisovaná, ale na zaistenie komponentov som použil superglue, aby som zaistil, že robot bude pri vyvažovaní úplne tuhý.

Diely som navrhol vo Fusion 360 a každú časť som optimalizoval na tlač bez podpier, aby som umožnil prísnejšie tolerancie a čistejšiu povrchovú úpravu.

Na tlačiarni Ender 3 boli použité tieto nastavenia: Výšky vrstvy 0,16 mm @ 40% výplň pre všetky diely.

Krok 2: 3D tlačový robot

3D tlačový robot
3D tlačový robot

Podvozok (x1)

Ľavé koleso (x2)

Ľavé teleso motora (x2)

Puzdro Arduino (x1)

Krok 3: Algoritmus riadenia PID

Algoritmus riadenia PID
Algoritmus riadenia PID

Algoritmus riadenia PID som napísal od začiatku pomocou knižníc „Arduino-KalmanFilter-master“a „Arduino-MPU6050-master“od gitHub.

Algoritmus má nasledujúce predpoklady:

  • Prečítajte si nespracované údaje z MPU6050
  • Pomocou Kalmanovho filtra analyzujte údaje z gyroskopu aj akcelerometra a odstráňte nepresnosti v údajoch gyroskopu v dôsledku zrýchlenia snímača. Tým sa vráti relatívne vyhladená hodnota pre výšku snímača v stupňoch na dve desatinné miesta.
  • Vypočítajte chybu v uhle, t.j.: Uhol medzi snímačom a požadovanou hodnotou.
  • Vypočítajte proporcionálnu chybu ako (konštanta proporcionality x chyba).
  • Vypočítajte integrálnu chybu ako priebežný súčet (chyba konštanty integrácie x).
  • Vypočítajte derivačnú chybu ako konštantnú ako [(diferenciačná konštanta) x (zmena v chybe / zmena v čase)]
  • Sčítajte všetky chyby, aby ste získali rýchlosť, ktorá sa má odoslať do motorov.
  • Vypočítajte, akým smerom sa majú otáčať motory na základe znamienka uhla chyby.
  • Smyčka bude bežať neobmedzene dlho a bude závisieť od výstupu, pretože vstup sa líši. Ide o spätnoväzbovú slučku, ktorá používa výstupné hodnoty ako nové vstupné hodnoty pre ďalšiu iteráciu.

Posledným krokom je doladenie parametrov Kp, Ki & Kd slučky PID.

  1. Dobrým východiskovým bodom je pomalé zvyšovanie Kp, kým robot nekmitá okolo bodu rovnováhy a nemôže zachytiť pád.
  2. Potom začnite Kd na približne 1% hodnoty Kp a pomaly zvyšujte, kým oscilácie nezmiznú a robot po stlačení hladko kĺže.
  3. Nakoniec začnite s Ki okolo 20% Kp a variujte, kým robot „prestrelí“požadovanú hodnotu, aby aktívne zachytil pád a vrátil sa do vertikály.

Odporúča: