传感器代码 技术科普 传感器3种常用算法处理(含代码)
技术科普 传感器3种常用算法处理(含代码)
在传感器使用中,我们常常需要对传感器数据进行各种整理,让应用获得更好的效果,以下介绍几种常用的简单处理方法:
1.加权平滑:平滑和均衡传感器数据,减小偶然数据突变的影响;
2.抽取突变:去除静态和缓慢变化的数据背景,强调瞬间变化;
3.简单移动平均线:保留数据流最近的K个数据,取平均值;
加权平滑 ,使用算法如下:
(新值) = (旧值)*(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;
}
抽取突变采用上面加权平滑的逆算法
实现代码如下:
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];
}
简单移动平均线
保留传感器数据流中最近的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.length;++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);
}
}
编辑搜图
请点击输入图片描述
【经典整理】90款传感器单片机代码例程(代码+原理图+说明书)
网盘链接:https://pan.baidu.com/s/1Sxofh0pmwxxl_bnSraXaBA?pwd=1688
提取码:1688
=============== 传感器清单 =============
[20A电流传感器]
[5A电流传感器模块]
[9轴姿态传感器模块BN0055]
[ADXL335 模拟量加速度模块]
[APDS9900数字环境光传感器]
[CCS811空气质量传感器]
[CJMCU-44009资料]
[CJMCU-6070资料]
[CJMCU-811 CCS811开发资料]
[DHT11]
[DHT11温湿度参考资料]
[DHT11温湿度模块]
[DS18B20测温模块]
[ESP8266-01S]
[ESP8266烧录工具]
[GM5516光敏传感器资料]
[GS-2手势识别]
[GY-63模块]
[HX711模块 称重专用ADC]
[HY-SRF05+五针+超声波模块+超声波测距模块超声波传感器+送资料]
[MAX30102血氧浓度传感器]
[MAX4466声音传感器]
[MICS-6814气体传感器]
[MPU6050陀螺仪加速度]
[MQ-135空气质量检测传感器模块]
[MQ-2烟雾传感器模块]
[MQ-7 一氧化碳传感器模块]
[MQ-8氢气检测传感器]
[RTD数字转换模块]
[S12SD紫外线传感器模块]
[SIM800C模块+胶棒天线]
[TCS34725颜色识别传感器模块]
[TEMT6000环境光传感器模块]
[TL-激光模块]
[TTP229触摸开关16路]
[uart串口温湿度传感器Si7021]
[VL53L1X激光测距模块]
[W25QXX FLASH掉电不丢失模块资料】]
[【HX711模块称重传感器专用24位精度AD模块压力传感器】]
[【IM1253B电能计量模块资料包】V1.9]
[【MQ-2原理图测试程序】]
[YL-78 1路继电器资料(光耦)]
[YX55690-光敏电阻传感器模块]
[【1路继电器资料(带光耦)】]
[【BMP280 气压模块】]
[【MLX90614非接触红外人体测温】]
[【MP3模块播放】]
[【MPU6050陀螺仪】]
[【RBY-CO2二氧化碳传感器】]
[【SG90舵机】]
[【STM32mini-MAX30102心率血样采集】]
[【WiFi_ESP8266】模块资料]
[【光敏电阻】]
[【各种串口蓝牙模块HC05HC06SPP】]
[【土壤湿度传感器】]
[【声音传感器】]
[【指纹识别_AS608】模块资料]
[【淘晶驰串口触摸屏USART HMI】]
[【温度DS18B20 防水不锈钢头】]
[【温度传感器_DS18B20】模块资料]
[【温湿度传感器_DHT11】模块资料]
[【温湿度变送器CCEWN3-10G(modbus温湿度)】]
[【火光火焰传感器模块】]
[【热电偶MAX6675(0-1000度)】]
[【甲烷传感器485型设备资料包】]
[【红外蔽障模块(黑白对管)】]
[【语音识别模块ASR01】]
[【超声波测距资料(HC-SR04)】]
[不锈钢封装温度探头线]
[人体热释电红外感应模块HC-SR501]
[倾斜模块]
[光敏电阻传感器模块]
[卡尔曼滤波AHRS模块GY955]
[寻迹模块]
[干簧管传感器模块]
[心率传感器模块]
[攀藤PM2.5传感器 PMS3003]
[攀藤PM2.5传感器 PMS7003]
[旋转角度传感器模块]
[水位传感器]
[水质PH值传感器模块]
[温湿度传感器模块HDC1080]
[温湿度传感器模块HTU21D]
[温湿度传感器模块SHT31]
[火光火焰传感器模块]
[热敏传感器模块 热敏电阻模块 温度开关 智能车配件 Arduino]
[红外避障 机器人蔽障]
[血氧浓度模块MAX30102]
[震动开关模块]
[霍尔开关传感器模块]
相关问答
汽车故障码 e1,12,c2,00,code18故障 代码[最佳回答]当汽车出现故障代码E188FF时,我们需要进行以下检查和解决方法:首先,需要检查组合传感器线路是否正常,如果出现异常,需要进行修复或更换。其次,需要...
空调显示e4是什么意思?-楼盘网[回答]空调显示e4之后主要就是表示空调的外机温度传感器出现相应的故障,当然导致外机温度传感器出现故障的原因也是非常多的,有可能是因为传感器自身出现...
故障码801222,故障码801207[回答]汽车故障代码8012B7怎么解决如果您的汽车出现了8012B7故障代码,可能是由于测量传感器线路或者右侧脚部空间温度传感器出现了问题。解决这个问题的方...
空调故障 代码 e2是什么原因?回答如下:空调故障代码E2通常表示室内温度传感器故障。这可能是由于传感器损坏、松动或线路连接问题引起的。需要检查传感器的连接是否稳固,如果连接正常,则可...
坚果pro2s距离感应器校准方法?1.手机拨号键盘输入*#*#667269#*#*2.点击,“开始校准”(注意:不要遮挡手机屏幕)3.校准期间请勿移动手机,否则会导致校准失败,校准成功后需要重新启动手机...
code89是什么故障?Code89故障码可以出现在别克英朗汽车上面,代表的意思是提示驾驶员发动机冷却系统缺失防冻液,需要添加防冻液了,必需及时添加车辆的防冻液以免造成发动机高温开...
小米11pro硬件检测?小米手机硬件检测步骤如下:1.在拨号界面输入*#*#64663#*#*2.在弹出的界面共有30项硬件测试项和一个重置测试。3.点击第一项开始硬件检测。根据测试页面内...
realmeq2pro怎么校准重力感应器 代码 ?1.进入手机系统设置界面,在下方选项中点击辅助功能。2.进入辅助功能设置界面,在下方选项中点击重力感应器和陀螺仪校准。3.点击之后弹框提示确认信息,将手机...
lg自动洗衣机 传感器 故障 代码 多少?LG自动洗衣机传感器故障代码不止一种,具体的故障代码会因不同的型号和故障类型而有所不同。常见的故障代码包括:FE(进水故障)、UE(不平衡故障)、OE(排水故...
天龙仪表盘出现Nox 传感器 故障?氧传感器故障。检测数据流的氧传感器电压值是否正常,燃油修正状态的范围。如果加热器电阻丝烧蚀,更换加热器电阻丝即可。汽车仪表盘指示灯中,有一部分指示灯作...