最近在慢慢的搞四轴,但是不是太顺利,前段调24l01没法接收,估计硬件有问题买了模块来替换,现在又出状况了
一波还未平息
一波又来侵袭
茫茫人海狂风暴雨
一波还来不及
一波早就过去
一生一世如梦初醒
好吧,不感慨了
在四轴的的板上运行,静止时X轴陀螺仪数据抖动非常厉害,z轴有小抖动,y轴数据平稳
改用开发板+模块的话同样的代码,3轴数陀螺仪据都能正常接收而且非常平稳,
- #include "HAR_I2C.h"
- #include "MPU6050.h"
-
- #define MPU_INT PAin(10)
-
- #define MPU6050_ADDRESS 0x68
- #define MPU_RE_REG(reg,buf,num) IIC_ReadBuffer(buf,MPU6050_ADDRESS,reg,num)
-
- uint32_t MPU_WR_REG(uint8_t reg,uint8_t value)
- {
- return I2C_WriteBuffer(&value,MPU6050_ADDRESS,reg,1);
- }
-
- void mpu6050_init(void)
- {
- uint8_t test;
- IIC_init();
- MPU_WR_REG(POWER_MANAGEMENT_1,0x00); //唤醒
- MPU_WR_REG(SAMPLE_RATE_DIVIDER ,0x07); //采样率
- MPU_WR_REG(CONFIGURATION ,0x07); //低通滤波
- MPU_WR_REG(GYROSCOPE_CONFIGURATION ,0x00<<3); //陀螺仪配置
- MPU_WR_REG(ACCELEROMETER_CONFIGURATION,0x00); //加速度计配置
-
- }
-
- void char2int(unsigned char *puc,uint16_t *pui)
- {
- unsigned char xy;
- for(xy=6;xy>0;xy--)
- {
- *pui=(*puc++)<<8;
- *(pui++)+=*(puc++);
- }
- }
- void mpu6050_re(uint16_t *poin)
- {
- unsigned char hc[12];
- MPU_RE_REG(ACCELEROMETERMEASUREMENTS,hc,6);
- MPU_RE_REG(GYROSCOPE_MEASUREMENTS,hc+6,6);
- char2int(hc,poin);
- }
四轴上MPU6050部分原理图
四轴上读到的MPU6050陀螺仪数据:(整个过程都是静止的,但是数据抖动的很厉害)
用模块读到的数据:(后半部分是静止的,较平稳)
没什么头绪呢,大家什么看
本帖最后由 曾经in 于 2016-6-10 22:36 编辑