جدول المحتويات:

قياس المجال المغناطيسي باستخدام 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 هرتز. يشتمل مستشعر HMC5883 على برامج تشغيل أوتوماتيكية لشريط إزالة المغنطة وإلغاء الإزاحة و 12 بت ADC الذي يتيح دقة توجيه بوصلة من 1 إلى 2 درجة. تم تصميم جميع وحدات I²C Mini Modules لتعمل عند 5VDC.

في هذا البرنامج التعليمي ، سنشرح العمل التفصيلي لـ HMC5883 باستخدام Arduino nano.

الخطوة 1: الأجهزة المطلوبة:

الأجهزة المطلوبة
الأجهزة المطلوبة
الأجهزة المطلوبة
الأجهزة المطلوبة
الأجهزة المطلوبة
الأجهزة المطلوبة

تشمل المواد التي نحتاجها لتحقيق هدفنا مكونات الأجهزة التالية:

1. HMC5883

2. اردوينو نانو

3. كابل I2C

4. I2C Shield لاردوينو نانو

الخطوة 2: ربط الأجهزة:

ربط الأجهزة
ربط الأجهزة
ربط الأجهزة
ربط الأجهزة

يشرح قسم توصيل الأجهزة بشكل أساسي اتصالات الأسلاك المطلوبة بين المستشعر واردوينو نانو. يعد التأكد من التوصيلات الصحيحة ضرورة أساسية أثناء العمل على أي نظام للإخراج المطلوب. إذن ، الاتصالات المطلوبة هي كما يلي:

سيعمل HMC5883 على I2C. فيما يلي مثال على مخطط الأسلاك ، يوضح كيفية توصيل كل واجهة من أجهزة الاستشعار.

خارج الصندوق ، تم تكوين اللوحة لواجهة I2C ، لذلك نوصي باستخدام هذا التوصيل إذا كنت غير مدرك. كل ما تحتاجه هو أربعة أسلاك!

مطلوب أربعة اتصالات فقط دبابيس Vcc و Gnd و SCL و SDA ويتم توصيلها بمساعدة كابل I2C.

هذه الوصلات موضحة في الصور أعلاه.

الخطوة الثالثة: كود اردوينو لقياس كثافة المجال المغناطيسي:

كود اردوينو لقياس شدة المجال المغناطيسي
كود اردوينو لقياس شدة المجال المغناطيسي
كود اردوينو لقياس شدة المجال المغناطيسي
كود اردوينو لقياس شدة المجال المغناطيسي

دعونا نبدأ برمز Arduino الآن.

أثناء استخدام وحدة الاستشعار مع Arduino ، نقوم بتضمين مكتبة Wire.h. تحتوي مكتبة "Wire" على الوظائف التي تسهل اتصال i2c بين المستشعر ولوحة Arduino.

يتم تقديم كود Arduino بالكامل أدناه لراحة المستخدم:

#يشمل

// HMC5883 عنوان I2C هو 0x1E (30)

#define Addr 0x1E

الإعداد باطل()

{

// تهيئة اتصال I2C باعتباره MASTER

Wire.begin () ؛

// تهيئة الاتصال التسلسلي ، اضبط معدل الباود = 9600

Serial.begin (9600) ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد تكوين السجل أ

Wire.write (0x00) ؛

// ضبط تكوين القياس العادي ، معدل إخراج البيانات = 0.75 هرتز

Wire.write (0x60) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد وضع التسجيل

Wire.write (0x02) ؛

// ضبط القياس المستمر

Wire.write (0x00) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

تأخير (300) ؛

}

حلقة فارغة()

{

بيانات int غير الموقعة [6] ؛

// بدء نقل I2C

Wire.beginTransmission (العنوان) ؛

// حدد سجل البيانات

Wire.write (0x03) ؛

// إيقاف ناقل الحركة I2C

Wire.endTransmission () ؛

// طلب 6 بايت من البيانات

Wire.request From (Addr، 6) ؛

// قراءة 6 بايت من البيانات

// xMag msb و xMag lsb و zMag msb و zMag lsb و yMag msb و yMag lsb

إذا (Wire.available () == 6)

{

البيانات [0] = Wire.read () ،

البيانات [1] = Wire.read () ،

البيانات [2] = Wire.read () ؛

البيانات [3] = Wire.read () ؛

البيانات [4] = Wire.read () ؛

البيانات [5] = Wire.read () ؛

}

تأخير (300) ؛

// تحويل البيانات

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

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

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

// إخراج البيانات إلى الشاشة التسلسلية

Serial.print ("المجال المغناطيسي في المحور X:") ؛

Serial.println (xMag) ؛

Serial.print ("المجال المغناطيسي في المحور Y:") ؛

Serial.println (yMag) ؛

Serial.print ("المجال المغناطيسي في المحور Z:") ؛

Serial.println (zMag) ؛

تأخير (300) ؛

}

في مكتبة الأسلاك ، يتم استخدام Wire.write () و Wire.read () لكتابة الأوامر وقراءة إخراج المستشعر. يوضح الجزء التالي من الكود قراءة خرج المستشعر.

// قراءة 6 بايت من البيانات // xMag msb، xMag lsb، zMag msb، zMag lsb، yMag msb، yMag lsb if (Wire.available () == 6) {data [0] = Wire.read ()؛ البيانات [1] = Wire.read () ، البيانات [2] = Wire.read () ؛ البيانات [3] = Wire.read () ؛ البيانات [4] = Wire.read () ؛ البيانات [5] = Wire.read () ؛ }

يتم استخدام Serial.print () و Serial.println () لعرض إخراج المستشعر على الشاشة التسلسلية لـ Arduino IDE.

يظهر خرج المستشعر في الصورة أعلاه.

الخطوة 4: التطبيقات:

التطبيقات
التطبيقات

HMC5883 عبارة عن وحدة متعددة الرقاقات مثبتة على السطح مصممة للاستشعار المغناطيسي للمجال المنخفض مع واجهة رقمية لتطبيقات مثل البوصلة منخفضة التكلفة والقياس المغناطيسي. تتيح الدقة والدقة العالية المستوى من درجة إلى درجتين تطبيقات الملاحة المشاة وتطبيقات LBS.

موصى به: