جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
MMA8452Q هو مقياس تسارع ذكي ، منخفض الطاقة ، ثلاثي المحاور ، سعوي ، دقيق ميكانيكي مع دقة 12 بت. يتم توفير خيارات المستخدم القابلة للبرمجة المرنة بمساعدة الوظائف المضمنة في مقياس التسارع ، والتي يمكن تكوينها إلى دبابيس للمقاطعة. إنه يحتوي على مقاييس كاملة يمكن اختيارها من قبل المستخدم تبلغ ± 2g / ± 4g / ± 8g مع بيانات مصفاة عالية التمرير بالإضافة إلى البيانات غير المفلترة المتاحة في الوقت الفعلي. هذا هو العرض التوضيحي باستخدام Arduino nano.
الخطوة 1: ماذا تحتاج..
1. اردوينو نانو
2. MMA8452Q
3. كابل I²C
4. I²C Shield لـ Arduino Nano
الخطوة الثانية: التوصيل:
خذ درع I2C لـ Arduino Nano وادفعه برفق فوق دبابيس Nano.
ثم قم بتوصيل أحد طرفي كابل I2C بمستشعر MMA8452Q والطرف الآخر بدرع I2C.
تظهر الاتصالات في الصورة أعلاه.
الخطوة الثالثة: الكود:
يمكن تنزيل كود اردوينو الخاص بـ MMMA8452Q من مستودع جيثب الخاص بنا- متجر DCUBE.
ها هو الرابط الالكتروني.
نقوم بتضمين مكتبة Wire.h لتسهيل اتصال I2c للمستشعر بلوحة Arduino.
يمكنك أيضًا نسخ الكود من هنا ، ويُعطى على النحو التالي:
// موزعة بترخيص الإرادة الحرة.
// استخدمها بالطريقة التي تريدها ، سواء كانت ربحًا أو مجانًا ، شريطة أن تتناسب مع تراخيص الأعمال المرتبطة بها.
// MMA8452Q
// تم تصميم هذا الرمز للعمل مع الوحدة المصغرة MMA8452Q_I2CS I2C.
#يشمل
// MMA8452Q عنوان I2C هو 0x1C (28)
#define Addr 0x1C
الإعداد باطل()
{
// تهيئة اتصال I2C باعتباره MASTER
Wire.begin () ؛
// تهيئة الاتصال التسلسلي ، اضبط معدل الباود = 9600
Serial.begin (9600) ؛
// بدء نقل I2C
Wire.beginTransmission (العنوان) ؛
// حدد سجل التحكم
Wire.write (0x2A) ؛
// وضعيه الإستعداد
Wire.write (0x00) ؛
// إيقاف ناقل الحركة I2C
Wire.endTransmission () ؛
// بدء نقل I2C
Wire.beginTransmission (العنوان) ؛
// حدد سجل التحكم
Wire.write (0x2A) ؛
// الوضع النشط
Wire.write (0x01) ؛
// إيقاف ناقل الحركة I2C
Wire.endTransmission () ؛
// بدء نقل I2C
Wire.beginTransmission (العنوان) ؛
// حدد سجل التحكم
Wire.write (0x0E) ؛
// اضبط النطاق على +/- 2g
Wire.write (0x00) ؛
// إيقاف ناقل الحركة I2C
Wire.endTransmission () ؛
تأخير (300) ؛
}
حلقة فارغة()
{
بيانات int غير الموقعة [7] ؛
// طلب 7 بايت من البيانات
Wire.request From (Addr، 7) ؛
// قراءة 7 بايت من البيانات
// staus، xAccl lsb، xAccl msb، yAccl lsb، yAccl msb، zAccl lsb، zAccl msb
إذا كان (Wire.available () == 7)
{
البيانات [0] = Wire.read () ،
البيانات [1] = Wire.read () ،
البيانات [2] = Wire.read () ؛
البيانات [3] = Wire.read () ؛
البيانات [4] = Wire.read () ؛
البيانات [5] = Wire.read () ؛
البيانات [6] = Wire.read () ؛
}
// تحويل البيانات إلى 12 بت
int xAccl = ((data [1] * 256) + data [2]) / 16 ؛
إذا (xAccl> 2047)
{
xAccl - = 4096 ؛
}
int yAccl = ((data [3] * 256) + data [4]) / 16 ؛
إذا (yAccl> 2047)
{
yAccl - = 4096 ؛
}
int zAccl = ((data [5] * 256) + data [6]) / 16 ؛
إذا (zAccl> 2047)
{
zAccl - = 4096 ؛
}
// إخراج البيانات إلى الشاشة التسلسلية
Serial.print ("تسريع في المحور X:") ؛
Serial.println (xAccl) ؛
Serial.print ("تسريع في المحور ص:") ؛
Serial.println (yAccl) ؛
Serial.print ("تسريع في المحور Z:") ؛
Serial.println (zAccl) ؛
تأخير (500) ؛
}
الخطوة 4: التطبيقات:
يحتوي MMA8452Q على العديد من التطبيقات التي تشمل تطبيقات البوصلة الإلكترونية ، واكتشاف الاتجاه الثابت الذي يتضمن تحديد الوضع الرأسي / الأفقي ، أعلى / أسفل ، يسار / يمين ، تحديد الموضع الخلفي / الأمامي ، الكمبيوتر المحمول ، القارئ الإلكتروني ، واكتشاف السقوط الحر والحاسوب المحمول ، في الوقت الفعلي الكشف عن الاتجاه بما في ذلك الواقع الافتراضي وملاحظات موقع المستخدم ثلاثية الأبعاد للألعاب ، وتحليل النشاط في الوقت الفعلي مثل عد خطوات عداد الخطى ، واكتشاف السقوط الحر لمحرك الأقراص الصلبة ، والنسخ الاحتياطي لنظام تحديد المواقع العالمي (GPS) الميت الحساب وغير ذلك الكثير.