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

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

بارها شده که در پروژه‌های مختلف نیاز به اندازه گیری و مقیاس محورهای 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
  • چهار عدد LED (کاملاً دلخواه می‌باشد)

و در نهایت باید به شکل زیر قطعات را به یک دیگر متصل کنید.

 

گام دوم: کدنویسی

در این بخش از دو کتابخانه آماده استفاده می‌کنیم، و در نهایت مقادیر را در سریال مانیتور آردوینو نمایش می‌دهیم.

کتابخانه‌هایی که در این آموزش از آن استفاده می‌کنیم، کتابخانه FaBo3Axis_ADXL345.h و Wire.h است.

کتابخانه Wire.h به صورت پیش فرض روی IDE آردینو نصب شده است. اما برای کتابخانه دیگر باید به قسمت Sketch => IncludeLibrary =>Add zip library بروید و در نهایت مطابق شکل زیر عمل کنید.

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

#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 توسط سریال مانیتور آردوینو که به شکل زیر می‌باشد.

 

نکته مهم دو شرطی که نوشته شده‌اند صرفاً برای تست عملی مدار به کار می‌روند اما با کمی خلاقیت می‌توان با همین کد ساده یک دستگاه تشخیص دهنده شدت تصادف ساخت که بسیار کاربری است.

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

نویسنده و طراح الکترونیکا هستم . سوالی داشتید در کامنت ها یا پیج های اینستاگرام و تلگرام سایت بپرسید .