0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文教你传感器的3种常用算法处理

454398 来源:罗姆半导体社区 作者:罗姆半导体社区 2022-12-26 10:14 次阅读

来源:罗姆半导体社区

传感器使用中,我们常常需要对传感器数据进行各种整理,让应用获得更好的效果,以下介绍几种常用的简单处理方法:

1.加权平滑:平滑和均衡传感器数据,减小偶然数据突变的影响;

2.抽取突变:去除静态和缓慢变化的数据背景,强调瞬间变化;

3.简单移动平均线:保留数据流最近的K个数据,取平均值;

01

加权平滑

使用算法如下:

(新值) = (旧值)*(1 - a) + X * a其中a为设置的权值,X为最新数据,程序实现如下:

float ALPHA = 0.1f;

public void onSensorChanged(SensorEvent event){

x = event.values[0];

y = event.values[1];

z = event.values[2];

mLowPassX = lowPass(x,mLowPassX);

mLowPassY = lowPass(x,mLowPassY);

mLowPassZ = lowPass(x,mLowPassZ);

}

private float lowPass(float current,float last){

return last * (1.0f - ALPHA) + current * ALPHA;

}

02

抽取突变采用上面加权平滑的逆算法

实现代码如下:

public void onSensorChanged(SensorEvent event){

final float ALPHA = 0.8;gravity[0] = ALPHA * gravity[0] + (1-ALPHA) * event.values[0];

gravity[1] = ALPHA * gravity[1] + (1-ALPHA) * event.values[1];

gravity[2] = ALPHA * gravity[2] + (1-ALPHA) * event.values[2];filteredValues[0] = event.values[0] - gravity[0];

filteredValues[1] = event.values[1] - gravity[1];

filteredValues[2] = event.values[2] - gravity[2];

}

03

简单移动平均线

保留传感器数据流中最近的K个数据,返回它们的平均值。k表示平均“窗口”的大小;

实现代码如下:

public class MovingAverage{

private float circularBuffer[]; //保存传感器最近的K个数据

private float avg; //返回到传感器平均值

private float sum; //数值中传感器数据的和

private float circularIndex; //传感器数据数组节点位置

private int count;public MovingAverage(int k){

circularBuffer = new float[k];

count= 0;

circularIndex = 0;

avg = 0;

sum = 0;

}

public float getValue(){

return arg;

}

public long getCount(){

return count;

}

private void primeBuffer(float val){

for(int i=0;i

circularBuffer[i] = val;

sum += val;

}

}

private int nextIndex(int curIndex){

if(curIndex + 1 >= circularBuffer.length){

return 0;

}

return curIndex + 1;

}

public void pushValue(float x){

if(0 == count++){

primeBuffer(x);

}

float lastValue = circularBuffer[circularIndex];

circularBuffer[circularIndex] = x; //更新窗口中传感器数据

sum -= lastValue; //更新窗口中传感器数据和

sum += x;

avg = sum / circularBuffer.length; //计算得传感器平均值

circularIndex = nextIndex(circularIndex);

}

}

审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48129

    浏览量

    740173
收藏 人收藏

    评论

    相关推荐

    常用传感器原理

    简介:介绍了机器人中常用传感器的原理。包括:红外传感器,超声波传感器,陀螺仪,GPS,电子罗盘,激光传感器,编码盘以及多普勒
    发表于 07-11 09:28

    6大常用传感器,它们的原理你知道吗?

    温湿度传感器。脉搏传感器脉搏传感器,指的是用来检测类似心率的机器,般常见的类型主要是以光电为主,有分立式和体式两
    发表于 08-21 15:56

    非标机械设计常用传感器

    传感器的检测精度、响应速度、输出信号类型等;(3)工况条件,主要是指传感器的使用环境和与其他装置的连接环境等。 下面我们简单介绍下在工业自动化设备中
    发表于 09-25 09:56

    读懂什么是振动传感器

    于能源、化工、医学、汽车、冶金,机器制造,军工,科研教学等诸多领域。振动传感器测量振动的方式很多,但总结起来,原理大多都采用以下三:机械式测量方法:将工程振动的变化量转换成机械信号,再经机械系统放大后
    发表于 11-08 10:55

    基于一种新型CMOS图像传感器原理及设计

    得到锐利的图像。  3 结 语  为了提高CMOS图像传感器的图像质量,通过对图像主要的噪声源以及图像失真的分析,本文提出了一种新型的CMOS有源像素图像传感器。该CMOS图像
    发表于 11-14 15:24

    传感器知识大全(分类与维修+原理封装图+应用与算法

    传感器的基本知识,包括分类、保养与维修;常用传感器和通信模块的原理图与3D封装;生活中应用的传感器介绍和无线
    发表于 11-19 15:06

    基于多传感器的多模型机动目标跟踪算法设计

    评估,验证了所设计方法的有效性和实用性。  1 多传感器平台搭建  雷达和红外传感器是目前常用的两目标探测和跟踪传感器,采用雷达为主、红外
    发表于 12-05 15:16

    压力传感器电路参考设计(原理解析+温度补偿算法+设计仿真)

    压力传感器是工业实践、仪器仪表控制中最为常用一种传感器,并广泛应用于各种工业自控环境,涉及水利水电、铁路交通、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。
    发表于 12-17 14:12

    ESP系统中的常用传感器

    )、方向盘传感器、纵向加速度传感器、横向加速度传感器、横摆角速度传感器、轮速传感器等。ESP作为保证行车安全的
    发表于 05-22 05:01

    解析传感器的设计要点

    好的传感器的设计是经验加技术的结晶。般理解传感器是将一种物理量经过电路转换成一种能以另外一种
    发表于 08-28 08:04

    常用的无线传感器网络数据融合算法有什么优缺点?

    本文介绍了几类常用的无线传感器网络数据融合算法,并比较了其优缺点。
    发表于 06-03 06:41

    一种传感器无刷直流电机的控制算法

    Microchip 的应用笔记 AN1083 详细地讲述了一种传感器无刷直流电机的控制算法,其配套的开源算法采用 dsPIC® 数字信号控制
    发表于 08-17 06:39

    读懂传感器的原理与结构

    读懂传感器传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的
    发表于 01-13 07:08

    篇小短文教你了解工字电感的各项参数

    篇小短文教你了解工字电感的各项参数篇小短文教你了解工字电感的各项参数工字电感是我们在插件作业中会经常看见且用到的电子元器件中的一种;
    发表于 02-01 10:16

    浅谈传感器中3种常用算法处理(含实现代码)

    传感器使用中,我们常常需要对传感器数据进行各种整理,让应用获得更好的效果,以下介绍几种常用的简单处理方法: 1.加权平滑:平滑和均衡传感器
    的头像 发表于 05-06 16:43 2538次阅读
    浅谈<b class='flag-5'>传感器</b>中3种<b class='flag-5'>常用</b><b class='flag-5'>算法</b><b class='flag-5'>处理</b>(含实现代码)