ماژول ADXL345 یک سنسور شتابسنج (Accelerometer) و ژایروسکوپ (Gyroscope) است که توسط کمپانی Analog Devices تولید میشود. این سنسور برای اندازهگیری شتاب و سرعت زاویهای در سه جهت مختصاتی (سه محور x، y و z) استفاده میشود. این ماژول از رابط ارتباطی I2C یا SPI برای ارتباط با میکروکنترلرها یا میکروپروسسورها استفاده میکند.در سری آموزش های پروژه محور آردوینو اینبار قصد داریم به آموزش راه اندازی ماژول شتاب سنج سه محوره ADXL345 با استفاده از آدوینو Uno بپردازیم.با دیجی اسپارک همراه باشید.
معرفی ماژول ADXL345
ADXL345 یک ماژول شناب سنج سه محوره می باشد که می توان آن را توسط دو پروتکل ارتباطی I2C و SPI راه اندازی نمود. ماژول ADXL345 قادر است رنج ±۲g الی ±۱۶g را با مقادیر پیش فرض ۲و۴و۸و۱۶ با رزولوشن بالای ۱۳ بیت اندازه گیری کند. ماژول ADXL345 قادر است شتاب استاتیک و شتاب داینامیک را اندازه گیری کند. منظور از شتاب استاتیک گرانش در کاربردهایی مثل اندازه گیری زاویه کجی و شتاب داینامیک حاصل از تکان یا حرکت ناگهانی می باشد.با اسنفادده از یک FIFO 32 سطحی میتوان اطلاعات سنسور را ذخیره نمود تا بار پردازش از پروسسور میزبان کاهش یابد.این سنسور مجهز به ساختار هوشمند مدیریت مصرف توان است که متناسب با اعمال شتاب به سنسور عمل میکند و باعث اتلاف کمترین توان روی چیپ خواهد شد.برای برنامه نویسی از دو کتابخانه Adafruit_ADXL345 و Adafruit Sensor Library کمپانی Adafruit استفاده میکنیم(قابل ذکر است برنامه و کتابخانه بر اساس پروتکل ارتباطی I2C می باشند)
مشخصات فنی ماژول ADXL345
سنسور ADXL345 یکی از محبوبترین سنسورهای شتابسنج در صنعت الکترونیک و روباتیک است و به عنوان یکی از سنسورهای معروف این دسته از سنسورها محسوب میشود.ADXL345 یک سنسور شتابسنج سه محوره است، به این معنی که میتواند شتاب در جهتهای x، y و z را اندازهگیری کند. این شتابسنج با استفاده از اصول نیروی جاذبهای کار میکند و تغییرات شتاب را در سه جهت مختصاتی تشخیص میدهد. ADXL345 دارای دو رابط ارتباطی معروف است، از جمله رابط I2C (Inter-Integrated Circuit) و SPI (Serial Peripheral Interface) که به صورت موازی و سری قابل اتصال است. این رابطها به کنترلرها یا میکروپروسسورها امکان ارتباط با سنسور را میدهند و دادهها را به آنها منتقل میکنند. ADXL345 قابلیت اندازهگیری شتاب در چهار دامنهی مختلف را دارد، شامل ±۲g، ±۴g، ±۸g و ±۱۶g. این محدودهها به معنی توانایی اندازهگیری شتاب در محدودههای مختلف نسبت به نیروی جاذبهای هستند. دقت ADXL345 وابسته به دامنهی اندازهگیری مورد استفاده است، اما به طور عمومی دقت آن برابر با ۰٫۱g است. این به این معنی است که مقادیر شتاب تا حدود یک دهم g قابل اندازهگیری هستند. ADXL345 دارای قابلیت کار در دماهای گسترده است، از -۴۰ درجه سانتیگراد تا +۸۵ درجه سانتیگراد است. ADXL345 دارای مصرف انرژی کم است و از این جهت برای برنامهها و دستگاههایی که از باطری کار میکنند، بسیار مناسب است.
- نوع سنسور: شتابسنج سه محوره
- رابط ارتباطی: I2C و SPI
- دامنهی اندازهگیری: ±۲g، ±۴g، ±۸g، ±۱۶g
- دقت: حدود ۰٫۱g
- قابلیت کار در دماهای گسترده: -۴۰°C تا +۸۵°C
- ولتاژ کاری: ۳٫۳ ولت
- مصرف انرژی کم
- کاربردها: روباتیک، اندازهگیری وضعیت حرکتی، ابزارهای پوشیدنی، دستگاههای هوشمند و …
- دارای کتابخانهها و راهاندازهای مختلف برای برنامهنویسی آسان.
بررسی پایه های ماژول ADXL345
- VCC: پایهی تغذیه، با ولتاژ ۳٫۳ ولت به آن وصل میشود.
- GND: اتصال به منبع زمین یا زمین مدار.
- CS (Chip Select): این پایه برای انتخاب دستگاه در رابط SPI استفاده میشود.
- INT1: خروجی اعلان ۱، به وسیلهی این پایه میتوانید خروجی تغییر شتاب را کنترل کنید.
- INT2: خروجی اعلان ۲، برای کنترل تغییرات شتاب در صورتی که INT1 بهعنوان خروجی مورد استفاده قرار نگیرد، از این پایه استفاده میشود.
- SDO/ALT ADDRESS: این پایه برای تنظیم آدرس I2C دستگاه استفاده میشود.
- SDA: اتصال داده I2C، برای ارتباط با کنترلرها و دستگاهها.
- SCL: اتصال ساعت I2C، برای ارتباط با کنترلرها و دستگاهها.
- SA0/ALT ADDRESS: پایهای برای تنظیم آدرس I2C دستگاه بهصورت جایگزین.
- CS: پایهای که بهصورت جایگزین میتواند برای انتخاب دستگاه در رابط SPI استفاده شود.
- NC (Not Connected): پایهای که بهصورت استفادهنشده (غیرمتصل) است و باید خالی باقیبماند.
روش اتصال ADXL345 به آردوینو
برای راه اندازی ماژول از پروتکل I2C استفاده شده است. پایه SDA به پایه A4 آردوینو Uno متصل شده و پایه ی SCL به پایه A5 آردوینو Uno متصل شده است.
برنامه آردوینو ماژول 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
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
عالی بود:)
مرسی لطف دارین
سلام
با تشکر از زحماتتون اگه ممکنه کد محاسبه زاویه توسط این ماژول و نمایش اون روی lcd رو هم بزارین
بازم ممنون
سلام
در لیسن آموزش ها قرار میگیره حتما
سلام وقتتون بخیر…کتابخانه ها رو چطور از سایت دانلود کنیم ؟ گزینه start بزنم؟
با سلام
به دو روش کتابخانه ها در دسترس است. سریع ترین روش در صفحه محصول کالا در بخش دانلود کتابخانه قرار دارد، دانلود کرده و در مسیر نصب نرم افزار آردوینو در سیستم خود در پوشه libraries کپی کنید.
روش دوم از طریق نرم افزار آردوینو بر روی manage libraries کلیک کنید و کتابخانه را فیلتر و نصب کنید.
سپاس…منظورم از لینک بالا هست،وقتی وارد لینک شدم کدام قسمت برم تا کتابخانه دانلود شه…
با سلام
در ادامه لینک کتابخانه ضمیمه شده است.
کتابخانه adafruit-adxl345
آیا برای دانلود کتابخانه از سایت دانشجو کیت باید با مرور گر خاصی وارد شد؟ من با موبایلم وارد شدم اما موفق نشدم دانلود کنم چون قسمت دانلود نمایان نشد! اما با لپ تاپم وارد شدم دانلود کردم ولی وقتی با آردینو به مسیر زیپ ها میرم پوشه ها خالی نشون میده ! آیا میشه مشکل از سایت باشه و به درستی فایل ها دانلود نشن؟
با سلام
در ادامه لینک کتابخانه ضمیمه شده است.
کتابخانه adafruit-adxl345
ممنونم خانم پوربلورچیان
سپاس از همراهی شما
سلام وقتتون بخیر…من نتونستم کتابخانه ها رو از این لینک دانلود کنم…ممنون میشم اگه بیشتر راهنمایی کنید
با سلام
کتابخانه در لینک کالا در سایت دانشجوکیت قرار دارد.
همچنین میتوانید در نرم افزار آردوینو در بخش manage libraries کتابخانه را فیلتر و نصب کنید.
در حال حاظر با دقت ترین سنسور ژیروسکوپ چیه ؟ میشه لینک دانلود کتابخانه برای mpu 6050برای رزبری پای ۴ واسم بگذارین؟ چه کتاب خانه هایی نیاز داره ؟
با سلام
دقت اندازه گیری هر سنسور در دیتاشیت نوشته شده است. در خصوص رزبری پای ۴ در صورتیکه بخواهید از پایتون استفاده کنید از کتابخانه زیر استفاده کنید.
https://github.com/adafruit/Adafruit_Python_ADXL345
سلام من متوجه نشدم کجای این صفحه برای دانلود برم وقتی Go to file هم میرم هیچ قسمتی برای دانلود نمیبینم.. درضمن من لینک کتابخانه mpu6050 برای رزبری پای میخوام نه ADEXL345
با سلام
برای رزبری پای این مورد تست نشده است و این آموزش فقط برای آردوینو است.
سلام وقت بخیر
برنامه ای که مقادیر بدست اومده رو روی LCD نمایش بده ندارید ؟؟
سلام
از آموزش lcd کاراکتری در سایت استفاده کیند
دمت گرم فوق العاده ای
با سلام
تشخیص وضعیت سقوط آزاد وقتی ماژول در حال چرخش به دور خودش هست امکان پذیره؟ اگر هست . نحوی انجام اون چطوره؟
سلام
برای ساخت قطب نما میشه از این ماژول استفاده کرد؟؟؟
با سلام
این ماژول ژیروسکوپ است و نمیتوان به عنوان قطب نما کامل از آن استفاده کرد. ولی میتوانید برای تشخیص جهتها از آن استفاده کنید.
سلام
میشه با اردوینو تراز دیجیتال ساخت؟
با سلام وتشکر از شما
هیچ محدودیتی در این خصوص وجود ندارد. تقریبا هر آنچه که در ذهنتان ایده داشته باشید، با توجه به ابزارهای موجود، امکان پیاده سازی دارد.
امکان تماس انلاین رو باهاتون وجود داره؟
با سلام
خیر، در حال حاضر فقط از طریق کامنت در پستهایی که با سوالاتتان مرتبط میباشد، میتوانید اقدام کنید.
تراز رو با mpu6050 .با تغییرات دمایی ثابت نمیمونه
چیکار کنم؟
سلام مجدد
کاربر گرامی لطفا سوالتان را کامل با جزئیات بیان کنید؛ تا بتوانم راهنمایی کنم.
سلام من این مدار رو بستم ولی اعدادی که نمایش داده میشه تغییرات لحظه ای داره بدون این که زاویه سنج رو تغییر بدیم اعداد بین سه عدد در حدود همون زاویه ای که قرار گرفته نوسان داره ایا میشه این تغییرات رو حذف کرد
با سلام
همانطور که در متن آموزش توضیح داده شده است. در صورت اتتخاب فرکانسهای بالا روی برد نویز دریافت میکنید. لطفا اطلاعات دقیقتری از برد و روش اجرای پروژه بیان بفرمایید؛ تا بتوانم مشکل را پیدا کنم.
سلام . ما وقتی لایبری هارو نصب میکنیم . و کد رو میزنیم میگه همچین اسمی (اسم کتابخونه) وجود ندارد
با سلام
ارور را کامل ارسال نمایید تا بررسی گردد.
سلام,میشه از همین برنامه برای adxl375 استفاده کرد؟
با سلام
بله با این تفاوت که بایستی کتابخانه ADXl375 را جایگزین نمایید.
با سلام مطالب عالی بود و من هم دنبال همچنین چیزی بود ولی میخواستم به جای لامپ ها رله بزارم
امکانش هست
اگه هست لطفا راهنماییم کنید.
با سلام
در اینصورت نیازی به تغییر در کدها نیست. رله را جایگزین ال ای دی کنید.
خسته نباشید مدتی درگیر این ماژولم و تقریبا با کاربرد های دیگشم هم اشنا شدم مثل تشخیص ضربه ، تشخیص حالت سکون و فعالیت ، تشخیص سقوط آزاد و… الان میخوام مقدار شتاب رو بدونم دقیقا چند؟ سوالم اینه آیا مقادیری که برای تغییر جهت در راستای محور ها نشان میده همون مقدار شتاب تو اون محور؟ یا بزارین سوالم رو اینطور بگم من میخوام مقدار لحظه ای (real time ) شتاب را در سقوط آزاد بدونم چقدره این سنسور مناسب این کار هست یا نه؟ اگر بله ممنون میشم راهنماییم کنین
با سلام
در این خصوص پیشنهاد میشود از سنسورهای دقیق تری استفاده کنید و همچنین تمامی این موارد در دیتاشیت کالاها نوشته شده است و بایستی بررسی کنید.
سنسور شتاب و ژایرو
سلام و تشکر از مهندس عزیز. جناب مهندس بنده کد های شما را ران کردن.همش ارور کتابخانه adxl345 و sensor و wprogram میده. کتابخونه ها رو هم دانلود کردم ولی مشکل رفع نمیشه.لطفا راهنمایی کتید
با سلام
ارور دریافتی را ضمیمه کنید تا بررسی شود.
سلام خسته نباشید، بنده یک پروژه با همین ضمیمه دارم، ولی جوری هست که در یک سمت ماژول شتاب سنج و آردوینو wemos d1 که اطلاعات رو از طریق وای فای به یک آردوینوwemos دیگر ارسال کرده و روی صفحه نمایش نشان داد. چطور میتونید کمکم کنید ممنون میشم.
با سلام
امکان قبول پروژه و نوشتن کد جدید فراهم نیست.