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?
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
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):
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
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 ...