آردوینو Arduino Uno شتاب و ژایرو قطعات الکترونیک مدارهای الکترونیک پروژه های آردوینو

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

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

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

مشخصات کلی ماژول ADXL345

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

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

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

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

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

 

 

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

 

شماتیک ماژول ADXL345

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

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

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

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

برنامه آردوینو ماژول ADXL345

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

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 

توضیح کدهای آردوینو ماژول ADXL345

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

Adafruit_ADXL345_Unified accel (54321);

 

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

if (!accel.begin())
{
Serial.println(" no ADXL345 detected ... Check your wiring!");
while (1);
}

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

accel.setRange(ADXL345_RANGE_16_G);

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

  • ADXL345_RANGE_16_G
  • ADXL345_RANGE_8_G
  • ADXL345_RANGE_4_G
  • ADXL345_RANGE_2_G

 

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

accel.setDataRate(ADXL345_DATARATE_0_20_HZ);

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

        • 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 event;

یک اینستنس از  sensors_event_t به نام evevnt می سازیم و توسط تابع ()getEvent ،به شی ساخته شده از کلاس Adafruit_ADXL345_U.h به نام accle نسبت میدهیم. ما بقی کد ها  نسبتا ساه می‌باشند و نیازی به توضیح آن ها نیست. برای دانلود کد های برنامه اینجا کلیک کنید

 

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

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

Arduino Uno

 

 

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

 

پروژه و دریافت بن ارسال رایگان

برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

علیرضا قربانی

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۴ دیدگاه

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

      • با سلام
        به دو روش کتابخانه ها در دسترس است. سریع ترین روش در صفحه محصول کالا در بخش دانلود کتابخانه قرار دارد، دانلود کرده و در مسیر نصب نرم افزار آردوینو در سیستم خود در پوشه libraries کپی کنید.
        روش دوم از طریق نرم افزار آردوینو بر روی manage libraries کلیک کنید و کتابخانه را فیلتر و نصب کنید.

        • آیا برای دانلود کتابخانه از سایت دانشجو کیت باید با مرور گر خاصی وارد شد؟ من با موبایلم وارد شدم اما موفق نشدم دانلود کنم چون قسمت دانلود نمایان نشد! اما با لپ تاپم وارد شدم دانلود کردم ولی وقتی با آردینو به مسیر زیپ ها میرم پوشه ها خالی نشون میده ! آیا میشه مشکل از سایت باشه و به درستی فایل ها دانلود نشن؟

        • در حال حاظر با دقت ترین سنسور ژیروسکوپ چیه ؟ میشه لینک دانلود کتابخانه برای mpu 6050برای رزبری پای ۴ واسم بگذارین؟ چه کتاب خانه هایی نیاز داره ؟

            • سلام من متوجه نشدم کجای این صفحه برای دانلود برم وقتی Go to file هم میرم هیچ قسمتی برای دانلود نمیبینم.. درضمن من لینک کتابخانه mpu6050 برای رزبری پای میخوام نه ADEXL345

              • با سلام
                برای رزبری پای این مورد تست نشده است و این آموزش فقط برای آردوینو است.

  • با سلام
    تشخیص وضعیت سقوط آزاد وقتی ماژول در حال چرخش به دور خودش هست امکان پذیره؟ اگر هست . نحوی انجام اون چطوره؟

  • سلام من این مدار رو بستم ولی اعدادی که نمایش داده میشه تغییرات لحظه ای داره بدون این که زاویه سنج رو تغییر بدیم اعداد بین سه عدد در حدود همون زاویه ای که قرار گرفته نوسان داره ایا میشه این تغییرات رو حذف کرد

    • با سلام
      همانطور که در متن آموزش توضیح داده شده است. در صورت اتتخاب فرکانس‌های بالا روی برد نویز دریافت می‌کنید. لطفا اطلاعات دقیق‌تری از برد و روش اجرای پروژه بیان بفرمایید؛ تا بتوانم مشکل را پیدا کنم.

  • سلام . ما وقتی لایبری هارو نصب میکنیم . و کد رو میزنیم میگه همچین اسمی (اسم کتابخونه) وجود ندارد

  • با سلام مطالب عالی بود و من هم دنبال همچنین چیزی بود ولی میخواستم به جای لامپ ها رله بزارم
    امکانش هست
    اگه هست لطفا راهنماییم کنید.

    • با سلام
      در اینصورت نیازی به تغییر در کدها نیست. رله را جایگزین ال ای دی کنید.

  • خسته نباشید مدتی درگیر این ماژولم و تقریبا با کاربرد های دیگشم هم اشنا شدم مثل تشخیص ضربه ، تشخیص حالت سکون و فعالیت ، تشخیص سقوط آزاد و… الان میخوام مقدار شتاب رو بدونم دقیقا چند؟ سوالم اینه آیا مقادیری که برای تغییر جهت در راستای محور ها نشان میده همون مقدار شتاب تو اون محور؟ یا بزارین سوالم رو اینطور بگم من میخوام مقدار لحظه ای (real time ) شتاب را در سقوط آزاد بدونم چقدره این سنسور مناسب این کار هست یا نه؟ اگر بله ممنون میشم راهنماییم کنین

  • سلام و تشکر از مهندس عزیز. جناب مهندس بنده کد های شما را ران کردن.همش ارور کتابخانه adxl345 و sensor و wprogram میده. کتابخونه ها رو هم دانلود کردم ولی مشکل رفع نمیشه.لطفا راهنمایی کتید

  • سلام خسته نباشید، بنده یک پروژه با همین ضمیمه دارم، ولی جوری هست که در یک سمت ماژول شتاب سنج و آردوینو wemos d1 که اطلاعات رو از طریق وای فای به یک آردوینوwemos دیگر ارسال کرده و روی صفحه نمایش نشان داد. چطور میتونید کمکم کنید ممنون میشم.