MPU6050: moduuli paikannukseen Arduinolla

MPU6050-kortti

Jos haluat luoda projektin ja sijoittaa sen, eli tiedä miten se sijoitetaan tilaa varten voit käyttää moduulia MPU6050. Eli tämä moduuli on inertiaalinen mittausyksikkö tai IMU (inertiaaliset mittausyksiköt), jossa on 6 vapausastetta (DoF). Tämä on 3-akselisen kiihtyvyysanturin tyyppisten antureiden ja 3-akselisen gyroskoopin ansiosta, jonka se toteuttaa toimimaan.

Tämä MPU6050 voi tietää, miten sisältävä esine sijoitetaan käytettäväksi sovellukset navigointi, goniometria, stabilointi, eleiden hallinta jne. Matkapuhelimissa on yleensä tämän tyyppiset anturit esimerkiksi tiettyjen toimintojen hallitsemiseksi eleillä, kuten pysähtyminen, jos älypuhelin käännetään, ajoneuvojen ajaminen videopeleissä kääntämällä matkapuhelinta ikään kuin se olisi ohjauspyörä jne.

Mikä on kiihtyvyysanturi ja gyroskooppi?

MEMS-esimerkkejä

MEMS-esimerkkejä

No, mennään osittain. Ensimmäinen asia on nähdä, mitä tämäntyyppiset anturit ovat pystyvät havaitsemaan kiihtyvyyden ja käännökset, kuten voidaan päätellä heidän omista nimistään.

  • kiihtyvyysanturi: mittaa kiihtyvyyttä, toisin sanoen nopeuden muutosta aikayksikköä kohti. Muista, että fysiikassa nopeuden muutos ajan myötä (a = dV / dt) on kiihtyvyyden määritelmä. Newtonin toisen lain mukaan meillä on myös se, että a = F / m, ja sitä kiihtyvyysmittarit käyttävät toimiakseen, eli ne käyttävät kohteen voiman ja massan parametreja. Jotta tämä voidaan toteuttaa elektroniikassa, käytetään MEMS (Micro Electro Mechanical Systems) -tekniikoita, jotka eroavat perinteisistä elektronisten sirujen valmistustekniikoista, koska mekaaniset osat luodaan MEMS: ssä. Tässä tapauksessa luodaan kappaleita tai elementtejä, jotka pystyvät mittaamaan kiihtyvyyksiä. Tämä tarkoittaa, että voidaan ottaa monia muita yksiköitä, kuten nopeus (jos kiihtyvyys integroidaan ajassa), jos se integroidaan uudelleen, meillä on siirtymä jne. Toisin sanoen erittäin mielenkiintoiset parametrit kohteen sijainnin tuntemiseksi tai kohteen liikkeen havaitsemiseksi.
  • gyroskooppi: jota kutsutaan myös gyroskoopiksi, se on laite, joka mittaa kohteen kulmanopeutta, toisin sanoen kulmapoikkeamaa aikayksikköä kohti tai kuinka nopeasti runko pyörii akselinsa ympäri. Tässä tapauksessa MEMS-tekniikoita käytetään myös tämän nopeuden mittaamiseen käyttämällä vaikutusta, joka tunnetaan nimellä Coriolis. Tämän ansiosta kulmanopeus voidaan mitata tai integroimalla kulmanopeus ajan suhteen voidaan saavuttaa kulmansiirtymä.

MPU6050-moduuli

MPU6050-nasta

Nyt kun tiedät mitä kiihtyvyysanturi ja gyroskooppi ovat, MPU6050-moduuliin Se on elektroninen kortti, joka integroi nämä kaksi elementtiä, jotta voit mitata näitä muutoksia elementin sijainnissa ja siten pystyä tuottamaan reaktion. Esimerkiksi, kun esine liikkuu, LED syttyy tai muita paljon monimutkaisempia asioita.

Kuten sanoin, sillä on 6 vapauden akselia, DoF, 3-akselinen X-, Y- ja Z-kiihtyvyyskiihtyvyysanturi ja muu 3-akselinen gyroskooppi kulmanopeuden mittaamiseksi. Sinun on otettava huomioon, ettet tee virhettä tavassa, jolla moduuli sijoitetaan, ja mittausten pyörimissuunta, koska jos teet väärän merkin, se on hieman kaoottista. Katso seuraava kuva, jossa se määrittää akseleiden suunnan (huomaa kuitenkin, että piirilevy itse on myös painanut sen toiselle puolelle):

Datalehti MPU6050

Ottaen huomioon tämän ja pinout, enemmän tai vähemmän sinulla on kaikki selvää aloittaaksesi MPU6050: n käytön. Kuten edellisestä kuvasta näet, yhteydet ovat melko yksinkertaisia ​​ja mahdollistavat I2C-viestinnän olevan yhteensopiva useimpien mikro-ohjainten, mukaan lukien Arduino, kanssa. SCL- ja SDA-nastoissa on levyllä oleva vetovastus suoraa yhteyttä Arduino-korttiin varten, joten sinun ei tarvitse huolehtia niiden lisäämisestä itse.

Voit työskennellä I2C-väylän molempien suuntien kanssa käyttämällä näitä nastat ja ohjeet:

  • AD0 = 1 tai korkea (5v): I0C-osoitteelle 69x2.
  • AD0 = 0 tai matala (GND tai Nc): I0C-väylän osoitteelle 68x2.

Muista, että mallin käyttöjännite on 3v3, mutta onneksi siinä on sisäänrakennettu säädin, joten se voidaan aliemtned Arduinon 5v: n kanssa ongelmitta ja se muuttaa sen 3.3v: ksi.

Muuten, jolla on sisäinen vastus GND: lle, jos tätä nastaa ei ole kytketty, osoite oletuksena se on 0x68, koska se kytketään oletusarvoisesti maahan, tulkitsemalla se loogisena 0: na.

Integrointi Arduinon kanssa

Arduino- ja MPU6050-liitäntä

Voit saada lisätietoja I2C-väylästä tässä artikkelissa. Tiedät jo, että Arduino-laudasta riippuen bussissa käytettävät nastat vaihtelevat, mutta Arduino UNO on analoginen tappi A4 ja A5, SDA (data) ja SCL (kello) vastaavasti. Ne ovat ainoat Arduino-nastat yhdessä 5v: n ja GND: n kanssa, jotka käyttävät korttia. Joten yhteys on mahdollisimman yksinkertainen.

MPU6050: n toimintoja varten voit käyttää kirjastoja, joista saat lisätietoja tästä linkistä I2C moduulin ja väylän MPU6050.

Arduino-kortin ohjelmointi ei ole liian suoraviivaista MPU6050: n kanssa, joten se ei ole tarkoitettu aloittelijoille. Lisäksi, kun tiedät kiihtyvyyden tai kulmien rajat, voit kalibroida selvittääkseen tarkan liikkeen tai kiihtyvyyden. Kuitenkin, jotta sinulla on ainakin esimerkki siitä, miten kommentoida sen käyttöä, näet tämän koodin Esimerkki luonnoksesta Arduino IDE -laitteellesi joka lukee kiihtyvyysmittarin ja gyroskoopin tallentamat arvot:

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

Jos olet aloittelija etkä tiedä hyvin kuinka ohjelmoida Arduino IDE: llä, tätä on vaikea ymmärtää, joten voit tutustua käsikirjaamme ilmaiseksi Arduino-ohjelmoinnin alkukurssilla ...


Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.