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

فهرست مطالب

ماژول شتاب سنج ADXL375 چیست؟

ماژول ADXL375 یک سنسور شتاب سنج سه محوره فوق دقیق است. این شتاب سنج می‌تواند تا میزان 200g نیرو را در سه محور (X Y Z) محاسبه کند (g همان میزان شتاب زمین که تقریبا برابر است با 9.8 نیوتون متر بر مجذور ثانیه. شتابی در حدود شتاب راکت فضاپیما!).

از دیگر امکانات کاربردی ماژول، وجود هر دو رابط I2C و SPI برای برقراری ارتباط و دو پایه اینتراپت است که می‌توانند مستقل از هم پیکربندی شوند.

ADXL375 مدل پیشرفته سنسور‌های ADXL345 و ADXL343 به شمار می‌آید که عملکرد تقریبا مشابهی دارند. با این تفاوت که بازه اندازه‌گیری ماژول‌های ADXL345 و ADXL343، میزان 16g و با قابلیت تنظیم است، اما در مدل 375 رنج اندازه‌گیری به میزان 200g افزایش یافته و قابل تغییر نیست.

ADXL375 Accelerometer Module

مشخصات فنی ماژول سنسور شتاب ‌سنج ADXL375

  • توان مصرفی پایین؛ 35 میکروآمپر در مد اندازه‌گیری و 0.1 میکروآمپر در مد استندبای (Vs=2.5v)
  • قابلیت تشخیص شوک
  • محدوده ولتاژ کاری: 2 الی 3.6 ولت
  • محدود ولتاژ پین‌های ورودی خروجی: 1.7 ولت تا Vs
  • دارای پورت ارتباط SPI(3 and 4 wire) و I2C
  • ابعاد: 3mm*5mm*1mm

برای اطلاعات دقیق‌تر و جزییات کامل این ماژول توصیه می­کنم دیتاشیت ماژول را حتما مطالعه بفرمایید.

معرفی پایه‌های (Pinout) سنسور شتاب­سنج ADXL375

ماژول ADXL375 دارای 9 پایه به شرح زیر است:

  • GND: Ground
  • VCC: Digital Interface Supply Voltage (2 to Vs)
  • VS: Supply Voltage (2 to 3.6v)
  • SCL/SCLK: I2C Serial Communications Clock (SCL)/SPI Serial Communications Clock (SCLK).
  • SDA/SDI/SDIO: I2C Serial Data (SDA)/SPI 4-Wire Serial Data Input (SDI)/SPI 3-Wire Serial Data Input and Output (SDIO).
  • SDO/ALT ADDRESS: SPI 4-Wire Serial Data Output (SDO)/I2C Alternate Address Select (ALT ADDRESS).
  • CS: Chip Select
  • INT1: Interrupt 1 Out
  • INT2: Interrupt 2 Out

پین­ اوت (Pinout) ماژول ADXL375 را می‌توانید در تصویر زیر مشاهده کنید.

ADXL375 Pinout

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

قطعات مورد نیاز

Arduino UNO R3 × 1
ماژول شتاب سنج سه محوره ADXL375 × 1
مبدل سطح ولتاژ TXS0108 × 1
سیم جامپر نری به مادگی × 1

نرم افزار های مورد نیاز

Arduino IDE

راه‌اندازی سنسور شتاب سنج ADXL375 با آردوینو (در مد I2C)

گام اول: سیم بندی (نحوه اتصال سنسور شتاب سنج به آردوینو)

ADXL375-Arduino Circuit

گام دوم: نصب کتابخانه مورد نیاز

فایل زیپ کتابخانه‌ها را از لینک های زیر دانلود کنید. سپس از مسیر SKETCH>Include Library>Add .ZIP Library  فایل دانلود شده را انتخاب و اضافه کنید.

  • کتابخانه Adafruit_ADXL375 برای کار با این ماژول نوشته شده است.                                                                       دانلود فایل زیپ کتابخانه Adafruit_ADXL375
  • کتابخانه Adafruit_Sensor که در واقع پیش ­نیاز کتابخانه قبلی است.

          دانلود فایل زیپ کتابخانه Adafruit_Sensor

  • کتابخانه Wire که برای ارتباط I2C به آن نیاز داریم.

          دانلود فایل زیپ کتابخانه wire

برای آموزش نصب کتابخانه و بردهای جدید در نرم افزار آردوینو IDE می توانید به این لینک مراجعه کنید.

گام سوم: کد

کد زیر را در آردوینو IDE کپی کنید. پس از آپلود کد، پنجره سریال مانیتور را باز کنید.


/*this is originaly adafruit_adxl375 library example, 
 * we just modified the code for i2c interface.
 * electropeak.com , Ali Akbar Hosseini
 * adxl375 i2c test, pin connection are as below for i2c protocol 
ADXL375 cs-->Vcc(3.3v),
ADXL375 SDO--->gnd, 
ADXL375 Vs--->vcc-->3.3v,
ADXL375 SCL---<logic level convertor>---Arduino SCL(A5), 
ADXL375 SDA---<logic level convertor>---Arduino SDA(A4)
*/
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL375.h>
//-----------------------for spi interface, define the spi pins
//#define ADXL375_SCK 13
//#define ADXL375_MISO 12
//#define ADXL375_MOSI 11
//#define ADXL375_CS 10

Adafruit_ADXL375 accel = Adafruit_ADXL375(12345);
/* Uncomment for software SPI */
//Adafruit_ADXL375 accel = Adafruit_ADXL375(ADXL375_SCK, ADXL375_MISO, ADXL375_MOSI, ADXL375_CS, 12345);
/* Uncomment for hardware SPI */
//Adafruit_ADXL375 accel = Adafruit_ADXL375(ADXL375_CS, &SPI, 12345);

void displayDataRate(void)
{
 Serial.print ("Data Rate: ");

 switch(accel.getDataRate())
 {
 case ADXL343_DATARATE_3200_HZ:
 Serial.print ("3200 ");
 break;
 case ADXL343_DATARATE_1600_HZ:
 Serial.print ("1600 ");
 break;
 case ADXL343_DATARATE_800_HZ:
 Serial.print ("800 ");
 break;
 case ADXL343_DATARATE_400_HZ:
 Serial.print ("400 ");
 break;
 case ADXL343_DATARATE_200_HZ:
 Serial.print ("200 ");
 break;
 case ADXL343_DATARATE_100_HZ:
 Serial.print ("100 ");
 break;
 case ADXL343_DATARATE_50_HZ:
 Serial.print ("50 ");
 break;
 case ADXL343_DATARATE_25_HZ:
 Serial.print ("25 ");
 break;
 case ADXL343_DATARATE_12_5_HZ:
 Serial.print ("12.5 ");
 break;
 case ADXL343_DATARATE_6_25HZ:
 Serial.print ("6.25 ");
 break;
 case ADXL343_DATARATE_3_13_HZ:
 Serial.print ("3.13 ");
 break;
 case ADXL343_DATARATE_1_56_HZ:
 Serial.print ("1.56 ");
 break;
 case ADXL343_DATARATE_0_78_HZ:
 Serial.print ("0.78 ");
 break;
 case ADXL343_DATARATE_0_39_HZ:
 Serial.print ("0.39 ");
 break;
 case ADXL343_DATARATE_0_20_HZ:
 Serial.print ("0.20 ");
 break;
 case ADXL343_DATARATE_0_10_HZ:
 Serial.print ("0.10 ");
 break;
 default:
 Serial.print ("???? ");
 break;
 }
 Serial.println(" Hz");
}

void setup(void)
{
 Serial.begin(9600);
 while (!Serial);
 Serial.println("ADXL375 Accelerometer Test"); Serial.println("");

 /* Initialise the sensor */
 while(!accel.begin())
 {
 /* There was a problem detecting the ADXL375 ... check your connections */
 Serial.println("Ooops, no ADXL375 detected ... Check your wiring!");
 //while(1);
 }

 // Range is fixed at +-200g

 /* Display some basic information on this sensor */
 accel.printSensorDetails();
 displayDataRate();
 Serial.println("");
}

void loop(void)
{
 /* Get a new sensor event */
 sensors_event_t event;
 accel.getEvent(&event);

 /* Display the results (acceleration is measured in m/s^2) */
 Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print(" ");
 Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print(" ");
 Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print(" ");Serial.println("m/s^2 ");
 delay(500);
}

گام چهارم: مشاهده خروجی

پنجره سریال مانیتور نرم افزار آردوینو IDE را از مسیر Tools>Serial Monitor باز کنید.

اگر اتصالات درست باشد باید سه ردیف خروجی X Y Z به همراه مقادیر روبریش نمایش داده شود. ماژول را در یک سطح ثابت قرار دهید. اعداد باید پس از چند سیکل تقریبا ثابت باشند. همچنین وقتی سنسور را حرکت نمی‌دهید به دلیل جاذبه باید شتاب 10g را در برآیند شتاب‌ها ببینید و بازه تغییر عدد هر محور باید 20 واحد باشد (به عنوان مثال از -10 الی +10). سنسور را در زوایای مختلف، ثابت قرار داده و خروجی‌ها را ببینید.

آموزش های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد.