第一次使用这款陀螺仪,静态时采集的值大约在-240~-300左右。
每次开机时静止不动取100次平均数作为零点,
现在问题是,当下载完程序后第一次启动可正常采集零点,断电再启动后自动检测的零点就会有问题,使静态值不是在0上下
请问这是什么问题呢?
初始化部分:
[mw_shl_code=c,true]uint8_t tem[2],i;
short ba=0;
int32_t temp=0;
for(i=0;i<100;i++)//计算陀螺仪零点
{
DelayMs(5);
I2C_ReadSingleRegister(HW_I2C0,GYR_I2C_ADDR,0x28,&tem[0]);
I2C_ReadSingleRegister(HW_I2C0,GYR_I2C_ADDR,0x29,&tem[1]);
ba = (tem[1]<<8)|tem[0];
temp+=ba;
}
GYR_ZERO=(float)temp/100;[/mw_shl_code]
采集部分:
[mw_shl_code=c,true]uint8_t tem[2];
uint8_t i;
int32_t sum=0;
short ba=0;
for(i=0;i<5;i++)
{
I2C_ReadSingleRegister(HW_I2C0,GYR_I2C_ADDR,0x28,&tem[0]);
I2C_ReadSingleRegister(HW_I2C0,GYR_I2C_ADDR,0x29,&tem[1]);
ba = (tem[1]<<8)|tem[0];
sum+=ba;
}
return ((float)sum/50-GYR_ZERO)*GYR_RATIO;[/mw_shl_code]
|