国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

一種基于AVR單片機的工頻干擾濾除快速算法

發布時間:2010-11-1 21:46    發布者:eetech
關鍵詞: AVR , 單片機 , 干擾 , 工頻 , 濾除
工頻干擾廣泛存在各種工業現場中,其產生的途徑主要包括輸電饋線、照明設備、發動機以及各種電子儀器設備等。一般可以通過濾波電路消除工頻干擾,但這必將增加硬件結構的復雜程度。實際上,還可以采用數字信號處理的相關算法,通過軟件濾波器濾除工頻干擾。軟件濾波算法的采用,無疑會在簡化電路結構的同時,使系統的硬件資源得到更加充分的利用,并達到降低產品成本的要求。  

AVR單片機Atmel公司生產的8位精簡指令集(RISC)單片機。與同類單片機相比,在運算速度、外設資源、靈活性等方面性能均衡,性價比較高。AVR單片機適合C語言開發,Mega系列AVR單片機還有一個內部硬件乘法器單元。這些特點都為軟件濾波器的實現提供了極大的便利。  

1 濾波算法  

常用的單片機濾波算法包括中值濾波、增色值濾波、滑動平均以及復合濾波算法等。工頻干擾的頻率范圍在50Hz附近,可以采用一個截止頻率遠低于50Hz的低通濾波器來濾除工頻干擾。





假設輸入信號x(t),輸出信號y(t),則一個RC低通濾波器表達式為:τ[dy(t)]/dt+y(t)=x(t),其中τ為時間常數。

連續時間信號經過采樣后成為離散時間信號,低通濾波器的表達式也變為:  

τ[y(t)-y(k-1)]/ Δt+y(k)=x(t)     (1)  

Δt為采樣時間間隔,k為歸一化時間。  

由(1)式可得:  

y(k)=[1/(1+τ/Δt)]x(k)+(τ/Δt)/(1+τ/Δt)[y(k-1)    (2)  
令a=(τ/Δt)(1+τ/Δt),代入(2)式,  
y(k)=(1-a)%26;#183;x(k)+a%26;#183;y(k-1)     (3)  
對(3)式進行z變換,可得:  
Y(z)=(1-a) %26;#183;X(z)+a%26;#183;z-1%26;#183;Y(z)  

所以系統的傳遞函數為:  




  
假設采樣頻率Fs=500Hz,a分別取0.8、0.85、0.9、0.95,代入(4)式,利用matlab畫出頻率響應曲線,如圖1。其中50Hz頻率對應的幅度衰減見表1。

表1 50Hz幅度衰減  

a
衰減

0.8
-9.4dB

0.85
-11.9dB

0.9
-15.5dB

0.95
-21.6dB

2 定點小數表達方式  

為了精確構造數字濾波器,經常要用到浮點數據和系統。在進行浮點數乘法運算時,針對AVR單片機設計的C編譯器例如AVR-GCC,需要加入額外的數學庫函數進行編譯。而這會使編譯后程序的代碼量增加、處理時間加長、處理器的開銷也隨之增加。為了更大限度地降低系統開銷,提高程序效率,采用定點小數表示形式進行乘法運算是最佳選擇。  

AVR單片機是一種8位精簡指令集(RISC)單片機。其中megaAVR系列內部都帶有一個硬件乘法器,計算一次8位乘8位的定點乘法只需2個時鐘周期。因此采用8位定點采樣數據乘以8位系數的定點乘法方式完成濾波器算法是最高效的。

低通濾波處理涉及的運算形式為一個純小數系數和一個已知數據相乘再相加。因此將系數采用定點小數的表示形式,對于提高算法速度是至關重要的。  

可以定義一種8位定點小數表示形成——Q8,其各位權系數如下:


  
Q8數的表示范圍從0到1-2 -8=0.99609375,每兩個數之間的間隔是2 -8(0.00390625),其所能表示的純小數共有2 8=256個。例如11011000就表示2 -1+2 -2+2 -4+2 -5=0.84375,而11011001就是表示2 -1+2 -2+2 -4+2 -5+2 -8=0.84765625,因此0.84375和0.84765625之間的純小數只能用這兩個數中的一個近似表示了。這對于乘法計算的精度有一定的影響,但是由于濾波公式(3)中的系數a和(1-a)都是常數,在整體性能穩定的情況下,系數微小的不確定性對濾波器整體性能并沒有太大的影響。  

3 分配系數法原理  

從(3)式可知,濾波算法可以用迭代計算實現,為保證每個新的輸出值都可以作為下次計算的輸入值,必須使輸出值和輸入值的位寬度一致。必須使輸出值和輸入值的位寬度一致。AVR單片機內部硬件乘法器的輸出結果為16位,兩次乘法運算的結果還要進行加法運算,其結果很有可能超過16位寬度。如果要進行迭代計算,就要將乘加運算的結果轉化成8位表示方式。一種解決方法是用查表法實現乘法計算,這樣運算結果就直接表達成8位定點數形式,不用進行表示方式的轉化,但是這種方案要占用額外的硬件在座空間構造一張查找表。



可以從逆向進行思考:由(3)式可知,每個新的輸出值y(k)都與上一次的輸出值y(k-1) 和新的輸入值x(k)有關。y(k-1)和x(k)都是8位的,因此最大值為0xFF。為了使a%26;#215;y(k-1)+(1-a) %26;#215;x(k)不超過0xFFFF,兩個系統a和(1-a)的和不能超過0xFFFF/0xFF=0x101。實際上,a+(1-a)等于"1",因此這里的0x101就可以看作“1”。如果取a=0.9,那么對應地將0x101平均分成10份,取其中的9份,即0x101%26;#215;0.9近似等于0xE7,相應地0.1就等于0x101-0xE7=0x1A。這里的0xE7可以近似被認為是0.9的一種定點Q8數表示形式,而0.1的定點Q8數表示形式就是0x1A。由于濾波器系數a和(1-a)采用了Q8數的表示形式這種將16位乘加運算結果轉化為8定點數表示形式的工作就變得各簡單了,只需通過移位運算,取y(k)的高8位即可,對應的C語言代碼為:  

y(k)=(char)(y(k)>>8)  

在C語言編程處理中,并不需要建立一個數組來存儲y(k)的值,而只需定義兩個unsigned char型的變量分別存儲y(k-1)和x(k)。當乘加計算a%26;#215;y(k-1)+(1-a)%26;#215;x(k)完成后,將結果轉化為8位定點數形式,再將其賦值給y(k-1)所對應的變量即可。因此采用迭代方式進行乘加運算后,整個運算過程只需要兩個變量和兩個常數參加即可。





通過這種處理,y(k)就可以作為計算下一次輸出值y(k+1)的一個已知量,并繼續與Q8數形式的濾波器系數相乘,得到新的輸出值。這種處理方式簡化了乘加運算的完成過程,節省了系統硬件資源,并降低了處理器開銷。  

4 采樣時間的控制  

采用單片機進行數字信號處理,一種有效而準確的數據采集方式就是通過計數器中斷服務程序(ISR)控制AD對輸入信號進行精確采樣。但是(圖2)中斷服務程序(ISR)的開銷影響了AD采樣時間間隔的精確度,同時如果中斷服務程序(ISR)的開銷過大,必然導致AD的最高采樣頻率的降低。因此,要想獲得精確的采樣頻率,就必須在盡量減少中斷服務程序開銷的前提下,適當調整計數器中斷的時間間隔。這可以通過調整OCR0的預置數來完成。  

5 算法流程圖  

濾波算法是通過中斷服務程序(ISR)來完成的,整個應用程序的主函數main()主要負責初始化計數器中斷,并處理其它應用。整個程序的流程圖如圖3所示。  

本算法的C語言代碼(附錄A)經過AVR-GCC編譯器的編譯后,“.text”段只有310個字節,大大節省了單片機的flash空間。




6 基于VMLAB的濾波系統仿真實現  

VMLAB的全稱為:Visual Micro Lab。它針對AVR系列單片機和ST62系列單片機設計,是一個單片機的虛擬原型框架,可以提供給用戶一個真正意義上的虛擬微控制器(MCU)設計實驗室。它具有強大的多窗口、多文件的編輯器,微控制器的集成開發環境,擁有一系列的集成開發工具,圖形界面的調試器,混合模式的模擬-數字電路仿真器,代碼質量檢測器等。基于MCU,它可以仿真出包括模擬元器件在內的更多外圍設備,并具有交互式器件模擬仿真功能。  

假設有用信號2V大小的直流信號,工頻干擾是峰峰值為1V,頻率為50Hz的正弦波,建立單片機AD的輸入信號表示形式如下:  

2+0.5 sin(2π%26;#215;50%26;#215;t)  
VMLAB通過工程文件來管理和控制各種仿真信息、硬件連接以及顯示I/O電壓波形等。根據本算法的特點,采用Atmega16作為目標單片機,時鐘選為8MHz,建立工程文件。恰當設置OCR0等存儲,使計數器比較匹配中斷的時間間隔約為2ms,這樣AD的采樣頻率Fs近似認為等于500Hz。經過仿真,對比結果如表3。

表3 Fs=500Hz時仿真結果對比  

a
DA輸出紋波峰峰值
衰減幅度
DA輸出均值
收斂時間

0.8
0.36V
-8.8dB
1.99V
約為100ms

0.85
0.28V
-11.1dB
1.99V
約為120ms

0.9
0.2V
-14dB
1.98V
約為145ms

0.95
0.1V
-20dB
1.95V
約為210ms

從表3可以看出:隨著α的增大,算法收斂的時間變長,同時50Hz對應的衰減幅度增加,衰減的幅度值和理論推導基本一致。另外,當a=0.95時,DA輸出的均值變小。這主要是進行循環迭代運算時,需要將16位的變量轉化為8位表示形式所導致的。在有用信號失真較小的情況下,為使濾波器達到降低工頻干擾的最佳效果,必須恰當選擇a值。經過以上的仿真試驗可以發現,當a=0.9時,衰減幅度、DA輸出均值和算法收斂時間表現比較均衡,可以作為一般情況下的選擇值。





將VMLAB中虛擬示波器的顯示數據導出到一個*.cvs文件中,用matlab讀出這些數據,并畫出不同a值對應的輸出響應,如圖4。從圖4可以清晰看出不同a值下算法的性能變化的大致走向。  

將AD的采樣間隔設置為4ms,對應的采樣頻率Fs就變為250Hz,其它條件不變。通過VMLAB進行仿真,對比結果如表4、圖5。

表4 Fs=250Hz時不同a值仿真結果對比  

a
DA輸出紋波峰峰值
衰減幅度
DA輸出均值
收斂時間

0.8
0.20V
-14.0dB
1.98V
約為220ms

0.85
0.16V
-15.9dB
1.98V
約為240ms

0.9
0.14V
-17.1dB
1.97V
約為270ms

0.95
0.06V
-24.4dB
1.95V
大于500ms

對比Fs=500Hz的情況,隨著采樣頻率Fs降低,50Hz頻率的幅度衰減值會逐漸增加。這主要是因為隨著采樣頻率降低,低通濾波器的截至頻率fc也隨之降低,相應的濾波器在50Hz處的衰減也就越來越低。根據奈奎斯特低通采樣定理,當采樣頻率小于100Hz時,由于信號頻譜混疊,濾波器對50Hz信號的濾波效果將會變差。如果只是對緩變信號進行采樣,采樣頻率比100Hz稍大即可。但是隨著采樣頻率的降低,濾波算法的收斂時間也會增加。因此必須在算法的濾波性能和收斂時間上進行折衷考慮。  

本文提出的分配系數法設計數字濾波器,算法速度快、代碼效率高、濾波效果理想,是一種實用的數字濾波器設計方法,體現了將算法嵌入到具體硬件的思想。另一方面,將定點小數的表示形式進行適當擴展,這個算法還可以用于10位或16位AD轉換精度的應用場合。
本文地址:http://m.qingdxww.cn/thread-35757-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 牛牛视频在线 | 亚洲一区二区三区高清不卡 | 四虎午夜影院 | 九九精品在线观看 | 精品国产成人三级在线观看 | 亚洲h视频 | 久久精品99无色码中文字幕 | 国产精品线在线精品国语 | 一级欧美片magnet | 天天色综合久久 | 精品视频一区二区三区在线观看 | 亚州欧美 | 欧美精品观看 | 精品一区二区在线欧美日韩 | 免费观看四虎精品成人 | 午夜色婷婷 | 日韩中文字幕在线观看视频 | 欧美人与动交tv | 亚洲手机中文字幕 | 成人久久久观看免费毛片 | 日日操日日摸 | 欧美成人一区亚洲一区 | 99久久综合狠狠综合久久 | 97在线观看成人免费视频 | 一级毛片免费观看不卡视频 | 欧美三级超在线视频 | 亚洲视频在线观看一区 | 精品视频在线视频 | 国产一级一级一级成人毛片 | 国产精品手机视频 | 国产精品自在欧美一区 | 免费一级毛片不卡在线播放 | 欧美精品手机在线 | 免费精品精品国产欧美在线 | 黄色小视频在线播放 | 日韩高清专区 | 亚洲第一狼人社区 | 黄页视频在线观看免费 | 免费观看老外特级毛片 | 亚洲一区在线视频观看 | 国产麻豆视频网站 |