传感器型号:WT931

使用目的:获取载体的俯仰(Pitch)、滚转(Roll)和偏航(Yaw)等姿态信息。

使用说明书下载:维特智能

使用大致步骤(主要根据说明书来):①使用USB-TTL 串口模块连接传感器和上位机软件,在交互界面上设置需要读取的传感器采集数据,这里要获取的是姿态角的变化量和变化率(不需要的就不勾选,这样更不会浪费计算时间);②进行磁场校准,磁场校准要远离强磁源(手动校准效果较差);③选好串口通信波特率,调用STM32f10x系列单片机的串口通信库函数。④特别注意USAR T初始化函数的设置:匹配好波特率,引脚号、通道号、USART时钟和GPIO时钟。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);   //使能USART时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //使能GPIO时钟

注意:九轴模式可以获得精度更高的姿态,使用九轴模式之前一定要校准,不然Yaw的输出会有很大的误差。

使用说明书中,7.2上位机至模块的这部分通信协议一般是不需要在写入嵌入式芯片中的,因为这部分是用来做传感器使用前设置的。这在上位机软件上就可以实现,除非要实现多种模式在线切换。7.1模块至上位机的才需要写进主控芯片中。

需要获取的是载体的姿态角和角速度,可以根据以下协议来编写串口中断服务程序。

注:

1. 姿态角结算时所使用的坐标系为东北天坐标系,正方向放置模块,如下图所示向左为X轴,向前为Y轴,向上为Z轴。欧拉角表示姿态时的坐标系旋转顺序定义为为 Z-Y-X,即先绕Z轴转,再绕Y轴转,再绕X轴转。

2. 滚转角的范围虽然是±180 度,但实际上由于坐标旋转顺序是 Z-Y-X,在表示姿态的时候,俯仰角(Y 轴)的范围只有±90 度,超过 90 度后会变换到小于 90 度,同时 让X轴的角度大于180度。欧拉角及姿态表示的相关信息详细原理见对姿态角/欧拉角的理解_Quark Star的博客-CSDN博客。

以下是串口中断服务程序:

u16 USART_RX_STA=0;       //接收状态标记
u8  USART_RX_BUF[USART_REC_LEN];     //接收缓冲,最大USART_REC_LEN个字节
int n=0;
void USART3_IRQHandler(void)                    //串口3中断服务程序{u8 Res;#if SYSTEM_SUPPORT_OS        //如果SYSTEM_SUPPORT_OS为真,则需要支持OSOSIntEnter();
#endifif(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)  //串口接收中断触发{Res =USART_ReceiveData(USART3);                      //取当前接收的一个字节if(n<=10)                                        //还没接收到完整的一帧数据{if(Res==0x55&&n==0) USART_RX_STA|=0x8000;       //检测帧头字节,并在接收状态寄存器上(最高位置1)做下标记                                                                       if(USART_RX_STA&0x8000){  if(n==1&&Res==0x53) USART_RX_STA|=0x4000;     //检测是否为角度帧,并在接收状态寄存器上(高第二位置1)做下标记if(n==1&&Res==0x52) USART_RX_STA|=0x2000;     //检测是否为角速度帧,并在接收状态寄存器上(高第三位置1)做下标记                          USART_RX_BUF[n]=Res ;                         //缓存当前接收的这个字节USART_RX_STA++ ;                          //接收状态寄存器记录此帧数据的接收进程n=USART_RX_STA&0x1FFF ;                   //转接进程记录}                                       if(n==2) {if(((USART_RX_STA&0xf000)!=0xc000)&&((USART_RX_STA&0xf000)!=0xa000))  //检测是否成功接收帧前两字节{USART_RX_STA=0 ;                           //接收状态寄存器清零n=USART_RX_STA&0x1FFF;                     //重新开始接收} }}          if(n==11)                                         //成功接收到一帧数据{       if((USART_RX_STA&0xf000)==0xc000)              //检测是否为角度帧{RollL=USART_RX_BUF[2];RollH=USART_RX_BUF[3];PitchL=USART_RX_BUF[4];PitchH=USART_RX_BUF[5];YawL=USART_RX_BUF[6];YawH=USART_RX_BUF[7];TL=USART_RX_BUF[8];TH=USART_RX_BUF[9];SUM=USART_RX_BUF[10];if(SUM==(0x55+0x53+RollH+RollL+PitchH+PitchL+YawH+YawL+TH+TL)%0x100) //和校验,注意这里去除了高八位上的和{ Roll=(short)((RollH<<8)|RollL)/32768.0*180;Pitch=(short)((PitchH<<8)|PitchL)/32768.0*180;Yaw=(short)((YawH<<8)|YawL)/32768.0 *180;n=0;                  //数据处理完成B=USART_RX_STA;   USART_RX_STA=0;             //清零,待重新接收                                      }else{USART_RX_STA=0 ;n=0; }                  }if((USART_RX_STA&0xf000)==0xa000)              //检测是否为角速度帧{wxL=USART_RX_BUF[2]; wxH=USART_RX_BUF[3];wyL=USART_RX_BUF[4];wyH=USART_RX_BUF[5];wzL=USART_RX_BUF[6];wzH=USART_RX_BUF[7];TL=USART_RX_BUF[8];TH=USART_RX_BUF[9];SUM=USART_RX_BUF[10];if(SUM==(0x55+0x52+wxH+wxL+wyH+wyL+wzH+wzL+TH+TL)%0x100) //和校验,注意这里去除了高八位上的和{wx=(short)((wxH<<8)|wxL)/32768.0*2000;wy=(short)((wyH<<8)|wyL)/32768.0*2000;wz=(short)((wzH<<8)|wzL)/32768.0*2000;                           n=0;                 //数据处理完成A=USART_RX_STA;USART_RX_STA=0;     //清零,待重新接收                                    }else         //接收错误{USART_RX_STA=0 ;n=0; }         //清零,待重新接收         } }    if(n>=11)         //数据处理结束{USART_RX_STA=0 ;n=0; }                 //清零,待重新接收if(A==0xa00b&&B==0xc00b) USART_ITConfig(USART3, USART_IT_RXNE, DISABLE);//本次串口中断服务顺利完成             }
#if SYSTEM_SUPPORT_OS   //如果为SYSTEM_SUPPORT_OS真,则需要支持OSOSIntExit();
#endif
} 

维特WT931 姿态角度传感器(陀螺仪)使用记录相关推荐

  1. 维特智能姿态传感器WT901C-485调试流程

    维特智能姿态传感器WT901C-485调试流程 情况描述 更改地址与波特率 改波特率 改地址 磁场校准 下载上位机 进行校准 情况描述 调试维特智能公司的一款姿态传感器,型号为 WT901C-485 ...

  2. STM32实现六轴姿态测量陀螺仪模块JY61P(标准库与HAL库实现)

    本模块支持串口采用串口实现数据采集和处理 设备型号选择 目录 设备型号选择 六轴姿态测量陀螺仪模块简介 产品概述 产品特点 引脚说明 模块UART与MCU连接 应用领域 模块与单片机的接线表设计 标准 ...

  3. [嵌入式开发模块]JY61姿态角度传感器 驱动模块

    文章目录 前言 JY61简介 概述 通信协议 驱动文件 JY61Driver.h JY61Recver.c JY61Cmder.c 依赖 使用示例 更新历史 前言 干活中用到了JY61姿态角度传感器, ...

  4. 维特WT931——制作支持ROS的IMU惯性导航传感器

    维特WT931--制作支持ROS的IMU惯性导航传感器 本来自己想玩一个ros小车进行slam建图和导航,结果发现由于地形原因,导致建图不稳定.这是因为在某些情况下,机器人可能出现轮子在动,本体却不动 ...

  5. 维特智能六轴加速度计电子陀螺仪模块姿态角度传感器振动JY61P

    1.项目介绍 近年来随着台风.洪水.泥石流塌陷等灾害性天气频发,古树名木,园林树木,大自然树木等会遭到严重破坏,基于安全管理和科学应对目的,梳理受损古树名木的类别.危害.日常预防和应急清理措施以及遇到 ...

  6. 用C#去读取陀螺仪姿态角度传感器JY61的串口数据

    1 简述 最近在做一个角度的项目,一开始是想用MPU6050去自己搞角度,搞了两个星期没搞来.无意中在淘宝上搜到这个JY61的模块. 它的XY轴的角度精度,动态是0.05度,静态0.1度.因为我想做一 ...

  7. pixhawk 姿态与控制部分的记录

    此篇是把之前看到的资料总结整理一遍,大部分是搬砖,也加入了自己的一点思考,写的过程中晕了好多次,先大体记录下来,肯定有错误,日后再改正吧. 关于pixhawk程序执行流程,依然还没有实际运行调试过程序 ...

  8. pybullet中欧拉角姿态可视化及顺序记录(画机械臂末端坐标)

    最近除了玩ros 也开始了pybullet的学习和使用,毕竟在不花钱的情况下做DRL,pybullet确实提供了太多的便利. 安装和基本使用略过,非常简单,直接pip install pybullet ...

  9. 维特智能高精度六轴加速度姿态角度电子陀螺仪传感器SCA3300带温补HWT605

    1.项目介绍 塔式起重机是动臂装在高耸塔身上部的旋转起重机.工作范围大,主要用于多层和高层建筑施工中材料的垂直运输和构件安装.由金属结构,工作机构和电气系统三部分组成.金属结构包括塔身.动臂.底座.附 ...

最新文章

  1. 对标英伟达,依图发布AI芯片“求索”
  2. RecyclerView横向滑动与ViewPager冲突问题
  3. python使用笔记:sys.argv[]的使用
  4. pytorch计算模型参数量
  5. 前端路由简介以及vue-router实现原理
  6. ubuntu KDE桌面
  7. JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果...
  8. 推荐一款github管理神器SourceTree
  9. array_merge
  10. mysql必知必会学习笔记(一)
  11. 今天研究了一下关于Asp.net文件上传时的内存消耗问题
  12. java netbeans桌面_netbeans创建桌面应用程序教程
  13. 部署Zipkin分布式性能追踪日志系统的操作记录
  14. LeetCode问题7
  15. 鸿蒙系统是华容网格吗,鸿蒙上手机还在迟疑,国内对手却已悄然来到
  16. Android 腾讯地图定位功能一二三
  17. Oracle StorageTek磁带库产品线或将终结
  18. 【学习笔记】矩阵分解Matrix Factorization及延伸阅读
  19. Origin画图笔记
  20. C语言获取执行程序所在的目录路径

热门文章

  1. html和cs、js、jq 基础用法
  2. 地图做显示定位蓝点时遇到的问题
  3. 金三银四,中高级测试面经,我不信你能看完!
  4. Python 程序员需要知道的 30 个技巧(转载)
  5. 《迅雷链精品课》第二课:区块链核心技术框架
  6. 【天光学术】语言学论文:英语认知语言学和心理语言学的融通互补探析(节选)
  7. Arithmetic(线段树维护历史版本和)
  8. 谷歌浏览器(chrome)无法正常打开网页的解决办法
  9. 【无标题】C基础 2
  10. uniapp上传华为应用市场,您的应用提示获取手机存储敏感权限,用户不同意时强制退出应用