Search Code

Koodka MPU-9250 Accelerometer, Gyroscope, iyo Magnetometer

Koodka MPU-9250 Accelerometer, Gyroscope, iyo Magnetometer

Cashiggan, waxaan ku baran doonaa sida loo isticmaalo dareemaha MPU-9250, kaas oo isku daraya xawaare-qiyaase, giroskoob, iyo magnetometer hal qayb oo is haysta. Marka aad dhammayso hagahan, waxaad awoodi doontaa inaad akhrido xogta dareemaha oo aad fasirto macnaheeda mashruucyadaada. Dareemahan ayaa si gaar ah faa'iido ugu leh codsiyada sida robotics iyo diyaaradaha duulista, halkaas oo raadraaca jihada iyo dhaqdhaqaaqa ay muhiim tahay. Waxaad tixraaci kartaa fiidiyowga si aad u hesho caddayn dheeri ah oo ku saabsan qaabaynta iyo koodhka (fiidiyowga 00:20).

ELE_MPU6050_208
ELE_MPU6050_208

Qalabka La Sharaxay

Qaybta MPU-9250 waxay isku daraysaa saddex dareeme: xawaare-qiyaase, giroskoob, iyo magnetometer. Xawaare-qiyaasku wuxuu cabbiraa xoogagga xawaaraha, taas oo kuu oggolaanaysa inaad go'aamiso xawaaraha iyo jihada. Giroskoobku wuxuu bixiyaa xawaaraha xagasha, isagoo kaa caawinaya inaad fahamto isbeddelka jihada waqti ka dib. Ugu dambeyntii, magnetometer-ku wuxuu u shaqeeyaa sidii compass, isagoo bixinaya xogta goobta magnetic-ka taas oo kaa caawinaysa hagidda.

Isku darka dareemayaashan ayaa si gaar ah faa'iido ugu leh codsiyada halkaas oo raadraaca dhaqdhaqaaqa saxda ah loo baahan yahay, sida diyaaradaha duulista ama taleefannada casriga ah. MPU-9250 wuxuu ku xidhiidhaa I2C ama SPI, taas oo ka dhigaysa mid ku habboon qaabab kala duwan oo microcontroller ah.

Faahfaahinta Xaashida Xogta

Soo saaraha InvenSense
Nambarka qaybta MPU-9250
Danabka Logic/IO 1.8 V (I/O), 3.3 V (saadka)
Danabka saadka 2.4 - 3.6 V
Korontada soo-saarka (kanal kasta) 3.2 mA (shaqada caadiga ah)
Korontada ugu sarreysa (kanal kasta) 19.8 mA (ugu badnaan)
Hagaha soo-noqnoqoshada PWM N/A
Heerarka xadka gelinta 0.3 * VDD (hoose), 0.7 * VDD (sare)
Hoos u dhaca danabka / RDS(on) / dheregsanaanta N/A
Xadka kulaylka -40 ilaa 85 °C
Baakad QFN
Qoraallo / noocyo Waxaa ku jira nidaamiyaha danabka gudaha
  • Hubi saadka danabka saxda ah (2.4 - 3.6 V) si aad uga fogaato inaad waxyeelleeyso qaybta.
  • Isticmaal resistor-ka kor-u-jiidashada ee khadadka SDA iyo SCL haddii aanay ku jirin baakadkaaga jabsiga ah.
  • Xaqiiji cinwaanka I2C (kan caadiga ah waa 0x68) oo hagaaji binka ADO si aad u hesho cinwaano kale.
  • Hubi xidhiidhada si ay u xasilloon yihiin si looga hortago akhrin khaldan.
  • Si joogto ah u qalib dareemayaasha si aad u hesho cabbir sax ah.

Tilmaamaha Xidhiidhinta

Arduino wiring for  MPU6050 using A4 and A4 for SDA and SCL
Xidhiidhinta Arduino ee MPU6050 iyadoo la isticmaalayo A4 iyo A4 ee SDA iyo SCL
Arduino Wiring for MPU-6050
Arduino Wiring for MPU-6050
Arduino wiring for  MPU6050 using A4 and A4 for SDA and SCL
Arduino wiring for MPU6050 using A4 and A4 for SDA and SCL

Si aad ugu xidho MPU-9250 Arduino-gaaga, ku bilow adiga oo ku xidhaya binka VCC ee MPU-9250 binka 5V ee Arduino-ga. Qaybta waxay leedahay nidaamiye gudaha, marka waa ammaan in lagu shideeyo 5V. Marka xigta, ku xidh binka GND dhulka (GND) ee Arduino-ga. Xidhiidhinta xogta, ku xidh binka SDA binka A4 ee Arduino-ga iyo binka SCL binka A5. Qaabkani waa mid caadi u ah Arduino badan.

Haddii aad isticmaalayso Arduino Mega, binnada SDA iyo SCL waxay ku yaalliin binnada 20 iyo 21, siday u kala horreeyaan. Hubi in xidhiidhada ay adag yihiin si looga fogaado khaladaadka xidhiidhinta. Haddii aad u baahan tahay inaad beddesho cinwaanka I2C ee MPU-9250, ku xidh binka ADO 5V si aad ugu dhigto 0x69. Ka goyntiisa ayaa dib ugu celin doonta 0x68.

Arduino Schematic for  MPU6050 using A4 and A4 for SDA and SCL
Jaantuska Arduino ee MPU6050 iyadoo la isticmaalayo A4 iyo A4 ee SDA iyo SCL

Tusaalooyinka Koodhka & Sharaxaadda

Qoraalka Arduino, waxaan ku bilaabaynaa inaan ku darro maktabadda MPU9250 oo aan abuurno tusaale dareemaha:

#include "MPU9250.h"
MPU9250 IMU(Wire,0x68);

Koodhku wuxuu bilaabaa dareemaha oo wuxuu bilaabaa xidhiidhka shaqada setup():

void setup() {
  Serial.begin(115200);
  status = IMU.begin();
  if (status < 0) {
    Serial.println("Bilowga IMU ma ahayn mid guul leh");
    while(1) {}
  }
}

Gudaha shaqada loop(), waxaan si joogto ah u akhrinaynaa oo u daabacaynaa xogta dareemaha:

void loop() {
  IMU.readSensor();
  Serial.print("AccelX: ");
  Serial.print(IMU.getAccelX_mss(),6);
  // Qoraallo dheeri ah oo ku saabsan dhidibyada kale
}

Qaybtani waxay akhrisaa qiimaha xawaare-qiyaaska, giroskoobka, iyo magnetometer-ka, iyadoo ku muujinaysa Kormeerka Serial-ka. Hubi inaad eegto koodhka buuxa ee hoos ku xiran maqaalka si aad u hesho hirgelinta dhammaystiran.

Muuqaal / Waxa Laga Filan Karo

Markaad wado koodhka, waxaad arki doontaa qiimaha dareemaha oo si waqti-dhab ah ugu cusboonaysanaya Kormeerka Serial-ka. Qiimaha xawaare-qiyaasku way isbeddeli doonaan markaad dhaqaajiso dareemaha, halka qiimaha giroskoobku ay muujin doonaan heerka wareegga. Magnetometer-ku wuxuu ku siin doonaa xoogga goobta magnetic-ka saddex dhidib, kaas oo loo isticmaali karo in lagu go'aamiyo jihada. Ka digtoonow gelinta sabeynaysa, maxaa yeelay waxay u horseedi kartaa akhrin aan sax ahayn (fiidiyowga 12:30).

Cutubyada

  • Hordhac (00:00)
  • Qalabka Sharaxaad (01:30)
  • Tilmaamaha Fiilada (04:00)
  • li>Tusaalooyinka Koodka & Faahfaahin (06:00)
  • Muuqaal (10:00)

Sawirro

ELE_MPU6050_208
ELE_MPU6050_208
Arduino Wiring for MPU-6050
Arduino Wiring for MPU-6050
Arduino Schematic for  MPU6050 using A4 and A4 for SDA and SCL
Arduino Schematic for MPU6050 using A4 and A4 for SDA and SCL
Arduino wiring for  MPU6050 using A4 and A4 for SDA and SCL
Arduino wiring for MPU6050 using A4 and A4 for SDA and SCL
126-Arduino code for an MPU-9250 accelerometer, gyroscope, and magnetometer
Luqadda: C++
/*
 * Library: https://github.com/bolderflight/MPU9250
Basic_I2C.ino
Brian R Taylor
brian.taylor@bolderflight.com

Copyright (c) 2017 Bolder Flight Systems

Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
and associated documentation files (the "Software"), to deal in the Software without restriction, 
including without limitation the rights to use, copy, modify, merge, publish, distribute, 
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or 
substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
 * Updated by Ahmad Shamshiri on July 9, 2018 for Robojax.com
 * in Ajax, Ontario, Canada
 * Watch instruction video for this code: 
For this sketch you need to connect:
VCC to 5V and GND to GND of Arduino
SDA to A4 and SCL to A5

S20A is 3.3V voltage regulator MIC5205-3.3BM5
*/

#include "MPU9250.h"

// An MPU9250 object with the MPU-9250 sensor on I2C bus 0 with address 0x68
MPU9250 IMU(Wire,0x68);
int status;

void setup() {
  // Serial to display data
  Serial.begin(115200);
  while(!Serial) {}

  // Start communication with IMU 
  status = IMU.begin();
  if (status < 0) {
    Serial.println("IMU initialization unsuccessful");
    Serial.println("Check IMU wiring or try cycling power");
    Serial.print("Status: ");
    Serial.println(status);
    while(1) {}
  }
}

void loop() {
  // Read the sensor
  IMU.readSensor();
  // Display the data
  Serial.print("AccelX: ");
  Serial.print(IMU.getAccelX_mss(),6);
  Serial.print("\t");
  Serial.print("AccelY: ");  
  Serial.print(IMU.getAccelY_mss(),6);
  Serial.print("\t");
  Serial.print("AccelZ: ");  
  Serial.println(IMU.getAccelZ_mss(),6);
  
  Serial.print("GyroX: ");
  Serial.print(IMU.getGyroX_rads(),6);
  Serial.print("\t");
  Serial.print("GyroY: ");  
  Serial.print(IMU.getGyroY_rads(),6);
  Serial.print("\t");
  Serial.print("GyroZ: ");  
  Serial.println(IMU.getGyroZ_rads(),6);

  Serial.print("MagX: ");  
  Serial.print(IMU.getMagX_uT(),6);
  Serial.print("\t");  
  Serial.print("MagY: ");
  Serial.print(IMU.getMagY_uT(),6);
  Serial.print("\t");
  Serial.print("MagZ: ");  
  Serial.println(IMU.getMagZ_uT(),6);
  
  Serial.print("Temperature in C: ");
  Serial.println(IMU.getTemperature_C(),6);
  Serial.println();
  delay(200);
}

Kheyraadka & Tixraacyada

Faylasha📁

Fayl la'aan.