সুচিপত্র:

BMA250 এবং Arduino Nano ব্যবহার করে ত্বরণ পরিমাপ: 4 টি ধাপ
BMA250 এবং Arduino Nano ব্যবহার করে ত্বরণ পরিমাপ: 4 টি ধাপ

ভিডিও: BMA250 এবং Arduino Nano ব্যবহার করে ত্বরণ পরিমাপ: 4 টি ধাপ

ভিডিও: BMA250 এবং Arduino Nano ব্যবহার করে ত্বরণ পরিমাপ: 4 টি ধাপ
ভিডিও: মিলিমিটার, সেন্টিমিটার এবং মিটারের মধ্যে পার্থক্য || How to Read mm - cm - meter in Measurement Tape 2024, জুলাই
Anonim
Image
Image

BMA250 হল একটি ছোট, পাতলা, অতিবেগুনি শক্তি, 3-অক্ষের অ্যাকসিলরোমিটার যার উচ্চ রেজোলিউশন (13-বিট) পরিমাপ ± 16 গ্রাম পর্যন্ত। ডিজিটাল আউটপুট ডেটা 16-বিট দুইটি পরিপূরক হিসাবে ফরম্যাট করা হয় এবং I2C ডিজিটাল ইন্টারফেসের মাধ্যমে অ্যাক্সেসযোগ্য। এটি টিল্ট-সেন্সিং অ্যাপ্লিকেশনগুলিতে মাধ্যাকর্ষণের স্থির ত্বরণ পরিমাপ করে, পাশাপাশি গতি বা শক থেকে সৃষ্ট গতিশীল ত্বরণ। এর উচ্চ রেজোলিউশন (3.9 মিগ্রা/এলএসবি) 1.0 than এর কম প্রবণতা পরিবর্তনের পরিমাপ সক্ষম করে।

এই টিউটোরিয়ালে আমরা BMA250 এবং Arduino Nano ব্যবহার করে তিনটি লম্ব অক্ষের ত্বরণ পরিমাপ করতে যাচ্ছি।

পদক্ষেপ 1: হার্ডওয়্যার প্রয়োজন:

হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন
হার্ডওয়্যার প্রয়োজন

আমাদের লক্ষ্য পূরণের জন্য আমাদের যে উপকরণগুলির প্রয়োজন তা নিম্নলিখিত হার্ডওয়্যার উপাদানগুলি অন্তর্ভুক্ত করে:

1. বিএমএ 250

2. Arduino Nano

3. I2C কেবল

4. Arduino ন্যানোর জন্য I2C শিল্ড

পদক্ষেপ 2: হার্ডওয়্যার সংযুক্তি:

হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি
হার্ডওয়্যার সংযুক্তি

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

BMA250 I2C এর উপর কাজ করবে। সেন্সরের প্রতিটি ইন্টারফেসকে কিভাবে ওয়্যার আপ করতে হয় তা দেখানো হচ্ছে ওয়্যারিং ডায়াগ্রামের উদাহরণ।

বাক্সের বাইরে, বোর্ডটি একটি I2C ইন্টারফেসের জন্য কনফিগার করা হয়েছে, যেমন আপনি অন্যথায় অজ্ঞেয়বাদী হলে আমরা এই হুকআপটি ব্যবহার করার পরামর্শ দিই। আপনার প্রয়োজন শুধু চারটি তারের!

VCC, Gnd, SCL এবং SDA পিনের জন্য মাত্র চারটি সংযোগ প্রয়োজন এবং এগুলি I2C তারের সাহায্যে সংযুক্ত।

এই সংযোগগুলি উপরের ছবিতে প্রদর্শিত হয়েছে।

ধাপ 3: ত্বরণ পরিমাপের জন্য Arduino কোড:

ত্বরণ পরিমাপের জন্য Arduino কোড
ত্বরণ পরিমাপের জন্য Arduino কোড
ত্বরণ পরিমাপের জন্য Arduino কোড
ত্বরণ পরিমাপের জন্য Arduino কোড

এখন Arduino কোড দিয়ে শুরু করা যাক।

Arduino এর সাথে সেন্সর মডিউল ব্যবহার করার সময়, আমরা Wire.h লাইব্রেরি অন্তর্ভুক্ত করি। "ওয়্যার" লাইব্রেরিতে ফাংশন রয়েছে যা সেন্সর এবং আরডুইনো বোর্ডের মধ্যে i2c যোগাযোগ সহজ করে।

ব্যবহারকারীর সুবিধার জন্য পুরো Arduino কোড নিচে দেওয়া হল:

#অন্তর্ভুক্ত

// BMA250 I2C ঠিকানা হল 0x18 (24)

#সংযোজনকারী 0x18

অকার্যকর সেটআপ()

{

// মাস্টার হিসাবে I2C যোগাযোগ শুরু করুন

Wire.begin ();

// সিরিয়াল কমিউনিকেশন শুরু করুন, বড রেট = 9600 সেট করুন

Serial.begin (9600);

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// পরিসীমা নির্বাচন রেজিস্টার নির্বাচন করুন

Wire.write (0x0F);

// সেট পরিসীমা +/- 2g

Wire.write (0x03);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ব্যান্ডউইথ রেজিস্টার নির্বাচন করুন

Wire.write (0x10);

// সেট ব্যান্ডউইথ 7.81 Hz

Wire.write (0x08);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission (); বিলম্ব (300);}

অকার্যকর লুপ ()

{

স্বাক্ষরবিহীন int ডেটা [0];

// I2C ট্রান্সমিশন শুরু করুন

Wire.beginTransmission (Addr);

// ডাটা রেজিস্টার নির্বাচন করুন (0x02 - 0x07)

Wire.write (0x02);

// I2C ট্রান্সমিশন বন্ধ করুন

Wire.endTransmission ();

// অনুরোধ 6 বাইট

Wire.requestFrom (Addr, 6);

// ছয় বাইট পড়ুন

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

যদি (Wire.available () == 6)

{

ডেটা [0] = ওয়্যার.রেড ();

ডেটা [1] = ওয়্যার.রেড ();

ডেটা [2] = ওয়্যার.রেড ();

ডেটা [3] = ওয়্যার.রেড ();

তথ্য [4] = Wire.read ();

তথ্য [5] = ওয়্যার.রেড ();

}

বিলম্ব (300);

// ডেটাকে 10 বিটে রূপান্তর করুন

float xAccl = ((data [1] * 256.0) + (data [0] & 0xC0)) / 64;

যদি (xAccl> 511)

{

xAccl -= 1024;

}

ভাসা yAccl = ((তথ্য [3] * 256.0) + (তথ্য [2] এবং 0xC0)) / 64;

যদি (yAccl> 511)

{

yAccl -= 1024;

}

float zAccl = ((data [5] * 256.0) + (data [4] & 0xC0)) / 64;

যদি (zAccl> 511)

{

zAccl -= 1024;

}

// সিরিয়াল মনিটরে আউটপুট ডেটা

সিরিয়াল.প্রিন্ট ("এক্স-এক্সিসে এক্সিলারেশন:");

Serial.println (xAccl);

Serial.print ("Y-Axis- এ ত্বরণ:");

Serial.println (yAccl);

সিরিয়াল.প্রিন্ট ("Z-Axis- এ এক্সিলারেশন:");

Serial.println (zAccl);

}

ওয়্যার লাইব্রেরিতে Wire.write () এবং Wire.read () কমান্ড লিখতে এবং সেন্সর আউটপুট পড়তে ব্যবহৃত হয়। Serial.print () এবং Serial.println () Arduino IDE এর সিরিয়াল মনিটরে সেন্সর আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।

উপরের ছবিতে সেন্সর আউটপুট দেখানো হয়েছে।

ধাপ 4: অ্যাপ্লিকেশন:

অ্যাপ্লিকেশন
অ্যাপ্লিকেশন

BMA250 এর মতো অ্যাকসিলরোমিটার বেশিরভাগ গেম এবং ডিসপ্লে প্রোফাইল স্যুইচিংয়ে এর প্রয়োগ খুঁজে পায়। এই সেন্সর মডিউলটি মোবাইল অ্যাপ্লিকেশনের জন্য উন্নত বিদ্যুৎ ব্যবস্থাপনা পদ্ধতিতেও নিযুক্ত করা হয়। BMA250 হল একটি ত্রিমাত্রিক ডিজিটাল ত্বরণ সেন্সর যা একটি বুদ্ধিমান অন-চিপ মোশন ট্রিগারড ইন্টারাপ্ট কন্ট্রোলারের সাথে যুক্ত।

প্রস্তাবিত: