راه اندازی ماژول شتاب سنج و زاویه سنج 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 با آردوینو
گام اول: پیاده سازی سخت افزار
این بخش شامل موارد زیر میباشد.
- آردوینو نانو
- ماژول ADXL345
- چهار عدد LED (کاملاً دلخواه میباشد)
و در نهایت باید به شکل زیر قطعات را به یک دیگر متصل کنید.
گام دوم: کدنویسی
در این بخش از دو کتابخانه آماده استفاده میکنیم، و در نهایت مقادیر را در سریال مانیتور آردوینو نمایش میدهیم.
کتابخانههایی که در این آموزش از آن استفاده میکنیم، کتابخانه FaBo3Axis_ADXL345.h و Wire.h است.
کتابخانه Wire.h به صورت پیش فرض روی IDE آردینو نصب شده است. اما برای کتابخانه دیگر باید به قسمت Sketch => IncludeLibrary =>Add zip library بروید و در نهایت مطابق شکل زیر عمل کنید.
کدی که برای راه اندازی این ماژول استفاده کردهایم به شکل زیر میباشد.
</pre>
#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);
}
<pre>
نمایش دیتا ماژول ADXL345 توسط سریال مانیتور آردوینو که به شکل زیر میباشد.