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

قياس التسارع باستخدام ADXL345 والفوتون الجسيمي: 4 خطوات
قياس التسارع باستخدام ADXL345 والفوتون الجسيمي: 4 خطوات

فيديو: قياس التسارع باستخدام ADXL345 والفوتون الجسيمي: 4 خطوات

فيديو: قياس التسارع باستخدام ADXL345 والفوتون الجسيمي: 4 خطوات
فيديو: 13- حساس التسارع | ( Acceleration sensor ( adxl335 | كريم الساعدي 2024, شهر نوفمبر
Anonim
Image
Image

ADXL345 هو مقياس تسارع صغير ورفيع وقوي للغاية وثلاثة محاور بدقة عالية (13 بت) قياس يصل إلى ± 16 جم. يتم تنسيق بيانات الإخراج الرقمية كمكمل ثنائي 16 بت ويمكن الوصول إليها من خلال الواجهة الرقمية I2 C. يقيس التسارع الثابت للجاذبية في تطبيقات استشعار الميل ، وكذلك التسارع الديناميكي الناتج عن الحركة أو الصدمة. تتيح الدقة العالية (3.9 مجم / LSB) قياس تغيرات الميل أقل من 1.0 درجة.

في هذا البرنامج التعليمي ، تم توضيح واجهة وحدة استشعار ADXL345 مع فوتون الجسيمات. لقراءة قيم التسارع ، استخدمنا الجسيمات مع محول I2c. يجعل هذا المحول I2C الاتصال بوحدة المستشعر أسهل وأكثر موثوقية.

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

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

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

1. ADXL345

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

3. كابل I2C

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

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

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

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

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

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

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

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

الخطوة الثالثة: كود قياس التسارع:

كود قياس التسارع
كود قياس التسارع

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

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

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

#يشمل

#يشمل

// عنوان ADXL345 I2C هو 0x53 (83)

#define Addr 0x53

int xAccl = 0، yAccl = 0، zAccl = 0 ؛

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

{

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

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

Particle.variable ("xAccl" ، xAccl) ؛

Particle.variable ("yAccl" ، yAccl) ؛

Particle.variable ("zAccl"، zAccl) ؛

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

Wire.begin () ؛

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

Serial.begin (9600) ؛

// بدء نقل I2C

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

// حدد سجل معدل عرض النطاق الترددي

Wire.write (0x2C) ؛

// حدد معدل بيانات الإخراج = 100 هرتز

Wire.write (0x0A) ؛

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

Wire.endTransmission () ؛

// بدء نقل I2C

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

// حدد سجل التحكم في الطاقة

Wire.write (0x2D) ؛

// حدد تعطيل النوم التلقائي

Wire.write (0x08) ؛

// إيقاف انتقال I2C

Wire.endTransmission () ؛

// بدء نقل I2C

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

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

Wire.write (0x31) ؛

// حدد الدقة الكاملة ، +/- 2g

Wire.write (0x08) ؛

// نهاية انتقال I2C

Wire.endTransmission () ؛

تأخير (300) ؛

}

حلقة فارغة()

{

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

لـ (int i = 0 ؛ i <6 ؛ i ++)

{

// بدء نقل I2C

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

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

Wire.write ((50 + i)) ؛

// إيقاف انتقال I2C

Wire.endTransmission () ؛

// طلب 1 بايت من البيانات من الجهاز

Wire.request From (Addr، 1) ؛

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

// xAccl lsb و xAccl msb و yAccl lsb و yAccl msb و zAccl lsb و zAccl msb

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

{

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

}

تأخير (300) ؛

}

// تحويل البيانات إلى 10 بت

int xAccl = (((data [1] & 0x03) * 256) + data [0]) ؛

إذا (xAccl> 511)

{

xAccl - = 1024 ؛

}

int yAccl = (((data [3] & 0x03) * 256) + data [2]) ؛

إذا (yAccl> 511)

{

yAccl - = 1024 ؛

}

int zAccl = (((data [5] & 0x03) * 256) + data [4]) ؛

إذا (zAccl> 511)

{

zAccl - = 1024 ؛

}

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

Particle.publish ("التسريع في المحور X هو:" ، سلسلة (xAccl)) ؛

Particle.publish ("التسريع في المحور ص هو:" ، سلسلة (yAccl)) ؛

Particle.publish ("التسريع في المحور Z هو:" ، سلسلة (zAccl)) ؛

}

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

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

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

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

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

موصى به: