જડતા સેન્સર્સની દુનિયા ઝડપથી વિકસિત થઈ છે, અને MPU9250 જેવા ઉપકરણો, જે એક જ મોડ્યુલમાં એક્સીલેરોમીટર, જાયરોસ્કોપ અને મેગ્નેટોમીટરને જોડે છે, તે રોબોટિક્સ પ્રોજેક્ટ્સ, ડ્રોન અને સિસ્ટમ્સ માટે મુખ્ય ભાગ બની ગયા છે જેને નાની અને મોટી હિલચાલને ચોક્કસ રીતે કેપ્ચર કરવાની જરૂર છે. આ લેખમાં, અમે Arduino સાથે આ સેન્સરનો ઉપયોગ કેવી રીતે કરવો, તેના નોંધપાત્ર લક્ષણો શું છે, તેમજ તેની સાથે પ્રારંભ કરવા માટે કેટલાક કોડ ઉદાહરણો વિશે અન્વેષણ કરવા જઈ રહ્યા છીએ.
MPU9250 નો ઉપયોગ કરવો એ માત્ર શોખીનો માટે જ ઉપયોગી નથી, પણ એવા વ્યાવસાયિકો માટે પણ ઉપયોગી છે જેમને ઓરિએન્ટેશન અને ગતિને ચોક્કસ રીતે માપવાની જરૂર છે. આ સોલ્યુશન સ્ટેબિલાઇઝેશન સિસ્ટમ્સ, સ્વાયત્ત વાહનો અને રોબોટ્સના વિકાસને મંજૂરી આપે છે જેને વિવિધ અક્ષોમાં તેમની હિલચાલ જાણવાની જરૂર હોય છે. સેન્સરની વૈવિધ્યતા, તેની સચોટતા અને ઓછી કિંમત સાથે, તેને વિકાસકર્તાઓમાં નક્કર પ્રતિષ્ઠા મળી છે.
MPU9250 શું છે?
El MPU9250 તે એક મોડ્યુલ છે જેમાં શામેલ છે એક્સેલરોમીટર, ગાયરોસ્કોપ અને મેગ્નેટોમીટર એક ઉપકરણ પર. આ સંયોજન સાથે, સેન્સર રેખીય પ્રવેગક અને કોણીય વેગ અને તેના પર્યાવરણના ચુંબકીય ક્ષેત્ર બંનેને માપવામાં સક્ષમ છે. આ ઇન્વેન્સેન્સ સેન્સરમાં 9 ડિગ્રી સ્વતંત્રતા છે, જેનો અર્થ છે કે તે ત્રણ અલગ-અલગ અક્ષોમાં માપી શકે છે, બંને પ્રવેગક, પરિભ્રમણ (જાયરોસ્કોપ) અને ચુંબકીય ક્ષેત્ર (મેગ્નેટોમીટર), આમ ઉપકરણની સંપૂર્ણ દિશાની ગણતરી કરવાની શક્યતા આપે છે.
મોડ્યુલ માટે રચાયેલ છે SPI અથવા I2C નો ઉપયોગ કરીને વાતચીત કરો, જે તેને ઓપન સોર્સ પ્લેટફોર્મ જેમ કે Arduino અથવા Raspberry Pi સાથે સરળતાથી કનેક્ટ થવા દે છે. વધુમાં, માટે આભાર ડિજિટલ મોશન પ્રોસેસર (DMP), ત્રણ સેન્સર દ્વારા મેળવેલા ડેટાને ફ્યુઝ કરવા અને વધુ ચોક્કસ માપ આપવા માટે જટિલ ગણતરીઓ કરવામાં સક્ષમ છે.
MPU9250 ની મુખ્ય લાક્ષણિકતાઓ
MPU9250 એ મોટી સંખ્યામાં વિશેષતાઓ ધરાવે છે જે તેને એવા પ્રોજેક્ટ્સ માટે ખૂબ જ રસપ્રદ મોડ્યુલ બનાવે છે જેને ચોક્કસ હલનચલન કેપ્ચર કરવાની જરૂર હોય છે, જેમાંથી આ છે:
- એક્સેલેરોમીટર: ±2g, ±4g, ±8g અને ±16g વચ્ચે એડજસ્ટેબલ પ્રવેગક શ્રેણી.
- જીરોસ્કોપ: ±250°/s, ±500°/s, ±1000°/s, ±2000°/s ની પ્રોગ્રામેબલ શ્રેણી.
- મેગ્નેટomeમીટર: 0.6µT/LSB ની સંવેદનશીલતા અને 4800µT સુધી પ્રોગ્રામેબલ રેન્જ.
- ઉર્જા વપરાશ: ખૂબ નીચું, પોર્ટેબલ ઉપકરણો અથવા ઉપકરણો માટે આદર્શ છે કે જેને લાંબા સમય સુધી ઓપરેશનની જરૂર હોય છે (સક્રિય મોડમાં 3.5 mA).
MPU9250 મોડ્યુલને Arduino સાથે કનેક્ટ કરી રહ્યું છે
મોડ્યુલને તમારા Arduino સાથે કનેક્ટ કરવું એ એક સરળ પ્રક્રિયા છે કારણ કે તે I2C પ્રોટોકોલ દ્વારા કાર્ય કરે છે. તેમણે લાક્ષણિક જોડાણ રેખાકૃતિ MPU9250 અને એ વચ્ચે Arduino Uno છે:
- વીસીસી: 3.3V થી કનેક્ટ કરો.
- GND: જમીન પર (GND).
- એસડીએ: તેને Arduino ના A4 પિન સાથે કનેક્ટ કરો.
- એસસીએલ: તેને Arduino ના A5 પિન સાથે કનેક્ટ કરો.
તે સુનિશ્ચિત કરવું મહત્વપૂર્ણ છે કે પાવર યોગ્ય છે જેથી સેન્સર યોગ્ય રીતે કાર્ય કરી શકે. મોટાભાગના મોડ્યુલોમાં પહેલાથી જ વોલ્ટેજ રેગ્યુલેટર હોય છે જે તેને નુકસાન પહોંચાડ્યા વિના Arduino ના 5V નો ઉપયોગ કરી શકે છે.
MPU9250 માટે કોડ ઉદાહરણો
નીચે અમે તમને બતાવીએ છીએ કે તમે કેવી રીતે Arduino માં MPU9250 પ્રોગ્રામિંગ શરૂ કરી શકો છો, એક્સીલેરોમીટર, જાયરોસ્કોપ અને મેગ્નેટોમીટરમાંથી ડેટા વાંચી શકો છો. પુસ્તકાલય MPU9250.h
પ્રોગ્રામિંગની સુવિધા માટે તે ખૂબ જ ઉપયોગી છે, અને અમારા ઉદાહરણમાં અમે કાચો ડેટા કેવી રીતે વાંચવો તેની વિગત આપીએ છીએ:
#include <Wire.h>
#include <MPU9250.h>
MPU9250 imu(Wire, 0x68);
void setup() {
Wire.begin();
Serial.begin(115200);
if (imu.begin() != 0) {
Serial.println("Error al iniciar MPU9250");
} else {
Serial.println("MPU9250 iniciado");
}
}
void loop() {
imu.readSensor();
Serial.print("Aceleracion: ");
Serial.print(imu.getAccelX_mss());
Serial.print(", ");
Serial.print(imu.getAccelY_mss());
Serial.print(", ");
Serial.print(imu.getAccelZ_mss());
Serial.println();
delay(1000);
}
આ કોડ પ્રવેગકના ત્રણ ઘટકોને વાંચે છે. ગાયરોસ્કોપ અને મેગ્નેટોમીટર રીડિંગ્સ પદ્ધતિઓનો ઉપયોગ કરીને સમાન રીતે કરી શકાય છે getGyroX_rads()
y getMagX_uT()
અનુક્રમે
પ્રાયોગિક કાર્યક્રમો
ત્યાં બહુવિધ એપ્લિકેશનો છે જ્યાં MPU9250 એક અનિવાર્ય સાધન બની જાય છે. ચાલો કેટલાક સૌથી મહત્વપૂર્ણ અન્વેષણ કરીએ:
- ડ્રોન અને રોબોટિક્સ: MPU9250 નો સૌથી સામાન્ય ઉપયોગ ફ્લાઇટ સ્ટેબિલાઇઝેશન અને રોબોટિક્સ સિસ્ટમમાં છે, જ્યાં રીઅલ-ટાઇમ ઓરિએન્ટેશન મેળવવું આવશ્યક છે.
- વર્ચ્યુઅલ વાસ્તવિકતા: ઓરિએન્ટેશન અને ગતિને ચોક્કસ રીતે કેપ્ચર કરીને, સેન્સરનો ઉપયોગ વિડીયો ગેમ એપ્લીકેશન અથવા વર્ચ્યુઅલ રિયાલિટી સિમ્યુલેટરમાં ટ્રેકિંગ માટે કરી શકાય છે.
- નેવિગેશન સિસ્ટમ્સ: GPS જેવા અન્ય સેન્સર્સ સાથે સંયોજનમાં, MPU9250 નો ઉપયોગ હલનચલન સમજવા અને ઓરિએન્ટેશન શોધવા માટે ઇનર્શિયલ નેવિગેશનમાં થાય છે.
મેગ્નેટોમીટર કેલિબ્રેશન
MPU9250 નો ઉપયોગ કરતી વખતે સૌથી મહત્વપૂર્ણ પગલાં પૈકી એક છે મેગ્નેટોમીટર માપાંકન. મેગ્નેટોમીટર ચુંબકીય વાતાવરણ (જેમ કે બિલ્ડીંગ ફૂટેજ અથવા અન્ય ઈલેક્ટ્રોનિક સાધનોની દખલગીરી) દ્વારા સર્જાયેલી ભૂલોને દૂર કરવા માટે જરૂરી છે, તેથી ચોક્કસ માપન માટે યોગ્ય માપાંકન કરવું મહત્વપૂર્ણ છે.
મેગ્નેટોમીટરને યોગ્ય રીતે માપાંકિત કરવા માટે, અમે RTIMULib-Arduino લાઇબ્રેરીનો ઉપયોગ કરી શકીએ છીએ. અહીં એક સરળ કેલિબ્રેશન પ્રોગ્રામ છે:
#include <RTIMULib.h>
RTIMU *imu;
RTIMUSettings settings;
void setup() {
Wire.begin();
Serial.begin(115200);
imu = RTIMU::createIMU(&settings);
imu->IMUInit();
imu->setCalibrationMode(true);
}
void loop() {
if (imu->IMURead()) {
RTVector3 mag = imu->getCompass();
Serial.print("Magnetómetro: ");
Serial.print(mag.x());
Serial.print(", ");
Serial.print(mag.y());
Serial.print(", ");
Serial.print(mag.z());
Serial.println();
}
}
ઉપરનો કોડ મેગ્નેટોમીટરમાંથી ડેટા વાંચે છે જેથી કરીને તમે અક્ષો પર હલનચલન કરી શકો અને સંભવિત રીડિંગ્સની સંપૂર્ણ શ્રેણીને આવરી શકો. આ ચુંબકીય ક્ષેત્રની વિકૃતિઓને ઓળખવામાં અને ઓરિએન્ટેશન ગણતરીઓને સુધારવામાં મદદ કરે છે.
ચોકસાઇ સુધારવા માટે ફિલ્ટર્સ
MPU9250 રીડિંગ્સની ચોકસાઈને સુધારવા માટે, સૌથી સામાન્ય અભિગમોમાંનો એક છે ફિલ્ટર અમલીકરણ જે ગાયરોસ્કોપ, એક્સીલેરોમીટર અને મેગ્નેટોમીટરમાંથી મેળવેલા ડેટાને જોડે છે.
El પૂરક ફિલ્ટર અમલ કરવા માટે તે એક અસરકારક અને સરળ ઉપાય છે. આ ફિલ્ટર ઝડપી પરિણામો મેળવવા માટે ગાયરોસ્કોપ પર આધાર રાખે છે, જ્યારે એક્સીલેરોમીટર અને મેગ્નેટોમીટર ગાયરોસ્કોપ (ડ્રિફ્ટ તરીકે ઓળખાય છે)માંથી લાંબા ગાળાના વિચલનોને સુધારે છે. એક સરળ કોડ જે આ ફિલ્ટરને લાગુ કરે છે તે નીચેના ઉદાહરણમાં જોઈ શકાય છે:
#include <ComplementaryFilter.h>
ComplementaryFilter cf;
void setup() {
cf.setAccelerometerGain(0.02);
cf.setMagnetometerGain(0.98);
}
void loop() {
// Integrar lecturas de acelerómetro y giroscopio
cf.update(sensorData.accelX, sensorData.gyroX);
float pitch = cf.getPitch();
float roll = cf.getRoll();
Serial.print("Pitch: ");
Serial.print(pitch);
Serial.print(" Roll: ");
Serial.println(roll);
}
આ ફિલ્ટર ગાયરોસ્કોપ ડ્રિફ્ટને દૂર કરવા અને વધુ સ્થિર ઓરિએન્ટેશન જનરેટ કરવા માટે જરૂરી છે. વધુમાં, અન્ય વધુ જટિલ પદ્ધતિઓ જેમ કે કાલમેન ફિલ્ટર, જે વધુ સંસાધનોનો ઉપયોગ કરે છે તેના કરતાં અર્ડિનો જેવા માઇક્રોકન્ટ્રોલર પર એક્ઝિક્યુટ કરવું વધુ ઝડપી છે.
MPU9250 એ વિવિધ પ્રકારના પ્રોજેક્ટ્સ માટે અદ્ભુત બહુમુખી સોલ્યુશન છે જેને ચોક્કસ અભિગમ અને ગતિ માપનની જરૂર છે. તેને Arduino સાથે કનેક્ટ કરવું અને મૂળભૂત વાંચન મેળવવું પ્રમાણમાં સરળ છે, અને થોડા ફિલ્ટર્સનો અમલ કરીને, તમે એપ્લિકેશનની વિશાળ શ્રેણી માટે ખૂબ જ સચોટ અને ઉપયોગી પરિણામો મેળવી શકો છો.