সুচিপত্র:

HMC5883 এবং Arduino Nano ব্যবহার করে চৌম্বক ক্ষেত্র পরিমাপ: 4 টি ধাপ
HMC5883 এবং Arduino Nano ব্যবহার করে চৌম্বক ক্ষেত্র পরিমাপ: 4 টি ধাপ

ভিডিও: HMC5883 এবং Arduino Nano ব্যবহার করে চৌম্বক ক্ষেত্র পরিমাপ: 4 টি ধাপ

ভিডিও: HMC5883 এবং Arduino Nano ব্যবহার করে চৌম্বক ক্ষেত্র পরিমাপ: 4 টি ধাপ
ভিডিও: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, জুলাই
Anonim
Image
Image

HMC5883 হল একটি ডিজিটাল কম্পাস যা নিম্ন-ক্ষেত্রের চৌম্বকীয় সেন্সিংয়ের জন্য ডিজাইন করা হয়েছে। এই ডিভাইসের বিস্তৃত চৌম্বক ক্ষেত্র পরিসীমা +/- 8 Oe এবং 160 Hz এর আউটপুট হার। HMC5883 সেন্সরে স্বয়ংক্রিয় ডিগাউসিং স্ট্র্যাপ ড্রাইভার, অফসেট বাতিলকরণ এবং 12-বিট এডিসি রয়েছে যা 1 ° থেকে 2 ° কম্পাস শিরোনামের নির্ভুলতা সক্ষম করে। সমস্ত I²C মিনি মডিউল 5VDC এ কাজ করার জন্য ডিজাইন করা হয়েছে।

এই টিউটোরিয়ালে, আমরা Arduino ন্যানো দিয়ে HMC5883 এর বিস্তারিত কাজ ব্যাখ্যা করতে যাচ্ছি।

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

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

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

1. HMC5883

2. Arduino Nano

3. I2C কেবল

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

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

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

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

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

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

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

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

ধাপ 3: চৌম্বকীয় ক্ষেত্রের তীব্রতা পরিমাপ করার জন্য Arduino কোড:

চুম্বকীয় ক্ষেত্রের তীব্রতা পরিমাপ করতে Arduino কোড
চুম্বকীয় ক্ষেত্রের তীব্রতা পরিমাপ করতে Arduino কোড
চুম্বকীয় ক্ষেত্রের তীব্রতা পরিমাপ করতে Arduino কোড
চুম্বকীয় ক্ষেত্রের তীব্রতা পরিমাপ করতে Arduino কোড

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

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

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

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

// HMC5883 I2C ঠিকানা হল 0x1E (30)

#সংজ্ঞায়িত Addr 0x1E

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

{

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

Wire.begin ();

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

Serial.begin (9600);

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

Wire.beginTransmission (Addr);

// কনফিগার রেজিস্টার A নির্বাচন করুন

Wire.write (0x00);

// স্বাভাবিক পরিমাপ কনফিগারেশন সেট করুন, ডেটা আউটপুট হার = 0.75Hz

Wire.write (0x60);

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

Wire.endTransmission ();

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

Wire.beginTransmission (Addr);

// মোড রেজিস্টার নির্বাচন করুন

Wire.write (0x02);

// ধারাবাহিক পরিমাপ সেট করুন

Wire.write (0x00);

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

Wire.endTransmission ();

বিলম্ব (300);

}

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

{

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

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

Wire.beginTransmission (Addr);

// ডাটা রেজিস্টার নির্বাচন করুন

Wire.write (0x03);

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

Wire.endTransmission ();

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

Wire.requestFrom (Addr, 6);

// 6 বাইট ডেটা পড়ুন

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

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

{

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

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

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

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

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

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

}

বিলম্ব (300);

// তথ্য রূপান্তর

int xMag = ((data [0] * 256) + data [1]);

int zMag = ((data [2] * 256) + data [3]);

int yMag = ((data [4] * 256) + data [5]);

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

সিরিয়াল.প্রিন্ট ("এক্স-অ্যাক্সিসে ম্যাগনেটিক ফিল্ড:");

Serial.println (xMag);

সিরিয়াল.প্রিন্ট ("Y-Axis- এ ম্যাগনেটিক ফিল্ড:");

Serial.println (yMag);

Serial.print ("Z-Axis- এ ম্যাগনেটিক ফিল্ড:");

Serial.println (zMag);

বিলম্ব (300);

}

ওয়্যার লাইব্রেরিতে Wire.write () এবং Wire.read () কমান্ড লিখতে এবং সেন্সর আউটপুট পড়তে ব্যবহৃত হয়। কোডের নিম্নলিখিত অংশটি সেন্সর আউটপুট পড়ার চিত্র তুলে ধরে।

// 6 বাইট ডেটা পড়ুন // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb যদি (Wire.available () == 6) {data [0] = Wire.read (); ডেটা [1] = ওয়্যার.রেড (); ডেটা [2] = ওয়্যার.রেড (); ডেটা [3] = ওয়্যার.রেড (); তথ্য [4] = Wire.read (); তথ্য [5] = ওয়্যার.রেড (); }

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

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

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

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

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

প্রস্তাবিত: