MPU6050: modulis pozicionēšanai ar Arduino

MPU6050 dēlis

Ja jums ir nepieciešams izveidot projektu un to pozicionēt, tas ir, zināt kā tas ir novietots attiecībā uz vietu varat izmantot moduli MPU6050. Tas ir, šis modulis ir inerciāla mērvienība jeb IMU (inerciālās mērvienības) ar 6 brīvības pakāpēm (DoF). Tas ir pateicoties 3 asu akselerometra tipa sensoriem un 3 asu žiroskopam, ko tas ievieš darbam.

Šis MPU6050 var uzzināt, kā saturošais objekts ir novietots lietošanai pieteikumi navigācija, goniometrija, stabilizācija, žestu kontrole utt. Mobilajos tālruņos parasti ietilpst šāda veida sensori, lai, piemēram, ar žestiem kontrolētu noteiktas funkcijas, piemēram, apstāšanās, ja viedtālrunis tiek apgriezts, transportlīdzekļu vadīšana videospēlēs, pagriežot mobilo, it kā tas būtu stūre utt.

Kas ir akselerometrs un žiroskops?

MEMS piemēri

MEMS piemēri

Nu, ejam pa daļām. Pirmā lieta ir redzēt, kādi ir šāda veida sensori spēj noteikt paātrinājumu un pagriezienus, kā to var secināt no viņu pašu vārdiem.

  • Akselerometrs: mēra paātrinājumu, tas ir, ātruma izmaiņas laika vienībā. Atcerieties, ka fizikā ātruma maiņa ar laiku (a = dV / dt) ir paātrinājuma definīcija. Saskaņā ar Ņūtona otro likumu mums ir arī tas, ka a = F / m, un tieši to izmanto akselerometri, tas ir, tie izmanto objekta spēka un masas parametrus. Lai to varētu realizēt elektronikā, tiek izmantotas MEMS (Micro Electro Mechanical Systems) metodes, kas atšķiras no parastajām elektronisko mikroshēmu izgatavošanas metodēm, jo ​​mehāniskās detaļas tiek veidotas MEMS. Šajā gadījumā tiek izveidoti sliežu ceļi vai elementi, kas spēj izmērīt paātrinājumus. Tas nozīmē, ka var ņemt daudzas citas vienības, piemēram, ātrumu (ja paātrinājums ir integrēts laikā), ja tas atkal tiek integrēts, mums ir pārvietojums utt. Tas ir, ļoti interesanti parametri, lai uzzinātu objekta atrašanās vietu vai noteiktu kustību.
  • Žiroskops: sauc arī par žiroskopu, tā ir ierīce, kas mēra objekta leņķisko ātrumu, tas ir, leņķisko nobīdi laika vienībā vai cik ātri ķermenis griežas ap savu asi. Šajā gadījumā MEMS metodes tiek izmantotas arī šī ātruma mērīšanai, izmantojot efektu, kas pazīstams kā Korioliss. Pateicoties tam, var izmērīt leņķa ātrumu vai, integrējot leņķa ātrumu attiecībā pret laiku, var iegūt leņķa nobīdi.

MPU6050 modulis

MPU6050 pinout

Tagad, kad jūs zināt, kas ir akselerometrs un žiroskops, MPU6050 moduli ir elektroniska tāfele, kas integrē šos divus elementus, lai ļautu izmērīt šīs izmaiņas elementa pozīcijā un tādējādi varētu radīt reakciju. Piemēram, kad objekts pārvietojas, iedegas gaismas diode vai citas daudz sarežģītākas lietas.

Kā jau teicu, tam ir 6 brīvības asis, DoF, 3 asu paātrinājuma akselerometrs X, Y un Z un cits 3 asu žiroskops lai mērītu leņķisko ātrumu. Jums ir jāņem vērā, lai nepieļautu kļūdas moduļa novietojumā un rotācijas virzienā mērījumiem, jo, ja izdarīsit nepareizu zīmi, tas būs nedaudz haotisks. Apskatiet šo attēlu, kur tas norāda asu virzienu (tomēr ievērojiet, ka pašā PCB vienā pusē tas ir arī iespiests):

Datu lapa MPU6050

Ņemot to vērā un pinout, vairāk vai mazāk jums ir viss skaidrs, lai sāktu lietot MPU6050. Kā redzat iepriekšējā attēlā, savienojumi ir diezgan vienkārši, un tas ļauj I2C komunikācijai būt saderīgai ar lielāko daļu mikrokontrolleru, ieskaitot Arduino. SCL un SDA tapām uz tāfeles ir pievilkšanas rezistors tiešai savienošanai ar Arduino dēli, tāpēc jums nav jāuztraucas par to pievienošanu pats.

Lai strādātu ar I2C kopnes abiem virzieniem, varat tos izmantot tapas un virzieni:

  • AD0 = 1 vai augsts (5v): I0C adresei 69x2.
  • AD0 = 0 vai Zems (GND vai Nc): I0C kopnes adresei 68x2.

Atcerieties, ka modeļa darba spriegums ir 3v3, bet par laimi tam ir iebūvēts regulators, tāpēc to var bez problēmām izmantot ar Arduino 5v un tas pārveidos to par 3.3v.

Starp citu, kam ir iekšēja pretestība GND, ja šī tapa nav savienota, adrese pēc noklusējuma tas būs 0x68, jo tas pēc noklusējuma būs savienots ar zemi, interpretējot to kā loģisku 0.

Integrācija ar Arduino

Arduino un MPU6050 savienojums

Tu vari dabūt vairāk informācijas par I2C kopni šajā rakstā. Jūs jau zināt, ka atkarībā no Arduino dēļa autobusa tapas atšķiras, bet Arduino UNO ir analogā tapa A4 un A5, SDA (dati) un SCL (pulkstenis) attiecīgi. Tie ir vienīgie Arduino tapas kopā ar 5v un GND, kas darbina dēli, kas jums jāizmanto. Tātad savienojums ir pēc iespējas vienkāršāks.

MPU6050 funkcijām varat izmantot bibliotēkas, kuru plašāku informāciju varat iegūt šajā saitē I2C moduļa un kopnes modulis MPU6050.

Arduino dēļu programmēšana ar MPU6050 nav pārāk vienkārša, tāpēc tā nav paredzēta iesācējiem. Turklāt, zinot paātrinājumu vai leņķu diapazonu robežas, jūs varat kalibrēt, lai noteiktu precīzu kustību vai paātrinājumu. Tomēr, lai jums būtu vismaz piemērs, kā komentēt tā lietošanu, jūs varat redzēt šo kodu no Arduino IDE skices piemērs kas nolasīs akselerometra un žiroskopa reģistrētās vērtības:

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

Ja esat iesācējs un nezināt labi kā programmēt ar Arduino IDE, to jums būs grūti saprast, tāpēc varat bez maksas iepazīties ar mūsu rokasgrāmatu ar Arduino programmēšanas ievadkursu ...


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.