超聲波液位計測量方式研究與探討 二十三
4.2系統軟件設計
系統整個軟件采用模塊化結構設計,將各功能模塊設計成獨立的編程調試程序塊,這樣不僅有利于功能的擴展,而且便于調試和連接,更有利于程序的移植和修改。
系統軟件從功能上分為主程序和中斷子程序,主程序完成系統初始化后進入掉電模式,任何其它處理任務均看作為中斷事件,將單片機從休眠狀態喚醒,然后完成計算和數值存儲,執行之后再次進入掉電模式。
對于整個主程序和復雜的中斷處理程序,又劃分為若干模塊進行程序的模塊化設計,其中包括初始化模塊、電壓監控模塊、測量模塊、計算模塊、參數處理模塊、顯示模塊及通訊模塊等。
4.2.1系統主程序
系統主程序主要完成一些內部模塊和寄存器的設置、數值計算及存儲功能,其余時間處于休眠狀態,等待測量、通訊等程序的中斷喚醒。這樣單片機大部分時間都處于休眠狀態,可大大降低功耗。
系統開始工作后,單片機首先執行上電復位操作,然后進行系統初始化。初始化完成后首先查詢電壓是否正常,若電壓不足,則發出低壓報警,提醒為充電電池充電或轉為交流電源供電;隨后查詢是否有鍵按下,若有按鍵則進入參數設置子程序,對工業現場環境參數進行重置,需要鍵入的參數包括探頭與容器底部的距離、兩探頭之間的距離等:接著查詢是否有上位機通訊,若有則進入通訊子程序,向上位機傳送所測液位數據;在超聲波液位計長時間連續測量時,如果液位變化不太快,在不影響測量要求的情況下,為了節能,設定每隔4s測量一次,也可根據實際測量中液位變化情況合理設置測量時間間隔。測量完成后,將測量結果顯示輸出。
4.2.2測量子程序
測量子程序是整個軟件的核心,它控制超聲波的發射和接收電路的啟動以及液位數據的計算等。由于本設計中,有兩個回波信號,所以采用單片機雙定時器中斷計時。系統進入測量子程序后,控制單片機首先發出一組40kHz的方波,同時啟動定時器TO和T1工作,并延時lms后打開接收電路,當接收電路有信號輸入時,對輸入信號進行處理,判斷信號的真偽,若信號為真,則停止定時器TO,根據擋板回波時問計算實際超聲波聲速;在再次有回波中斷后,停止定時器T1,根據液面回波時間和超聲波實際聲速計算液位高度。
擋板的反射回波到達接收探頭后,給單片機一個外部中斷信號,停止定時器,據此計算出實際聲速V;液面反射回波到達接收探頭后,單片機停止定時器T1,計算出實際液位高度h,并采用測量5次求平均值的方法進一步減小測量誤差。最后將計算出的液位高度值輸出顯示。另外,計算出的液位高度值,如果低于/等于最低液位或高于/等于最高液位,則發出報警。
與溫度補償法相比,此方法利用軟件功能簡化硬件電路,更加簡單方便,是新型儀表的發展趨勢。由于發射超聲波后有1ms的延時,所以以聲速為340m/s計算,測量盲區為34cm,因此擋板與探頭之間的距離應大于34cm。
從抗干擾的角度,接收電路并不是在超聲發射一開始就打開的,而是根據超聲回波預期最早和最晚到達時間設置一個接收范圍門。首先,根據聲路長度來估算一個脈沖最早和最晚可能到達的時刻,在最早時間的0.6倍處打開接收電路,這樣一方面可以防止發射超聲直接耦合到接收換能器中,另一方面可以排除開關動作帶來的干擾;然后通過設置軟件延時,在最晚到達時間1.5倍處關閉接收電路。
在本設計中,由于有擋板的存在,使得聲路最短長度受到限制。
詳情請瀏覽公司網站的產品中心 http://m.sol365.cn/ 超聲波液位計