6轴加速度角速度传感器的常用操作

2023-10-29 05:50

本文主要是介绍6轴加速度角速度传感器的常用操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

六轴传感器一般是集成三轴加速度和三轴陀螺仪,可用在可穿戴、导航等应用系统中,以下简要说明此类传感器的常用流程。
  1. 传感器输出的原始数据是如何和实际陀螺加计数据对应起来的?
    陀螺常用的单位为g,加计常用的单位为度/秒(dps),一般两者的数据寄存器都是16位的,比如陀螺X轴分为OUTX_L_G和OUTX_H_G,加计X轴分为OUTX_L_A和OUTX_H_A最高位为符号位,则输出范围应为(-32767~32767),此类传感器数据手册中对数据单位的转换形式一般有2种说明。
    情况1:
    如图Fig.1所示ST的LSM6DSO32数据手册中数据单位是以mg/LSB和mdps/LSB,假如陀螺和加计的量程分别选择±1000dps和±16 g,从寄存器中读出的原始数据定义为s16 gyro_raw和s16 acc_raw,则:
    gyro_raw = (s16)((OUTX_H_G<<8)+OUTX_L_G) *35/1000(g)(dps)//将mdps转换为dps

acc_raw = (s16)((OUTX_H_A<<8)+OUTX_L_A)*0.488/1000//将mg转换为g
Fig.1 LSM6DSO32
情况2:
如图Fig.2所示博士的SMI230对应的数据手册中单位为LSB/g和LSB/bps,同理,假如陀螺和加计的量程分别选择±1000dps和±16 g,从寄存器中读出的原始数据定义为s16 gyro_raw和s16 acc_raw,则:
gyro_raw = (s16)((OUTX_H_G<<8)+OUTX_L_G) /32.77(dps)
acc_raw = (s16)((OUTX_H_A<<8)+OUTX_L_A)/2048(g)
注意这里的2048 LSB/g实际是由32767/16计算的,32.77 LSB/bps是由32767/1000计算的。
Fig.2 SMI230-博士
2. 如何读取陀螺加计的原始数据?、
此类传感器一般都会支持SPI和IIC通信协议,以LSM6DSO32为例说明读写寄存器的过程,如下:
① 配置硬件接口,SPI/IIC驱动接口(下面的时序图以SPI为例说明)
② 配置陀螺和加计的量程和数据速率,如图Fig.3和Fig.4中分别向0x10寄存器和0x11寄存器设置陀螺和加计所需量程。此处是向寄存器写数据,故最高位为0(一般都是R/!W,读高写低)
Fig.3LSM6DSO32-acc控制寄存器
Fig.4 LSM6DSO32-gyro控制寄存器
③在数据手册寄存器映射章节,容易看出陀螺和加计的数据寄存器是连续的,故一般选择连续读模式,向SPI总线写要读的寄存器其实地址,此处注意最高位为1(比如从陀螺的X轴开始读数,则直接写0x80|0x22),再直接读出12个字节数据(包含了陀螺加计的原始数据)。
Fig.5 陀螺加计等寄存器映射地址
Fig.6LSM6DSO32读寄存器时序
注意,若是用轮询的方式获取传感器数据,一般会根据状态寄存器中陀螺加计的数据更新标识来获取有效数据,如图Fig.7当GDA和XLDA数据标识为1时再从对应的寄存器中读取数据,否则会出现异常的数据,如图Fig.8中在静止状态下测试出现偏大的数据。
Fig.7LSM6DSO32状态寄存器描述
Fig.8 静止状态下陀螺数据偏大

这篇关于6轴加速度角速度传感器的常用操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298649

相关文章

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

JavaScript DOM操作与事件处理方法

《JavaScriptDOM操作与事件处理方法》本文通过一系列代码片段,详细介绍了如何使用JavaScript进行DOM操作、事件处理、属性操作、内容操作、尺寸和位置获取,以及实现简单的动画效果,涵... 目录前言1. 类名操作代码片段代码解析2. 属性操作代码片段代码解析3. 内容操作代码片段代码解析4.

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

Python使用asyncio实现异步操作的示例

《Python使用asyncio实现异步操作的示例》本文主要介绍了Python使用asyncio实现异步操作的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录1. 基础概念2. 实现异步 I/O 的步骤2.1 定义异步函数2.2 使用 await 等待异

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核