Bincika Lambar

MPU-9250 Accelerometer, Gyroscope, da Magnetometer Code

MPU-9250 Accelerometer, Gyroscope, da Magnetometer Code

A cikin wannan koyawa, za mu bincika yadda ake amfani da firikwensin MPU-9250, wanda ya haɗa accelerometer, gyroscope, da magnetometer a cikin ƙaramin na'ura guda ɗaya. A ƙarshen wannan jagorar, za ku iya karanta bayanan firikwensin da fassara ma'anarsa a cikin ayyukanku. Wannan firikwensin yana da amfani musamman ga aikace-aikace kamar robotics da jirage marasa matuki, inda bin diddigin alkibla da motsi ke da mahimmanci. Kuna iya koma ga bidiyon don ƙarin bayani kan saitin da lambar (a cikin bidiyo a 00:20).

ELE_MPU6050_208
ELE_MPU6050_208

Bayanin Kayan Aiki

Modul ɗin MPU-9250 ya haɗa firikwensin guda uku: accelerometer, gyroscope, da magnetometer. Accelerometer yana auna ƙarfin hanzari, yana ba ku damar tantance gudun da alkibla. Gyroscope yana ba da saurin kusurwa, yana taimaka muku fahimtar canjin alkibla a tsawon lokaci. A ƙarshe, magnetometer yana aiki kamar kamfas, yana ba da bayanan filin maganadisu wanda ke taimakawa wajen kewayawa.

Wannan haɗin firikwensin yana da amfani musamman a aikace-aikace inda ake buƙatar bin diddigin motsi daidai, kamar a cikin jirage marasa matuki ko wayoyin hannu. MPU-9250 yana sadarwa ta I2C ko SPI, yana sa ya dace da saitunan microcontroller daban-daban.

Cikakkun Bayanan Datasheet

Mai Ƙirƙira InvenSense
Lambar sashi MPU-9250
Wutar Logic/IO 1.8 V (I/O), 3.3 V (samarwa)
Wutar samarwa 2.4 - 3.6 V
Fitarwa na yanzu (kowane tashar) 3.2 mA (aiki na yau da kullun)
Kololuwar na yanzu (kowane tashar) 19.8 mA (max)
Jagorar mitar PWM N/A
Matsakaicin shigarwar logic 0.3 * VDD (ƙasa), 0.7 * VDD (sama)
Rage wutar / RDS(on) / saturation N/A
Iyakokin zafi -40 zuwa 85 °C
Kunshin QFN
Bayanan kula / bambance-bambance Ya haɗa da mai sarrafa wutar ciki
  • Tabbatar da samar da wutar da ta dace (2.4 - 3.6 V) don guje wa lalata modul ɗin.
  • Yi amfani da resistor na pull-up don layin SDA da SCL idan ba a haɗa shi ba a kan allo ɗin ku.
  • Tabbatar da adireshin I2C (na asali shine 0x68) kuma daidaita fil ɗin ADO daidai don wasu adireshi.
  • Duba haɗin don kwanciyar hankali don hana karatun kuskure.
  • Daidaita firikwensin akai-akai don ingantattun ma'auni.

Umarnin Haɗin Waya

Arduino wiring for  MPU6050 using A4 and A4 for SDA and SCL
Haɗin waya na Arduino don MPU6050 ta amfani da A4 da A4 don SDA da 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

Don haɗa MPU-9250 zuwa Arduino ɗinku, fara da haɗa fil ɗin VCC akan MPU-9250 zuwa fil ɗin 5V akan Arduino. Modul ɗin yana da mai sarrafa wutar ciki, don haka yana da lafiya a ba shi wutar 5V. Na gaba, haɗa fil ɗin GND zuwa ƙasa (GND) akan Arduino. Don sadarwar bayanai, haɗa fil ɗin SDA zuwa fil ɗin A4 akan Arduino da fil ɗin SCL zuwa fil ɗin A5. Wannan tsari daidai ne ga yawancin allon Arduino.

Idan kuna amfani da Arduino Mega, fil ɗin SDA da SCL suna a fil 20 da 21, bi da bi. Tabbatar cewa haɗin suna da aminci don guje wa kurakuran sadarwa. Idan kuna buƙatar canza adireshin I2C na MPU-9250, haɗa fil ɗin ADO zuwa 5V don saita shi zuwa 0x69. Cire haɗin zai mayar da shi zuwa 0x68.

Arduino Schematic for  MPU6050 using A4 and A4 for SDA and SCL
Tsarin Arduino don MPU6050 ta amfani da A4 da A4 don SDA da SCL

Misalan Lamba & Bayani

A cikin sketch ɗin Arduino, muna farawa ta haɗa ɗakin karatu na MPU9250 da ƙirƙirar misali na firikwensin:

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

Lambar tana fara firikwensin kuma ta fara sadarwa a cikin aikin setup():

void setup() {
  Serial.begin(115200);
  status = IMU.begin();
  if (status < 0) {
    Serial.println("IMU initialization unsuccessful");
    while(1) {}
  }
}

A cikin aikin loop(), muna ci gaba da karantawa da buga bayanan firikwensin:

void loop() {
  IMU.readSensor();
  Serial.print("AccelX: ");
  Serial.print(IMU.getAccelX_mss(),6);
  // Ƙarin maganganun bugawa don sauran gatari
}

Wannan sashe yana karanta ƙimar accelerometer, gyroscope, da magnetometer, yana nuna su a cikin Serial Monitor. Tabbatar duba cikakken lambar da aka ɗora a ƙasan labarin don cikakken aiwatarwa.

Zanga-zanga / Abin da za ku Yi Tsammani

Lokacin da kuka kunna lambar, ya kamata ku ga ƙimar firikwensin suna sabuntawa a lokaci guda akan Serial Monitor. Ƙimar accelerometer za su canza yayin da kuke motsa firikwensin, yayin da ƙimar gyroscope za su nuna ƙimar juyawa. Magnetometer zai ba ku ƙarfin filin maganadisu a cikin gatari uku, wanda za a iya amfani da shi don tantance alkibla. Yi hattara da shigarwar da ke iyo, saboda suna iya haifar da karatun da ba daidai ba (a cikin bidiyo a 12:30).

Babuka

  • Gabatarwa (00:00)
  • Bayanin Kayan Aiki (01:30)
  • Umarnin Haɗin Waya (04:00)
  • Misalai na Lamba & Jagora (06:00)
  • Nuni (10:00)

Hotuna

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
Harshe: 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);
}

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Babu fayiloli da ake da su.