Tartalomjegyzék:

Önkiegyenlítő robot - PID vezérlő algoritmus: 3 lépés
Önkiegyenlítő robot - PID vezérlő algoritmus: 3 lépés

Videó: Önkiegyenlítő robot - PID vezérlő algoritmus: 3 lépés

Videó: Önkiegyenlítő robot - PID vezérlő algoritmus: 3 lépés
Videó: Önkiegyenlítő motorkerékpárok 2024, November
Anonim
Önkiegyenlítő robot - PID vezérlő algoritmus
Önkiegyenlítő robot - PID vezérlő algoritmus

Ezt a projektet azért hozták létre, mert többet akartam megtudni a vezérlőalgoritmusokról és a funkcionális PID hurkok hatékony megvalósításáról. A projekt még fejlesztési fázisban van, mivel még nem kell hozzáadni egy Bluetooth modult, amely lehetővé teszi a robot irányítását Bluetooth -képes okostelefonról.

Az N20 egyenáramú motorok viszonylag olcsók voltak, és ezért jelentős játékteret biztosítanak. Ez kis rángatózáshoz vezet, mivel a motorok leküzdik a „lazaságot”, mivel nyomatékot alkalmaznak a kerekekre. Ezért szinte lehetetlen tökéletesen sima mozgást elérni. Az általam írt kód meglehetősen egyszerű, de hatékonyan bemutatja a PID algoritmus képességeit.

Projekt összefoglaló:

A robot alvázát 3D-ben nyomtatják Ender 3 nyomtatóval, és úgy tervezték, hogy egymáshoz illeszkedjen.

A robotot egy Arduino Uno vezérli, amely érzékelő adatokat vesz az MPU6050 -ből, és külső motorvezérlőn keresztül vezérli az egyenáramú motorokat. 7,4 V, 1500 mAh akkumulátorral működik. A motorvezérlő ezt 5 V -ra szabályozza az Arduino táplálásához, és 7,4 V -ot táplál a motorokhoz.

A szoftvert a nulláról írták a gitHub „Arduino-KalmanFilter-master” és „Arduino-MPU6050-master” könyvtárai segítségével.

Kellékek:

  • 3D nyomtatott alkatrészek
  • Arduino UNO
  • MPU6050 6 tengelyes érzékelő
  • DC motoros meghajtó
  • N20 DC motorok (x2)
  • 9V -os akkumulátor

1. lépés: Robotépítés

Robotépítés
Robotépítés
Robotépítés
Robotépítés
Robotépítés
Robotépítés

Nyomtatás és összeszerelés

A teljes felépítésnek préseltnek kell lennie, de szuperragasztóval rögzítettem az alkatrészeket, hogy a robot teljesen merev legyen egyensúlyozáskor.

Az alkatrészeket a Fusion 360 -ban terveztem, és minden részt alátámasztás nélkül optimalizáltam, hogy lehetővé tegyem a szigorúbb tűréseket és tisztább felületet.

Az Ender 3 nyomtató beállításai a következők voltak: 0,16 mm -es rétegmagasság, 40% -os kitöltés minden résznél.

2. lépés: 3D nyomtatási robot

3D nyomtató robot
3D nyomtató robot

Alváz (x1)

Bal kerék (x2)

Bal motorház (x2)

Arduino tok (x1)

3. lépés: PID vezérlő algoritmus

PID vezérlő algoritmus
PID vezérlő algoritmus

A nulláról írtam egy PID vezérlő algoritmust a gitHub 'Arduino-KalmanFilter-master' és 'Arduino-MPU6050-master' könyvtáraival.

Az algoritmus feltevése a következő:

  • Nyers adatok olvasása az MPU6050 -ből
  • A Kalman -szűrő segítségével elemezheti a giroszkópból és a gyorsulásmérőből származó adatokat, hogy megszüntesse a giroszkóp leolvasásának pontatlanságát az érzékelő gyorsulása miatt. Ez viszonylag kisimított értéket ad vissza az érzékelő dőlésszögének fokában két tizedesjegyig.
  • Számítsa ki az E rror értékét a szögben, azaz: Az érzékelő és az alapjel közötti szög.
  • Számítsa ki az arányos hibát: (Arányossági konstans x hiba).
  • Számítsa ki az integrál hibát az (Integrációs állandó x hiba) futóösszegeként.
  • A származtatási hiba kiszámítása konstansként [Differenciálási állandó] x (Hiba változása / Idő változása)]
  • Összeadja az összes hibát, hogy megadja a motoroknak küldendő fordulatszám -kimenetet.
  • A hibaszög jele alapján számítsa ki, hogy melyik irányba kell forgatni a motorokat.
  • A ciklus korlátlan ideig fog futni, és a kimenetre épít, mivel a bemenet változik. Ez egy visszacsatolási hurok, amely a kimeneti értékeket használja a következő iteráció új bemeneti értékeiként.

Az utolsó lépés a Pp ciklus Kp, Ki & Kd paramétereinek hangolása.

  1. Jó kiindulópont, hogy lassan növeljük a Kp -t, amíg a robot az egyensúlyi pont körül ingadozik, és elesést nem tud elérni.
  2. Ezután indítsa el a Kd -t a Kp érték 1% -ánál, és lassan növelje, amíg az oszcillációk eltűnnek, és a robot simítás nélkül csúszik.
  3. Végül kezdje Ki -vel a Kp 20% -a körül, és addig változtasson, amíg a robot "túllépi" az alapértéket, hogy aktívan elfogja az esést és visszatérjen a függőleges helyzetbe.

Ajánlott: