Arduino এর সাথে MPU9250 IMU সেন্সর কিভাবে ব্যবহার করবেন

  • MPU9250 একক মডিউলে অ্যাক্সিলোমিটার, জাইরোস্কোপ এবং ম্যাগনেটোমিটারকে একত্রিত করে।
  • সঠিক রিডিংয়ের জন্য I2C প্রোটোকল ব্যবহার করে Arduino-এর সাথে সহজে যোগাযোগ করে।
  • চৌম্বকীয় ত্রুটি দূর করতে এবং নির্ভুলতা উন্নত করতে ম্যাগনেটোমিটার ক্রমাঙ্কন অত্যন্ত গুরুত্বপূর্ণ।
  • ফিল্টার যেমন পরিপূরক ফিল্টার নির্ভুলতা উন্নত করতে পারে এবং প্রবাহ দূর করতে পারে।

mpu9250

জড়ীয় সেন্সরগুলির জগত দ্রুত বিকশিত হয়েছে, এবং MPU9250 এর মতো ডিভাইস, যা একক মডিউলে অ্যাক্সিলোমিটার, জাইরোস্কোপ এবং ম্যাগনেটোমিটারকে একত্রিত করে, রোবোটিক্স প্রকল্প, ড্রোন এবং সিস্টেমগুলির জন্য একটি মূল অংশ হয়ে উঠেছে যেগুলির জন্য ছোট এবং বড় আন্দোলনগুলিকে সঠিকভাবে ক্যাপচার করা প্রয়োজন৷ এই নিবন্ধে, আমরা কীভাবে আরডুইনোর সাথে এই সেন্সরটি ব্যবহার করব, এর উল্লেখযোগ্য বৈশিষ্ট্যগুলি কী, সেইসাথে এটির সাথে শুরু করার জন্য কিছু কোড উদাহরণ অন্বেষণ করতে যাচ্ছি।

MPU9250 ব্যবহার করা শুধুমাত্র শৌখিনদের জন্যই উপযোগী নয়, এমন পেশাদারদের জন্যও যাদের সঠিকভাবে অভিযোজন এবং গতি পরিমাপ করতে হবে। এই সমাধানটি স্ট্যাবিলাইজেশন সিস্টেম, স্বায়ত্তশাসিত যান এবং রোবটগুলির বিকাশের অনুমতি দেয় যার জন্য বিভিন্ন অক্ষে তাদের গতিবিধি জানা প্রয়োজন। সেন্সরের বহুমুখিতা, এর নির্ভুলতা এবং কম খরচের সাথে, এটি ডেভেলপারদের মধ্যে একটি কঠিন খ্যাতি অর্জন করেছে।

MPU9250 কি?

El এমপিইউ 9250 এটি একটি মডিউল যা অন্তর্ভুক্ত করে অ্যাক্সিলোমিটার, জাইরোস্কোপ এবং ম্যাগনেটোমিটার একটি একক ডিভাইসে। এই সংমিশ্রণের সাথে, সেন্সরটি রৈখিক ত্বরণ এবং কৌণিক বেগ এবং এর পরিবেশের চৌম্বকীয় ক্ষেত্র উভয়ই পরিমাপ করতে সক্ষম। এই ইনভেনসেন্স সেন্সরের স্বাধীনতার 9 ডিগ্রি রয়েছে, যার অর্থ হল এটি তিনটি ভিন্ন অক্ষে পরিমাপ করতে পারে, উভয় ত্বরণ, ঘূর্ণন (জাইরোস্কোপ) এবং চৌম্বক ক্ষেত্র (ম্যাগনেটোমিটার), এইভাবে ডিভাইসটির সম্পূর্ণ অভিযোজন গণনা করার সম্ভাবনা দেয়।

মডিউল ডিজাইন করা হয়েছে SPI বা I2C ব্যবহার করে যোগাযোগ করুন, যা এটিকে আরডুইনো বা রাস্পবেরি পাই-এর মতো ওপেন সোর্স প্ল্যাটফর্মের সাথে সহজেই সংযুক্ত হতে দেয়। উপরন্তু, ধন্যবাদ ডিজিটাল মোশন প্রসেসর (DMP), তিনটি সেন্সর দ্বারা প্রাপ্ত ডেটা ফিউজ করতে এবং আরও সুনির্দিষ্ট পরিমাপ প্রদান করতে জটিল গণনা করতে সক্ষম।

MPU9250 এর প্রধান বৈশিষ্ট্য

MPU9250 প্রচুর সংখ্যক বৈশিষ্ট্য থাকার জন্য দাঁড়িয়েছে যা এটিকে এমন প্রকল্পগুলির জন্য একটি খুব আকর্ষণীয় মডিউল করে তোলে যার জন্য সুনির্দিষ্ট গতিবিধি ক্যাপচার করা প্রয়োজন, যার মধ্যে রয়েছে:

  • অ্যাক্সিলোমিটার: ±2g, ±4g, ±8g এবং ±16g এর মধ্যে সামঞ্জস্যযোগ্য ত্বরণ পরিসীমা।
  • জাইরোস্কোপ: প্রোগ্রামেবল পরিসীমা ±250°/s, ±500°/s, ±1000°/s, ±2000°/s।
  • চৌম্বকীয়: 0.6µT/LSB এর সংবেদনশীলতা এবং 4800µT পর্যন্ত প্রোগ্রামযোগ্য পরিসর।
  • কনসুমো এনার্জেটিকো: খুব কম, পোর্টেবল ডিভাইস বা ডিভাইসের জন্য আদর্শ যেগুলির জন্য দীর্ঘ সময়ের জন্য অপারেশন প্রয়োজন (সক্রিয় মোডে 3.5 mA)।

Arduino এর সাথে MPU9250 মডিউল সংযোগ করা হচ্ছে

mpu9250 arduino

মডিউলটিকে আপনার আরডুইনোতে সংযুক্ত করা একটি সহজ প্রক্রিয়া ধন্যবাদ যে এটি I2C প্রোটোকলের মাধ্যমে কাজ করে। সে সাধারণ সংযোগ চিত্র একটি MPU9250 এবং একটি এর মধ্যে Arduino Uno স্প্যানিশ ভাষায়:

  • VCC: 3.3V এর সাথে সংযোগ করুন।
  • GND: মাটিতে (GND)।
  • এস্ ডি: এটি Arduino এর A4 পিনের সাথে সংযুক্ত করুন।
  • SCL: এটি Arduino এর A5 পিনের সাথে সংযুক্ত করুন।

এটা নিশ্চিত করা গুরুত্বপূর্ণ যে শক্তি সঠিক যাতে সেন্সর সঠিকভাবে কাজ করতে পারে। বেশিরভাগ মডিউলে ইতিমধ্যেই একটি ভোল্টেজ নিয়ন্ত্রক রয়েছে যাতে এটি ক্ষতি না করে আরডুইনোর 5V ব্যবহার করতে সক্ষম হয়।

MPU9250 কোডের উদাহরণ

নীচে আমরা আপনাকে দেখাচ্ছি কিভাবে আপনি আরডুইনোতে 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-এর সাথে সংযুক্ত করা এবং প্রাথমিক রিডিং পাওয়া তুলনামূলকভাবে সহজ, এবং কয়েকটি ফিল্টার প্রয়োগ করে, আপনি বিস্তৃত অ্যাপ্লিকেশনের জন্য খুব সঠিক এবং দরকারী ফলাফল পেতে পারেন।


মন্তব্য করতে প্রথম হতে হবে

আপনার মন্তব্য দিন

আপনার ইমেল ঠিকানা প্রকাশিত হবে না। প্রয়োজনীয় ক্ষেত্রগুলি দিয়ে চিহ্নিত করা *

*

*

  1. ডেটার জন্য দায়বদ্ধ: মিগুয়েল অ্যাঞ্জেল গাটান
  2. ডেটার উদ্দেশ্য: নিয়ন্ত্রণ স্প্যাম, মন্তব্য পরিচালনা।
  3. আইনীকরণ: আপনার সম্মতি
  4. তথ্য যোগাযোগ: ডেটা আইনি বাধ্যবাধকতা ব্যতীত তৃতীয় পক্ষের কাছে জানানো হবে না।
  5. ডেটা স্টোরেজ: ওসেন্টাস নেটওয়ার্কস (ইইউ) দ্বারা হোস্ট করা ডেটাবেস
  6. অধিকার: যে কোনও সময় আপনি আপনার তথ্য সীমাবদ্ধ করতে, পুনরুদ্ধার করতে এবং মুছতে পারেন।