实战项目【7】MEMS惯性传感器的精度参数和单位换算

news2025/1/22 17:46:07

1 前言

  1. 有不少朋友在做项目的时候经常涉及到加速度计和陀螺仪的原始数据转换为其他的单位的问题,这篇文章梳理和推导一下。 1)加速度计的原始数据 在应用时常见的转换单位有: g、m/s^2 、角度 2)陀螺仪的原始数据 在应用时常见的转换单位有:°/s、red/s、角度

  2. 是对《几种常用的加速传感参数比较》这篇文件更新,在这篇文章中将不同参加的传感器参数对比和精度参数写在一起,本文专讲精度参数和单位换算

2 测量范围和精度

在MEMS 传感的数据手册中都给出了加速度计和陀螺仪的测量范围和测量精度。有测量范围是可以推算出测量精度的。 不论是加速还是陀螺仪,数据寄存器都是16位的,由于最高位是符号位,故而数据寄存器的输出范围是 -7FFF-7FFF (-32767~32767)。 陀螺仪: 假如,我们选择陀螺仪的测量范围是 ±2000,在数据手册中 16.4 LSB/(°/s)是 32767/2000 = 16.4 计算出来的 那么寄存器的数字和测量范围的对应关系:
在这里插入图片描述比如,通过寄存器读取陀螺仪的值是1000的,那么我们求角速度 X
在这里插入图片描述
加速度: 同样假如,我们选择加速度的测量范围是 ±16,在数据手册中 2048 LSB/g 是 32767/16 = 2048 计算出来的 那么寄存器的数字和测量范围的对应关系:
在这里插入图片描述
比如,通过寄存器读取陀螺仪的值是1000的,那么我们求重力加速度 X X = 1000 / 2048 = 0.49g

3 计算单位换算

在这里插入图片描述

  1. 不同量程下精度的计算 加速度计量程为:±2g 获取到的加速度计数据 除以16384 加速度计量程为:±4g 获取到的加速度计数据 除以8192 加速度计量程为:±8g 获取到的加速度计数据 除以4096 加速度计量程为:±16g 获取到的加速度计数据 除以2048

2.可以转化为带物理单位的数据,单位:g(m/s^2)
在这里插入图片描述
2. 可以通过三角关系转换为角度

float tanalpha = 0,tanbeta = 0,tangamma = 0;
tanalpha = (float)data->rawx / sqrt( ((float)data->rawy * (float)data->rawy + (float)data->rawz * (float)data->rawz) );
data->anglex = (float)atan(tanalpha)*57.3;
tanbeta = (float)data->rawy / sqrt( ((float)data->rawx * (float)data->rawx + (float)data->rawz * (float)data->rawz)  );
data->angley = (float)atan(tanbeta)*57.3;
tangamma = (float)data->rawz / sqrt( ((float)data->rawy * (float)data->rawy + (float)data->rawx * (float)data->rawx) );
data->anglez = (float)atan(tangamma)*57.3;

在这里插入图片描述

  1. 不同量程下精度的计算 陀螺仪量程为:±250 dps 获取到的陀螺仪数据除以131 陀螺仪量程为:±500 dps 获取到的陀螺仪数据除以65.5 陀螺仪量程为:±1000dps 获取到的陀螺仪数据除以32.8 陀螺仪量程为:±2000dps 获取到的陀螺仪数据除以16.4 2.可以转化为带物理单位的数据,单位:rad/s
    在这里插入图片描述
//原始数据
raw_data[AXIS_X] = (buf[0] << 8) | buf[1];
raw_data[AXIS_Y] = (buf[2] << 8) | buf[3];
raw_data[AXIS_Z] = (buf[4] << 8) | buf[5];
//坐标map转换
remap_data[icm_dev.cvt.axis[AXIS_X]] = icm_dev.cvt.sign[AXIS_X] * raw_data[AXIS_X];
remap_data[icm_dev.cvt.axis[AXIS_Y]] = icm_dev.cvt.sign[AXIS_Y] * raw_data[AXIS_Y];
remap_data[icm_dev.cvt.axis[AXIS_Z]] = icm_dev.cvt.sign[AXIS_Z] * raw_data[AXIS_Z];
//重力加速度计算 unit: m/s2
data->x = (float)remap_data[AXIS_X] * KSCALE_ACC_16G_RANGE;
data->y = (float)remap_data[AXIS_Y] * KSCALE_ACC_16G_RANGE;
data->z = (float)remap_data[AXIS_Z] * KSCALE_ACC_16G_RANGE;
//red/s
data->x = (float)remap_data[AXIS_X] * KSCALE_GYRO_2000_RANGE;
data->y = (float)remap_data[AXIS_Y] * KSCALE_GYRO_2000_RANGE;
data->z = (float)remap_data[AXIS_Z] * KSCALE_GYRO_2000_RANGE;

4 简单验证数据正确性

据我了解,如果加速度计灵敏度设置为 16g,则值为 2048 = 1g。 当设备平放在桌子上时,我希望看到 x 和 y 加速度计值接近于零,而 z 约为 1g(即 2048 原始值),这是我在其他设备上看到的,但不是 这个新设备。 请参阅所附屏幕截图中的示例。

转载处:转载 1
转载处:转载2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

〖全域运营实战白宝书 - 运营角色认知篇⑤〗- “运营“ 是否有前途?

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

UE4 回合游戏项目 23- 进入战斗

在上一篇&#xff08;UE4 回合游戏项目 22- 控制新角色&#xff09;基础上继续增加两个角色进入战斗的逻辑 效果&#xff1a; 步骤&#xff1a; 1. 打开“gameMode1”&#xff0c;新增一个变量命名为“正在控制的所有玩家”&#xff0c;变量类型为“roleCategory”的数组 2.打…

Jitamin 安装与配置

Jitamin Jitamin (读作/ˈdʒɪtəmɪn/) 是一款免费、开源&#xff0c;使用PHP语言开发的项目管理系统。Jitamin灵感来自于Vitamin&#xff0c;并结合了Just In Time(准时)和敏的拼音min&#xff0c;意指效率与敏捷是项目管理的维他命。 功能特性 简洁、美观的界面支持多主题…

Celix是什么?能做什么?

半路突然看到了OSGI,又学习了一下&#xff0c;大概了解了架构的一些基础知识。 像MVC&#xff0c;MVP等其实就是分层架构&#xff0c;这类是最容易想到的。 然后其实我就没有接触&#xff0c;如微服务架构&#xff0c;微内核架构。 是什么&#xff1f; 而Celix就是属于微内…

[附源码]java毕业设计校园网学生成绩查询系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Redis源码篇(6)——主从复制

主从复制 从服务器执行 SLAVEOF IP PORT 命令即可实现对主服务器的复制。 复制又分为完整同步和部分同步&#xff08;2.8之后&#xff09; 完整同步&#xff1a;与混合持久化过程类似&#xff0c;先以rdb的方式保存rdb文件然后发送给从服务器。再将期间的命令保存到复制缓存区…

[论文评析]基于人体姿态识别的立定跳远 动作智能评估系统

基于人体姿态识别的立定跳远 动作智能评估系统论文信息背景方法系统总体设计立定跳远动作智能评估系统标准动作库子系统动作采集子系统人体姿态动作评估子系统人体姿态评估模型立定跳远关键帧匹配姿态评估及对比总结论文信息 题目&#xff1a;基于人体姿态识别的立定跳远 动作…

AMBA:AXI/AHB/APB学习笔记

AMBA、AXI、AHB、APB学习笔记AMBA总线&#xff1a;各模块之间的连接AHB特性&#xff1a;组成部分&#xff1a;AXIAPBAMBA总线&#xff1a;各模块之间的连接 advanced microcontroller bus architecture高级微控制器总线架构 AHB Advanced High-performance Bus 高级高性能总…

微信小程序|搭建一个博客小程序

文章目录一、文章前言二、创建小程序三、功能开发&#xff08;1&#xff09;首页&#xff08;2&#xff09;领域页&#xff08;3&#xff09;博客详情页&#xff08;4&#xff09;个人中心页一、文章前言 此文主要通过小程序搭建一个博客系统&#xff0c;实现博客的一些基础功能…

AD环境下域用户的离线缓存登录

缓存登录主要是为了解决当公司域控制器发生故障联系不上DC或用户拿笔记本电脑回家不拔VPN的情况下&#xff0c;依然能够登录到系统&#xff0c;进行办公。如果用户登录的时候联系不到DC&#xff0c;那么就凭用户登录时输入的用户名和密码去缓存中校验&#xff0c;如果能联系上D…

如果在学习spring的时候没看过这份学习笔记+源码剖析,真的亏大了!

Spring 是一个开源的设计层面框架&#xff0c;它解决的是业务逻辑层和其他各层的松耦合问题&#xff0c;因此它将面向接口的编程思想贯穿整个系统应用。包括在此基础上衍生的 Spring MVC、 Spring Boot 、Spring Cloud 等&#xff0c;在现在企业中的应用越来越广泛。因此对于 S…

YOLOv7移植经验分享

目录 一、背景 二、环境 2.1 服务器环境 2.2 SDK环境 2.3 docker环境 三、移植开发 3.1 模型迁移 3.2 算法迁移 四、部署 一、背景 YOLOv7在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测器&#xff0c;并且在 GPU V100 上 30 FPS 或更高的所有…

python基于OCR深度学习实现商品配料表识别

1、概述 当前人民和国家对食品安全十分重视&#xff0c;但商家为了保证食品长时间储存&#xff0c;味道鲜美&#xff0c;在食品中添加超量或对人有严重危害得食品添加剂&#xff0c;严重危害到人民的安全&#xff0c;我们以方便面为例&#xff0c;一包方便面最多可有25种食品添…

十年开发老手,深度解析企业用人标准为何越来越高?!

涛哥作为一个10多年的开发老手&#xff0c;经历过很多场面试&#xff0c;也面试过很多人&#xff0c;这么多年下来&#xff0c;切身体会到企业的用人标准越来越高&#xff0c;企业对开发工程师的要求也越来越"过分"。所以涛哥今天就借此机会&#xff0c;我们一起来分…

如何制定有效的项目计划,提高团队执行力

项目风险来源有很多&#xff0c;项目日程紧张&#xff0c;导致质量下降风险上升&#xff1b;甲方变更&#xff0c;管理者对变动控制不足&#xff1b;项目太大。 虽然从来不可能完全消除项目风险&#xff0c;但可以将危害减到最小。 一、确认项目计划 项目计划是一个项目启动…

SpringBoot读取properties中配置的List集合

实体类 Data NoArgsConstructor AllArgsConstructor Accessors(chain true) public class Person {private String name;private String age;private String content; } Component//将该类交由Spring管理 ConfigurationProperties(prefix "project") //自定义.pro…

【附源码】计算机毕业设计JAVA演唱会购票系统

【附源码】计算机毕业设计JAVA演唱会购票系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA myba…

听我一句劝好吗?放下那些老掉牙的性能优化笔记吧!又不是没有新的,跟不上时代的学了也没法直接用呀!

性能概述 公司投入人力物力成本开发出的程序&#xff0c;如果出现程序瘫痪、界面停顿、抖动、响应迟缓等问题&#xff0c;会大大降低用户体验&#xff0c;损失大量用户。对于上述问题&#xff0c;都是需要性能调优来解决的问题。 程序性能主要表现在代码的执行速度、软件系统…

数据结构之快速排序(重点)

快速排序 算法所需 一个基准点 左边是比其小的数&#xff0c;右边是比其大的数 先使所指的元素作为基准元素low 用一个piviot存储49 然后进行比遍历操作 就是high向左移动(high–)&#xff0c;到第一个比piviot小的元素进行一个data[low]data[high] 然后进行low&#xff0c;找…

基于最低水平面的三维装箱问题的启发式算法

⭐️ 前言 小编之前写过一篇博文&#xff1a;求解三维装箱问题的启发式深度优先搜索算法(python)&#xff0c;详述了基于空间选择的三维装箱算法。本文考虑了一个事实&#xff1a;在某些情况下&#xff0c;我们在摆放物品时&#xff0c;总是优先选择较低的平面&#xff0c;基于…