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

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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
随着人们生活质量的提高和科技水平的发展,智能化和健康云等概念提上了日程。基于惯性传感器的人体运动识别系统具有便于携带、成本低、不受时间和 场景限制等优点,在体感游戏和健康监控等领域受到了广泛的关注。本文通过加速度计和陀螺仪等惯性传感器设计人体运动识别系统,可实现关节运动的姿态角解算和位移测量。 本文工作主要包括硬件平台的设计和运动检测算法的实现。针对功能需求分析,本文设计了系统的硬件平台,硬件平台采用核心处理器 ATMEGA32 搭配传感器模块 MPU6050 和射频模块 nrf24L01 组成惯性测量单元,采集人体关节运动信号,并对采集到的信号进行预处理。在研究各芯片特性和配置基础上,现了各模块的驱动设计。运动检测算法包括两部分的研究工作:姿态角解算和位移测量。在姿态角解算模块,本系统针对加速度三角函数法只适合于静止或低频运动的情况,设计了对加速度计和陀螺仪数据进行融合的自适应互补滤波器和卡尔曼滤波器两种数据融合算法,从运算效率和测量精度两方面对这两种数据融合算法进行比较,实验结果表明自适应互补滤波器在改善姿态角测量精度和运算效率两方面都优于卡尔曼滤波器。在位移测量,本文在研究时域二次积分、二次积分两种位移算法性能的基础上,提出了频域-时域混合积分法,用以改善频域积分对低频噪声的敏感和减小时域积分的累积误差,研究了坐标系转换、拟合多项式去除趋势项和频域带通滤波器等信号预处理模块。
MEMS惯性器件是一种基于微机电系统技术的惯性测量装置,具有小型化、低功耗、低成本等优点,在惯性导航、运动控制、姿态估计等领域得到广泛应用。然而,由于器件制造过程和环境等因素的影响,MEMS惯性器件会产生一定的误差,影响其测量精度和稳定性。为了提高MEMS惯性器件的精度和可靠性,需要对误差进行建模和补偿。 目前,对MEMS惯性器件误差建模和补偿的方法主要包括以下几种: 1. 基于传统的误差模型:这种方法将MEMS惯性器件的误差建模为一个数学模型,如零偏误差、比例误差、随机漂移等,并根据实验数据对模型参数进行估计和校正,以提高测量精度和稳定性。 2. 基于神经网络的误差建模:神经网络是一种强大的非线性建模工具,可以学习器件的输入和输出之间的复杂关系,并根据训练数据对误差进行建模和预测。这种方法可以提高模型的精度和适应性,但需要大量的训练数据和计算资源。 3. 基于卡尔曼滤波的误差补偿:卡尔曼滤波是一种递归估计方法,可以利用测量和模型预测的信息对误差进行实时补偿。这种方法可以提高系统的稳定性和鲁棒性,但需要对器件的动态特性和噪声特性进行精确建模。 4. 基于粒子滤波的误差补偿:粒子滤波是一种基于蒙特卡罗模拟的非参数滤波方法,可以对复杂的非线性系统进行估计和预测。这种方法可以处理非高斯噪声和非线性系统,适用于复杂环境下的惯性导航和姿态估计等应用。 总之,MEMS惯性器件误差建模和补偿是提高其测量精度和可靠性的关键技术之一,需要根据具体应用选择合适的方法,并结合器件的特性和环境因素进行优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值