MPU6050: modulis pozicionavimui naudojant „Arduino“

MPU6050 plokštė

Jei reikia sukurti projektą ir jį išdėstyti, tai yra žinoti kaip jis dedamas atsižvelgiant į erdvę, galite naudoti modulį MPU6050. Tai yra, šis modulis yra inercinis matavimo vienetas arba IMU (inerciniai matavimo vienetai), turintys 6 laisvės laipsnius (DoF). Tai dėka 3 ašių akselerometro tipo jutiklių ir 3 ašių giroskopo, kurį jis įgyvendina darbui.

Šis MPU6050 gali žinoti, kaip sudėtinis objektas yra išdėstytas naudoti programos navigacija, goniometrija, stabilizavimas, gestų valdymas ir kt. Mobilieji telefonai paprastai turi tokio tipo jutiklius, kad, pavyzdžiui, valdytų tam tikras funkcijas gestais, pavyzdžiui, sustotų, jei išmanusis telefonas būtų apverstas, vairuotų transporto priemones vaizdo žaidimuose pasukdami mobilųjį telefoną tarsi vairą ir pan.

Kas yra akselerometras ir giroskopas?

MEMS pavyzdžiai

MEMS pavyzdžiai

Na, eikime dalimis. Pirmas dalykas yra pamatyti, kokie tai jutikliai sugeba aptikti pagreitį ir posūkius, kaip galima spręsti iš jų pačių vardų.

  • Akselerometras: matuoja pagreitį, tai yra greičio pokytį per laiko vienetą. Atminkite, kad fizikoje greičio pokytis su laiku (a = dV / dt) yra pagreičio apibrėžimas. Pagal antrąjį Niutono dėsnį, mes taip pat turime, kad a = F / m, ir tai yra tai, ką akselerometrai naudoja darbui, tai yra, jie naudoja objekto jėgos ir masės parametrus. Kad tai būtų galima įgyvendinti elektronikoje, naudojamos MEMS („Micro Electro Mechanical Systems“) technologijos, kurios skiriasi nuo įprastų elektroninių lustų gamybos metodų, nes mechaninės dalys yra sukurtos MEMS. Tokiu atveju sukuriami takeliai ar elementai, galintys matuoti pagreitį. Tai reiškia, kad galima paimti daug kitų vienetų, tokių kaip greitis (jei pagreitis integruotas laike), jei jis vėl integruotas, mes turime poslinkį ir kt. Tai yra, labai įdomūs parametrai, norint žinoti objekto padėtį ar aptikti judėjimą.
  • giroskopas: dar vadinamas giroskopu, tai yra prietaisas, kuris matuoja objekto kampinį greitį, tai yra kampinį poslinkį per laiko vienetą arba tai, kaip greitai kūnas sukasi aplink savo ašį. Šiuo atveju MEMS metodai taip pat naudojami šiam greičiui matuoti naudojant efektą, žinomą kaip Coriolis. Dėl to galima išmatuoti kampinį greitį arba, integravus kampinį greitį laiko atžvilgiu, galima gauti kampinį poslinkį.

MPU6050 modulis

MPU6050 kištukas

Dabar, kai žinote, kas yra akselerometras ir giroskopas, „MPU6050“ modulis Tai yra elektroninė plokštė, integruojanti šiuos du elementus, kad galėtumėte išmatuoti šiuos elemento padėties pokyčius ir taip sukelti reakciją. Pavyzdžiui, kai objektas juda, užsidega šviesos diodas arba kiti daug sudėtingesni dalykai.

Kaip jau sakiau, jis turi 6 laisvės ašis, DoF, 3 ašių X, Y ir Z pagreičio akselerometras ir kitas 3 ašių giroskopas matuoti kampinį greitį. Turite atsižvelgti į tai, kad nepadarytumėte klaidos modulio padėjime ir matavimo sukimosi kryptimi, nes jei padarysite neteisingą ženklą, tai bus šiek tiek chaotiška. Pažvelkite į šį paveikslėlį, kuriame nurodoma ašių kryptis (tačiau atkreipkite dėmesį, kad pats PCB taip pat yra atspausdintas vienoje pusėje):

Duomenų lapas MPU6050

Atsižvelgiant į tai ir iškyšulys, daugiau ar mažiau turite viską, kad pradėtumėte naudoti MPU6050. Kaip matote ankstesniame paveikslėlyje, jungtys yra gana paprastos ir leidžia „I2C“ ryšiui būti suderinamam su daugeliu mikrovaldiklių, įskaitant „Arduino“. SCL ir SDA kaiščių plokštėje yra pritraukimo rezistorius, skirtas tiesiogiai prijungti prie „Arduino“ plokštės, todėl jums nereikės jaudintis dėl jų pridėjimo patys.

Norėdami dirbti su I2C magistralės abiem kryptimis, galite jas naudoti kaiščiai ir kryptys:

  • AD0 = 1 arba aukštas (5v): I0C adresui 69x2.
  • AD0 = 0 arba Žemas (GND arba Nc): I0C magistralės 68x2 adresui.

Atminkite, kad modelio darbinė įtampa yra 3v3, tačiau, laimei, jame yra įmontuotas reguliatorius, todėl jį be problemų galima perjungti su „Arduino“ 5v ir jis jį pavers 3.3v.

Beje, turintis vidinį atsparumą GND, jei šis kaištis neprijungtas, adresą pagal numatytuosius nustatymus tai bus 0x68, nes pagal numatytuosius nustatymus jis bus prijungtas prie žemės, aiškinant jį kaip loginį 0.

Integracija su „Arduino“

„Arduino“ ir „MPU6050“ jungtis

Jūs galite gauti daugiau informacijos apie I2C magistralę šiame straipsnyje. Jūs jau žinote, kad, priklausomai nuo „Arduino“ lentos, autobusui naudojami kaiščiai skiriasi, tačiau Arduino UNO yra analoginis kaištis A4 ir A5, SDA (duomenys) ir SCL (laikrodis) atitinkamai. Jie yra vieninteliai „Arduino“ kaiščiai kartu su 5v ir GND, kurie valdo lentą, kuriuos turėtumėte naudoti. Taigi jungtis yra kuo paprastesnė.

MPU6050 funkcijoms galite naudoti bibliotekas, apie kurias galite gauti daugiau informacijos šioje nuorodoje I2C modulio ir magistralės MPU6050.

„Arduino“ plokščių programavimas nėra labai paprastas naudojant „MPU6050“, todėl jis nėra skirtas pradedantiesiems. Be to, žinodami pagreičių ar kampų diapazonų ribas, galite kalibruoti, kad nustatytumėte tikslų judėjimą ar pagreitį. Tačiau, kad galėtumėte bent jau turėti pavyzdį, kaip pakomentuoti jo naudojimą, galite pamatyti šį kodą iš „Arduino IDE“ eskizo pavyzdys kuris nuskaitys akselerometro ir giroskopo užrašytas vertes:

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

Jei esate pradedantysis ir gerai nežinote kaip programuoti naudojant „Arduino IDE“, tai jums bus sunku suprasti, todėl galite nemokamai perskaityti mūsų vadovą su įvadiniu „Arduino“ programavimo kursu ...


Būkite pirmas, kuris pakomentuos

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.