آموزش راه اندازی ماژول ADXL345 با استفاده از آردوینو

به نام خدا

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

سخت افزار مورد نیاز

ماژول شتاب سنج سه محوره ADXL345

Arduino Uno

 

مسخصات کلی ماژول ADXL345:

ولتاژ تغذیه ماژول ۳٫۳

رزولوشن بالای ۱۳ بیت در ±۲g   الی ±۱۶g

پشتیبانی از پروتکلI2C , SPI

تشخیص وضعیت سقوط آزاد

قابلیت تشخیص تک ضربه و دو ضربه

 

 

 

ADXL345 یک ماژول شناب سنج سه محوره می باشد که می توان آن را توسط دو پروتکل ارتباطی I2C   و  SPI راه اندازی نمود.

ماژول  ADXL345 قادر است  رنج ±۲g   الی ±۱۶g را باا مقادیر پیش فرض۲و۴و۸و۱۶   با رزولوشن بالای ۱۳ بیت اندازه گیری کند..ماژول ADXL345 قادر است شتاب استاتیک و شتاب داینامیک را اندازه گیری کند. منظور از شتاب استاتیک گرانش در کاربردهایی مثل اندازه گیری زاویه کجی و شتاب داینامیک   حاصل از تکان یا حرکت ناگهانی می باشد.با اسنفادده از یک FIFO    ۳۲ سطحی میتوان اطلاعات سنسور را ذخیره نمود تا بار پردازش از پروسسور میزبان کاهش یابد.این سنسور مجهز به ساختار هوشمند مدیریت مصرف توان است که متناسب با اعمال شتاب به سنسور عمل میکند و نهایتاً باعث اتلاف کمترین توان روی چیپ خواهد شد.برای برنامه نویسی از دو کتابخانه  Adafruit_ADXL345   و Adafruit Sensor Library  کمپانی Adafruit استفاده میکنیم(قابل ذکر است برنامه و کتابخانه بر اساس پروتکل ارتباطی I2C می باشند)

شماتیک

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

پایه SDA به پایه A4 آردوینو Uno متصل شده

پایه ی SCL به پایه A5 آردوینو Uno متصل شده

اموزش راه اندازی adxl345
اموزش راه اندازی adxl345

برنامه

در این برنامه  ۵ LED در روی برد برد قرار گرفته است .LED وسط سقوط آزاد را تشخیص میدهد و در هنگا م سقوط آزاد چراغ آن خاموش میشود.۴ LED اطراف با متمایل شدن برد برد به سمت هر یک ازLED ها، آن LED روشن شده و با افزایش زاوایه شدن نور آن تغییر میکند.کد کلی برنامه به صورت زیر می باشد.

توضیح کدها

در ابتدا کتابخانه ی Adafruit_ADXL345  را از این لینک دانلود کنید.

سپس کتابخانه  Adafruit_Sensor را از این لینک دانلود کنید.

کتابخانه ی این ماژول را با نام Adafruit_ADXL345_U.h به برنامه اضافه میکنیم.

برای استفاده از این کتابخانه باید کتابخانه های Adafruit_Sensor.h و Wire.h را نیز به برنامه اضافه کنیم.

 

 

از کلاس Adafruit_ADXL345_Unified یک شی به نام accel میسازیم.درون سازنده آن ID دلخواهی برای سنسور انتخاب میکنیم.انجام این کار زمانی که از چند ماژول استفاده میکنیم بسیار مفیدمی باشد.

با استفاده از این کد بالا اگر در تشخیص  ماژول و یا ارتباط با آن با مشکلی برخوردیم ،بر روی سریال مانیتور ارور no ADXL345 detected … Check your wiring به نمایش در می آید و برنامه متوقف می شود.

تابع  setRange(range_t range)  دقت اندازه گیری سنسور را مشخص میکند. این تابع ممیتواند مقادیر زیر را دریافت کند.

        • ADXL345_RANGE_16_G

 

 

      • ADXL345_RANGE_8_G

 

 

      • ADXL345_RANGE_4_G

 

 

      • ADXL345_RANGE_2_G

 

در صورتی که از این تابع استفاده نشود، کامپایلر مقدار  ADXL345_RANGE_2_G  را به طور پیشفرض برای ماژول در نظر میگیرد.استفاده از مقادیر کوچکتر باعث افزایش دقت  و استفاده از مقادیر بزرگتر باعث میشود محدوده ی بیشتری اندازه گیری شود.

با استفاده از این تابع  میتوان سرعت آپدیت شدن مقادیر خروجی را تنظیم نمود. این تابع میتواند مقادیر زیر را دریافت کند:

        • ADXL345_DATARATE_3200_HZ
      • ADXL345_DATARATE_1600_HZ
      • ADXL345_DATARATE_800_HZ
      • ADXL345_DATARATE_400_HZ
      • ADXL345_DATARATE_200_HZ
      • ADXL345_DATARATE_100_HZ
      • ADXL345_DATARATE_50_HZ
      • ADXL345_DATARATE_25_HZ
      • ADXL345_DATARATE_12_5_HZ
      • ADXL345_DATARATE_6_25HZ
      • ADXL345_DATARATE_3_13_HZ
      • ADXL345_DATARATE_1_56_HZ
      • ADXL345_DATARATE_0_78_HZ
      • ADXL345_DATARATE_0_39_HZ
      • ADXL345_DATARATE_0_20_HZ
      • ADXL345_DATARATE_0_10_HZ

 

در صورت  استفاده از فرکانس بیش از ۱۰۰ هرتز ، نویزگیری بسیار زیاد میشود.وو ددر صورت استفاده از فرکانس کمتر از ۶٫۲۵ هرتز ، سنسور به تغییرات دما بسیار حساس میشود .در صورتی که از این تابع  در برنامه استفاده نشود ، کامپایلر به طور پیش فرض مقدار ADXL345_DATARATE_0_10_HZ را برای ماژول در نظر میکیرد.

یک اینستنس از  sensors_event_t به نام evevnt می سازیم و توسط تابع ()getEvent ،به شی ساخته شده از کلاس Adafruit_ADXL345_U.h به نام accle نسبت میدهیم.

 

ما بقی کد ها  نسبتا ساه می‌باشند و نیازی به توضیح آن ها نیست.

 

برای دانلود کد های برنامه اینجا کلیک کنید

 

 

علیرضا قربانی
علیرضا قربانی
علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

7 دیدگاه ها

  1. moslemnadi می‌گه:

    عالی بود:)

  2. یاوری می‌گه:

    سلام
    با تشکر از زحماتتون اگه ممکنه کد محاسبه زاویه توسط این ماژول و نمایش اون روی lcd رو هم بزارین
    بازم ممنون

  3. Tragzes می‌گه:

    سلام وقت بخیر
    برنامه ای که مقادیر بدست اومده رو روی LCD نمایش بده ندارید ؟؟

  4. ali می‌گه:

    دمت گرم فوق العاده ای

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *