0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)開(kāi)發(fā)中,傳感器的數(shù)據(jù)處理算法

jf_pJlTbmA9 ? 來(lái)源:STM32嵌入式開(kāi)發(fā) ? 作者:STM32嵌入式開(kāi)發(fā) ? 2023-10-17 17:35 ? 次閱讀

傳感器使用中,我們常常需要對(duì)傳感器數(shù)據(jù)進(jìn)行各種整理,讓?xiě)?yīng)用獲得更好的效果,以下介紹幾種常用的簡(jiǎn)單處理方法:

加權(quán)平滑:平滑和均衡傳感器數(shù)據(jù),減小偶然數(shù)據(jù)突變的影響。
抽取突變:去除靜態(tài)和緩慢變化的數(shù)據(jù)背景,強(qiáng)調(diào)瞬間變化。
簡(jiǎn)單移動(dòng)平均線:保留數(shù)據(jù)流最近的K個(gè)數(shù)據(jù),取平均值。

下面,具體介紹一下這3種處理方法。

1、加權(quán)平滑

使用算法如下:

(新值) = (舊值)*(1 - a) + X * a其中a為設(shè)置的權(quán)值,X為最新數(shù)據(jù),程序?qū)崿F(xiàn)如下:

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;
}

2、抽取突變

此算法采用上面加權(quán)平滑的逆算法,實(shí)現(xiàn)代碼如下:

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];
}

3、簡(jiǎn)單移動(dòng)平均線

這個(gè)算法,保留傳感器數(shù)據(jù)流中最近的K個(gè)數(shù)據(jù),返回它們的平均值。k表示平均“窗口”的大小,實(shí)現(xiàn)代碼如下:

public class MovingAverage{
private float circularBuffer[]; //保存?zhèn)鞲衅髯罱腒個(gè)數(shù)據(jù)
private float avg; //返回到傳感器平均值
private float sum; //數(shù)值中傳感器數(shù)據(jù)的和
private float circularIndex; //傳感器數(shù)據(jù)數(shù)組節(jié)點(diǎn)位置
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){
return 0;
}
return curIndex + 1;
}
public void pushValue(float x){
if(0 == count++){
primeBuffer(x);
}
float lastValue = circularBuffer[circularIndex];
circularBuffer[circularIndex] = x; //更新窗口中傳感器數(shù)據(jù)
sum -= lastValue; //更新窗口中傳感器數(shù)據(jù)和
sum += x;
avg = sum / circularBuffer.length; //計(jì)算得傳感器平均值
circularIndex = nextIndex(circularIndex);
}
};++i){>

來(lái)源:STM32嵌入式開(kāi)發(fā)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理

審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2557

    文章

    51747

    瀏覽量

    758904
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6050

    文章

    44701

    瀏覽量

    641289
  • 數(shù)據(jù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    623

    瀏覽量

    28736
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    濕度傳感器單片機(jī)檢測(cè)電路

    濕度傳感器單片機(jī)檢測(cè)電路濕度傳感器單片機(jī)檢測(cè)電路原理說(shuō)明一、 濕度傳感器檢測(cè)需要注意的問(wèn)題高分子濕度
    發(fā)表于 04-02 11:54

    4~20mA傳感器數(shù)據(jù)處理新途徑

    控制的許多應(yīng)用場(chǎng)合,都要使用傳感器來(lái)將單片機(jī)不能直接測(cè)量的信號(hào)換成單片機(jī)可以處理的電模擬信號(hào),如壓力傳感器,溫度
    發(fā)表于 12-16 10:31

    觸摸屏數(shù)據(jù)處理算法研究及實(shí)現(xiàn)

    觸摸屏數(shù)據(jù)處理算法研究及實(shí)現(xiàn)
    發(fā)表于 08-15 16:32

    電子稱重顯示數(shù)據(jù)處理方法

    顯示為例,介紹在電子秤利用MCS-51系列單片機(jī)進(jìn)行數(shù)據(jù)處理的方法.更多詳情:http://www.wenjunhu.com/soft/31/2011/2011041919544
    發(fā)表于 11-17 16:58

    如何去使用數(shù)字信號(hào)處理算法

    文章背景一直想學(xué)習(xí)一下數(shù)字信號(hào)處理算法,而不是每次遇到數(shù)據(jù)處理就求平均,求最值,看容差,做滑動(dòng)窗。。。數(shù)字信號(hào)處理算法已經(jīng)很成熟了,但網(wǎng)上大部分還是用matlab跑仿真,設(shè)計(jì)幾個(gè)不同頻率的sin信號(hào)
    發(fā)表于 08-09 08:23

    FCS的智能傳感器數(shù)據(jù)處理方法

    FCS 是工業(yè)過(guò)程控制系統(tǒng)的必然趨勢(shì),就系統(tǒng)的智能傳感器進(jìn)行結(jié)構(gòu)分析,并根據(jù)其特點(diǎn),論述并分析了其數(shù)據(jù)處理方法的特性,并提出了一些具有先進(jìn)性的數(shù)據(jù)處理方法,對(duì)
    發(fā)表于 07-09 13:55 ?18次下載

    觸摸屏數(shù)據(jù)處理算法

    觸摸屏數(shù)據(jù)處理算法
    發(fā)表于 02-11 10:35 ?57次下載
    觸摸屏<b class='flag-5'>數(shù)據(jù)處理算法</b>

    基于單片機(jī)的氣敏傳感器測(cè)試系統(tǒng)

    本文介紹一種新型的氣敏傳感器測(cè)試系統(tǒng)的設(shè)計(jì)方法。該系統(tǒng)基于具有語(yǔ)音處理功能的凌陽(yáng)SPCE061A單片機(jī),能同時(shí)進(jìn)行多路傳感器測(cè)試、過(guò)程控制,及用虛擬儀器完成
    發(fā)表于 05-13 16:39 ?145次下載
    基于<b class='flag-5'>單片機(jī)</b>的氣敏<b class='flag-5'>傳感器</b>測(cè)試系統(tǒng)

    智能儀器的數(shù)據(jù)處理算法

    測(cè)量精度和可靠性是儀器的重要指標(biāo),引入數(shù)據(jù)處理算法后,使許多原來(lái)靠硬件電路難以實(shí)現(xiàn)的信號(hào)處理問(wèn)題得以解決,從而克服和彌補(bǔ)了包括傳感器在內(nèi)的各個(gè)測(cè)量環(huán)節(jié)硬件本身的
    發(fā)表于 12-01 16:06 ?93次下載
    智能儀器的<b class='flag-5'>數(shù)據(jù)處理算法</b>

    基于部分存儲(chǔ)和選擇性加載的數(shù)據(jù)處理算法

    根據(jù)電能質(zhì)量系統(tǒng)監(jiān)測(cè)數(shù)據(jù)海量化的趨勢(shì),提出了一種基于部分存儲(chǔ)和選擇性加載的數(shù)據(jù)處理算法,徹底解決了現(xiàn)有數(shù)據(jù)處理算法重復(fù)排序和多余
    發(fā)表于 12-19 18:50 ?0次下載
    基于部分存儲(chǔ)和選擇性加載的<b class='flag-5'>數(shù)據(jù)處理算法</b>

    使用PIC單片機(jī)開(kāi)發(fā)的被動(dòng)紅外傳感器模塊的報(bào)警

    在本文中,單片機(jī)開(kāi)發(fā)工程師們分享了一個(gè)使用PIC單片機(jī)開(kāi)發(fā)的被動(dòng)紅外(PIR)傳感器模塊的報(bào)警
    發(fā)表于 06-29 10:30 ?2866次閱讀
    使用PIC<b class='flag-5'>單片機(jī)</b><b class='flag-5'>開(kāi)發(fā)</b>的被動(dòng)紅外<b class='flag-5'>傳感器</b>模塊的報(bào)警<b class='flag-5'>器</b>

    淺析單片機(jī)開(kāi)發(fā)傳感器數(shù)據(jù)處理算法

    傳感器使用,我們常常需要對(duì)傳感器數(shù)據(jù)進(jìn)行各種整理,讓?xiě)?yīng)用獲得更好的效果,以下介紹幾種常用的簡(jiǎn)單處理方法: 加權(quán)平滑:平滑和均衡
    的頭像 發(fā)表于 11-01 14:13 ?2427次閱讀
    淺析<b class='flag-5'>單片機(jī)</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>中</b><b class='flag-5'>傳感器</b>的<b class='flag-5'>數(shù)據(jù)處理算法</b>

    單片機(jī)車道線檢測(cè)模型(4)——圖像處理算法

    單片機(jī)車道線檢測(cè)模型(4)——圖像處理算法
    發(fā)表于 11-16 18:06 ?20次下載
    <b class='flag-5'>單片機(jī)</b>車道線檢測(cè)模型(4)——圖像<b class='flag-5'>處理算法</b>

    紅外雨量計(jì)(光學(xué)雨量傳感器)不同雨量場(chǎng)景如何優(yōu)化數(shù)據(jù)處理算法

    紅外雨量計(jì)(光學(xué)雨量傳感器)不同雨量場(chǎng)景如何優(yōu)化數(shù)據(jù)處理算法 紅外雨量計(jì)是一種常用于雨量觀測(cè)和監(jiān)測(cè)的儀器。它通過(guò)感測(cè)雨滴落入雨斗的時(shí)間和數(shù)量,來(lái)計(jì)算出雨量數(shù)據(jù)。在不同的雨量場(chǎng)景下,紅外雨量計(jì)
    的頭像 發(fā)表于 08-16 13:27 ?692次閱讀
    紅外雨量計(jì)(光學(xué)雨量<b class='flag-5'>傳感器</b>)不同雨量場(chǎng)景如何優(yōu)化<b class='flag-5'>數(shù)據(jù)處理算法</b>

    八位單片機(jī)的大數(shù)處理算法及在數(shù)控的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《八位單片機(jī)的大數(shù)處理算法及在數(shù)控的應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 10-25 10:09 ?0次下載
    八位<b class='flag-5'>單片機(jī)</b>的大數(shù)<b class='flag-5'>處理算法</b>及在數(shù)控<b class='flag-5'>中</b>的應(yīng)用