MPU6050: modul na určovanie polohy pomocou Arduina

Doska MPU6050

Ak potrebujete vytvoriť projekt a umiestniť ho, to znamená, vedzte ako je to umiestnené čo sa týka priestoru, môžete použiť modul MPU 6050 XNUMX. To znamená, že tento modul je inerciálna meracia jednotka alebo IMU (inerciálne meracie jednotky) so 6 stupňami voľnosti (DoF). A to vďaka 3-osým snímačom akcelerometra a 3-osému gyroskopu, ktoré implementuje do práce.

Tento MPU6050 vie, ako je umiestnený obsahujúci objekt na použitie v aplikácie navigácia, goniometria, stabilizácia, ovládanie gestami atď. Mobilné telefóny zvyčajne obsahujú tento typ senzorov, aby napríklad ovládali určité funkcie gestami, ako je zastavenie, ak je smartphone otočený, riadenie vozidiel vo videohrách otáčaním mobilu, akoby to bol volant, atď.

Čo je to akcelerometer a gyroskop?

Príklady MEMS

Príklady MEMS

No poďme po častiach. Prvá vec je zistiť, o aké typy snímačov ide sú schopné detekovať zrýchlenie a zákruty, ako je možné odvodiť z ich vlastných mien.

  • akcelerometer: meria zrýchlenie, to znamená zmenu rýchlosti za jednotku času. Pamätajte, že vo fyzike je zmena rýchlosti v čase (a = dV / dt) definíciou zrýchlenia. Podľa druhého Newtonovho zákona máme aj to, že a = F / m, a to je to, na čo pracujú akcelerometre, to znamená, že používajú parametre sily a hmotnosti objektu. Aby to bolo možné implementovať do elektroniky, používajú sa techniky MEMS (Micro Electro Mechanical Systems), ktoré sa líšia od konvenčných techník výroby elektronických čipov, pretože mechanické časti sú tvorené v MEMS. V takom prípade sa vytvoria stopy alebo prvky schopné merať zrýchlenie. To znamená, že je možné prijať mnoho ďalších jednotiek, napríklad rýchlosť (ak je zrýchlenie integrované v čase), ak je integrované znova, máme posunutie atď. To znamená, že veľmi zaujímavé parametre na poznanie polohy alebo detekciu pohybu objektu.
  • Gyroskop: nazýva sa tiež gyroskop, je to zariadenie, ktoré meria uhlovú rýchlosť objektu, to znamená uhlový posun za jednotku času alebo to, ako rýchlo sa teleso otáča okolo svojej osi. V tomto prípade sa na meranie tejto rýchlosti používajú aj techniky MEMS pomocou efektu známeho ako Coriolis. Vďaka tomu možno merať uhlovú rýchlosť alebo integráciou uhlovej rýchlosti vo vzťahu k času dosiahnuť uhlové posunutie.

Modul MPU6050

Vývod MPU6050

Teraz, keď viete, čo sú akcelerometer a gyroskop, modul MPU6050 je elektronická doska, ktorá integruje tieto dva prvky, aby vám umožnila merať tieto zmeny v polohe prvku a dokázať tak generovať reakciu. Napríklad, že keď sa objekt pohybuje, rozsvieti sa LED alebo iné, oveľa zložitejšie veci.

Ako som povedal, má 6 osí slobody, DoF, 3-osový akcelerometer akcelerácie X, Y a Z a ďalší 3-osový gyroskop na meranie uhlovej rýchlosti. Musíte vziať do úvahy, aby ste pri meraniach neurobili chybu v spôsobe umiestnenia modulu a smeru otáčania, pretože ak urobíte nesprávne znamenie, bude to trochu chaotické. Pozerajte sa na nasledujúci obrázok, kde udáva smer osí (všimnite si však, že samotná doska plošných spojov ho má tiež vytlačený na jednej strane):

Dátový list MPU6050

Vzhľadom na to a pinout, viac-menej máte všetko jasné, aby ste mohli začať používať MPU6050. Ako môžete vidieť na predchádzajúcom obrázku, pripojenia sú celkom jednoduché a umožňujú kompatibilitu komunikácie I2C s väčšinou mikrokontrolérov, vrátane Arduina. Kolíky SCL a SDA majú na doske pull-up rezistor pre priame pripojenie k doske Arduino, takže sa nemusíte báť ich pridania sami.

Na prácu na obidvoch smeroch na zbernici I2C môžete použiť tieto kolíky a pokyny:

  • AD0 = 1 alebo vysoké (5v): pre adresu I0C 69x2.
  • AD0 = 0 alebo nízka (GND alebo Nc): pre adresu 0x68 zbernice I2C.

Pamätajte, že prevádzkové napätie modelu je 3v3, ale našťastie má zabudovaný regulátor, takže ho možno bez problémov prepnúť na 5v Arduina a transformuje ho na 3.3v.

Mimochodom, s vnútorným odporom voči GND, ak tento pin nie je pripojený, adresa predvolene to bude 0x68, pretože bude pripojený štandardne k zemi, interpretuje to ako logickú 0.

Integrácia s Arduino

Pripojenie Arduino a MPU6050

Môžeš dostať viac informácií o zbernici I2C v tomto článku. Už viete, že v závislosti na doske Arduino sa kolíky použité pre zbernicu líšia, ale v Arduino UNO je analógový pin A4 a A5, pre SDA (dáta) a SCL (hodiny) resp. Sú to jediné piny Arduino, spolu s 5v a GND na napájanie dosky, ktoré by ste mali použiť. Pripojenie je teda čo najjednoduchšie.

Pre funkcie MPU6050 môžete použiť knižnice, ktorých viac informácií získate na tomto odkaze pre I2C modulu a zbernice MPU 6050 XNUMX.

Programovanie dosky Arduino nie je s MPU6050 príliš priame, takže nie je pre začiatočníkov. Okrem toho, ak poznáte limity zrýchlenia alebo rozsahy uhlov, môžete vykonať kalibráciu a zistiť, aký presný pohyb alebo zrýchlenie to bolo. Avšak aby ste mali aspoň príklad, ako komentovať jeho používanie, môžete si tento kód pozrieť z Príklad náčrtu pre vaše Arduino IDE ktorý bude čítať hodnoty zaznamenané akcelerometrom a gyroskopom:

// 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);
}

Ak ste začiatočník a neviete dobre ako programovať s Arduino IDE, bude to pre vás ťažké pochopiť, takže si môžete zadarmo prečítať náš manuál s úvodným kurzom programovania Arduina ...


Buďte prvý komentár

Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.