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

ADXL345 باستخدام Arduino Uno R3: 5 خطوات
ADXL345 باستخدام Arduino Uno R3: 5 خطوات

فيديو: ADXL345 باستخدام Arduino Uno R3: 5 خطوات

فيديو: ADXL345 باستخدام Arduino Uno R3: 5 خطوات
فيديو: Home Automation Using Accelecrometer 2024, شهر نوفمبر
Anonim
ADXL345 باستخدام Arduino Uno R3
ADXL345 باستخدام Arduino Uno R3

في هذا الدرس سوف نتعلم كيفية استخدام مستشعر التسارع ADXL345.

الخطوة 1: المكونات

- لوحة اردوينو أونو * 1

- كابل USB * 1

- ADXL345 * 1

- اللوح * 1

- أسلاك توصيل

الخطوة 2: المبدأ

يستخدم مقياس التسارع لقياس القوة المتولدة أثناء التسارع. الأكثر أهمية هو تسارع الجاذبية المعروف وهو 1 جم.

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

ADXL345

ADXL345 هو مقياس تسارع صغير ، رقيق ، منخفض الطاقة ، ثلاثي المحاور بدقة عالية (13 بت) قياس يصل إلى ± 16 جم. يتم تنسيق بيانات الإخراج الرقمية كمكمل 16 بت 2 ويمكن الوصول إليها من خلال واجهة SPI (3 أو 4 أسلاك) أو واجهة رقمية I2C. في هذه التجربة ، يتم استخدام الواجهة الرقمية I2C.

إنه مناسب تمامًا لقياس التسارع الثابت للجاذبية في تطبيقات استشعار الميل ، فضلاً عن التسارع الديناميكي الناتج عن الحركة أو الصدمة. تتيح الدقة العالية (4 مجم / LSB) قياس تغيير الميل بأقل من 1.0 درجة. وتوفر الحساسية الممتازة (3.9mg / LSB @ 2g) إخراجًا عالي الدقة يصل إلى ± 16 جم.

كيف يعمل ADXL345

يكتشف ADXL345 التسارع مع وجود مكون الاستشعار في المقدمة ، ثم يقوم مكون استشعار الإشارة الكهربائية بتحويله إلى إشارة كهربائية ، وهي تمثيلية. بعد ذلك ، سيقوم محول AD المدمج في الوحدة بتحويل الإشارة التناظرية إلى إشارة رقمية.

X_OUT و Y_OUT و Z_OUT هي القيم الموجودة في المحور X و Y و Z على التوالي. ضع الوحدة مواجهًا لأعلى: Z_OUT يمكن أن تصل إلى + 1g على الأكثر ، والحد الأدنى لـ X_OUT هو -1g باتجاه الفأس ، والحد الأدنى لـ Y_OUT هو -1g في اتجاه Ay. من ناحية أخرى ، اقلب الوحدة رأسًا على عقب: الحد الأدنى لـ Z_OUT هو -1 جم ، والحد الأقصى لـ X_OUT هو + 1 جم باتجاه اتجاه الفأس ، والحد الأقصى لـ Y_OUT هو + 1 جم باتجاه أي. ، كما هو مبين أدناه. قم بتدوير وحدة ADXL345 وسترى تغيير القيم الثلاث.

عندما تتغير القناة A من مستوى عالٍ إلى مستوى منخفض ، إذا كانت القناة B عالية المستوى ، فإنها تشير إلى أن المشفر الدوار يدور في اتجاه عقارب الساعة (CW) ؛ إذا كانت القناة B في تلك اللحظة منخفضة المستوى ، فهذا يعني أنها تدور عكس اتجاه عقارب الساعة (CCW). لذلك إذا قرأنا قيمة القناة B عندما تكون القناة A منخفضة المستوى ، فيمكننا معرفة الاتجاه الذي يدور فيه المشفر الدوار.

المبدأ: انظر الرسم التخطيطي لوحدة التشفير الروتاري أدناه. من خلاله يمكننا أن نرى أن الطرف 3 من المشفر الدوار ، وبالتحديد CLK على الوحدة ، هو القناة B. الدبوس 5 ، وهو DT ، هو القناة A. لمعرفة اتجاه دوران المسجل ، ما عليك سوى قراءة قيمة CLK و DT.

توجد شريحة منظم جهد 3.3 فولت في الدائرة ، لذا يمكنك تشغيل الوحدة بجهد 5 فولت أو 3.3 فولت.

منذ أن تم توصيل SDO بـ GND ، فإن عنوان I2C الخاص بـ ADXL345 هو 0x53 ، 0xA6 للكتابة ، 0xA7 للقراءة

وظيفة الدبوس لوحدة ADXL345.

الخطوة 3: الإجراءات

الخطوة 1. بناء الدائرة.

الخطوة 2:

قم بتنزيل الكود من

الخطوه 3:

قم بتحميل الرسم التخطيطي على لوحة Arduino Uno

انقر فوق أيقونة تحميل لتحميل الرمز إلى لوحة التحكم.

إذا ظهر "تم التحميل" أسفل النافذة ، فهذا يعني أنه تم تحميل الرسم التخطيطي بنجاح.

بعد التحميل ، افتح Serial Monitor ، حيث يمكنك رؤية البيانات المكتشفة. عندما يتغير تسارع الوحدة ، سيتغير الرقم وفقًا لذلك على النافذة.

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

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

// ADXL335

/********************************

ADXL335

ملاحظة: vcc5v

، لكن ADXL335 Vs هو 3.3 فولت

الدائرة:

5 فولت: VCC

تمثيلي 0: المحور السيني

التناظرية 1: المحور ص

التناظرية 2: المحور z

بعد حرق ملف

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

*********************************

/بريد الالكتروني:

//Website:www.primerobotics.in

const int xpin =

A0 ؛ // المحور السيني لمقياس التسارع

const int ypin =

A1 ؛ // ص المحور

const int zpin =

A2 ؛ // z-axis (فقط في النماذج ذات 3 محاور)

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

{

// تهيئة الاتصالات التسلسلية:

Serial.begin (9600) ؛

}

حلقة فارغة()

{

int x = analogRead (xpin) ؛ // قراءة من xpin

تأخير (1) ؛ //

int y = analogRead (ypin) ؛ // قراءة من ypin

تأخير (1) ؛

int z = analogRead (zpin) ؛ // قراءة من zpin

تعويم zero_G = 338.0 ؛ // ADXL335 امدادات الطاقة

بمقدار Vs 3.3V: 3.3V / 5V * 1024 = 676/2 = 338

//Serial.print(x) ؛

//Serial.print("\t ") ؛

//Serial.print (y) ؛

//Serial.print("\t ") ؛

//Serial.print(z) ؛

//Serial.print("\n ") ؛

تطفو

zero_Gx = 331.5؛ // ناتج 0_ لمحور x: (x_max + x_min) / 2

تطفو

zero_Gy = 329.5 ؛ // ناتج صفر_G للمحور y: (y_max + y_min) / 2

تعويم zero_Gz = 340.0 ؛ //

خرج صفر_G للمحور z: (z_max + z_min) / 2

مقياس تعويم =

67.6 ؛ // مصدر الطاقة Vs 3.3V: 3.3v / 5v * 1024 / 3.3v * 330mv / g = 67.6g

تعويم scale_x =

65 ؛ // مقياس المحور x: x_max / 3.3v * 330mv / g

تعويم scale_y =

68.5 ؛ // مقياس المحور y: y_max / 3.3v * 330mv / g

تعويم scale_z =

68 ؛ // مقياس المحور z: z_max / 3.3v * 330mv / g

Serial.print (((عائم) x

- zero_Gx) / scale_x) ؛ // طباعة قيمة x على الشاشة التسلسلية

Serial.print ("\ t") ؛

Serial.print (((عائم) y

- 0_Gy) / scale_y) ؛ // طباعة قيمة y على الشاشة التسلسلية

Serial.print ("\ t") ؛

Serial.print (((تعويم) z

- 0_Gz) / scale_z) ؛ // طباعة قيمة z على الشاشة التسلسلية

Serial.print ("\ n") ؛

تأخير (1000) ؛ // انتظر ثانية واحدة

}

الخطوة 5: تحليل الكود

يشتمل رمز تجربة ADXL345 على 3 أجزاء: تهيئة كل منفذ وجهاز ، والحصول على البيانات المرسلة من المستشعرات وتخزينها ، وتحويل البيانات.

موصى به: