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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

傳感器使用中,我們常常需要對傳感器數(shù)據(jù)進行各種整理,讓應用獲得更好的效果,以下介紹幾種常用的簡單處理方法:

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

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

1、加權平滑

使用算法如下:

(新值) = (舊值)*(1 - a) + X * a其中a為設置的權值,X為最新數(shù)據(jù),程序實現(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、抽取突變

此算法采用上面加權平滑的逆算法,實現(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、簡單移動平均線

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

public class MovingAverage{
private float circularBuffer[]; //保存?zhèn)鞲衅髯罱腒個數(shù)據(jù)
private float avg; //返回到傳感器平均值
private float sum; //數(shù)值中傳感器數(shù)據(jù)的和
private float circularIndex; //傳感器數(shù)據(jù)數(shù)組節(jié)點位置
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; //計算得傳感器平均值
circularIndex = nextIndex(circularIndex);
}
};++i){>

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

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

    關注

    2542

    文章

    50315

    瀏覽量

    750351
  • 單片機
    +關注

    關注

    6026

    文章

    44459

    瀏覽量

    631244
  • 數(shù)據(jù)處理

    關注

    0

    文章

    565

    瀏覽量

    28484
收藏 人收藏

    評論

    相關推薦

    濕度傳感器單片機檢測電路

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    使用PIC單片機開發(fā)的被動紅外傳感器模塊的報警

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

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

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

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

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

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

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

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

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