s

مقدمه

در این مطلب قصد داریم به معرفی ماژول شتاب سنج بپردازیم و سپس نحوه راه اندازی این ماژول به وسیله برد اردوینو را اموزش دهیم. ماژول شتاب سنج ADXL345 یک شتاب سنج سه محوره است که میتواند نیروهای شتاب استاتیک و داینامیک را اندازه گیری کند

کلید واژه ها
اردوینو,ADXL345,دیجیتال,کلاک,

وسایل مورد نیاز

#نوعتعدادخرید
1اردوینوArduino uno R3 1
2سیم جامپر2
3برد بورد1
4ماژول ADXL3451

پیش نیاز ها

برای برنامه نویسی این پروژه از نرم افزار اردوینو استفاده میکنیم.

  1. ابتدا نرم افزار اردوینو را دانلود و نصب کنیدلینک

توضیحات تکمیلی

نیروی گرانش زمین را میتوان نمونه ای از نیروی استاتیک نام برد.برای نیروی داینامیک هم میتوان به ارتعاشات و حرکات اشاره کرد همانطور که میدانید واحد اندازه گیری شتاب متر بر مجذور ثانیه (m/s^2) است. اما سنسورهای شتاب سنج معمولاً اندازه ها را بر حسب "g" یا گرانش بیان می کنند.لازم به ذکر است که یک "g" برابر نیروی گرانش زمین است که برابر با 9.8 متر بر ثانیه در مربع است.به وسیله این سنسور ما به وسیله بدست اوردن X وYو Z قادر به اندازه گیری شتاب و زاویه هستیم و میتوانیم در پروژه های مختلف از ان استفاده کنیم

این ماژول از دو پروتکل I2C وSPI پشتیبانی میکند.که در این پروژه ارتباط سنسور و اردونیو به وسیله پروتکل I2C برقرار میشود نحوه اتصال سنسور به اردوینو به این صورت است که پایه VCC و GND سنسور شتاب سنج به ترتیب به 5V و GND اردوینو متصل میشود و پایه SCL و SDA سنسور به ترتیب به پایه A5 و A4 اردوینو متصل میشود

اولین قدم افزودن کتابخانه به برنامه است

برای انکه اردوینو بتواند به وسیله پروتکل I2C با ماژول ستاب سنج ارتباط برقرار کند،باید در ابتدای برنامه این کتابخانه را معرفی کنیم

آدرس I2C سنسور را که از دیتاشیت ماژول بدست امده درون متغییری میریزیم

() Setup

به این صورت ارتباط سریال اردوینو با رایانه را اغاز میکنیم

برای برقراری ارتباط بین میکرو و مايول می بایسد ارتباط را با تابه زیر شروع کنیم

نکته

از ان جایی که ما برای برقراری ارتباط از i2c استفاده می کنیم می بایست برای صحبت با ماژول بیت هایی را برای ماژول ارسال کنیم و این پروسه باید بیت بیت انجام شود. به طور مال

جهت شروع ارتباط میکرو برای ارسال دیتا از تابع() beginTransmission استفاده می کنیم

با استفاده از تابع می کنیم write () به کدام رجیستر می خواهیم دسترسی داشته باشیم{" "}

و بعد از ارسال بیت های فرامین ارتباط بین میکرو و ماژول را می بندیم

() loop

در بخش void loop داده های سنسور را می خوانیم. داده های هر محور در دو بایت ذخیره می شود.

در این قسمت با استفاده فانکشن های زیر به ماژول فرمان می دهیم تا اطلاعات x y z را برای ما استخراج کند

و با فرمان requestFrom دیتا های دریافتی را از ماژول گرفته

در این بخش با استفاده از شیفت و تقسیم متمادی اطلاعات بیتی در یافتی از ماژول را به فرمت دلخواه در می اوریم و در اینجا با تقسیم بر 256 دیتا ها را به عدد تبدیل می کنیم و این تقسیم بر اساس دیتاشیت ماژول تنظیم شده است{" "}

شماتیک

rشماتیک برد

کد کامل

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include <Wire.h> // Wire library - used for I2C communication int ADXL345 = 0x53; // The ADXL345 sensor I2C address float X_out, Y_out, Z_out; // Outputs void setup() { Serial.begin(9600); Wire.begin(); // Initiate the Wire library Wire.beginTransmission(ADXL345); // Start communicating with the device Wire.write(0x2D); // Access/ talk to POWER_CTL Register - 0x2D Wire.write(8); // (8dec -> 0000 1000 binary) Bit D3 High for measuring enable Wire.endTransmission(); delay(10); } void loop() { // === Read acceleromter data === // Wire.beginTransmission(ADXL345); Wire.write(0x32); // Start with register 0x32 (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(ADXL345, 6, true); // Read 6 registers total, each axis value is stored in 2 registers X_out = ( Wire.read() | Wire.read() << 8); // X-axis value X_out = X_out / 256; //For a range of +-2g, we need to divide the raw values by 256, according to the datasheet Y_out = ( Wire.read() | Wire.read() << 8); // Y-axis value Y_out = Y_out / 256; Z_out = ( Wire.read() | Wire.read() << 8); // Z-axis value Z_out = Z_out / 256; Serial.print("Xa= "); Serial.print(X_out); delay(500); Serial.print(" Ya= "); Serial.print(Y_out); delay(500); Serial.print(" Za= "); Serial.println(Z_out); delay(500); }

اپلود کد

  1. در برنامه اردوینو یک برگه جدید باز می کنیم
  2. dFile -> arduino Preferences
  3. جهت اپلود کد می بایست پورت سریال دستگاه متصل را انتخاب کنیم (توجه شماره com با پورت کامپیوتر در ارتباط است و بسته به پورت دارای شماره های مختلفی می باشد )
  4. programFile -> arduino Preferences
  5. کد کامل را جایگزاری می کنیم و گزینه اپلود را می زنیم
  6. sFile -> arduino Preferences
  7. و در اخر پنجره سریال را باز کرده
  8. dFile -> arduino Preferences
  9. واطلاعات را در ترمینال به نمایش در می اید
  10. File -> arduino Preferences

دیدگاهتان را بنویسید

کامنت ها