MPU6050: modul az Arduino-val történő pozícionáláshoz

MPU6050 kártya

Ha létre kell hoznia egy projektet és azt pozícionálnia kell, vagyis tudni kell hogyan van elhelyezve a helyet illetően használhatja a modult MPU6050. Vagyis ez a modul egy inerciális mérőegység vagy IMU (inerciális mérési egységek), 6 fokos szabadsággal (DoF). Ez köszönhető a 3 tengelyes gyorsulásmérő típusú érzékelőknek és a 3 tengelyes giroszkópnak, amelyet működtet.

Ez az MPU6050 tudja, hogy a tároló objektum hogyan van elhelyezve használatra alkalmazások navigáció, goniometria, stabilizálás, gesztusvezérlés stb. A mobiltelefonok általában ilyen típusú érzékelőket tartalmaznak, hogy például bizonyos funkciókat kézmozdulatokkal vezéreljenek, például leállíthatják az okostelefont, ha járművet fordítanak, videojátékokban vezetik a járművet úgy, hogy elfordítják a mobilt, mintha kormánykerék lenne, stb.

Mi az a gyorsulásmérő és egy giroszkóp?

MEMS Példák

MEMS Példák

Nos, menjünk részenként. Az első dolog az, hogy megnézzük, mi az ilyen típusú érzékelő képesek észlelni a gyorsulást és a kanyarokat, amint az a saját nevükből is levezethető.

  • gyorsulásmérő: méri a gyorsulást, vagyis a sebesség változását időegységenként. Ne feledje, hogy a fizikában a sebesség időbeli változása (a = dV / dt) a gyorsulás meghatározása. Newton második törvénye szerint nálunk is megvan az a = F / m, és ezt használják a gyorsulásmérők a munkához, vagyis az objektum erő- és tömegparamétereit használják. Annak érdekében, hogy ez megvalósulhasson az elektronikában, MEMS (Micro Electro Mechanical Systems) technikákat alkalmaznak, amelyek eltérnek a hagyományos elektronikus chipgyártási technikáktól, mivel a mechanikus alkatrészeket egy MEMS-ben hozzák létre. Ebben az esetben a gyorsulások mérésére alkalmas pályák vagy elemek jönnek létre. Ez azt jelenti, hogy sok más egységet is meg lehet venni, például sebességet (ha a gyorsulás integrálódik az időben), ha újra integrálják, akkor elmozdulásunk van stb. Vagyis nagyon érdekes paraméterek az objektum helyzetének megismeréséhez vagy mozgásának érzékeléséhez.
  • Giroszkóp: giroszkópnak is nevezik, ez egy olyan eszköz, amely méri egy tárgy szögsebességét, vagyis az időegységenkénti szögeltolódást vagy azt, hogy egy test milyen gyorsan forog a tengelye körül. Ebben az esetben MEMS technikákat is használnak ennek a sebességnek a mérésére a Coriolis néven ismert hatás alkalmazásával. Ennek köszönhetően mérhető a szögsebesség, vagy a szögsebesség időbe integrálásával a szögeltolódás érhető el.

MPU6050 modul

MPU6050 tű

Most, hogy tudja, mi a gyorsulásmérő és a giroszkóp, az MPU6050 modul egy elektronikus tábla, amely integrálja ezt a két elemet, lehetővé téve, hogy mérje ezeket a változásokat egy elem helyzetében, és így képes legyen reakciót generálni. Például, ha egy tárgy mozog, akkor egy LED világít, vagy más sokkal összetettebb dolgok.

Mint mondtam, 6 tengelye van a szabadságnak, DoF, 3 tengelyes X, Y és Z gyorsulásmérő és más 3 tengelyes giroszkóp a szögsebesség mérésére. Figyelembe kell vennie, hogy ne tévedjen a modul elhelyezésének módja és a mérések forgásiránya, mivel ha rossz előjelet ad, akkor kissé kaotikus lesz. Nézze meg a következő képet, ahol meghatározza a tengelyek irányát (vegye figyelembe azonban, hogy maga a NYÁK is az egyik oldalára van nyomtatva):

MPU6050 adatlap

Ezt figyelembe véve és a csapos, többé-kevésbé minden megvan, hogy elkezdhesse az MPU6050 használatát. Amint az az előző képen látható, a kapcsolatok meglehetősen egyszerűek, és lehetővé teszi, hogy az I2C kommunikáció kompatibilis legyen a legtöbb mikrovezérlővel, beleértve az Arduino-t is. Az SCL és az SDA csapok húzóellenállással rendelkeznek a táblán az Arduino táblához való közvetlen csatlakoztatáshoz, így nem kell aggódnia, hogy saját maga adja hozzá őket.

Az I2C busz mindkét irányával való munkavégzéshez ezeket használhatja csapok és irányok:

  • AD0 = 1 vagy Magas (5v): 0x69 I2C címhez.
  • AD0 = 0 vagy alacsony (GND vagy Nc): az I0C busz 68x2 címéhez.

Ne feledje, hogy a modell üzemi feszültsége 3v3, de szerencsére beépített szabályozóval rendelkezik, így gond nélkül aliemzhető az Arduino 5v-jével, és 3.3v-ra alakítja át.

By the way, amelynek belső ellenállása van a GND-vel szemben, ha ez a tű nincs csatlakoztatva, a cím alapértelmezés szerint 0x68 lesz, mivel alapértelmezés szerint a földhöz fog kapcsolódni, logikai 0-ként értelmezve.

Integráció az Arduinóval

Arduino és MPU6050 csatlakozás

Tudod kapni további információ az I2C buszról ebben a cikkben. Már tudja, hogy az Arduino deszkától függően a buszhoz használt csapok változnak, de a Arduino UNO az analóg csap A4 és A5, SDA (adat) és SCL (óra) esetén illetőleg. Ők az egyetlen Arduino csapok, az 5v és a GND csatlakozókkal együtt, amelyek táplálják a lapot, és amelyeket használnia kell. Tehát a kapcsolat a lehető legegyszerűbb.

Az MPU6050 funkcióihoz használhatja azokat a könyvtárakat, amelyekről a I2C a modul és a buszé MPU6050.

Az Arduino tábla programozása az MPU6050-hez képest nem túl egyszerű, ezért nem kezdőknek szól. Ezenkívül, ismerve a gyorsulások vagy a szögtartományok határait, kalibrálhatja annak meghatározását, hogy mi volt a pontos mozgás vagy gyorsulás. Ahhoz azonban, hogy legalább legyen példa arra, hogyan kommentálja a használatát, láthatja ezt a kódot a Példa vázlat az Arduino IDE-hez amely kiolvassa a gyorsulásmérő és a giroszkóp által rögzített értékeket:

// Bibliotecas necesarias:
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C
MPU6050 sensor;

// Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

void setup() {
  Serial.begin(57600);    //Función para iniciar el puerto serie con 57600 baudios
  Wire.begin();           //Inicio para el bus I2C 
  sensor.initialize();    //Iniciando del sensor MPU6050

  if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
  else Serial.println("Error al iniciar el sensor");
}

void loop() {
  // Leer las aceleraciones y velocidades angulares
  sensor.getAcceleration(&ax, &ay, &az);
  sensor.getRotation(&gx, &gy, &gz);

  // Muestra las lecturas que va registrando separadas por una tabulación 
  Serial.print("a[x y z] g[x y z]:\t");
  Serial.print(ax); Serial.print("\t");
  Serial.print(ay); Serial.print("\t");
  Serial.print(az); Serial.print("\t");
  Serial.print(gx); Serial.print("\t");
  Serial.print(gy); Serial.print("\t");
  Serial.println(gz);

  delay(100);
}

Ha kezdő vagy, és nem tudod jól hogyan kell programozni az Arduino IDE-vel, ezt nehéz lesz megértenie, ezért ingyenesen olvashatja kézikönyvünket az Arduino programozás bevezető tanfolyamával ...


Legyen Ön az első hozzászóló

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.