اطلاعیه

Collapse
No announcement yet.

MPU6050 به همراه LPC1768

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : MPU6050 به همراه LPC1768

    سلام دوستان به هر حال من بدون dmp راه اندازیش کردم و دوستانمون هم به هر حال وارد تر هستن کمک میکنن.
    اما کتابخونه اردیونو به دردم نخورد تو کارام.کتابخونه رو خودتونم میتونید بسازید کار سختی نداره.
    واسه توضیح راجع به اینکه شتاب سنج و جایروسکوپ دقیقا چجوری هستن که یکی از دوستان پرسید به این لینک ارجاع میدم

    http://www.eca.ir/forum2/index.php?topic=88421.0

    دیدگاه


      #17
      پاسخ : MPU6050 به همراه LPC1768

      من صد بار تو سرچام به این پست رسیدم خخخخخ

      دیدگاه


        #18
        پاسخ : MPU6050 به همراه LPC1768

        دوستان من سورس کد راه اندازی MPU6050 رو با LPC1768 لازم دارم اگه لطف کنید بزارید ممنون میشم

        دیدگاه


          #19
          پاسخ : MPU6050 به همراه LPC1768

          سلام
          این ماژول به طور مستقیم به میکروکنترلر وصل میشه یا به یم واسط نیاز داره؟ :biggrin:

          دیدگاه


            #20
            پاسخ : MPU6050 به همراه LPC1768

            نوشته اصلی توسط VAHIDGK
            سلام
            این ماژول به طور مستقیم به میکروکنترلر وصل میشه یا به یم واسط نیاز داره؟ :biggrin:
            سلام
            منظورتون از واسط چی هست ؟
            پروتکلش I2C هست و مستقیم به میکرو وصل میشه
            کافیه تغذیه رو بهش بدید

            دیدگاه


              #21
              پاسخ : MPU6050 به همراه LPC1768

              خب این ماژول الان دست منه دارم نگاش می کنم 8 تا پایه داره به ترتیب می گم
              1-vcc
              2-gnd
              3-scl
              4-sda
              5-xda
              6-xcl
              7-add
              8-int
              چهارتای اولش میدونم به کجا وصل میشه :biggrin: ولی 4 تای اخری رو نمیدونم باید چیکارشون کنم :cry2:

              دیدگاه


                #22
                پاسخ : MPU6050 به همراه LPC1768

                نوشته اصلی توسط vahid1371 نمایش پست ها
                خب این ماژول الان دست منه دارم نگاش می کنم 8 تا پایه داره به ترتیب می گم
                1-vcc
                2-gnd
                3-scl
                4-sda
                5-xda
                6-xcl
                7-add
                8-int
                چهارتای اولش میدونم به کجا وصل میشه :biggrin: ولی 4 تای اخری رو نمیدونم باید چیکارشون کنم :cry2:
                سلام
                پین های شماره 5 و 6 به جایی وصل نمیشن. پین 7 هم واسه ادرس هست که موقعی نیاز میشه که بخواین دوتا ماژول با هم استفاده کنین،پس فعلا نیاز نیست.پین 8 هم موقع استفاده از dmp نیاز میشه و باید به یه وقفه خارجی وصل بشه.

                دیدگاه


                  #23
                  پاسخ : MPU6050 به همراه LPC1768

                  سلام . من با استفاده از کتابخانه mcb1700.code_.bundle.lpc1769.lpcxpresso باکمی تغییر ، mpu6050 , رو راه اندازی کردم ولی مشکلی ه هست دمای اتاق رو برام تا وقتی زیر 30 درجه باشه بالای 200 درجه نشون میده و میترسم الباقیه اطلاعات در یافتی هم اشتباه باشه کسی میتونه کمک کنه:
                  اینم از نموونه کدم:

                  void I2C2_IRQHandler(void)
                  {
                  uint8_t StatValue;


                  timeout[2] = 0;
                  /* this handler deals with master read and master write only */
                  StatValue = LPC_I2C2->I2STAT;
                  switch ( StatValue )
                  {
                  case 0x08: /* A Start condition is issued. */
                  WrIndex2 = 0;
                  RdIndex2 = 0;
                  LPC_I2C2->I2DAT = I2CMasterBuffer[2][WrIndex2++];
                  LPC_I2C2->I2CONCLR = (I2CONCLR_SIC | I2CONCLR_STAC);
                  break;

                  case 0x10: /* A repeated started is issued */
                  RdIndex2 = 0;
                  /* Send SLA with R bit set, */
                  LPC_I2C2->I2DAT = I2CMasterBuffer[2][WrIndex2++];
                  LPC_I2C2->I2CONCLR = (I2CONCLR_SIC | I2CONCLR_STAC);
                  break;

                  case 0x18: /* Regardless, it's a ACK */
                  if ( I2CWriteLength[2] == 1 )
                  {
                  LPC_I2C2->I2CONSET = I2CONSET_STO; /* Set Stop flag */
                  I2CMasterState[2] = I2C_NO_DATA;
                  }
                  else
                  {
                  LPC_I2C2->I2DAT = I2CMasterBuffer[2][WrIndex2++];
                  }
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC;
                  break;


                  case 0x28: /* Data byte has been transmitted, regardless ACK or NACK */
                  if ( WrIndex2 < I2CWriteLength[2] )
                  {
                  LPC_I2C2->I2DAT = I2CMasterBuffer[2][WrIndex2++]; /* this should be the last one */
                  }
                  else
                  {
                  if ( I2CReadLength[2] != 0 )
                  {
                  LPC_I2C2->I2CONSET = I2CONSET_STA; /* Set Repeated-start flag */
                  }
                  else
                  {
                  LPC_I2C2->I2CONSET = I2CONSET_STO; /* Set Stop flag */
                  I2CMasterState[2] = I2C_OK;
                  }
                  }
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC;
                  break;


                  case 0x30:
                  LPC_I2C2->I2CONSET = I2CONSET_STO; /* Set Stop flag */
                  I2CMasterState[2] = I2C_NACK_ON_DATA;
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC;
                  break;

                  case 0x40: /* Master Receive, SLA_R has been sent */
                  if ( (RdIndex2 + 1) < I2CReadLength[2] )
                  {
                  /* Will go to State 0x50 */
                  LPC_I2C2->I2CONSET = I2CONSET_AA; /* assert ACK after data is received */
                  }
                  else
                  {
                  /* Will go to State 0x58 */
                  LPC_I2C2->I2CONCLR = I2CONCLR_AAC; /* assert NACK after data is received */
                  }
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC;
                  break;

                  case 0x50: /* Data byte has been received, regardless following ACK or NACK */
                  I2CSlaveBuffer[2][RdIndex2++] = LPC_I2C2->I2DAT;
                  if ( (RdIndex2 + 1) < I2CReadLength[2] )
                  {
                  LPC_I2C2->I2CONSET = I2CONSET_AA; /* assert ACK after data is received */
                  }
                  else
                  {
                  LPC_I2C2->I2CONCLR = I2CONCLR_AAC; /* assert NACK on last byte */
                  }
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC;
                  break;

                  case 0x58:
                  I2CSlaveBuffer[2][RdIndex2++] = LPC_I2C2->I2DAT;
                  I2CMasterState[2] = I2C_OK;
                  LPC_I2C2->I2CONSET = I2CONSET_STO; /* Set Stop flag */
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC; /* Clear SI flag */
                  break;


                  case 0x20: /* regardless, it's a NACK */
                  case 0x48:
                  LPC_I2C2->I2CONSET = I2CONSET_STO; /* Set Stop flag */
                  I2CMasterState[2] = I2C_NACK_ON_ADDRESS;
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC;
                  break;

                  case 0x38: /* Arbitration lost, in this example, we don't
                  deal with multiple master situation */
                  default:
                  I2CMasterState[2] = I2C_ARBITRATION_LOST;
                  LPC_I2C2->I2CONCLR = I2CONCLR_SIC;
                  break;
                  }
                  return;
                  }



                  uint32_t mpu_read (uint32_t REG_ADD){
                  uint32_t i;
                  for (i = 0; i < BUFSIZE; i++) {
                  I2CMasterBuffer[PORT_USED][i] = 0x00;
                  I2CSlaveBuffer[PORT_USED][i] = 0x00;
                  }
                  I2CWriteLength[PORT_USED] = 2;
                  I2CReadLength[PORT_USED] = 0;
                  I2CMasterBuffer[PORT_USED][0] = MPU6050_ADDRESS;
                  I2CMasterBuffer[PORT_USED][1] = REG_ADD;
                  I2CEngine(PORT_USED);


                  for (i = 0; i < BUFSIZE; i++) {
                  I2CMasterBuffer[PORT_USED][i] = 0x00;
                  I2CSlaveBuffer[PORT_USED][i] = 0x00;
                  }

                  I2CWriteLength[PORT_USED] = 1;
                  I2CReadLength[PORT_USED] = 1;
                  I2CMasterBuffer[PORT_USED][0] = MPU6050_ADDRESS|RD_BIT;
                  I2CEngine(PORT_USED);


                  return I2CSlaveBuffer[PORT_USED][0];
                  }


                  void Get_Temp_Val(void)
                  {
                  Temp_Val = ((mpu_read(RA_TEMP_OUT_H)<< 8) |
                  mpu_read( RA_TEMP_OUT_L)) ;
                  // Compute the temperature in degrees
                  Temp_Val = (Temp_Val /TEMP_Sensitivity) + 36.53;

                  }
                  جدیدترین ویرایش توسط elec.bahador; ۱۰:۳۸ ۱۳۹۷/۰۳/۱۸.

                  دیدگاه


                    #24
                    پاسخ : MPU6050 به همراه LPC1768

                    سلام .
                    خیلی خوبه . اینم یه فلیم از راه اندازی سنسور .چقدر جالبه.حتما نگاه کنید
                    دانلود کنید.

                    جدیدترین ویرایش توسط MM320; ۱۹:۰۶ ۱۳۹۷/۰۳/۱۹.

                    دیدگاه

                    لطفا صبر کنید...
                    X