久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4994|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

stm32最小陀螺儀的源程序及其原理圖PCB

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:226087 發(fā)表于 2017-8-9 13:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
最小陀螺儀資料


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


stm32單片機(jī)源程序如下:
  1. #include "main.h"

  2. //定義MPU6050內(nèi)部地址
  3. #define        SMPLRT_DIV                0x19        //陀螺儀采樣率 典型值 0X07 125Hz
  4. #define        CONFIG                        0x1A        //低通濾波頻率 典型值 0x00
  5. #define        GYRO_CONFIG                0x1B        //陀螺儀自檢及測量范圍                 典型值 0x18 不自檢 2000deg/s
  6. #define        ACCEL_CONFIG        0x1C        //加速度計自檢及測量范圍及高通濾波頻率 典型值 0x01 不自檢 2G 5Hz

  7. #define INT_PIN_CFG     0x37
  8. #define INT_ENABLE      0x38
  9. #define INT_STATUS      0x3A    //只讀


  10. #define        ACCEL_XOUT_H        0x3B
  11. #define        ACCEL_XOUT_L        0x3C

  12. #define        ACCEL_YOUT_H        0x3D
  13. #define        ACCEL_YOUT_L        0x3E

  14. #define        ACCEL_ZOUT_H        0x3F
  15. #define        ACCEL_ZOUT_L        0x40

  16. #define        TEMP_OUT_H                0x41
  17. #define        TEMP_OUT_L                0x42

  18. #define        GYRO_XOUT_H                0x43
  19. #define        GYRO_XOUT_L                0x44       

  20. #define        GYRO_YOUT_H                0x45
  21. #define        GYRO_YOUT_L                0x46

  22. #define        GYRO_ZOUT_H                0x47
  23. #define        GYRO_ZOUT_L                0x48

  24. #define        PWR_MGMT_1                0x6B        //電源管理 典型值 0x00 正常啟用
  25. #define        WHO_AM_I                0x75        //只讀  默認(rèn)讀出應(yīng)該是 MPU6050_ID = 0x68


  26. #define MPU6050_ID              0x68
  27. #define MPU6050_DEVICE_ADDRESS  0xD0
  28. #define MPU6050_DATA_START      ACCEL_XOUT_H   //由于數(shù)據(jù)存放地址是連續(xù)的,所以一并讀出

  29. MPU6050_RAW_DATA    MPU6050_Raw_Data;
  30. MPU6050_REAL_DATA   MPU6050_Real_Data;

  31. int gyroADC_X_offset=0,gyroADC_Y_offset=0,gyroADC_Z_offset=0;

  32. //MPU6050 初始化,成功返回0  失敗返回 0xff
  33. int MPU6050_Initialization(void)
  34. {
  35.     unsigned char temp_data = 0x00;

  36.     IIC_GPIO_Init();  //初始化IIC接口
  37.     HEAT_Configuration();
  38.    
  39.     if(IIC_ReadData(MPU6050_DEVICE_ADDRESS,WHO_AM_I ,&temp_data ,1)==0) //確定IIC總線上掛接的是否是MPU6050
  40.     {
  41.         if(temp_data != MPU6050_ID)
  42.         {
  43.             printf("error 1A\r\n");
  44.             return 0xff; //校驗失敗,返回0xff
  45.         }
  46.     }
  47.     else
  48.     {
  49.         printf("error 1B\r\n");
  50.         return 0xff; //讀取失敗 返回0xff
  51.     }
  52.    
  53.     if(IIC_WriteData(MPU6050_DEVICE_ADDRESS,PWR_MGMT_1,0x01) == 0xff)    //解除休眠狀態(tài)
  54.     {
  55.         printf("error 1C\r\n");
  56.         return 0xff;
  57.     }
  58.     if(IIC_WriteData(MPU6050_DEVICE_ADDRESS,SMPLRT_DIV,0x07) == 0xff)//cyq:07 更新頻率1khz
  59.     {
  60.         printf("error 1D\r\n");
  61.         return 0xff;
  62.     }
  63.     if(IIC_WriteData(MPU6050_DEVICE_ADDRESS,CONFIG,0x00) == 0xff)
  64.     {
  65.         printf("error 1E\r\n");
  66.         return 0xff;
  67.     }
  68.     if(IIC_WriteData(MPU6050_DEVICE_ADDRESS,GYRO_CONFIG,0x08) == 0xff)
  69.     {
  70.         printf("error 1F\r\n");
  71.         return 0xff;
  72.     }
  73.     if(IIC_WriteData(MPU6050_DEVICE_ADDRESS,ACCEL_CONFIG,0x08) == 0xff)
  74.     {
  75.         printf("error 1G\r\n");
  76.         return 0xff;
  77.     }
  78.     if(IIC_WriteData(MPU6050_DEVICE_ADDRESS,INT_PIN_CFG,0x00) == 0xff)
  79.     {
  80.         printf("error 1H\r\n");
  81.         return 0xff;
  82.     }
  83.     if(IIC_WriteData(MPU6050_DEVICE_ADDRESS,INT_ENABLE,0x01) == 0xff)
  84.     {
  85.         printf("error 1I\r\n");
  86.         return 0xff;
  87.     }
  88.    
  89.     //MPU6050_Interrupt_Configuration(); //MPU6050中斷初始化
  90.    
  91.     return 0;
  92. }

  93. //MPU6050  數(shù)據(jù)讀取,成功返回0  失敗返回 0xff
  94. int MPU6050_ReadData(void)
  95. {
  96.     u8 buf[14];
  97.    
  98.     if(IIC_ReadData(MPU6050_DEVICE_ADDRESS,MPU6050_DATA_START,buf,14) == 0xff)
  99.     {
  100.         printf("error 1J\r\n");
  101.         return 0xff;
  102.     }
  103.     else
  104.     {
  105.         //讀取寄存器原生數(shù)據(jù)
  106.            
  107.         MPU6050_Raw_Data.Accel_X = (buf[0]<<8 | buf[1]);
  108.         MPU6050_Raw_Data.Accel_Y = (buf[2]<<8 | buf[3]);
  109.         MPU6050_Raw_Data.Accel_Z = (buf[4]<<8 | buf[5]);
  110.         MPU6050_Raw_Data.Temp =    (buf[6]<<8 | buf[7]);  
  111.         MPU6050_Raw_Data.Gyro_X = (buf[8]<<8 | buf[9]);
  112.         MPU6050_Raw_Data.Gyro_Y = (buf[10]<<8 | buf[11]);
  113.         MPU6050_Raw_Data.Gyro_Z = (buf[12]<<8 | buf[13]);

  114.       
  115.         //將原生數(shù)據(jù)轉(zhuǎn)換為實(shí)際值,計算公式跟寄存器的配置有關(guān)
  116.         MPU6050_Real_Data.Accel_X = (float)(MPU6050_Raw_Data.Accel_X)/8192.0; //見datasheet 30 of 47
  117.         MPU6050_Real_Data.Accel_Y = (float)(MPU6050_Raw_Data.Accel_Y)/8192.0; //見datasheet 30 of 47
  118.         MPU6050_Real_Data.Accel_Z = (float)(MPU6050_Raw_Data.Accel_Z)/8192.0; //見datasheet 30 of 47
  119.         MPU6050_Real_Data.Temp =   (float)(MPU6050_Raw_Data.Temp)/340.0+36.53;//見datasheet 31 of 47
  120.         MPU6050_Real_Data.Gyro_X = (float)(MPU6050_Raw_Data.Gyro_X - gyroADC_X_offset)/65.5;     //見datasheet 32 of 47
  121.         MPU6050_Real_Data.Gyro_Y = (float)(MPU6050_Raw_Data.Gyro_Y - gyroADC_Y_offset)/65.5;     //見datasheet 32 of 47
  122.         MPU6050_Real_Data.Gyro_Z = (float)(MPU6050_Raw_Data.Gyro_Z - gyroADC_Z_offset)/65.5;     //見datasheet 32 of 47
  123.     }
  124.    
  125.     return 0;
  126. }


  127. void MPU6050_Gyro_calibration(void)
  128. {
  129.         u16 i;
  130.         float x_temp=0,y_temp=0,z_temp=0;
  131. ……………………

  132. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
最小陀螺儀.zip (6.85 MB, 下載次數(shù): 63)


評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2017-8-11 01:51 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产高清视频一区 | 日韩电影免费在线观看中文字幕 | 日本一区二区不卡视频 | 91视频大全| 中文字幕一区二区三区精彩视频 | 久久久久久久久久久久久九 | 久久中文字幕一区 | 亚洲av毛片 | 精品国产精品国产偷麻豆 | 欧美日韩一区二区三区四区 | 久久久久久久一区 | 99久久99热这里只有精品 | 一级二级三级在线观看 | 成人不卡 | 久久精选 | 日本涩涩视频 | 香蕉大人久久国产成人av | 天天天操 | 精品一区二区在线观看 | 久草热视频 | 91精品麻豆日日躁夜夜躁 | 国产精品毛片 | 亚洲经典一区 | 精品国产精品国产偷麻豆 | 亚洲精品福利视频 | 精品一区国产 | 国产精品久久久久久久久久久久 | 毛片一级片 | 国产黄色av网站 | 亚洲天堂中文字幕 | 午夜视频在线 | av中文字幕网| 成人福利在线 | 成人福利视频 | 国产精品永久免费视频 | 久草欧美视频 | 久色网| 99福利 | 国产在线精品一区二区三区 | 波多野结衣在线观看一区二区三区 | 一区二区电影网 |