R6093U陀螺仪数据的读取和处理方式(基于STC15W)
Posted 青柠一笑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R6093U陀螺仪数据的读取和处理方式(基于STC15W)相关的知识,希望对你有一定的参考价值。
这个型号大家可能没有听过,我也是第一次知道这个型号,某宝上也是只有一家买这个东西。经过几天的调试也是成功的读取到了正确的信息。现在将方法分享给大家。😄
1.传感器介绍
Cruizcore®R6093U是用于在动态条件下测量角速率、角速度、航向角(也称为定向或偏航)、仰俯、横滚姿态信息的数字陀螺仪和加速度计模组。这是一个高度紧凑,轻巧,完全自足的设备。R6093U内部包含3轴MEMS陀螺仪、3轴加速度计,内部电压调节器,信号处理电路,AD转换器和运行我们的专利纠错算法的RISC微处理器。R6093U使用自适应降阶卡尔曼滤波器来减少影响这种传感器的误差(即偏置漂移,规模因子、不对称),因此它能输出非常精确稳定的角速度和航向角。启动时间小于1秒,用于计算偏置参数,此后不需要进一步校准。R6093U是最具性价比的6轴惯导解决方案。
2.性能指标
3.数据格式
传感器串口输出的 方式和波特率信息。
在数据包中 ,每个Byte的作用和代表的什么数据都做了解释。
4.数据的接收和处理
我们先看下这个每个Byte 表示的信息都做了解释 ,同时在数据包中有CHECKSUM数据校验位,可以使读出的数据更加准确。
串口接收程序如下:
/串口1中断处理程序
void INT_Uart1(void) interrupt 4
{
if(RI)//清空读中断标志位
{
RI = 0;
if(Checksum == 0)
{
RxD_Data[count] = SBUF;
if(RxD_Data[0]== 0xA6)//判断数据头
{
count++;
if(count == 26)//判断数据尾
{
Checksum=1;//使能读取
count =0;
}
}
else{
count = 0;
}
}
}
if(TI)//清空发送中断标志位
{
TI = 0;
busy1 = 0;
}
}
在接收到26个完整数据包时 使能 CHECKSUM校验标志位,在读取数据时进行数据的校验和转化。具体代码如下:
void R6090u_Read(R6093U_Data_TypeDef *R6093U_Data)
{
unsigned char Check_Temp=0,i;
if(Checksum == 1)
{
for(i=2;i<25;i++)
{
Check_Temp += RxD_Data[i];
//校验成功
if(Check_Temp == RxD_Data[25]){
R6093U_Data->Roll = (float)((short)(RxD_Data[4]<<8|RxD_Data[3])/100.0);
R6093U_Data->Pitch = (float)((short)(RxD_Data[6]<<8|RxD_Data[5])/100.0);
R6093U_Data->Yaw = (float)((short)(RxD_Data[8]<<8|RxD_Data[7])/100.0);
R6093U_Data->Roll_Rate = (float)((short)(RxD_Data[10]<<8|RxD_Data[9])/100.0);
R6093U_Data->Pitch_Rate = (float)((short)(RxD_Data[12]<<8|RxD_Data[11])/100.0);
R6093U_Data->Yaw_Rate = (float)((short)(RxD_Data[14]<<8|RxD_Data[13])/100.0);
R6093U_Data->X_Axis = (float)((short)(RxD_Data[16]<<8|RxD_Data[15])/1000.0);
R6093U_Data->Y_Axis = (float)((short)(RxD_Data[18]<<8|RxD_Data[17])/1000.0);
R6093U_Data->Z_Axis = (float)((short)(RxD_Data[20]<<8|RxD_Data[19])/1000.0);
}
}
Checksum = 0;//使能接收
}
}
在校验完成后 开始数据的转化和处理。结束之后重新打开接收。开始接收下一次数据。
最后通过串口程序输出下读出的数据:
printf("samples:%.2f,%.2f,%.2f\\n",R6093U_Data.Roll,R6093U_Data.Pitch,(R6093U_Data.Yaw - State_Jiao_ShuJu));
到这里接结束了,希望可以帮助到正在调试这个型号的你,喜欢的话支持以下博主。😄哈哈。 再见。
以上是关于R6093U陀螺仪数据的读取和处理方式(基于STC15W)的主要内容,如果未能解决你的问题,请参考以下文章