MPU6050: modul për pozicionimin me Arduino

Bordi MPU6050

Nëse keni nevojë të krijoni një projekt dhe ta poziciononi, domethënë ta dini si vendoset në lidhje me hapësirën, ju mund të përdorni modulin MPU6050. Kjo do të thotë, ky modul është një njësi matëse inerciale ose IMU (Njësitë Matëse Inerciale) me 6 shkallë lirie (DoF). Kjo falë sensorëve të tipit akselerometër me 3 akse dhe një xhiroskopi me 3 boshte që zbaton për të punuar.

Ky MPU6050 mund të dijë se si pozicionohet objekti që përmban për përdorim aplikimet navigimi, goniometria, stabilizimi, kontrolli i gjesteve, etj. Telefonat celularë zakonisht përfshijnë këtë lloj sensori për të kontrolluar, për shembull, funksione të caktuara përmes gjesteve, të tilla si ndalimi nëse telefoni inteligjent kthehet, drejtimi i automjeteve në lojëra video duke e kthyer celularin sikur të ishte një timon, etj.

Çfarë është akselerometri dhe xhiroskopi?

Shembuj të MEMS

Shembuj të MEMS

Epo, le të shkojmë në pjesë. Gjëja e parë është të shohësh se cilat janë këto lloje të sensorëve janë në gjendje të zbulojnë nxitimin dhe kthesat, siç mund të nxirret nga emrat e tyre.

  • Accelerometer: mat nxitimin, domethënë ndryshimin e shpejtësisë për njësi të kohës. Mos harroni se në fizikë, ndryshimi i shpejtësisë me kohën (a = dV / dt) është përkufizimi i nxitimit. Sipas Ligjit të Dytë të Njutonit, ne gjithashtu kemi atë a = F / m, dhe kjo është ajo që përdorin akseleometrat për të punuar, domethënë ata përdorin parametrat e forcës dhe masës së objektit. Kështu që kjo mund të zbatohet në elektronikë, përdoren teknikat MEMS (Sistemet Mikro Elektro Mekanike), të cilat ndryshojnë nga teknikat konvencionale të prodhimit të çipave elektronikë, pasi që pjesët mekanike krijohen në një MEMS. Në këtë rast, krijohen gjurmët ose elementët e aftë për të matur përshpejtimet. Kjo nënkupton që shumë njësi të tjera mund të merren, siç është shpejtësia (nëse përshpejtimi integrohet në kohë), nëse integrohet përsëri, kemi zhvendosje, etj. Kjo do të thotë, parametra shumë interesantë për të njohur pozicionin ose për të zbuluar lëvizjen e një objekti.
  • Xhiroskopi: quhet gjithashtu xhiroskop, është një pajisje që mat shpejtësinë këndore të një objekti, domethënë zhvendosjen këndore për njësi të kohës ose sa shpejt një trup rrotullohet rreth boshtit të tij. Në këtë rast, teknikat MEMS përdoren gjithashtu për të matur këtë shpejtësi duke përdorur një efekt të njohur si Coriolis. Falë kësaj, shpejtësia këndore mund të matet ose, duke integruar shpejtësinë këndore në lidhje me kohën, mund të merret zhvendosja këndore.

Moduli MPU6050

Pikëz MPU6050

Tani që e dini se çfarë janë akselerometri dhe xhiroskopi, moduli MPU6050 është një bord elektronik që integron këto dy elemente për t'ju lejuar të matni këto ndryshime në pozicionin e një elementi dhe kështu të jeni në gjendje të gjeneroni një reagim. Për shembull, që kur një objekt lëviz një LED ndizet, ose gjëra të tjera shumë më komplekse.

Siç thashë, ai ka 6 akse të lirisë, DoF, Nxitimometër i nxitimit me 3 akse X, Y dhe Z dhe xhiroskop tjetër me 3 akse për të matur shpejtësinë këndore. Duhet të keni parasysh që të mos bëni një gabim në mënyrën në të cilën vendosni modulin dhe drejtimin e rrotullimit për matjet, pasi që nëse bëni shenjën e gabuar do të jetë pak kaotike. Shikoni imazhin vijues ku specifikon drejtimin e akseve (megjithatë, vini re se vetë PCB gjithashtu e ka të shtypur në njërën anë):

Fleta e të dhënave MPU6050

Duke marrë parasysh këtë dhe pinout, pak a shumë keni gjithçka të qartë për të filluar përdorimin e MPU6050. Siç mund ta shihni në imazhin e mëparshëm, lidhjet janë mjaft të thjeshta dhe lejon që komunikimi I2C të jetë i pajtueshëm me shumicën e mikrokontrolluesve, përfshirë Arduino. Kunjat SCL dhe SDA kanë një rezistencë tërheqëse në bord për lidhje të drejtpërdrejtë me bordin Arduino, kështu që nuk duhet të shqetësoheni për shtimin e tyre vetë.

Për të punuar me të dy udhëzimet në autobusin I2C, mund t'i përdorni këto kunjat dhe udhëzimet:

  • AD0 = 1 ose i Lartë (5v): për adresën I0C 69x2.
  • AD0 = 0 ose i Ulët (GND ose Nc): për adresën 0x68 të autobusit I2C.

Mos harroni se voltazhi i funksionimit të modelit është 3v3, por për fat të mirë ai ka një rregullator të integruar, kështu që mund të shoqërohet me 5v Arduino pa problem dhe do ta shndërrojë atë në 3.3v.

Nga rruga, duke pasur një rezistencë të brendshme ndaj GND, nëse ky pin nuk është i lidhur, adresa si parazgjedhje do të jetë 0x68, pasi që do të lidhet në mënyrë të paracaktuar me tokën, duke e interpretuar atë si një logjik 0.

Integrimi me Arduino

Lidhja Arduino dhe MPU6050

Ju mund të merrni më shumë informacion në lidhje me autobusin I2C në këtë artikull. Ju tashmë e dini që në varësi të bordit Arduino kunjat e përdorura për autobusin ndryshojnë, por në Arduino UNO është kunja analoge A4 dhe A5, për SDA (të dhëna) dhe SCL (ora) përkatësisht. Ata janë kunjat e vetme Arduino, së bashku me atë 5v dhe GND për të furnizuar bordin, që duhet të përdorni. Pra, lidhja është sa më e thjeshtë që të jetë e mundur.

Për funksionet e MPU6050 mund të përdorni bibliotekat prej të cilave mund të merrni më shumë informacion në këtë lidhje për I2C të modulit dhe atë të autobusit MPU6050.

Programimi i bordit Arduino nuk është shumë i thjeshtë me MPU6050, kështu që nuk është për fillestarët. Për më tepër, duke ditur kufijtë e përshpejtimeve ose rrezeve të këndeve, mund të kalibroni për të përcaktuar se cila ka qenë lëvizja e saktë ose nxitimi. Sidoqoftë, në mënyrë që të paktën të keni një shembull se si të komentoni për përdorimin e tij, mund ta shihni këtë kod nga Skicë Shembull për Arduino IDE-në tuaj i cili do të lexojë vlerat e regjistruara nga akselerometri dhe xhiroskopi:

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

Nëse jeni fillestar dhe nuk e dini mirë si të programoni me Arduino IDE, kjo do të jetë e vështirë për ju ta kuptoni, kështu që ju mund të konsultoheni me manualin tonë me kursin hyrës të programimit Arduino falas ...


Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.