بارها شده که در پروژههای مختلف نیاز به اندازه گیری و مقیاس محورهای x، y، z داشتهاید تا طبق این اندازهها کار مورد نظر خود را انجام دهید. در یکی دیگر از پروژه های آردوینو میخواهیم به معرفی و راه اندازی ماژول ADXL345 با آردوینو بپردازیم.
حال به این نکته توجه داشته باشید، زمانی که سه پارامتر x، y، z را در اختیار داشته باشیم، قادر به انجام کارهای متفاوتی از قبیل اندازه گیری شتاب، زاویه و شدت هستیم. که هر کدام در جای خاص خود کاربرد دارند. به طور مثال شدت برخورد ماشین به مانع و یا اندازه گیری شتاب ماشین و …
معرفی ماژول ADXL345
همانطوری که میدانید این ماژول قابلیت اندازه گیری سه محور را به طور همزمان دارا میباشد. و یکی از کاربرد های آن اندازه گیری شتاب است.
شتاب چیست؟
به میزان تغییرات سرعت در یک بازه زمانی، شتاب گفته میشود. به عبارتی دیگر اگر شما در یک بازهی زمانی با سرعت 100 کیلومتر در حال حرکت باشید (بدون در نظر گرفتن شتاب زمین)، شتاب شما صفر خواهد بود؛ درصورتیکه در حال افزایش سرعت باشید این شتاب یک عدد مثبت و درصورتیکه در حال کاهش سرعت باشید، شتاب یک عدد منفی خواهد بود.
عملکرد ماژول ADXL345
همانطور که میدانید، زمین نیز یک شتاب مشخص با واحد g، بهتمامی اجسام وارد میکند؛ میزان این شتاب، 9.82 m/s^2 است.
اگر یک سنسور شتاب داشته باشید، در حالت عادی میزان شتاب واردشده از سطح زمین را به شما نمایش خواهد داد.
این سنسور که اصطلاحاً به آن Accelerometer نیز گفته میشود.
امکانات ماژول ADXL345
در ابتدا نگاهی به امکانات این سنسور میاندازیم. این سنسور میتواند گرانش واردشده به هر سه محور X, Y, Z را بهصورت استاتیک با حساسیتهای 0.2±، 0.4±، 8± و 16± “G” و با دقت 13 بیت اندازهگیری کند. همچنین بهصورت استاتیک شوک واردشده و یا حرکت را نیز میتواند تشخیص دهد.
این چیپ میتواند دیتاهای خود را توسط رابطهای کاربری I2C و SPI انتقال دهد. جریان مصرفی آن در حین کار کمتر از 40 میکرو آمپر است و در محدوده ولتاژی 2 تا 3.6 ولت کار میکند.(برای اطلاعات بیشتر در مورد این ماژول اینجا کلیک کنید.)
راه اندازی و کدنویسی ماژول ADXL345 با آردوینو و STM8
برای راه اندازی این ADXL345 با STM8 اینجا کلیک کنید (به صورت کاملاً جامع و مفصل توضیح داده شده است.)
اما برای راه اندازی با آردوینو نیاز باید چند گام را انجام دهیم تا در نهایت به جواب دلخواه برسیم.
گام اول: پیاده سازی سخت افزار
این بخش شامل موارد زیر میباشد.
- آردوینو نانو
- ماژول ADXL345
- چهار عدد LED (کاملاً دلخواه میباشد)
و در نهایت باید به شکل زیر قطعات را به یک دیگر متصل کنید.
گام دوم: کدنویسی
در این بخش از دو کتابخانه آماده استفاده میکنیم، و در نهایت مقادیر را در سریال مانیتور آردوینو نمایش میدهیم.
کتابخانههایی که در این آموزش از آن استفاده میکنیم، کتابخانه FaBo3Axis_ADXL345.h و Wire.h است.
کتابخانه Wire.h به صورت پیش فرض روی IDE آردینو نصب شده است. اما برای کتابخانه دیگر باید به قسمت Sketch => IncludeLibrary =>Add zip library بروید و در نهایت مطابق شکل زیر عمل کنید.
کدی که برای راه اندازی این ماژول استفاده کردهایم به شکل زیر میباشد.
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include <Wire.h> #include <FaBo3Axis_ADXL345.h> int x=0; int y=0; int z=z; int ox = 0; int oy = 0; int oz = 0; void output() { pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); } FaBo3Axis fabo3axis; void setup() { Serial.begin(9600); output(); Serial.println("Checking I2C device..."); if(fabo3axis.searchDevice()){ Serial.println("I am ADXL345"); } Serial.println("Init..."); fabo3axis.configuration(); fabo3axis.powerOn(); } void loop() { جهت اپدیت مقادیر بدست امده از طرق ماژول ADXL345 fabo3axis.readXYZ(&x,&y,&z); if (((ox == 0 && oy == 0 && oz == 0) || (ox != x || oy != y || oz != z))) { ox = x; oy = y; oz = z; } // horizontal نمایش مقادیر روی سریال مانیتور Serial.print("x: "); Serial.print(x); Serial.print(", y: "); Serial.print(y); Serial.print(", z: "); Serial.println(z); if (x<0 && y>100 && z>100) جهت تست عملی مدار { digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,HIGH); } else if(x>0 && y>100 && z>100) { digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); } delay(1000); } |
نمایش دیتا ماژول ADXL345 توسط سریال مانیتور آردوینو که به شکل زیر میباشد.
سلام
ممنون از آموزش مفیدتون.
مراحل را با دقت تا آخر انجام میدم. خروجی سنسور صفر صفر صفر برای مقادیر شتاب هست. سه بار شتاب سنج adxl345 خریداری کردم، با برد آردوینو اونو و نانو جدید هم تست کردم جواب نداد. یوتیوب چندتا ویدئو دیدم که گفته بودند حتما باید با لول کانورتر وصل کنم. این کار هم انجام دادم همچنان خروجی ها صفر هستند. ممنون میشم راهنمایی بفرمایید.
سلام
ممنون مطلب خیلی کاربردی بود. فقط یه سوال، آیا با توجه به اینکه اکثر آردوینو ها با 5 ولت کار میکنن نیازی به تقسیم مقاومتی یا Logic Level Converter نیست؟ ینی روی پین های دیتاش 5 ولت رو تحمل میکنه؟
سلام دوست عزیز
با ۵ ولت روی io مشکلی نداره ظاهرا و بدون تقسیم مقاومتی میتونید ازش استفاده کنید