نمایش نتایج: از 1 به 9 از 9
Like Tree3 لایک
  • 1 Post By hesam.time
  • 2 Post By engamanc

موضوع: ماژول شتاب سنج سه محوره دیجیتال adxl345

Threaded View

  1. #1
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138

    Lightbulb ماژول شتاب سنج سه محوره دیجیتال adxl345

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

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Acceleration_Sensor_ADXL345_3-500x500.jpg
مشاهده: 300
حجم: 37.3 کیلو بایت

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

    مثال
    مثال زیر چگونگی اتصال ماژول ADXL345 به آردوینو و نحوه راه اندازی آن را نشان می دهد.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: ADXL345 Accelerometer_fritzing_bb.jpg
مشاهده: 531
حجم: 83.3 کیلو بایت

    کد:
    #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 } }
    مرجع:
    https://www.sparkfun.com/tutorials/240
    bildr

    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط hesam.time : 11-20-2013 در ساعت 02:31 PM
    لایک کردن

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO