نمایش نتایج: از 1 به 10 از 34
Like Tree7 لایک

موضوع: ماژول imu ده درجه آزادی و نه محور gy-87 - سنسور mpu6050 hmc5883l bmp180

Threaded View

  1. #1
    max
    max آنلاین نیست.
    Member
    تاریخ عضویت
    Jul 2013
    محل سکونت
    iran-shiraz
    نوشته ها
    70

    ماژول imu ده درجه آزادی و نه محور gy-87 - سنسور mpu6050 hmc5883l bmp180

    gy-87 imu يك برد كوچك است كه تمامي سنسورهاي مورد نياز براي 10 درجه آزادي روي آن قرار گرفته است.ارتباط اين ماژول با آردوينو از طريق رابط i2c برقرار ميشود.


    اجزاي تشكيل دهنده ماژول imu gy-87 :
    Mpu6050 :سنسور gyro سه محوره ، سنسور شتاب سه محوره و دماسنج محصول invensense شامل مجموعه شتاب سنج و gyro با دقت بالا (16 بيتي) ميباشد. همچنين داراي بافر FIFO با ظرفيت 1024 بايت .و سنسور دما با رنج اندازه گيري 40- تا 85+ درجه سانتيگراد ميباشد. این ماژول با تجمیع و ترکیب یک ژیروسکوپ 3 محور با یک شتاب سنج 3 محور روی یک چیپ سیلیکونی و بهره گیری از یک پردازشگر دیجیتال حرکت، قادر است الگوریتم های پیچیده 9 محوری را اجرا کند.

    Hmc5883l: قطب نماي الكترونيكي 3 محوره محصول Honeywell يك قطب نماي 3 محوره ديجيتال است كه ميتواند شدت ميدان مغناطيسي تا 8± گاوس را با دقت 5 ميلي گاوس اندازه گيري نمايد. توسط اين ماژول ميتوان به دقت 1 تا 2 درجه در جهت يابي و ناوبري رسيد.

    bmp180:ماژول فشار بارومتريك با دقت بالا و جريان مصرفي پايين با رنج گسترده در اندازه گيري فشار بارومتريك (300 تا 1100 هكتوپاسكال).اين سنسور بر اساس تكنولوژي مقاومت پيزوالكتريك ياPiezo-resistive طراحي و توليد شده. استفاده از اين تكنولوژي دقت بالا، خطي بودن و پايداري طولاني مدت را براي اين سنسور فراهم نموده است.
    اين سنسور اندازه گيري ارتفاع از 500 متر پايينتر از سطح دريا تا 9000 متر بالاتر از سطح دريا را ممكن ميسازد.
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: GY-87_10DOF_imu_1-500x500.jpg
مشاهده: 238
حجم: 34.8 کیلو بایت برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Flight_dynami.jpg
مشاهده: 245
حجم: 18.2 کیلو بایت
    کد:
    /**
     * FreeIMU library serial communication protocol
    */
    
    #include <ADXL345.h>
    #include <bma180.h>
    #include <HMC58X3.h>
    #include <ITG3200.h>
    #include <MS561101BA.h>
    #include <I2Cdev.h>
    #include <MPU60X0.h>
    #include <EEPROM.h>
    
    //#define DEBUG
    #include "DebugUtils.h"
    #include "CommunicationUtils.h"
    #include "FreeIMU.h"
    #include <Wire.h>
    #include <SPI.h>
    
    
    float q[4];
    int raw_values[9];
    float ypr[3]; // yaw pitch roll
    char str[256];
    float val[9];
    
    
    // Set the FreeIMU object
    FreeIMU my3IMU = FreeIMU();
    //The command from the PC
    char cmd;
    
    void setup() {
      Serial.begin(115200);
      Wire.begin();
      my3IMU.init(true);
      
      // LED
      pinMode(13, OUTPUT);
    }
    
    
    void loop() {
      if(Serial.available()) {
        cmd = Serial.read();
        if(cmd=='v') {
          sprintf(str, "FreeIMU library by %s, FREQ:%s, LIB_VERSION: %s, IMU: %s", FREEIMU_DEVELOPER, FREEIMU_FREQ, FREEIMU_LIB_VERSION, FREEIMU_ID);
          Serial.print(str);
          Serial.print('\n');
        }
        else if(cmd=='r') {
          uint8_t count = serial_busy_wait();
          for(uint8_t i=0; i<count; i++) {
            my3IMU.getRawValues(raw_values);
            sprintf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,", raw_values[0], raw_values[1], raw_values[2], raw_values[3], raw_values[4], raw_values[5], raw_values[6], raw_values[7], raw_values[8], raw_values[9], raw_values[10]);
            Serial.print(str);
            Serial.print('\n');
          }
        }
        else if(cmd=='b') {
          uint8_t count = serial_busy_wait();
          for(uint8_t i=0; i<count; i++) {
            #if HAS_ITG3200()
              my3IMU.acc.readAccel(&raw_values[0], &raw_values[1], &raw_values[2]);
              my3IMU.gyro.readGyroRaw(&raw_values[3], &raw_values[4], &raw_values[5]);
            #else // MPU6050
              my3IMU.accgyro.getMotion6(&raw_values[0], &raw_values[1], &raw_values[2], &raw_values[3], &raw_values[4], &raw_values[5]);
            #endif
            writeArr(raw_values, 6, sizeof(int)); // writes accelerometer and gyro values
            #if IS_9DOM()
              my3IMU.magn.getValues(&raw_values[0], &raw_values[1], &raw_values[2]);
              writeArr(raw_values, 3, sizeof(int));
            #endif
            Serial.println();
          }
        }
        else if(cmd == 'q') {
          uint8_t count = serial_busy_wait();
          for(uint8_t i=0; i<count; i++) {
            my3IMU.getQ(q);
            serialPrintFloatArr(q, 4);
            Serial.println("");
          }
        }
        #ifndef CALIBRATION_H
        else if(cmd == 'c') {
          const uint8_t eepromsize = sizeof(float) * 6 + sizeof(int) * 6;
          while(Serial.available() < eepromsize) ; // wait until all calibration data are received
          EEPROM.write(FREEIMU_EEPROM_BASE, FREEIMU_EEPROM_SIGNATURE);
          for(uint8_t i = 1; i<(eepromsize + 1); i++) {
            EEPROM.write(FREEIMU_EEPROM_BASE + i, (char) Serial.read());
          }
          my3IMU.calLoad(); // reload calibration
          // toggle LED after calibration store.
          digitalWrite(13, HIGH);
          delay(1000);
          digitalWrite(13, LOW);
        }
        #endif
        else if(cmd == 'C') { // check calibration values
          Serial.print("acc offset: ");
          Serial.print(my3IMU.acc_off_x);
          Serial.print(",");
          Serial.print(my3IMU.acc_off_y);
          Serial.print(",");
          Serial.print(my3IMU.acc_off_z);
          Serial.print("\n");
          
          Serial.print("magn offset: ");
          Serial.print(my3IMU.magn_off_x);
          Serial.print(",");
          Serial.print(my3IMU.magn_off_y);
          Serial.print(",");
          Serial.print(my3IMU.magn_off_z);
          Serial.print("\n");
          
          Serial.print("acc scale: ");
          Serial.print(my3IMU.acc_scale_x);
          Serial.print(",");
          Serial.print(my3IMU.acc_scale_y);
          Serial.print(",");
          Serial.print(my3IMU.acc_scale_z);
          Serial.print("\n");
          
          Serial.print("magn scale: ");
          Serial.print(my3IMU.magn_scale_x);
          Serial.print(",");
          Serial.print(my3IMU.magn_scale_y);
          Serial.print(",");
          Serial.print(my3IMU.magn_scale_z);
          Serial.print("\n");
        }
        else if(cmd == 'd') { // debugging outputs
          while(1) {
            my3IMU.getRawValues(raw_values);
            sprintf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,", raw_values[0], raw_values[1], raw_values[2], raw_values[3], raw_values[4], raw_values[5], raw_values[6], raw_values[7], raw_values[8], raw_values[9], raw_values[10]);
            Serial.print(str);
            Serial.print('\n');
            my3IMU.getQ(q);
            serialPrintFloatArr(q, 4);
            Serial.println("");
            my3IMU.getYawPitchRoll(ypr);
            Serial.print("Yaw: ");
            Serial.print(ypr[0]);
            Serial.print(" Pitch: ");
            Serial.print(ypr[1]);
            Serial.print(" Roll: ");
            Serial.print(ypr[2]);
            Serial.println("");
          }
        }
      }
    }
    
    char serial_busy_wait() {
      while(!Serial.available()) {
        ; // do nothing until ready
      }
      return Serial.read();
    }
    
    const int EEPROM_MIN_ADDR = 0;
    const int EEPROM_MAX_ADDR = 511;
    
    void eeprom_serial_dump_column() {
      // counter
      int i;
    
      // byte read from eeprom
      byte b;
    
      // buffer used by sprintf
      char buf[10];
    
      for (i = EEPROM_MIN_ADDR; i <= EEPROM_MAX_ADDR; i++) {
        b = EEPROM.read(i);
        sprintf(buf, "%03X: %02X", i, b);
        Serial.println(buf);
      }
    }
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: GY-87-IMU-SCH.jpg
مشاهده: 356
حجم: 50.7 کیلو بایت

    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط max : 10-24-2013 در ساعت 06:20 AM

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

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

SEO by vBSEO