قياس المجال المغناطيسي باستخدام HMC5883 والفوتون الجزيئي: 4 خطوات
قياس المجال المغناطيسي باستخدام HMC5883 والفوتون الجزيئي: 4 خطوات
Anonim
Image
Image

HMC5883 عبارة عن بوصلة رقمية مصممة للاستشعار المغناطيسي للمجال المنخفض. يحتوي هذا الجهاز على نطاق مجال مغناطيسي عريض +/- 8 Oe ومعدل إخراج يبلغ 160 هرتز. يشتمل مستشعر HMC5883 على برامج تشغيل أوتوماتيكية لشريط إزالة المغنطة وإلغاء الإزاحة و 12 بت ADC الذي يتيح دقة توجيه بوصلة من 1 إلى 2 درجة. تم تصميم جميع وحدات I²C Mini Modules لتعمل عند 5VDC.

في هذا البرنامج التعليمي ، سنشرح العمل التفصيلي لـ HMC5883 باستخدام فوتون الجسيم. الجسيمات فوتون هي لوحة تسهل إرسال واستقبال البيانات من موقع الويب ، والتي تدعم الميزة الأساسية لإنترنت الأشياء (IoT).

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

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

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

1. HMC5883

2. جسيم الفوتون

3. كابل I2C

4. I2C Shield للفوتون الجسيمي

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

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

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

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

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

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

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

الخطوة 3: رمز لقياس شدة المجال المغناطيسي:

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

لنبدأ الآن برمز الجسيمات.

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

يتم توفير رمز الجسيمات بالكامل أدناه لراحة المستخدم:

#يشمل

#يشمل

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

#define Addr 0x1E

int xMag = 0 ، yMag = 0 ، zMag = 0 ؛

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

{

// تعيين متغير

Particle.variable ("i2cdevice"، "HMC5883") ؛

Particle.variable ("xMag" ، xMag) ؛

Particle.variable ("yMag" ، yMag) ؛

Particle.variable ("zMag" ، zMag) ؛

// تهيئة اتصال 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) ؛

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

xMag = ((البيانات [0] * 256) + البيانات [1]) ؛

إذا (xMag> 32767)

{

xMag - = 65536 ؛

}

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

إذا (zMag> 32767)

{

zMag - = 65536 ؛

}

yMag = ((البيانات [4] * 256) + البيانات [5]) ؛

إذا (yMag> 32767)

{

yMag - = 65536 ؛

}

// إخراج البيانات إلى لوحة القيادة

Particle.publish ("المجال المغناطيسي في المحور السيني:" ، سلسلة (xMag)) ؛

تأخير (1000) ؛

Particle.publish ("المجال المغناطيسي في المحور Y:" ، سلسلة (yMag)) ؛

تأخير (1000) ؛

Particle.publish ("المجال المغناطيسي في المحور Z:" ، سلسلة (zMag)) ؛

تأخير (1000) ؛

}

تنشئ الدالة Particle.variable () المتغيرات لتخزين إخراج المستشعر وتعرض وظيفة Particle.publish () الإخراج على لوحة القيادة بالموقع.

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

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

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

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

موصى به: