كيفية استخدام وحدة GY511 مع Arduino [عمل بوصلة رقمية]: 11 خطوة
كيفية استخدام وحدة GY511 مع Arduino [عمل بوصلة رقمية]: 11 خطوة
Anonim
كيفية استخدام وحدة GY511 مع Arduino [إنشاء بوصلة رقمية]
كيفية استخدام وحدة GY511 مع Arduino [إنشاء بوصلة رقمية]

ملخص

في بعض مشاريع الإلكترونيات ، نحتاج إلى معرفة الموقع الجغرافي في أي لحظة والقيام بعملية محددة وفقًا لذلك. في هذا البرنامج التعليمي ، ستتعلم كيفية استخدام وحدة البوصلة LSM303DLHC GY-511 مع Arduino لإنشاء بوصلة رقمية. أولاً ، ستتعرف على هذه الوحدة وكيف تعمل ، وبعد ذلك سترى كيفية ربط وحدة LSM303DLHC GY-511 مع Arduino.

ماذا ستتعلم

  • ما هي وحدة البوصلة؟
  • وحدة البوصلة وواجهة اردوينو.
  • اصنع بوصلة رقمية باستخدام وحدة GY-511 و Arduino.

الخطوة 1: معلومات عامة حول وحدة البوصلة

معلومات عامة حول وحدة البوصلة
معلومات عامة حول وحدة البوصلة

تشتمل وحدة GY-511 على مقياس تسارع ثلاثي المحاور ومقياس مغناطيسي ثلاثي المحاور. يمكن لهذا المستشعر قياس التسارع الخطي بمقاييس كاملة تبلغ ± 2 جم / ± 4 جم / ± 8 جم / ± 16 جم والمجالات المغناطيسية بمقاييس كاملة تبلغ ± 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / ± 5.6 / ± 8.1 جاوس.

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

نصيحة

QMC5883L هي وحدة بوصلة أخرى شائعة الاستخدام. هذه الوحدة ، التي لها هيكل وتطبيق مشابه لوحدة LMS303 ، تختلف قليلاً في الأداء. لذا ، إذا كنت تقوم بالمشاريع ، فكن حريصًا بشأن نوع الوحدة الخاصة بك. إذا كانت الوحدة النمطية الخاصة بك هي QMC5882L ، فاستخدم المكتبة والأكواد المناسبة التي تم تضمينها أيضًا في البرنامج التعليمي.

الخطوة 2: المكونات المطلوبة

المكونات المطلوبة
المكونات المطلوبة

مكونات الأجهزة

اردوينو UNO R3 * 1

مقياس تسارع ثلاثي المحاور GY-511 + مقياس مغناطيسي * 1

محرك تاوربرو سيرفو SG-90 * 1

وحدة 1602 LCD * 1

صداري * 1

تطبيقات البرمجيات

اردوينو IDE

الخطوة 3: ربط وحدة البوصلة GY-511 مع Arduino

ربط وحدة البوصلة GY-511 مع Arduino
ربط وحدة البوصلة GY-511 مع Arduino
ربط وحدة البوصلة GY-511 مع Arduino
ربط وحدة البوصلة GY-511 مع Arduino

تحتوي وحدة البوصلة GY-511 على 8 دبابيس ، لكنك تحتاج فقط إلى 4 منها للتفاعل مع Arduino. تتواصل هذه الوحدة مع Arduino باستخدام بروتوكول I2C ، لذلك قم بتوصيل دبابيس SDA (إخراج I2C) و SCK (إدخال ساعة I2C) للوحدة بدبابيس I2C على لوحة Arduino.

ملاحظة كما ترون ، لقد استخدمنا وحدة GY-511 في هذا المشروع. ولكن يمكنك استخدام هذه التعليمات لإعداد وحدات البوصلة LMS303 الأخرى.

الخطوة 4: معايرة وحدة البوصلة GY-511

للتنقل ، تحتاج أولاً إلى معايرة الوحدة ، مما يعني ضبط نطاق القياس من 0 إلى 360 درجة. للقيام بذلك ، قم بتوصيل الوحدة النمطية بـ Arduino كما هو موضح أدناه وقم بتحميل الكود التالي على اللوحة الخاصة بك. بعد تنفيذ الكود ، يمكنك رؤية الحد الأدنى والحد الأقصى لقيم نطاق القياس لمحور X و Y و Z في نافذة الشاشة التسلسلية. ستحتاج إلى هذه الأرقام في الجزء التالي ، لذا قم بتدوينها.

الخطوة 5: الدائرة

دائرة كهربائية
دائرة كهربائية

الخطوة 6: الكود

في هذا الرمز ، تحتاج إلى مكتبة Wire.h لاتصالات I2C ومكتبة LMS303.h لوحدة البوصلة. يمكنك تنزيل هذه المكتبات من الروابط التالية.

مكتبة LMS303.h

مكتبة Wire.h

ملاحظة: إذا كنت تستخدم QMC5883 ، فستحتاج إلى المكتبة التالية:

MechaQMC5883L.h

هنا ، نشرح رمز LMS303 ، ولكن يمكنك أيضًا تنزيل الأكواد الخاصة بوحدة QMC.

دعونا نرى بعض الوظائف الجديدة:

compass.enableDefault () ،

تهيئة الوحدة النمطية

بوصلة قراءة () ؛

قراءة قيم إخراج وحدة البوصلة

run_min.z = min (running_min.z، compass.m.z) ؛ run_max.x = max (running_max.x، compass.mx) ؛

تحديد القيم الدنيا والقصوى لنطاق القياس بمقارنة القيم المقاسة.

الخطوة السابعة: عمل بوصلة رقمية

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

الخطوة 8: الدائرة

دائرة كهربائية
دائرة كهربائية

الخطوة 9: الكود

الشفرة
الشفرة

في هذا الجزء ، تحتاج أيضًا إلى مكتبة Servo.h المثبتة على برنامج Arduino افتراضيًا.

دعونا نرى بعض الوظائف الجديدة:

أجهزة مؤازرة 1 ؛

تهيئة الوحدة النمطية

بوصلة قراءة () ؛

إدخال كائن محرك سيرفو

Servo1.attach (servoPin) ؛ compass.init () ؛ compass.enableDefault () ،

تهيئة وحدة البوصلة ومحرك سيرفو

وسيطة Servo1.attach () هي رقم الدبوس المتصل بمحرك سيرفو.

compass.m_min = (LSM303:: vector) {- 32767، -32767، -32767} ؛ compass.m_max = (LSM303:: vector) {+ 32767، +32767، +32767}؛

باستخدام هذه الخطوط ، يمكنك تحديد القيم الدنيا والقصوى لقياس النطاق الذي تم الحصول عليه في الجزء السابق.

العنوان العائم = compass.heading ((LSM303:: vector) {0، 0، 1}) ؛

ترجع دالة العنوان () الزاوية بين محور الإحداثيات والمحور الثابت. يمكنك تحديد المحور الثابت بمتجه في وسيطة الوظيفة. على سبيل المثال ، هنا ، من خلال تحديد (LSM303:: vector) {0 ، 0 ، 1} ، يعتبر المحور Z بمثابة محور ثابت.

Servo1.write (العنوان) ؛

تطبق وظيفة Servo1.write () قيمة القراءة بواسطة وحدة البوصلة على محرك سيرفو.

لاحظ أن محرك سيرفو قد يحتوي على مجال مغناطيسي ، لذلك من الأفضل وضع محرك سيرفو على مسافة مناسبة من وحدة البوصلة ، بحيث لا يتسبب في انحراف وحدة البوصلة.

موصى به: