ماژول شتاب سنج سه محوره دیجیتال ADXL345
این ماژول یک شتاب سنج سه جهته MEMS با دقت زیاد 13 بیت و مصرف کم است. دیتا دیجیتال خروجی این ماژول دارای فرمت 16 بیتی مکمل 2 (twos complement) می باشد و اینترفیس ارتباطی آن SPI و I2C است.ماژول ADXL345 مناسب برای اندازه گیری شتاب استاتیک گرانش در هنگام سنجش شیب و همچنین شتاب دینامیک که حاصل از حرکت یا شوک می باشد. دقت اندازه گیری بالا 4mg/LSB امکان اندازه گیری تغییر زاویه کمتر از 1.0 درجه را برای این ماژول فراهم می آورد. از قابلیتهای این ماژول می توان وجود و عدم حرکت و همچنین شتاب در هر جهتی که از سطح تنظیم شده باشد،تشخیص ضربات آهسته و تشخیص سقوط آزاد در هنگام سقوط دستگاه را نام برد.این ماژول دارای 32 سطح بافر بصورت FIFO است که می تواند برای ذخیره دیتا و حداقل رساندن پردازش مورد استفاده قرار گیرد. مد Low Power این ماژول قادر به تشخیص هوشمندحرکت مبتنی بر مدیریت مصرف انرژی با تشخیص آستانه سنجش و اندازه گیری شتاب فعال با کمترین اتلاف مصرف انرژی است.این ماژول را به راحتی می توان به وسیله آردوینو راه اندازی کرد.

ویژگی ها
تغذیه: 2.0-3.6VDC
صرف انرژی فوق العاده پایین: 4uA در مد اندازه گیری و 0.1uA در حالت استندبای
قابلیت تشخیص ضربات آهسته
قابلیت تشخیص سقوط آزاد
دارای رابط SPI و I2C

مثال
مثال زیر چگونگی اتصال ماژول ADXL345 به آردوینو و نحوه راه اندازی آن را نشان می دهد.
لینک دانلود پروژه
این ماژول یک شتاب سنج سه جهته MEMS با دقت زیاد 13 بیت و مصرف کم است. دیتا دیجیتال خروجی این ماژول دارای فرمت 16 بیتی مکمل 2 (twos complement) می باشد و اینترفیس ارتباطی آن SPI و I2C است.ماژول ADXL345 مناسب برای اندازه گیری شتاب استاتیک گرانش در هنگام سنجش شیب و همچنین شتاب دینامیک که حاصل از حرکت یا شوک می باشد. دقت اندازه گیری بالا 4mg/LSB امکان اندازه گیری تغییر زاویه کمتر از 1.0 درجه را برای این ماژول فراهم می آورد. از قابلیتهای این ماژول می توان وجود و عدم حرکت و همچنین شتاب در هر جهتی که از سطح تنظیم شده باشد،تشخیص ضربات آهسته و تشخیص سقوط آزاد در هنگام سقوط دستگاه را نام برد.این ماژول دارای 32 سطح بافر بصورت FIFO است که می تواند برای ذخیره دیتا و حداقل رساندن پردازش مورد استفاده قرار گیرد. مد Low Power این ماژول قادر به تشخیص هوشمندحرکت مبتنی بر مدیریت مصرف انرژی با تشخیص آستانه سنجش و اندازه گیری شتاب فعال با کمترین اتلاف مصرف انرژی است.این ماژول را به راحتی می توان به وسیله آردوینو راه اندازی کرد.

ویژگی ها
تغذیه: 2.0-3.6VDC
صرف انرژی فوق العاده پایین: 4uA در مد اندازه گیری و 0.1uA در حالت استندبای
قابلیت تشخیص ضربات آهسته
قابلیت تشخیص سقوط آزاد
دارای رابط SPI و I2C

مثال
مثال زیر چگونگی اتصال ماژول ADXL345 به آردوینو و نحوه راه اندازی آن را نشان می دهد.
کد HTML:
#include <Wire.h> #include <ADXL345.h> ADXL345 adxl; //variable adxl is an instance of the ADXL345 library void setup(){ Serial.begin(9600); adxl.powerOn(); //set activity/ inactivity thresholds (0-255) adxl.setActivityThreshold(75); //62.5mg per increment adxl.setInactivityThreshold(75); //62.5mg per increment adxl.setTimeInactivity(10); // how many seconds of no activity is inactive? //look of activity movement on this axes - 1 == on; 0 == off adxl.setActivityX(1); adxl.setActivityY(1); adxl.setActivityZ(1); //look of inactivity movement on this axes - 1 == on; 0 == off adxl.setInactivityX(1); adxl.setInactivityY(1); adxl.setInactivityZ(1); //look of tap movement on this axes - 1 == on; 0 == off adxl.setTapDetectionOnX(0); adxl.setTapDetectionOnY(0); adxl.setTapDetectionOnZ(1); //set values for what is a tap, and what is a double tap (0-255) adxl.setTapThreshold(50); //62.5mg per increment adxl.setTapDuration(15); //625μs per increment adxl.setDoubleTapLatency(80); //1.25ms per increment adxl.setDoubleTapWindow(200); //1.25ms per increment //set values for what is considered freefall (0-255) adxl.setFreeFallThreshold(7); //(5 - 9) recommended - 62.5mg per increment adxl.setFreeFallDuration(45); //(20 - 70) recommended - 5ms per increment //setting all interupts to take place on int pin 1 //I had issues with int pin 2, was unable to reset it adxl.setInterruptMapping( ADXL345_INT_SINGLE_TAP_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_DOUBLE_TAP_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_FREE_FALL_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_ACTIVITY_BIT, ADXL345_INT1_PIN ); adxl.setInterruptMapping( ADXL345_INT_INACTIVITY_BIT, ADXL345_INT1_PIN ); //register interupt actions - 1 == on; 0 == off adxl.setInterrupt( ADXL345_INT_SINGLE_TAP_BIT, 1); adxl.setInterrupt( ADXL345_INT_DOUBLE_TAP_BIT, 1); adxl.setInterrupt( ADXL345_INT_FREE_FALL_BIT, 1); adxl.setInterrupt( ADXL345_INT_ACTIVITY_BIT, 1); adxl.setInterrupt( ADXL345_INT_INACTIVITY_BIT, 1); } void loop(){ //Boring accelerometer stuff int x,y,z; adxl.readAccel(&x, &y, &z); //read the accelerometer values and store them in variables x,y,z // Output x,y,z values - Commented out //Serial.print(x); //Serial.print(y); //Serial.println(z); //Fun Stuff! //read interrupts source and look for triggerd actions //getInterruptSource clears all triggered actions after returning value //so do not call again until you need to recheck for triggered actions byte interrupts = adxl.getInterruptSource(); // freefall if(adxl.triggered(interrupts, ADXL345_FREE_FALL)){ Serial.println("freefall"); //add code here to do when freefall is sensed } //inactivity if(adxl.triggered(interrupts, ADXL345_INACTIVITY)){ Serial.println("inactivity"); //add code here to do when inactivity is sensed } //activity if(adxl.triggered(interrupts, ADXL345_ACTIVITY)){ Serial.println("activity"); //add code here to do when activity is sensed } //double tap if(adxl.triggered(interrupts, ADXL345_DOUBLE_TAP)){ Serial.println("double tap"); //add code here to do when a 2X tap is sensed } //tap if(adxl.triggered(interrupts, ADXL345_SINGLE_TAP)){ Serial.println("tap"); //add code here to do when a tap is sensed } }