logo资料库

MPU6050使用说明书V2.pdf

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
【君悦智控】 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<
分享到:
收藏