传感器采样原始数据和实际数据之间的转换问题详解

        针对各种各样的传感器(压力,浓度等。。。),采样出来的数据均需要进行转换来得到我们想要的实际数据,那么到底应该如何转换呢,让我们只挠头,每次更换新的传感器都需要重新计算,接下来我们就简单介绍下,让我们用一个万能公式和几个例子,来进行说明。

一、首先在介绍之前我们需要了解一下量程和范围的概念,众所众知,不管是压力,浓度,还是温度等传感器,都有自己的量程比如压力(0-500kPa),温度(0-85°C)等;然后再说下范围,我们单片机采样得到的数据也都有一个范围例如uint8_t(2^8=256),uint16_t(2^16=65535),等。有了这样一个概念,就可以很清晰的把他们对应起来,如下图(以压力为例,量程0-500kPa,uint16_t,无符号16位数据):

        由上图可以看出每一个压力值都对应一个数据,所以当压力大小改变时,我们单片机采样到的原始数据也会跟着等比例变化。即二元一次方程y=kx+b(b=0).

        既然有了这个概念,我们在计算实际值时就会变的非常简单:

1、以加速度传感器LIS2DH12为例,(量程±2g,采样数据16位)我们来计算下实际的加速度值,由于加速度值量程是-2g~+2g,所以对应的int16位数据范围是-32768~+32767;k=2/32767,b=0

故实际的加速度值为:y=kx=> 采样值*(2/32767) => 采样值/16383.5;

2、以磁传感器AS5600为例,(量程0-360°,12位分辨率数据输出)我们来计算下实际的角度值,无符号12位整型数据范围是0~4095,k=360/4095,b=0

故实际的角度值为:y=kx => 采样值*(360/4095);

3、以下面压力传感器(量程0~500kPa)为例:

一般压力传感器为了留有余量,会在量程中间取值,

0kPa对应1638,500kPa对应14746=>b=1638,k=(500-0)/(14746-1638),b=1638

故实际的压力值为:y=(采样值-1638)/k+b=(采样值-1638)/26.216+1638

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值