《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 單片機數字濾波算法,看這篇

單片機數字濾波算法,看這篇

2021-09-17
來源:EDN電子技術設計
關鍵詞: 單片機 數字濾波

  單片機主要作用是控制外圍的器件,并實現一定的通信和數據處理。但在某些特定場合,不可避免地要用到數學運算,盡管單片機并不擅長實現算法和進行復雜的運算。下面主要是介紹如何用單片機實現數字濾波

  在單片機進行數據采集時,會遇到數據的隨機誤差,隨機誤差是由隨機干擾引起的,其特點是在相同條件下測量同一量時,其大小和符號會現無規則的變化而無法預測,但多次測量的結果符合統計規律。為克服隨機干擾引起的誤差,硬件上可采用濾波技術,軟件上可采用軟件算法實現數字濾波。濾波算法往往是系統測控算法的一個重要組成部分,實時性很強。

  采用數字濾波算法克服隨機干擾的誤差具有以下優點:

  1、數字濾波無需其他的硬件成本,只用一個計算過程,可靠性高,不存在阻抗匹配問題。尤其是數字濾波可以對頻率很低的信號進行濾波,這是模擬濾波器做不到的。

  2、數字濾波使用軟件算法實現,多輸入通道可共用一個濾波程序,降低系統開支。

  3、只要適當改變濾波器的濾波程序或運算,就能方便地改變其濾波特性,這對于濾除低頻干擾和隨機信號會有較大的效果。

  4、在單片機系統中常用的濾波算法有限幅濾波法、中值濾波法、算術平均濾波法、加權平均濾波法、滑動平均濾波等。

  (1)限幅濾波算法

  該運算的過程中將兩次相鄰的采樣相減,求出其增量,然后將增量的絕對值,與兩次采樣允許的最大差值A進行比較。A的大小由被測對象的具體情況而定,如果小于或等于允許的最大差值,則本次采樣有效;否則取上次采樣值作為本次數據的樣本。

  算法的程序代碼如下:

  #defineA //允許的最大差值

  chardata; //上一次的數據

  char filter()

  {

  chardatanew; //新數據變量

  datanew=get_data(); //獲得新數據變量

  if((datanew-data)>A||(data-datanew>A))

  return data;

  else

  returndatanew;

  }

  說明:限幅濾波法主要用于處理變化較為緩慢的數據,如溫度、物體的位置等。使用時,關鍵要選取合適的門限制A。通常這可由經驗數據獲得,必要時可通過實驗得到。

  (2)中值濾波算法

  該運算的過程是對某一參數連續采樣N次(N一般為奇數),然后把N次采樣的值按從小到大排列,再取中間值作為本次采樣值,整個過程實際上是一個序列排序的過程。

  算法的程序代碼如下:

  #define N11 //定義獲得的數據個數

  char filter()

  {

  charvalue_buff[N]; //定義存儲數據的數組

  char count,i,j,temp;

  for(count=0;count

  {

  value_buf[count]=get_data();

  delay(); //如果采集數據比較慢,那么就需要延時或中斷

  }

  for(j=0;j

  {

  for(value_buff[i]>value_buff[i+1]

  {

  temp=value_buff[i];

  value_buff[i]=value_buff[i+1];

  value_buff[i+1]=temp;

  }

  }

  returnvalue_buff[(N-1)/2];

  }

  說明:中值濾波比較適用于去掉由偶然因素引起的波動和采樣器不穩定而引起的脈動干擾。若被測量值變化比較慢,采用中值濾波法效果會比較好,但如果數據變化比較快,則不宜采用此方法。

  (3)算術平均濾波算法

  該算法的基本原理很簡單,就是連續取N次采樣值后進行算術平均。

  算法的程序代碼如下:

  char filter()

  {

  int sum=0;

  for(count=0;count

  {

  sum+=get_data();

  delay():

  }

  return (char)(sum/N);

  }

  說明:算術平均濾波算法適用于對具有隨機干擾的信號進行濾波。這種信號的特點是有一個平均值,信號在某一數值附近上下波動。信號的平均平滑程度完全到決于N值。當N較大時,平滑度高,靈敏度低;當N較小時,平滑度低,但靈敏度高。為了方便求平均值,N一般取4、8、16、32之類的2的整數冪,以便在程序中用移位操作來代替除法。

  (4)加權平均濾波算法

  由于前面所說的“算術平均濾波算法”存在平滑度和靈敏度之間的矛盾。為了協調平滑度和靈敏度之間的關系,可采用加權平均濾波。它的原理是對連續N次采樣值分別乘上不同的加權系數之后再求累加,加權系數一般先小后大,以突出后面若干采樣的效果,加強系統對參數變化趨勢的認識。各個加權系數均小于1的小數,且滿足總和等于1的結束條件。這樣加權運算之后的累加和即為有效采樣值。其中加權平均數字濾波的數學模型是:

  式中:D為N個采樣值的加權平均值:XN-i為第N-i次采樣值;N為采樣次數;Ci為加權系數。加權系數Ci體現了各種采樣值在平均值中所占的比例。一般來說采樣次數越靠后,取的比例越大,這樣可增加新采樣在平均值中所占的比重。加權平均值濾波法可突出一部分信號抵制另一部分信號,以提高采樣值變化的靈敏度。

  樣例程序代碼如下:

  char codejq[N]={1,2,3,4,5,6,7,8,9,10,11,12}; //code數組為加權系數表,存在程序存儲區

  char codesum_jq=1+2+3+4+5+6+7+8+9+10+11+12;

  char filter()

  {

  char count;

  char value_buff[N];

  int sum=0;

  for(count=0;count

  {

  value_buff[count]=get_data();

  delay();

  }

  for(count=0;count

  sum+=value_buff[count]*jq[count];

  return(char)(sum/sum_jq);

  }

  (5)滑動平均濾波算法

  以上介紹和各種平均濾波算法有一個共同點,即每獲取一個有效采樣值必須連續進行若干次采樣,當采速度慢時,系統的實時得不到保證。這里介紹的滑動平均濾波算法只采樣一次,將一次采樣值和過去的若干次采樣值一起求平均,得到的有效采樣值即可投入使用。如果取N個采樣值求平均,存儲區中必須開辟N個數據的暫存區。每新采集一個數據便存入暫存區中,同時去掉一個最老數據,保存這N個數據始終是最新更新的數據。采用環型隊列結構可以方便地實現這種數據存放方式。

  程序代碼如下:

  char value_buff[N];

  char i=0;

  char filter()

  {

  char count;

  int sum=0;

  value_buff[i++]=get_data();

  if(i==N)

  i=0;

  for(count=0;count

  sum=value_buff[count];

  return (char)(sum/N);

  }

  (6)低通濾波

  將普通硬件RC低通濾波器的微分方程用差分方程來表求,變可以采用軟件算法來模擬硬件濾波的功能,經推導,低通濾波算法如下:

  Yn=a* Xn+(1-a) *Yn-1

  式中 Xn——本次采樣值

  Yn-1——上次的濾波輸出值;

  ,a——濾波系數,其值通常遠小于1;

  Yn——本次濾波的輸出值。

  由上式可以看出,本次濾波的輸出值主要取決于上次濾波的輸出值(注意不是上次的采樣值,這和加權平均濾波是有本質區別的),本次采樣值對濾波輸出的貢獻是比較小的,但多少有些修正作用,這種算法便模擬了具體有教大慣性的低通濾波器功能。濾波算法的截止頻率可用以下式計算:

  fL=a/2Pit pi為圓周率3.14…

  式中 a——濾波系數;

  , t——采樣間隔時間;

  例如:當t=0.5s(即每秒2次),a=1/32時;

  fL=(1/32)/(2*3.14*0.5)=0.01Hz

  當目標參數為變化很慢的物理量時,這是很有效的。另外一方面,它不能濾除高于1/2采樣頻率的干攪信號,本例中采樣頻率為2Hz,故對1Hz以上的干攪信號應采用其他方式濾除,

  低通濾波算法程序于加權平均濾波相似,但加權系數只有兩個:a和1-a。為計算方便,a取一整數,1-a用256-a,來代替,計算結果舍去最低字節即可,因為只有兩項,a和1-a,均以立即數的形式編入程序中,不另外設表格。雖然采樣值為單元字節(8位A/D)。為保證運算精度,濾波輸出值用雙字節表示,其中一個字節整數,一字節小數,否則有可能因為每次舍去尾數而使輸出不會變化。

  設Yn-1存放在30H(整數)和31H(小數)兩單元中,Yn存放在32H(整數)和33H(小數)中。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲第一福利视频| aa日韩免费精品视频一| 最新国产精品拍自在线播放| 国产中文一区| 国产日韩欧美精品综合| 国产精品你懂得| 欧美午夜宅男影院在线观看| 欧美区日韩区| 欧美日本二区| 欧美日韩二区三区| 欧美三级免费| 欧美视频在线一区二区三区| 欧美视频网址| 国产精品区二区三区日本| 欧美午夜电影网| 欧美三级在线播放| 国产精品国产自产拍高清av| 国产精品jvid在线观看蜜臀 | 国产精品日日做人人爱| 欧美午夜精品| 国产精品网站一区| 国产伦精品免费视频| 国产偷国产偷亚洲高清97cao| 国产美女精品一区二区三区| 国产视频精品免费播放| 狠狠色噜噜狠狠色综合久| 一区二区亚洲| 亚洲精品日韩激情在线电影| 亚洲美女免费精品视频在线观看| 日韩视频在线观看免费| 在线视频欧美日韩| 亚洲欧美大片| 欧美综合国产| 亚洲卡通欧美制服中文| 一区二区三区欧美亚洲| 亚洲欧美中日韩| 久久精品国产免费| 欧美成人午夜视频| 欧美三区免费完整视频在线观看| 国产精品女同互慰在线看| 国产亚洲精品久久久久久| 极品少妇一区二区三区精品视频| 亚洲国产日韩欧美在线99 | 欧美夜福利tv在线| 久久婷婷av| 欧美精品一区二区三区在线看午夜| 欧美日韩成人综合天天影院| 国产精品丝袜91| 在线观看视频一区二区欧美日韩| 亚洲精品乱码久久久久久按摩观| 亚洲一区二区三区视频| 久久福利毛片| 日韩一级精品| 欧美呦呦网站| 欧美激情一区二区三区在线视频观看 | 欧美色图五月天| 国产日本欧洲亚洲| 亚洲国产精品va| 亚洲一区二区精品在线观看| 亚洲第一精品久久忘忧草社区| 99人久久精品视频最新地址| 欧美一区二区久久久| 免费久久99精品国产| 国产精品麻豆成人av电影艾秋| 精品成人国产在线观看男人呻吟| 一区二区三区免费在线观看| 久久精品国产精品亚洲精品| 亚洲一区二区三区国产| 久久综合伊人| 国产精品一级| 亚洲精品在线视频观看| 欧美在线视频全部完| 在线中文字幕不卡| 久久亚洲欧美| 国产精品久久久久久户外露出| 影音先锋在线一区| 亚洲欧美日韩国产综合精品二区| 亚洲日本中文字幕| 久久国产视频网| 欧美日韩精品在线| 在线播放一区| 午夜在线一区二区| 一区二区三区四区蜜桃| 久久手机免费观看| 国产精品一区二区在线| 亚洲精品免费观看| 亚洲国产精品专区久久| 欧美在线关看| 国产精品播放| 日韩午夜在线播放| 亚洲精品在线观| 久久综合久久综合久久| 国产日本欧美一区二区| 亚洲无人区一区| 中国女人久久久| 欧美精品1区| 亚洲福利视频网站| 欧美自拍丝袜亚洲| 国产精品成人av性教育| 亚洲精品欧美专区| 久久精品国产77777蜜臀| 国产精品二区二区三区| 亚洲精品裸体| 99国产精品国产精品久久| 麻豆国产精品va在线观看不卡| 国产美女精品视频| 亚洲一区欧美激情| 亚洲伊人第一页| 欧美视频网址| 亚洲精品欧美极品| 亚洲开发第一视频在线播放| 美女脱光内衣内裤视频久久网站| 国产日韩精品综合网站| 亚洲午夜精品| 欧美影院成人| 欧美色图一区二区三区| 亚洲国产综合91精品麻豆| 久久xxxx精品视频| 久久福利电影| 国产欧美一区二区三区在线老狼| 中文一区二区在线观看| 亚洲综合导航| 国产精品久久九九| 一二三区精品福利视频| 亚洲视频在线播放| 欧美四级伦理在线| av成人免费在线| 亚洲永久免费精品| 国产精品久久久一区二区三区| 一区二区三区国产| 亚洲一二三区视频在线观看| 国产精品成人观看视频免费| 一区二区三区鲁丝不卡| 亚洲男人av电影| 国产精品人人做人人爽人人添| 亚洲一区二区三| 久久av一区二区三区漫画| 国产午夜精品全部视频播放| 久久精彩视频| 欧美电影免费观看高清完整版| 亚洲精品乱码久久久久久日本蜜臀| 一区二区三区日韩精品| 国产精品亚洲аv天堂网| 亚洲欧美日本伦理| 久久精品免视看| 在线观看精品| 99视频日韩| 国产精品高清网站| 午夜精品视频在线| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲高清成人| 国产精品99久久久久久久vr| 国产精品地址| 欧美一区二区三区啪啪| 免费不卡在线视频| av成人天堂| 久久久国产精彩视频美女艺术照福利 | 亚洲三级免费| 亚洲欧美日韩直播| 狠狠色丁香久久婷婷综合_中| 亚洲精品国精品久久99热| 欧美日韩调教| 亚洲欧美精品在线观看| 久久综合成人精品亚洲另类欧美| 亚洲激情在线激情| 午夜精品免费视频| 在线观看日产精品| 亚洲图片在区色| 国产一区在线观看视频| 亚洲免费av网站| 国产精品中文在线| 亚洲欧洲一区二区三区| 欧美日韩国产一区| 亚洲欧美一区二区激情| 欧美 亚欧 日韩视频在线| 亚洲深夜福利| 久久亚洲精品视频| 中文在线不卡| 欧美r片在线| 亚洲免费小视频| 欧美高清在线视频| 亚洲欧美日韩一区二区在线 | 91久久久精品| 国产精品免费久久久久久| 亚洲国产天堂久久国产91| 国产精品久久久久久久9999| 亚洲高清不卡在线观看| 欧美色图天堂网| 亚洲国产成人一区| 国产精品欧美日韩| 日韩午夜在线播放| 国产综合色在线| 亚洲综合国产精品| 亚洲激情二区| 久久精品一区二区三区四区| 夜夜嗨av一区二区三区网页 | 国产日韩欧美在线观看| 一本色道久久综合一区| 激情欧美一区二区三区在线观看| 亚洲欧美春色|