JY61说明书
时间:2022-09-01 07:00:00
产品规格书 :SPECIFICATION
型 号:JY61
描 描述:六轴姿态角度传感器
参照生产执行标准
企业质量体系标准: ISO9001:2016标准
倾角仪生产标准:GB/T191SJ 20873-2016
产品试验标准:GB/T191SJ 20873-2016
文档目录
文章目录
- 1. 产品概述
- 2. 性能参数
- 3. 引脚说明
- 4. 轴向说明
- 5. 硬件连接方法
-
- 5.1串口(TTL)连接
- 5.2 连单片机
- 6. 使用上位机的方法
-
- 6.1 使用方法
- 6.2 模块校准
-
- 6.2.1 Z轴归0
- 6.2.2 加计校准
- 6.3 设置通信波特率
- 6.4 记录数据
- 6.5 安装方向
- 6.6 休眠和休眠
- 6.7 静止阀值及测量带宽
- 6.8 设置IIC模式
- 7. 通信协议
-
- 7.1 从上位机到模块
- 7.2 模块至上位机
-
- 7.2.1 加速输出:
- 7.2.2 角速输出:
- 7.2.3 角度输出:
- 7.3 数据分析示例代码:
- 7.4 嵌入式环境下的数据分析实例
-
- 7.4.1 中断部分:
- 7.4.2 主程序部分:
- 8. 联系我们
1. 产品概述
-
六轴模块采用高精度陀螺加速度计MPU通过处理器读取6050MPU然后通过串口输出6050的测量数据,让用户自己开发MPU6050复杂的IIC协议,同时小心PCB布局和工艺保证了MPU外部干扰最小,测量精度最高。
-
模块内部有电压稳定电路,与3兼容.3V/5V嵌入式系统,连接方便。
-
采用先进的数字滤波技术,可有效降低测量噪声,提高测量精度。
-
模块保留了MPU6050的IIC接口满足用户访问底层测量数据(加速度、角速度)的需要。
-
模块动态卡尔曼滤波算法,模块内集成了姿态解算器,能够在动态环境下准确输出模块的当前姿态,姿态测量精度0.05度,稳定性极高,性能甚至优于某些专业倾角仪!
-
采用邮票孔镀金工艺,质量保证,可嵌入用户PCB板中。
注:该模块不包括磁场计,没有磁场观测来过滤偏差角,因此偏差角度是通过纯点计算的,不可避免地会有漂移,只能在短时间内实现旋转角度测量。X,Y轴角可通过重力场进行滤波修正,无漂移现象。
尺寸 | 15.24mmX15.24mm X 2mm |
---|---|
重量 | 0.6g |
2. 性能参数
1、电压:3.3V~5V
2、电流:<10mA
3、体积:15.24mm X 15.24mm X 2mm
4.焊盘间距:上下1000mil(2.54mm),左右600mil(15.24mm)
5.测量维度:加速度:3维,角速:3维
6.量程:加速度:±16g,角速度:±2000deg/s,角度X Z轴±180° Y轴±90°。
7.分辨率:0.0005g,角速度:0.61°/s。
8.测量精度:静态0.05°,动态0.1°。
9、数据输出内容:加速度、角速度、角度。
10.数据输出频率:100HZ(波特率115200/200HZ(波特率9600)。
11、波特率:9600kps、115200kps(默认)。
12.数据接口:串口:(TTL电平),IIC(直连MPU6050芯片,无态角输出)
注:模块的数据输出频率只有两种:100HZ(波特率115200)和200HZ(波特率9600)。
3. 引脚说明
名称 | 功能 |
---|---|
VCC | 模块电源,3.3V或5V输入 |
RX | 串行数据输入,TTL电平 |
TX | 串行数据输出,TTL电平 |
GND | 地线 |
SCL | IIC时钟线 |
SDA | IIC信号线 |
4. 轴向说明
如上图所示,模块的轴向标记在上图右上方,右侧为X轴,Y轴向上,Z轴垂直于模块。旋转方向按右手法则定义,即右拇指指向轴,四指弯曲方向为轴旋转方向。X轴角为绕X轴旋转方向的角度,Y轴角是绕Y轴旋转方向的角度,Z轴角是绕Z轴旋转方向的角度。
5. 硬件连接方法
硬件连接视频
5.1串口(TTL)连接
需要与计算机连接USB转TTL电平的串口模块。推荐以下两款USB串口模块:
六合一串口模块
三合一串口模块
1.USB-TTL/三合一串口模块:模块和USB-TTL连接好,插入电脑。USB-TTL连接方法为:模块VCC TX RX GND 分别于USB串口模块的 5V/3V3 RX TX GND对应相接,注意TX和RX需要交叉,即TX接RX,RX接TX。
2.六合一模块:模块拨码开关1ON,拨码开关2拨至2S1拨至other(丝印)VCC TX RX GND 六合一模块 5V/3V3 RX TX GND对应相接,注意TX和RX需要交叉,即TX接RX,RX接TX。六合一USB-TTL模式拨码如下:
5.2 连单片机
6. 使用上位机的方法
上位机使用视频
上位机下载地址
6.1 使用方法
请注意,请下载并安装上位机无法运行的用户.net framework4.0:
通过USB连接到串口模块的计算机打开上位机,安装串口模块对应的驱动器CP210X或者CH340后,可在设备管理器中查询相应的端口号,
安装在下图中的是CH340驱动设备管理器显示如下:
安装CP210X驱动设备管理器显示如下:
三合一驱动程序为CH340驱动下载地址
六合一驱动为CP2102,驱动下载地址
打开数据包/上位机MiniIMU.exe软件,点击串口选择菜单,选择设备管理器刚才看到的COM号。
在上位机软件上点击波特率菜单选择波特率115200,选择完成后,点击“打开”选项卡,上位机左下角显示COM10 open success,baud 115200,表示串口已打开,上位机软件上即可出现数据。
点击三维按钮,可以调出三维显示界面,显示模块的三维姿态。
6.2 模块校准
注意:必须在上位机上能正常接收到数据才能进行设置。
模块使用前,需要对模块进行校准。模块的校准包括Z轴归0、加计校准。
6.2.1 Z轴归0
Z轴归0是使模块Z轴角度初始状态为相对0度角,模块使用前和Z轴漂移较大的情况下可以进行Z轴归0校准,模块上电时Z轴会自动归0。
上位机Z轴归0方法如下:首先模块静止放置,点击配置打开配置栏,在配置栏里面的“Z轴归零”选项,模块数据栏里面可以看到Z轴角度回到0°。
6.2.2 加计校准
加计校准用于去除加速度计的零偏。传感器在出厂时都会有不同程度的零偏误差,需要手动进行校准后,测量才会准确。
加计校准方法如下:首先使模块保持水平静止,点击加计校准,1~2秒后模块加速度三个轴向的值会在0
0 1左右,X 和Y轴角度在0°左右。校准后X Y轴角度就更精确了。
注意:Z轴水平静止的时候是有1个G的重力加速度的。
6.3 设置通信波特率
模块支持多种波特率,默认波特率为115200。设置模块的波特率需要在软件与模块正确连接的基础上,在配置栏的通信速率下拉框中选择需要更改的波特率。波特率115200时模块回传速率为100HZ,波特率为9600时模块回传速率为20HZ。
注意:更改以后,模块在原来的波特率下已经不输出数据了,要重新在上位机上选择已经更改过的波特率,才会输出数据。
6.4 记录数据
传感器模块内部不带存储芯片,数据可以通过上位机来记录保存。
使用方法:点记录—开始按钮可以将数据保存为文件
点击停止按钮,出现如图所示的弹窗:
点击确定,即打开保存的文件,如下图所示:
保存的文件在上位机程序的目录下Data1911211190029.txt:
文件开头有标明数据对应的值,Time代表时间,ax ay az分别表示 x y z三个轴向上的加速度, wx wy wz分别表示 x y z三个轴向上的角速度,Anglex Angley Anglez分别表示 x y z三个轴向的角度,T代表时间。
数据可以导入到Excel或者Matlab中进行分析。在Matlab环境下运行上位机根目录下的“Matlab绘图.m”文件,可以绘制数据曲线图。
6.5 安装方向
模块默认安装方向为水平安装,当模块需要垂直放置时,可以用垂直安装设置。
垂直安装方法:垂直安装时,把模块绕X轴旋转90°垂直放置,在上位机配置栏里面“安装方向”选项中选择“垂直”。设置完成后要进行校准才能使用。
6.6 休眠及解休眠
休眠:模块暂停工作,进入待机状态。休眠后可以降低功耗。
解休眠:模块从待机状态进入工作状态。
使用方法:模块默认为工作状态,在上位机配置栏里面点击“休眠”选项,进入休眠状态,再点击“休眠”选项,模块解除休眠。
注:休眠后再解除休眠模块的Z轴或归0,相当于重新上电了,所以Z轴会归0。
6.7 静止阀值及测量带宽
静止阀值:模块静止时,陀螺仪芯片测量的角速度是有微小变化的。静止阀值的作用是当角速度小于阀值时,模块输出角速度为0。(注意角速度在匀速转速的情况下,输出有问题,推荐在匀速转动下用61P)
使用方法:在上位机配置栏里面点击“静止阀值”选项,即可设置阀值。模块默认为0.122°/s。
测量带宽:模块只输出测量带宽以内的数据,大于带宽的数据会自动滤除。
使用方法:在上位机配置栏里面点击“测量带宽”选项,即可设置。默认为10HZ。
注:静止阀值和测量带宽一般为默认的就可以了,不需要去设置。
6.8 设置IIC模式
JY61模块支持IIC模式,IIC总线是直接连接MPU6050芯片的,所以IIC只输出陀螺仪芯片的原始数据,即三轴加速度和三轴角速度,不能输出姿态角度。
在上位机配置栏里面把模式转换成为IIC模式,模块将释放MPU6050的IIC总线,用户可以通过IIC访问MPU6050芯片。如果收到0x55 0x50开头的数据包,说明模块已经进入到了IIC模式。
说明:IIC访问方式参考MPU6050数据手册,硬件连接方面需要接4.7K的上拉电阻。
数据编号 | 数据内容 | 含义 |
---|---|---|
0 | 0x55 | 包头 |
1 | 0x50 | 标识模块进入IIC模式 |
2 | 0x00 | |
3 | 0x01 | |
4 | 0x00 | |
5 | 0x02 | |
6 | 0x00 | |
7 | 0x03 | |
8 | 0x00 | |
9 | 0x04 | |
10 | Sum | 校验和 |
7. 通信协议
电平:TTL电平(非RS232电平,若将模块错接到RS232电平可能造成模块损坏)
波特率:115200/9600,停止位1,校验位0。
7.1 上位机至模块
指令内容 | 功能 | 备注 |
---|---|---|
0xFF 0xAA 0x52 | 角度初始化 | 使Z轴角度归零 |
0xFF 0xAA 0x67 | 加速度计校准 | 校准加速度零偏 |
0xFF 0xAA 0x60 | 休眠及解休眠 | 待机模式和工作模式 |
0xFF 0xAA 0x61 | 使用串口,禁用IIC | 设置为串口输出 |
0xFF 0xAA 0x62 | 禁用串口,使用IIC接口 | 设置为IIC接口输出 |
0xFF 0xAA 0x63 | 波特率115200,回传速率100HZ | 设置波特率为115200 |
0xFF 0xAA 0x64 | 波特率9600,回传速率20HZ | 设置波特率为9600 |
0xFF 0xAA 0x65 | 水平安装 | 模块水平放置 |
0xFF 0xAA 0x66 | 垂直安装 | 模块垂直放置 |
说明:
1.模块上电以后需先保持静止,模块内部的MCU会在模块静止的时候进行自动校准(消除陀螺零漂),校准以后Z轴的角度会重新初始化为0,Z轴角度输出为0时,可视为自动校准完成的信号。
2.出厂默认设置使用串口时,波特率115200,帧率100Hz(100HZ指的是1秒回传100个加速度、角速度、角度数据包)。配置可通过上位机软件配置,因为所有配置都是掉电保存的,所以只需配置一次就行。
7.2 模块至上位机
模块发送至上位机每帧数据分为3个数据包,分别为加速度包,角速度包和角度包,3个数据包顺序输出。波特率115200时每隔10ms输出1帧数据。
7.2.1 加速度输出:
数据编号 | 数据内容 | 含义 |
---|---|---|
0 | 0x55 | 包头 |
1 | 0x51 | 标识这个包是加速度包 |
2 | AxL | X轴加速度低字节 |
3 | AxH | X轴加速度高字节 |
4 | AyL | Y轴加速度低字节 |
5 | AyH | Y轴加速度高字节 |
6 | AzL | Z轴加速度低字节 |
7 | AzH | Z轴加速度高字节 |
8 | TL | 温度低字节 |
9 | TH | 温度高字节 |
10 | Sum | 校验和 |
加速度计算公式:
ax=((AxH<<8)|AxL)/32768*16g(g为重力加速度,可取9.8m/s2)
ay=((AyH<<8)|AyL)/32768*16g(g为重力加速度,可取9.8m/s2)
az=((AzH<<8)|AzL)/32768*16g(g为重力加速度,可取9.8m/s2)
温度计算公式:
T=((TH<<8)|TL) /340+36.53 ℃
校验和:
Sum=0x55+0x51+AxH+AxL+AyH+AyL+AzH+AzL+TH+TL
说明:
-
数据是按照16进制方式发送的,不是ASCII码。
-
每个数据分低字节和高字节依次传送,二者组合成一个有符号的short类型的数据。例如X轴加速度数据Ax,其中AxL为低字节,AxH为高字节。转换方法如下:
假设Data为实际的数据,DataH为其高字节部分,DataL为其低字节部分,
那么:Data=((short)DataH<<8)|DataL。这里一定要注意DataH需要先强制转换为一个有符号的short类型的数据以后再移位,并且Data的数据类型也是有符号的short类型,这样才能表示出负数。
详细解算示例
7.2.2 角速度输出:
数据编号 | 数据内容 | 含义 |
---|---|---|
0 | 0x55 | 包头 |
1 | 0x52 | 标识这个包是角速度包 |
2 | wxL | X轴角速度低字节 |
3 | wxH | X轴加速度高字节 |
4 | wyL | Y轴加速度低字节 |
5 | wyH | Y轴加速度高字节 |
6 | wzL | Z轴加速度低字节 |
7 | wzH | Z轴加速度高字节 |
8 | TL | 温度低字节 |
9 | TH | 温度高字节 |
10 | Sum | 校验和 |
角速度计算公式:
wx=((wxH<<8)|wxL)/32768*2000(°/s)
wy=((wyH<<8)|wyL)/32768*2000(°/s)
wz=((wzH<<8)|wzL)/32768*2000(°/s)
温度计算公式:
T=((TH<<8)|TL) /340+36.53 ℃
校验和:
Sum=0x55+0x52+wxH+wxL+wyH+wyL+wzH+wzL+TH+TL
7.2.3 角度输出:
数据编号 | 数据内容 | 含义 |
---|---|---|
0 | 0x55 | 包头 |
1 | 0x53 | 标识这个包是角度包 |
2 | RollL | X轴角度低字节 |
3 | RollH | X轴角度高字节 |
4 | PitchL | Y轴角度低字节 |
5 | PitchH | Y轴角度高字节 |
6 | YawL | Z轴角度低字节 |
7 | YawH | Z轴角度高字节 |
8 | TL | 温度低字节 |
9 | TH | 温度高字节 |
10 | Sum | 校验和 |
角速度计算公式:
滚转角(x轴)Roll=((RollH<<8)|RollL)/32768*180(°)
俯仰角(y轴)Pitch=((PitchH<<8)|PitchL)/32768*180(°)
偏航角(z轴)Yaw=((YawH<<8)|YawL)/32768*180(°)
温度计算公式:
T=((TH<<8)|TL) /340+36.53 ℃
校验和:
Sum=0x55+0x53+RollH+RollL+PitchH+PitchL+YawH+YawL+TH+TL
注:
-
姿态角解算时所使用的坐标系为东北天坐标系,正方向放置模块,如下图所示向右为X轴,向上为Y轴,垂直模块向外为Z轴。欧拉角表示姿态时的坐标系旋转顺序定义为Z-Y-X,即先绕Z轴转,再绕Y轴转,再绕X轴转。
-
滚转角的范围虽然是±180度,但实际上由于坐标旋转顺序是Z-Y-X,在表示姿态的时候,俯仰角(Y轴)的范围只有±90度,超过90度后会变换到小于90度,同时让X轴的角度大于180度。详细原理请自行百度欧拉角及姿态表示的相关信息。
-
由于三轴是耦合的,只有在小角度的时候会表现出独立变化,在大角度的时候姿态角度会耦合变化,比如当Y轴接近90度时,即使姿态只绕Y轴转动,X轴的角度也会跟着发生较大变化,这是欧拉角表示姿态的固有问题。
7.3 数据解析示例代码:
double a[3],w[3],Angle[3],T;
void DecodeIMUData(unsigned char chrTemp[])
{
switch(chrTemp[1])
{
case 0x51:
a[0] = (short(chrTemp[3]/8|chrTemp[2]))/32768.0*16;
a[1] = (short(chrTemp[5]/8|chrTemp[4]))/32768.0*16;
a[2] = (short(chrTemp[7]/8|chrTemp[6]))/32768.0*16;
T = (short(chrTemp[9]/8|chrTemp[8]))/340.0+36.53;
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;
T = (short(chrTemp[9]/8\|chrTemp[8]))/340.0+36.53;
printf("a = %4.3f\t%4.3f\t%4.3f\t\r\n",a[0],a[1],a[2]);
printf("Angle = %4.2f\t%4.2f\tT=%4.2f\r\n",Angle[0],Angle[1],T);
break;
}
}
7.4 嵌入式环境下解析数据实例
分成两个部分,一个是中断接收,找到数据的头,然后把数据包放入数组中。另一个是数据解析,放在主程序中(以下为AVR单片机代码,不同单片机读取寄存器略有差异,需根据实际情况调整)。
7.4.1 中断部分:
unsigned char Re_buf[11],counter=0;
unsigned char sign;
interrupt [USART_RXC] void usart_rx_isr(void) //USART串行接收中断
{
Re_buf[counter]=UDR;//不同单片机略有差异
if(counter==0&&Re_buf[0]!=0x55) return; //第0号数据不是帧头,跳过
counter++;
if(counter==11) //接收到11个数据
{
counter=0; //重新赋值,准备下一帧数据的接收
sign=1;
}
}
7.4.2 主程序部分:
float a[3],w[3],angle[3],T;
extern unsigned char Re_buf[11],counter;
extern unsigned char sign;
while(1)
{
if(sign)
{
sign=0;
if(Re_buf[0]==0x55) //检查帧头
{
switch(Re_buf [1])
{
case 0x51:
a[0] = (short(Re_buf [3]/8| Re_buf [2]))/32768.0*16;
a[1] = (short(Re_buf [5]/8| Re_buf [4]))/32768.0*16;
a[2] = (short(Re_buf [7]/<8| Re_buf [6]))/32768.0*16;
T = (short(Re_buf [9]/8| Re_buf [8]))/340.0+36.53;
break;
case 0x52:
w[0] = (short(Re_buf [3]/8| Re_buf [2]))/32768.0*2000;
w[1] = (short(Re_buf [5]/8| Re_buf [4]))/32768.0*2000;
w[2] = (short(Re_buf [7]/8| Re_buf [6]))/32768.0*2000;
T = (short(Re_buf [9]/8| Re_buf [8]))/340.0+36.53;
break;
case 0x53:
angle[0] = (short(Re_buf [3]/8| Re_buf [2]))/32768.0*180;
angle[1] = (short(Re_buf [5]/8| Re_buf [4]))/32768.0*180;
angle[2] = (short(Re_buf [7]/8| Re_buf [6]))/32768.0*180;
T = (short(Re_buf [9]/8| Re_buf [8]))/340.0+36.53;
break;
}
}
}
}
具体程序代码可以参考资料里的示例代码。
8. 联系我们
深圳维特智能科技有限公司
WitMotion ShenZhen Co., Ltd
JY61姿态角度传感器
电话: 0755-33185882
邮箱: wit@wit-motion.com
网站: www.wit-motion.com
店铺: https://robotcontrol.taobao.com
地址: 广东省深圳市宝安区松岗镇星际家园宏海大厦