Fórum témák

» Több friss téma
Cikkek » Multicopterek, nulláról az UAV-kig III. - IMU szenzorok
Multicopterek, nulláról az UAV-kig III. - IMU szenzorok
Szerző: Topi, idő: Máj 11, 2016, Olvasva: 12971, Oldal olvasási idő: kb. 3 perc
Lapozás: OK   4 / 13

A szükséges giroszkóp szenzort nem hatalmas mechanikai szerkezetként kell elképzelni, ugyanis a MEMS (Microelectromechanical systems - Mikro elektro-mechanikai rendszer) technológiának köszönhetően, rendkívül kis méretben léteznek. Az alábbi képen egy MEMS giroszkóp+gyorsulásmérő látható:

mems_gyroscope.jpg

A mechanikai szerkezetet, alig 100-200 um méretben elkészítve, annak elmozdulásaiból ugyanúgy hozzájuthatunk a kívánt adatokhoz. A képen a karok végén látható lengő tagok nyúlása és csavarodása a titok kulcsa mind a gyorsulásmérő, mind pedig a giroszkóp esetében (a kép egy kombinált szenzort mutat). Az alig 0.8 mm-es szerkezetet már könnyedén be lehet tokozni az adatok érzékeléséhez szükséges illesztő áramkörökkel együtt.

A piacon kapható számos giroszkóp közül én az InvenSense MPU6050-es típust választottam. A választás elsődleges szempontja az volt, hogy kombinált szenzort szeretnék alkalmazni, ami nem csak giroszkóp, hanem gyorsulásmérő is egyben.

Miért célszerű kombinált szenzort alkalmazni? Azért, mert a lehető legközelebb - egy tokban - van a giroszkóp és az annak hibáit kompenzáló gyorsulásmérő, így a tengelyeik között a fizikai eltolódás pusztán pár tized milliméter. Ha két külön szenzort alkalmazunk, akkor akár több centi eltérés is lehet a két szenzor tengelyközéppontja között, így a kompenzálás is sokkal nehezebb, ugyanis nem egy tengelyközéppontnál fogva "forognak".

MPU6050

mpu6050.jpgAz integrált áramkör tartalmaz egy max. ±2000°/sec elfordulási sebességű giroszkópot és egy ±16G ("gé" erő: 1G = föld gravitációs ereje) erő mérésére alkalmas gyorsulásmérőt. A két szenzor egybe van építve és egy közös I2C interfészen keresztül lehet az adatokat kiolvasni. Ezenfelül rendelkezik egy kiegészítő (AUX) I2C-vel, amire például digitális iránytű is csatlakoztatható. A kiegészítő I2C interfészére fűzött szenzor adatait az MPU6050 beolvassa magától és egyben kiolvashatók a saját adataival együtt. Ez különösen hasznos abban az esetben, ha DMA-val (ARM Periféria) szeretnénk az adatokat autonóm módon kiemelni a szenzorból.

Az IC-hez MLF tokozásban juthatunk hozzá, de lehetőség van készre szerelt modul formájában is megvásárolni, én is ezt a megoldást választottam.

Az MPU6050 egy 6 DOF típusú szenzor. A DOF (Degrees of Freedom, azaz szabadságfok) jellemzi, hogy mennyi tengely mentén képes a szenzor mérni. A 6-os szám, a giroszkóp roll rate, pitch rate és yaw rate adataiból illetve a gyorsulásmérő X, Y és Z irányú erőiből adódik össze (3+3 tengely). Az MPU kiegészítő interfészére csatlakoztatott iránytűvel már egy 9 DOF szenzorra tettünk szert. Kiegészítettük az iránytű 3 tengely irányú abszolút pozíciójával.

file_extension_pdf.png MPU6050.pdf
hestore.png MPU6050 modulok [HESTORE] 

DMP

Az MPU6050 rendelkezik egy DMP-vel (Digital Motion Processor), mely valójában a 9 tengelyből származó adatok összegyúrásával foglalkozik. Nagy előnye, hogy kvázi hardveresen oldja meg a Roll+Pitch+Yaw adatok kiszámítását. Rengeteg ellenérvem van, hogy miért nem célszerű használni:

  • Rettenetesen aluldokumentált, csak a reverse engineeringnek köszönhető, hogy egyáltalán inicializálni lehet
  • Nem kézbentarthatók a paraméterei / konstansai, ezáltal nem finomhangolható
  • Nem tudnánk univerzális programot készíteni, ami bármilyen giroszkóp + gyorsulásmérővel üzemeltethető
  • Unatkoznánk ha készen kiemelnénk ezeket az adatokat

Szerencsére a szenzorból, a DMP segítségével kalkulált adatok nem is olyan jók, mint amit az algoritmusunk végén kapunk, így ne fájjon a szívünk, egy könnycseppet se ejtsünk.

Gyro adatok

A kombinált szenzorból tehát kinyerhetjük a giroszkóp adatait, amit a beállított méréshatárnak megfelelően 16-bit felbontásban kapunk. A maximális szögelfordulás méréshatára lehet ±250, ±500, ±1000 és ±2000°/sec. Bármelyik méréshatárt is választjuk, mindegyiket 16-bit felbontásban olvashatjuk ki, így értelemszerűen a nagyobb méréshatárhoz pontatlanabb mérés tartozik.

A multicopter nagyon fürge jószág, így a szabályozásom a 2000°/sec méréshatárt veszi alapul a számolásoknál. Aki már látott quadcoptert, tudja hogy tized másodperc alatt tud akár 90°-ban is elfordulni üzemszerűen, így ha kiszámoljuk ezt a szögsebességet, megkapjuk milyen méréshatár szükséges ekkor. Tehát: 90°/0.1s = 900°/s. Azaz a minimum, hogy 1000°/sec méréshatárt használjunk, de a biztonság kedvéért én az eggyel nagyobb méréshatárt választottam, a szükséges felbontás így is megfelelő marad.

Gyro rate

Mivel a MEMS giroszkóp szögsebességet mér, így nem abszolút pozíciót kapunk, hanem relatív szögelfordulást. Ahhoz, hogy követni tudjuk, a mért értékeket mindig összegezni kell, így az összegzés végén kapjuk meg az abszolút elfordulást (persze gyorsulásmérő nélkül drift-tel együtt).

Fontos: A következőkben, amikor a giroszkóp adatáról lesz szó, figyeljünk oda, hogy nem a műhorizont esetében látható abszolút elfordulást, hanem relatív elfordulási szögsebességet mérünk - kapunk - számolunk.


A cikk még nem ért véget, lapozz!
Következő: »»   4 / 13
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem