【君悦智控】  http://RobotControl.taobao.com 
高精度 6 轴惯性导航模块说明书 
1  产品概述 
此六轴模块采用高精度的陀螺加速度计 MPU6050,通过处理器读取 MPU6050 的测量
数据然后通过串口输出,免去了用户自己去开发 MPU6050 复杂的 I2C 协议,同时精心的 PCB
布局和工艺保证了 MPU6050 收到外接的干扰最小,测量的精度最高。 
模块内部自带电压稳定电路,可以兼容 3.3V/5V 的嵌入式系统,连接方便。 
模块保留了 MPU6050 的 I2C 接口,以满足高级用户希望访问底层测量数据的需求。 
采用先进的数字滤波技术,能有效降低测量噪声,提高测量精度。 
模块内部集成了姿态解算器,配合动态卡尔曼滤波算法,能够在动态环境下准确输出模
块的当前姿态,姿态测量精度 0.01 度,稳定性极高,性能甚至优于某些专业的倾角仪! 
采用邮票孔镀金工艺,品质保证,可嵌入用户的 PCB 板中。 
 
2  性能参数 
1、电压:3V~6V 
2、电流:<10mA 
3、体积:15.24mm X 15.24mm X 2mm 
 
- 1 - 
【君悦智控】  http://RobotControl.taobao.com 
4、焊盘间距:上下 100mil(2.54mm),左右 600mil(15.24mm) 
5、测量维度:加速度:3 维,角速度:3 维,姿态角:3 维 
6、量程:加速度:± 2g,角速度:± 250°/s。 
7、分辨率:加速度:6.1e-5g,角速度:7.6e-3°/s。 
8、稳定性:加速度:0.001g,角速度 0.02°/s。 
9、姿态测量稳定度:0.01°。 
10、数据输出频率 100Hz(波特率 115200)/20Hz(波特率 9600)。 
11、数据接口:串口(TTL 电平),I2C(直接连 MPU6050,无姿态输出) 
10、波特率 115200kps/9600kps。 
3  引脚说明: 
 
名称 
VCC 
RX 
TX 
GND 
SCL 
SDA 
功能 
模块电源,3.3V 或 5V 输入 
串行数据输入,TTL 电平 
串行数据输出,TTL 电平 
地线 
I2C 时钟线 
I2C 数据线 
 
- 2 - 
【君悦智控】  http://RobotControl.taobao.com 
4  硬件连接方法 
4.1  与计算机 
与计算机连接,需要 USB 转 TTL 电平的串口模块。推荐以下两款 USB 转串口模块。 
USB 串口模块连接 6050 模块的方法是:USB 串口模块的+5V,TXD,RXD,GND 接
6050 模块的 VCC,RX,TX,GND。注意 TXD 和 RXD 的交叉。 
 
 
 
 
- 3 - 
【君悦智控】  http://RobotControl.taobao.com 
4.2  连单片机 
4.3  用上位机监视模块与单片机的通信。 
 
 
5  通信协议 
电平:TTL 电平(非 RS232 电平,若将模块错接到 RS232 电平可能造成模块损坏) 
波特率:115200/9600,停止位 1,校验位 0。 
 
- 4 - 
【君悦智控】  http://RobotControl.taobao.com 
5.1  上位机至模块 
指令内容 
0x01 
0x02 
0x03 
0x04 
0x05 
0x06 
0x07 
0x08 
0x09 
0x0a 
0x0b 
功能 
使用串口,禁用 I2C 
禁用串口,使用 I2C 接口 
备注 
打开加速度输出 
关闭加速度输出 
打开角速度输出 
关闭角速度输出 
打开角度输出 
关闭角度输出 
陀螺校准 
角度初始化 
波特率 115200,帧率 100Hz 
掉电保存 
掉电保存 
掉电保存 
掉电保存 
掉电保存 
掉电保存 
掉电保存 
掉电保存 
掉电保存 
掉电保存 
校准陀螺的零位,校准期间需静止 
使 Z 轴角度归零 
波特率 9600,帧率 20Hz 
0x0c 
说明: 
1.每个指令有一定的执行时间,相邻 2 条指令的间隔时间需大于 100ms。 
2.出厂默认设置使用串口,波特率 115200,帧率 100Hz,加速度,角速度,角度三种数
据全部都输出。配置可通过上位机软件配置,因为所有配置都是掉电保存的,所以只需配置
一次就行。 
5.2  模块至上位机: 
5.2.1  加速度输出: 
数据编号 
数据内容 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
0x55 
0x51 
AxL 
AxH 
AyL 
AyH 
AzL 
AzH 
TL 
TH 
含义 
包头 
标识这个包是加速度包 
X 轴加速度低字节 
X 轴加速度高字节 
y 轴加速度低字节 
y 轴加速度高字节 
z 轴加速度低字节 
z 轴加速度高字节 
温度低字节 
温度高字节 
校验和 
Sum 
10 
加速度计算公式: 
ax=((AxH<<8)|AxL)/32768*2g(g 为重力加速度,可取 9.8m/s2) 
ay=((AyH<<8)|AyL)/32768*2g(g 为重力加速度,可取 9.8m/s2) 
az=((AzH<<8)|AzL)/32768*2g(g 为重力加速度,可取 9.8m/s2) 
温度计算公式: 
T=((TH<<8)|TL) /340+36.53  ℃ 
 
- 5 - 
【君悦智控】  http://RobotControl.taobao.com 
校验和: 
Sum=0x55+0x51+AxH+AxL+AyH+AyL+AzH+AzL+TH+TL 
5.2.2  角速度输出: 
数据编号 
数据内容 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
角速度计算公式: 
0x55 
0x52 
wxL 
wxH 
wyL 
wyH 
wzL 
wzH 
TL 
TH 
Sum 
含义 
包头 
标识这个包是角速度包 
X 轴角速度低字节 
X 轴加速度高字节 
y 轴加速度低字节 
y 轴加速度高字节 
z 轴加速度低字节 
z 轴加速度高字节 
温度低字节 
温度高字节 
校验和 
wx=((wxH<<8)|wxL)/32768*250(°/s) 
wy=((wyH<<8)|wyL)/32768*250(°/s) 
wz=((wzH<<8)|wzL)/32768*250(°/s) 
温度计算公式: 
T=((TH<<8)|TL) /340+36.53  ℃ 
校验和: 
Sum=0x55+0x52+wxH+wxL+wyH+wyL+wzH+wzL+TH+TL 
5.2.3  角度输出: 
数据编号 
数据内容 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
0x55 
0x53 
RollL 
RollH 
PitchL 
PitchH 
YawL 
YawH 
TL 
TH 
Sum 
10 
角速度计算公式: 
滚转角(x 轴)Roll=((RollH<<8)|RollL)/32768*180(°) 
俯仰角(y 轴)Pitch=((PitchH<<8)|PitchL)/32768*180(°) 
偏航角(z 轴)Yaw=((YawH<<8)|YawL)/32768*180(°) 
 
含义 
包头 
标识这个包是角度包 
X 轴角度低字节 
X 轴角度高字节 
y 轴角度低字节 
y 轴角度高字节 
z 轴角度低字节 
z 轴角度高字节 
温度低字节 
温度高字节 
校验和 
- 6 - 
【君悦智控】  http://RobotControl.taobao.com 
温度计算公式: 
T=((TH<<8)|TL) /340+36.53  ℃ 
校验和: 
Sum=0x55+0x53+RollH+RollL+PitchH+PitchL+YawH+YawL+TH+TL 
 
注:姿态角结算时所使用的坐标系为东北天坐标系,正方向放置模块,如下图所示。坐
标系的旋转顺序为 z-x-y,即先绕 z 轴转,再绕 x 轴转,再绕 y 轴转。 
5.3  数据解析示例代码: 
 
double a[3],w[3],Angle[3],T; 
void DecodeIMUData(char chrTemp[]) 
{ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
switch(chrTemp[1]) 
{ 
case 0x51: 
a[0] = (((short)chrTemp[3]<<8)|chrTemp[2])/32768.0*2; 
 
a[1] = (((short)chrTemp[5]<<8)|chrTemp[4])/32768.0*2; 
 
a[2] = (((short)chrTemp[7]<<8)|chrTemp[6])/32768.0*2; 
 
T = (((short)chrTemp[9]<<8)|chrTemp[8])/340.0+36.25; 
 
printf("a = %4.3f\t%4.3f\t%4.3f\t",a[0],a[1],a[2]); 
 
break; 
 
case 0x52: 
w[0] = (((short)chrTemp[3]<<8)|chrTemp[2])/32768.0*250; 
 
w[1] = (((short)chrTemp[5]<<8)|chrTemp[4])/32768.0*250; 
 
w[2] = (((short)chrTemp[7]<<8)|chrTemp[6])/32768.0*250; 
 
T = (((short)chrTemp[9]<<8)|chrTemp[8])/340.0+36.25; 
 
printf("w = %4.3f\t%4.3f\t%4.3f\t\r\n",w[0],w[1],w[2]); 
 
 
break; 
case 0x53: 
 
 
 
 
 
 
} 
Angle[0] = (((short)chrTemp[3]<<8)|chrTemp[2])/32768.0*180; 
Angle[1] = (((short)chrTemp[5]<<8)|chrTemp[4])/32768.0*180; 
Angle[2] = (((short)chrTemp[7]<<8)|chrTemp[6])/32768.0*180; 
T = (((short)chrTemp[9]<<8)|chrTemp[8])/340.0+36.25; 
printf("Angle = %4.2f\t%4.2f\t%4.2f\tT=%4.2f\r\n",Angle[0],Angle[1],Angle[2],T); 
break; 
 
- 7 - 
【君悦智控】  http://RobotControl.taobao.com 
} 
5.4  嵌入式环境下解析数据实例 
分成两个部分,一个是中断接收,找到数据的头,然后把数据包放入数组中。另一个是
数据解析,放在主程序中。 
中断部分(一下为 AVR 单片机代码,不同单片机读取寄存器略有差异,需根据实际情况
调整): 
interrupt [USART_RXC] void usart_rx_isr(void) //USART 串行接收中断 
  {       
      char status; 
      status=UCSRA;   
      if((status&((1<