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).
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


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.
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)
/*
* 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
-
WajeDatasheet for MPU-9250invensense.com
-
WajeGet the MPU-9250 library from GitHubgithub.com
-
WajeMPU-9250 register mapinvensense.com
Fayiloli📁
Babu fayiloli da ake da su.