MPU6050: modul za pozicioniranje s Arduinom

MPU6050 ploča

Ako trebate izraditi projekt i postaviti ga, to jest, znati kako se postavlja što se tiče prostora, možete koristiti modul MPU6050. Odnosno, ovaj je modul inercijalna mjerna jedinica ili IMU (inercijalne mjerne jedinice) sa 6 stupnjeva slobode (DoF). To je zahvaljujući 3-osnim senzorima akcelerometra i 3-osnom žiroskopu koji primjenjuje za rad.

Ovaj MPU6050 može znati kako se objekt koji sadrži sadrži pozicioniran za upotrebu u aplikacije navigacija, goniometrija, stabilizacija, kontrola gesta itd. Mobiteli obično uključuju ovu vrstu senzora za, primjerice, upravljanje određenim funkcijama gestama, poput zaustavljanja ako je pametni telefon preokrenut, vožnje vozila u video igrama okretanjem mobitela kao da je volan itd.

Što su akcelerometar i žiroskop?

Primjeri MEMS-a

Primjeri MEMS-a

Pa, krenimo u dijelove. Prvo je vidjeti koje su to vrste senzora sposobni su otkriti ubrzanje i zavoje, što se može zaključiti iz njihovih vlastitih imena.

  • brzinomjer: mjeri ubrzanje, odnosno promjenu brzine u jedinici vremena. Ne zaboravite da je u fizici promjena brzine s vremenom (a = dV / dt) definicija ubrzanja. Prema Newtonovom Drugom zakonu, također imamo da je a = F / m, a to je ono što akcelerometri koriste za rad, odnosno koriste parametre sile i mase predmeta. Kako bi se to moglo implementirati u elektroniku, koriste se tehnike MEMS (Micro Electro Mechanical Systems), koje se razlikuju od uobičajenih tehnika proizvodnje elektroničkih čipova, budući da su mehanički dijelovi stvoreni u MEMS-u. U tom se slučaju stvaraju tragovi ili elementi sposobni za mjerenje ubrzanja. To podrazumijeva da se mogu uzeti mnoge druge jedinice, poput brzine (ako je ubrzanje integrirano u vremenu), ako je ponovno integrirano, imamo pomak itd. To će reći, vrlo zanimljivi parametri za poznavanje položaja ili otkrivanje kretanja predmeta.
  • žiroskop: koji se naziva i žiroskop, to je uređaj koji mjeri kutnu brzinu predmeta, odnosno kutni pomak u jedinici vremena ili koliko se brzo tijelo okreće oko svoje osi. U ovom se slučaju MEMS tehnike također koriste za mjerenje ove brzine pomoću efekta poznatog kao Coriolis. Zahvaljujući tome može se izmjeriti kutna brzina ili se integriranjem kutne brzine s obzirom na vrijeme može dobiti kutni pomak.

MPU6050 modul

MPU6050 pinout

Sad kad znate što su akcelerometar i žiroskop, modul MPU6050 je elektronička ploča koja integrira ova dva elementa kako bi vam omogućila mjerenje tih promjena u položaju elementa i tako mogla generirati reakciju. Na primjer, da kada se objekt pomiče, svijetli LED ili druge puno složenije stvari.

Kao što rekoh, ima 6 osi slobode, DoF, 3-osni akcelerometar ubrzanja X, Y i Z i drugi 3-osni žiroskop za mjerenje kutne brzine. Morate uzeti u obzir da ne napravite pogreške u načinu postavljanja modula i smjera vrtnje za mjerenja, jer ako napravite pogrešan znak, to će biti pomalo kaotično. Pogledajte sljedeću sliku gdje određuje smjer osi (međutim, imajte na umu da je i na PCB-u tiskana na jednoj strani):

Tablica podataka MPU6050

S obzirom na ovo i pinout, manje-više imate sve jasno kako biste počeli koristiti MPU6050. Kao što možete vidjeti na prethodnoj slici, veze su prilično jednostavne i omogućuje I2C komunikaciju da bude kompatibilna s većinom mikrokontrolera, uključujući Arduino. Pribadače SCL i SDA imaju na ploči povlačni otpornik za izravno povezivanje s pločom Arduino, tako da ne morate brinuti hoćete li ih sami dodati.

Možete raditi s oba smjera na I2C sabirnici igle i upute:

  • AD0 = 1 ili visoki (5v): za I0C adresu 69x2.
  • AD0 = 0 ili nisko (GND ili Nc): za adresu 0x68 I2C sabirnice.

Imajte na umu da je radni napon modela 3v3, ali srećom ima ugrađeni regulator, tako da ga se bez problema može otuđiti s Arduinovim 5v i pretvorit će ga u 3.3v.

Usput, imajući unutarnji otpor prema GND, ako ovaj pin nije spojen, adresa po defaultu će biti 0x68, budući da će prema zadanim postavkama biti povezan sa zemljom, tumačeći ga kao logičnu 0.

Integracija s Arduinom

Arduino i MPU6050 veza

Možeš dobiti više informacija o I2C sabirnici u ovom članku. Već znate da ovisno o ploči Arduino pribadače koje se koriste za autobus razlikuju se, ali u Arduino UNO je analogni pin A4 i A5, za SDA (podaci) i SCL (sat) odnosno. To su jedine Arduino pribadače, zajedno s 5v i GND za napajanje ploče, koje biste trebali koristiti. Tako je veza što jednostavnija.

Za funkcije MPU6050 možete koristiti knjižnice od kojih na ovom linku možete pronaći više informacija za I2C modula i sabirnice MPU6050.

Programiranje Arduino ploče nije previše jednostavno s MPU6050, tako da nije za početnike. Uz to, znajući granice ubrzanja ili područja kutova, možete kalibrirati da biste utvrdili točno koje je kretanje ili ubrzanje bilo. Međutim, kako biste barem imali primjer kako komentirati njegovo korištenje, ovaj kôd možete vidjeti na Primjer skice za vaš Arduino IDE koji će očitati vrijednosti zabilježene akcelerometrom i žiroskopom:

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

Ako ste početnik i ne znate dobro kako programirati s Arduino IDE-om, ovo će vam biti teško razumjeti, pa možete besplatno pogledati naš priručnik s uvodnim tečajem programiranja Arduino ...


Budite prvi koji će komentirati

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.