MPU6050: Arduino- ի հետ դիրքավորելու մոդուլ

MPU6050 տախտակ

Եթե ​​Ձեզ անհրաժեշտ է ստեղծել նախագիծ և տեղադրել այն, այսինքն ՝ իմացեք ինչպես է դրված տարածքի վերաբերյալ կարող եք օգտագործել մոդուլը MPU6050, Այսինքն, այս մոդուլը իներցիոն չափման միավոր է կամ IMU (Inertial Measurment Units) ՝ 6 աստիճանի ազատությամբ (DoF): Դա շնորհիվ 3 առանցքային արագացուցաչափի տիպի սենսորների և 3 առանցքային գիրոսկոպի, որոնք այն իրականացնում է աշխատելու համար:

Այս MPU6050- ը կարող է իմանալ, թե ինչպես է պարունակում պարունակող օբյեկտը օգտագործման համար դիմումները նավիգացիա, գոնիոմետրիա, կայունացում, ժեստերի կառավարում և այլն: Բջջային հեռախոսները սովորաբար պարունակում են այս տեսակի սենսորներ, որպեսզի, օրինակ, ժեստերի միջոցով վերահսկեն որոշակի գործառույթներ, ինչպիսիք են `կանգ առնել սմարթֆոնը շրջված, մեքենաներ վարել տեսախաղերում` բջջայինը կարծես ղեկ անելով, և այլն:

Ի՞նչ է արագացուցաչափը և գիրոսկոպը:

MEMS- ի օրինակներ

MEMS- ի օրինակներ

Դե, եկեք գնանք մաս-մաս: Առաջին բանը տեսնելն է, թե որոնք են այս տեսակի սենսորները կարողանում են հայտնաբերել արագացումը և շրջադարձերը, ինչպես կարելի է հանել իրենց իսկ անուններից:

  • Արագացուցիչչափում է արագացումը, այսինքն ՝ արագության փոփոխությունը ժամանակի միավորի համար: Հիշեք, որ ֆիզիկայում արագության փոփոխությունը ժամանակի հետ (a = dV / dt) արագացման բնութագիր է: Նյուտոնի երկրորդ օրենքի համաձայն, մենք ունենք նաև այն, որ a = F / m, և դա այն է, ինչ արագացուցիչներն օգտագործում են աշխատելու համար, այսինքն ՝ նրանք օգտագործում են օբյեկտի ուժի և զանգվածի պարամետրեր: Որպեսզի դա հնարավոր լինի իրականացնել էլեկտրոնիկայում, օգտագործվում են MEMS (Micro Electro Mechanical Systems) տեխնիկա, որոնք տարբերվում են սովորական էլեկտրոնային չիպերի արտադրության տեխնիկայից, քանի որ մեխանիկական մասերը ստեղծվում են MEMS- ում: Այս դեպքում ստեղծվում են հետքեր կամ տարրեր, որոնք ունակ են արագությունները չափելու: Սա ենթադրում է, որ շատ այլ միավորներ կարող են վերցվել, ինչպիսիք են արագությունը (եթե արագացումը ժամանակի մեջ է ինտեգրված), եթե այն նորից ինտեգրված է, մենք ունենք տեղաշարժ և այլն: Ասել է թե ՝ շատ հետաքրքիր պարամետրեր ՝ օբյեկտի դիրքը իմանալու կամ հայտնաբերելու համար:
  • Գիրոսկոպ. կոչվում է նաև գիրոսկոպ, դա սարք է, որը չափում է օբյեկտի անկյունային արագությունը, այսինքն ՝ ժամանակի միավորի անկյունային տեղաշարժը կամ մարմինը որքան արագ է պտտվում իր առանցքի շուրջ: Այս դեպքում MEMS տեխնիկան օգտագործվում է նաև նշված արագությունը չափելու համար `օգտագործելով էֆեկտ, որը հայտնի է որպես Կորիոլիս: Դրան շնորհիվ անկյունային արագությունը կարելի է չափել կամ, ժամանակի նկատմամբ անկյունային արագությունը ինտեգրելով, կարող է ստացվել անկյունային տեղաշարժ:

MPU6050 մոդուլ

MPU6050 փին

Այժմ, երբ դուք գիտեք, թե որոնք են արագացուցիչը և գիրոսկոպը, MPU6050 մոդուլը Դա էլեկտրոնային տախտակ է, որը միավորում է այս երկու տարրերը ՝ թույլ տալով չափել տարրի դիրքի այս փոփոխությունները և այդպիսով կարողանալ առաջացնել ռեակցիա: Օրինակ, որ երբ օբյեկտը շարժվում է, LED- ը լույս է տալիս, կամ այլ շատ ավելի բարդ բաներ:

Ինչպես ասացի, այն ունի ազատության 6 առանցք, DoF, 3 առանցքի X, Y և Z արագացման արագացուցիչ և այլ 3 առանցք ունեցող գիրոսկոպ անկյունային արագությունը չափելու համար: Պետք է հաշվի առնել, որ սխալներ թույլ չտաք չափման համար մոդուլի և պտտման ուղղության դիրքում, քանի որ եթե սխալ նշան եք անում, դա մի քիչ խառնաշփոթ կլինի: Նայեք հետևյալ նկարին, որտեղ այն սահմանում է առանցքների ուղղությունը (սակայն նկատեք, որ PCB- ն ինքն էլ ունի մի կողմից տպված):

Տվյալների թերթ MPU6050

Հաշվի առնելով սա և pinout- ը, քիչ թե շատ դուք ունեք ամեն ինչ պարզ, որպեսզի սկսեք օգտագործել MPU6050: Ինչպես տեսնում եք նախորդ պատկերում, կապերը բավականին պարզ են, և դա թույլ է տալիս I2C հաղորդակցումը համատեղելի լինել միկրոկոնտրոլերների մեծամասնության հետ, ներառյալ Arduino- ն: SCL և SDA քորոցները տախտակի վրա ունեն քաշող դիմադրություն `Arduino տախտակին անմիջական կապի համար, այնպես որ ինքներդ դրանք ավելացնելու մասին անհանգստանալու կարիք չունեք:

I2C ավտոբուսում երկու ուղղությունների հետ աշխատելու համար կարող եք օգտագործել դրանք քորոցներ և ուղղություններ:

  • AD0 = 1 կամ բարձր (5v) ՝ 0x69 I2C հասցեի համար:
  • AD0 = 0 կամ ցածր (GND կամ Nc). I0C ավտոբուսի 68x2 հասցեի համար:

Հիշեք, որ մոդելի գործառնական լարումը 3v3 է, բայց բարեբախտաբար այն ունի ներկառուցված կարգավորիչ, ուստի այն առանց խնդրի հնարավոր է օժանդակել Arduino's 5v- ով և այն կվերափոխի 3.3v:

Ի դեպ, ունենալով GND- ի ներքին դիմադրություն, եթե այս քորոցը միացված չէ, հասցեն լռելյայն կլինի 0x68, քանի որ այն լռելյայն կապվելու է երկրի հետ ՝ մեկնաբանելով այն որպես տրամաբանական 0:

Ինտեգրում Arduino- ի հետ

Arduino և MPU6050 միացում

Դուք կարող եք ստանալ լրացուցիչ տեղեկություններ I2C ավտոբուսի մասին այս հոդվածում: Դուք արդեն գիտեք, որ կախված Arduino տախտակից, ավտոբուսի համար օգտագործվող քորոցները տարբեր են, բայց դրանց մեջ Arduino UNO անալոգային քորոցն է A4 և A5, SDA (տվյալներ) և SCL (ժամացույց) համար համապատասխանաբար Դրանք միակ Arduino քորոցներն են, տախտակը սնուցելու համար 5v և GND- ի հետ միասին, որոնք դուք պետք է օգտագործեք: Այսպիսով, կապը հնարավորինս պարզ է:

MPU6050- ի գործառույթների համար կարող եք օգտագործել այն գրադարանները, որոնց համար կարող եք ավելի շատ տեղեկություններ ստանալ այս հղման համար ՝ I2C մոդուլի և ավտոբուսի MPU6050.

Arduino տախտակի ծրագրավորումը MPU6050- ի հետ այնքան էլ պարզ չէ, ուստի այն սկսնակների համար չէ: Բացի այդ, իմանալով անկյունների արագացումների կամ տիրույթների սահմանները, կարող եք չափաբերել `պարզելու, թե որն է ճշգրիտ շարժումը կամ արագացումը: Այնուամենայնիվ, որպեսզի կարողանաք գոնե օրինակ ունենալ, թե ինչպես մեկնաբանել դրա օգտագործումը, այս կոդը կարող եք տեսնել այստեղից Ձեր Arduino IDE- ի օրինակային ուրվագիծ որը կկարդա արագացուցչի և գիրոսկոպի կողմից արձանագրված արժեքները.

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

Եթե ​​դուք սկսնակ եք, և լավ չգիտեք ինչպես ծրագրավորել Arduino IDE- ի հետԴա ձեզ համար դժվար կլինի հասկանալ, այնպես որ կարող եք անվճար խորհրդակցել մեր ձեռնարկի հետ Arduino ծրագրավորման ներածական դասընթացի հետ ...


Հոդվածի բովանդակությունը հավատարիմ է մեր սկզբունքներին խմբագրական էթիկա, Սխալի մասին հաղորդելու համար կտտացրեք այստեղ.

Եղիր առաջին մեկնաբանողը

Թողեք ձեր մեկնաբանությունը

Ձեր էլ. Փոստի հասցեն չի հրապարակվելու: Պահանջվող դաշտերը նշված են *

*

*

  1. Տվյալների համար պատասխանատու ՝ Միգել Անխել Գատոն
  2. Տվյալների նպատակը. Վերահսկել SPAM, մեկնաբանությունների կառավարում:
  3. Օրինականություն. Ձեր համաձայնությունը
  4. Տվյալների հաղորդագրություն. Տվյալները չեն փոխանցվի երրորդ անձանց, բացառությամբ իրավական պարտավորության:
  5. Տվյալների պահպանում. Տվյալների շտեմարան, որը հյուրընկալվում է Occentus Networks (EU) - ում
  6. Իրավունքներ. Timeանկացած պահի կարող եք սահմանափակել, վերականգնել և ջնջել ձեր տեղեկատվությունը: