單片機數(shù)字濾波的算法
在單片機進(jìn)行數(shù)據(jù)采集時,會遇到數(shù)據(jù)的隨機誤差,隨機誤差是由隨機干擾引起的,其特點是在相同條件下測量同一量時,其大小和符號會現(xiàn)無規(guī)則的變化而無法預(yù)測,但多次測量的結(jié)果符合統(tǒng)計規(guī)律。為克服隨機干擾引起的誤差,硬件上可采用濾波技術(shù),軟件上可采用軟件算法實現(xiàn)數(shù)字濾波。濾波算法往往是系統(tǒng)測控算法的一個重要組成部分,實時性很強。
本文引用地址:http://2s4d.com/article/201611/321267.htm采用數(shù)字濾波算法克服隨機干擾的誤差具有以下優(yōu)點:
l
l
l
l
(1)限幅濾波算法
該運算的過程中將兩次相鄰的采樣相減,求出其增量,然后將增量的絕對值,與兩次采樣允許的最大差值A(chǔ)進(jìn)行比較。A的大小由被測對象的具體情況而定,如果小于或等于允許的最大差值,則本次采樣有效;否則取上次采樣值作為本次數(shù)據(jù)的樣本。
算法的程序代碼如下:
#define A
char data;
char filter()
{
char datanew;
datanew=get_data();
if( (datanew-data)>A||(data-datanew>A) )
else
}
說明:限幅濾波法主要用于處理變化較為緩慢的數(shù)據(jù),如溫度、物體的位置等。使用時,關(guān)鍵要選取合適的門限制A。通常這可由經(jīng)驗數(shù)據(jù)獲得,必要時可通過實驗得到。
(2)中值濾波算法
該運算的過程是對某一參數(shù)連續(xù)采樣N次(N一般為奇數(shù)),然后把N次采樣的值按從小到大排列,再取中間值作為本次采樣值,整個過程實際上是一個序列排序的過程。
算法的程序代碼如下:
#define N 11
char
{
for(count=0;count
{
}
for(i=0;i
{
}
return value_buff[(N-1)/2];
}
說明:中值濾波比較適用于去掉由偶然因素引起的波動和采樣器不穩(wěn)定而引起的脈動干擾。若被測量值變化比較慢,采用中值濾波法效果會比較好,但如果數(shù)據(jù)變化比較快,則不宜采用此方法。
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論