九轴传感器初探
九轴就是有 3 轴陀螺仪、3 轴加速度计和 3 轴磁力计,输出都是 16 位的数字量;随处可见的小飞机上面都装载了这样的传感器
以通过集成电路总线( IIC) 接口和单片机进行数据交互,自己检测出四元素,进过芯片上DMP(数字运动处理器)运算出欧拉角
看看其他大牛的文笔
硬件连接
九州传感器的IIC和PH4,5 进行连接
设置对MPU9250的读写操作
传感器的IIC要使用八位的数据,并且都要跟着一个应答信号,由主机产生时钟源
进行写操作
和IIC一样,蛮难读的,找点中文参考一下就会了
u8 MPU_Write_Byte(u8 addr,u8 reg,u8 data)
{
IIC_Start();
IIC_Send_Byte((addr<<1)|0);
if(IIC_Wait_Ack())
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Send_Byte(data);
if(IIC_Wait_Ack())
{
IIC_Stop();
return 1;
}
IIC_Stop();
return 0;
}
读操作也类似,用之前写好的IIC代码
调用MPU9250
初始化
对MPU9250进行复位和唤醒
u8 res=0;
IIC_Init();
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X80);
delay_ms(100);
MPU_Write_Byte(MPU9250_ADDR,MPU_PWR_MGMT1_REG,0X00);
初始化陀螺仪和加速器
我们设置这个寄存器为 0b0001 1011
大概意思是 陀螺仪根据 DLPF_CFG and FCHOICE_B 进行滤波,并且量程为 2000db
初始化加速器简单点 设置为量程为2g
根据上面的提示, 设置波特率
波特率在上面的提示下 =1000/1+这个寄存器
加速度/磁力计具有高频噪声(需要低通滤波)
接着设置,低通道滤波器
关闭所有中断,连续读取,IIC变为从机模式
读取数据
从6个寄存器里连续读取,就是现在的加速度和陀螺仪的值