JY901S 9轴姿态角度传感器模块
- JY901S 简介
- 模块特性
- 引脚说明
- IIC通讯
- IIC读写寄存器代码示例
JY901S 简介
模块集成高精度的陀螺仪、加速度计、地磁场传感器,采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法,能够快速求解出模块当前的实时运动姿态。 采用先进的数字滤波技术,能有效降低测量噪声,提高测量精度。模块内部集成了姿态解算器,配合动态卡尔曼滤波算法,能够在动态环境下准确输出模块的当前姿态,姿态测量精度静态 0.05 度,动态 0.1 度,稳定性极高,性能甚至优
于某些专业的倾角仪! 模块内部自带电压稳定电路,工作电压 3.3v~5v,引脚电平兼容 3.3V/5V 的嵌入式系统,连接方便。支持串口和 IIC 两种数字接口。方便用户选择最佳的连接方式。串口速率
2400bps~921600bps 可调,IIC 接口支持全速 400K 速率。最高 200Hz 数据输出速率。输入内容可以任意选择,输出速率 0.1~200HZ 可调节。保留 4 路扩展端口,可以分别配置为模拟输入,数字输入,数字输出,PWM 输出等功能。具备 GPS 连接能力。可接受符合 NMEA-0183 标准的串口 GPS 数据,形成 GPS-IMU组合导航单元。采用邮票孔镀金工艺,可嵌入用户的 PCB 板中。
4 层 PCB 板工艺,更薄、更小、更可靠。
模块特性
- 电压:3.3V~5V
- 电流:<25mA
- 测量维度:加速度:3 维,角速度:3 维,磁场:3 维,角度:3 维,气压:1 维(JY-901B),GPS:3 维(接 GPS 模块)。
- 量程:加速度:±2/4/8/16 g(可选),角速度:±250/500/1000/2000 °/s(可选),角度 X、Z 轴±180°,Y 轴±90°。
- 稳定性:加速度:0.01g,角速度 0.05°/s。
- 姿态测量稳定度:0.01°。
- 数据输出内容:时间、加速度、角速度、角度、磁场、端口状态、气压(JY-901B)、高度(JY-901B)、经纬度(需连接 GPS)、地速(需连接 GPS)。
- 数据输出频率 0.1Hz~200Hz。
- 数据接口:串口(TTL 电平,波特率支持 2400、4800、9600(默认)、19200、38400、57600、115200、230400、460800、921600),I2C(最大支持高速 IIC 速率 400K)
- 扩展口功能:模拟输入(0~VCC)、数字输入、数字输出、PWM 输出(周期 1us-65535us,分辨率 1us)。
引脚说明
模块的轴向在上图的右上方,向右为 X 轴,向上 Y 轴,垂直模块向外为Z 轴。旋转的方向按右手法则定义,即右手大拇指指向轴向,四指弯曲的方向即为绕该轴旋转的方向。X 轴角度即为绕 X 轴旋转方向的角度,Y 轴角度即为绕 Y 轴旋转方向的角度,Z 轴角度即为绕 Z 轴旋转方向的角度。
IIC通讯
模块有串口通讯和IIC通讯2种方式,这里主要说下IIC通讯方式。
JY-901 模块可以完全通过 IIC 进行访问,IIC 通信速率最大支持 400khz,从机地址为为7bit,默认地址为 0x50,可以通过串口指令或者 IIC 写地址的方式更改。IIC 总线上面可以挂多个 GY-901 模块,但需提前将模块的 IIC 地址修改为不同的地址。
IIC读写寄存器代码示例
//读取指定设备 指定寄存器的 Lenght个值
u8 IICreadBytes(u8 dev, u8 reg, u8 length, u8 *data){
u8 count = 0;
IIC_Start();
IIC_Send_Byte(dev<<1);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte((dev<<1)+1);
IIC_Wait_Ack();
for(count=0;count<length;count++)
{
if(count!=length-1)data[count]=IIC_Read_Byte(1);
else data[count]=IIC_Read_Byte(0);
}
IIC_Stop();
return count;
}
//将多个字节写入指定设备指定寄存器
u8 IICwriteBytes(u8 dev, u8 reg, u8 length, u8* data)
{ u8 count = 0;
IIC_Start();
IIC_Send_Byte(dev<<1);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
for(count=0;count<length;count++){
IIC_Send_Byte(data[count]);
IIC_Wait_Ack();
}
IIC_Stop();
return 1;
}