一、引言 近一、二十年來,單片機以其體積小、價格低、功能強的優點而廣泛應用于各種測控系統中。但是單片機系統的輸入信號總是存在著不同形式和程度的噪聲和干擾,這給準確測控帶來了一定的難度。采用濾波電路是削弱和消除這些干擾信號的方法之一。對于大多數高頻干擾信號,硬件濾波的方法能起到很好的作用。但對于一些特殊的干擾信號,采用硬件電路濾波則效果不大。其中有一類干擾具有以下形式:干擾的幅值與實際采樣信號的幅值相差不大,甚至大于采樣信號的幅值;干擾只出現在實際信號工作之前或之后,在系統真正工作時并不與采樣信號產生疊加;干擾的作用時間比系統實際所需信號的作用時間小得多(至少相差一個數量級)。此類干擾不同于一般的高頻干擾,利用硬件方法難以消除。針對這種干擾,我們在設計生鐵團礦壓力實驗儀中采用了一種軟件方法,來消除它的影響。這種方法借助單片機中的定時/計數器,對采集到信號的作用時間進行計量、比較,利用干擾信號和實際信號作用時間相差特別大的特征,來區分干擾信號和實際信號。下面是這種方法的原理和程序編制及其在智能壓力實驗儀上的實際應用。 二、原理 在金屬抗拉、抗壓強度和生鐵團礦破碎壓力測量等實驗中,要求實驗儀器能準確測量出被采樣信號的最大值。由于單片機價格低廉,動作可靠,因此這些實驗儀器常選用單片機進行控制。在理想無干擾的狀態下,實驗過程中這些被采樣信號的時域曲線有一個共同的特點:在到達最大值之前,曲線呈單調遞增趨勢,而在最大值之后,信號呈現單調遞減趨勢,且遞減速率比上升速率大得多。例如,在理想狀態下45鋼抗拉強度實驗中,試棒所受拉力的時域曲線如圖1所示。但是,在這些實驗中,不可避免地會存在各種形式的干擾。45#鋼在有瞬時干擾情況下拉力時域曲線如圖2所示。干擾的存在給這些實驗儀器的研制帶來了很大的技術困難。 根據金屬抗拉、抗壓強度和生鐵團礦破碎壓力在測試過程中時域曲線變化特征,利用89C51單片機中的定時/計數器,結合相應的的軟件處理,可消除采樣過程中的瞬時干擾,準確測量出金屬的抗拉、抗壓強度和生鐵團礦破碎時的壓力最大值。 圖1 45#鋼無干擾狀態拉力時域曲線 圖2 45#鋼在瞬時干擾下的拉力時域曲線 在89C51單片機中有兩個可編程的定時/計數器—定時/計數器0與定時/計數器1(8032/8052還有定時/計數器2),可由程序選擇作為定時器用或作為計數器用,定時時間或計數值由程序設定。定時/計數器的核心是一個十六位的加法計數器,當作定時器用時,加法計數器對內部機器周期脈沖計數。在定時器的工作過程中,加法計數器的內容是可讀回CPU的。借助單片機中定時/計數器的這些特點來編制消除瞬時干擾的程序。 軟件具體編制方法如下:把定時/計數器選作定時器用,設置好工作方式,在程序運行過程中不產生中段請求信號,選擇內存中的某一單元(例如R0),在其中設一初始值(如果初始值大于255,則需要兩個內存單元),使得此初始值對應的機器周期的時間比干擾信號的作用時間長,而比實際所需采樣信號的作用時間短(由于干擾信號與實際所需信號作用時間存在很大的差異,做到這一點并不困難)。由CPU對A/D輸入信號進行處理,當檢測到被采樣信號有上升趨勢時啟動定時器,并將定時器的初值設為0,在被采樣信號到達最大值時,讀回定時器中十六位計數器的值,以之與R0初始值比較。若比初始值小,說明采集到的是干擾信號的幅值,應該舍去,并給計數器清零,重新返回采樣;若比初始值大,則可確定此時采集到的為所需的測量值,可以存儲起來或者通過顯示、打印輸出。 由于十六位計數器最多只能計時216個機器周期,如果系統晶振為12MHz,則其最長計時時間為66.5毫秒,對于作用時間比較長的采樣系統就顯得不夠。由于實際信號作用時間長,當采樣到最大值時加法計數器可能早已溢出,此時我們就不能確定計數器里的值與R0中所設初始值的大小了。為了解決這個問題,可對上述程序做些修改,具體如下:將定時器設為中斷工作方式,定時初值為0,R0中設初始值A,在檢測干擾信號時,由于干擾信號作用時間短,檢測到干擾信號幅值時計數器中的值小于R0中的初始值A;而在檢測實際作用信號時,定時器會產生溢出。定時器溢出時向CPU發出中斷請求。在中斷程序中給定時器設立另一初值B,使B>A,中斷返回后計數器從B開始計數,當測試到被測信號的最大值時,加法計數器中的值一定比初始值A大。因此我們就可以通過比較加法計數器中的值和R0中的初始值A來區分干擾信號和實際測量信號。 三、應用實例 下面介紹這種設計思想在生鐵團礦壓力實驗儀中的應用。 在高爐煉鐵中,鐵礦粉不能直接加入爐內冶煉,而應先制成球團,稱為生鐵團礦。為了保證生鐵團礦在運輸和裝爐過程中不至碎裂,必須測出其抗壓強度。團礦壓力實驗儀要求能準確地測出生鐵團礦的破碎壓力值,并顯示和打印出來。筆者設計的生鐵團礦壓力實驗儀中單片機采樣和控制系統框圖如圖3所示,該實驗儀的工作過程如下:團礦放置在生鐵團礦壓力實驗儀的托盤上,電機正轉,托盤上升,球團礦與傳感器接觸并受壓,傳感器壓力信號通過A/D轉換后輸入單片機,由單片機通過計算求出最大值。得到最大值后立即停止電機運轉,顯示、打印破碎壓力值。然后電機反轉,托盤下降,進行下一次實驗。 圖3 壓力實驗儀單片機系統框圖 在球團礦壓力實驗儀中,存在著電機頻繁地啟動與停止,在電機啟動與停止的瞬時,由于電路中存在能量的突變,產生了嚴重的電磁干擾,給采樣信號造成很大的影響,從而引起電機的誤動作。但干擾作用時間很短,一般為十幾微秒到幾十微秒,而球團礦從受壓到破碎這一過程一般在10~50ms。此干擾不易為一般的RC濾波器所濾除。筆者使用上述軟件方法,基本上使此干擾得到控制。軟件的程序流程圖如圖4。 圖4 生鐵團礦壓力實驗儀單片機控制程序流程圖 對于采樣信號作用時間長的系統,則需要采用定時器的中斷工作方式。主程序的流程圖與圖4很類似,二者只是在定時器的初始化設置上有些不同。中斷程序的流程圖如圖5所示。 圖5 中斷程序流程圖 四、結語 本文介紹了一種軟件消除瞬時干擾的的方法。利用瞬時干擾比實際信號工作時間相差很大這個特點,借助單片機內部的定時/計數器,通過編程來實現消除瞬時干擾的目的,思路新穎。利用這種方法,既避免了普通消除干擾方法中繁雜的硬件電路設計,又充分利用了單片機的內部資源。通過實踐應用發現,此方法使瞬時干擾得到了很好的控制。 |