渦輪流量計系統(tǒng)系統(tǒng)軟件設(shè)計全面解析
1、下位機軟件設(shè)計:
1.1、系統(tǒng)主程序的流程:
圖 4.1 系統(tǒng)軟件流程圖
2、流量一周期信號測量的流程:
信號經(jīng)低通濾波電路,預(yù)處理放大后,輸入至整形電路 1,經(jīng)整形電路 1 處理后,產(chǎn)生同頻率的方波信號,再將該方波信號連接到 ATMEGA16 單片機的 PB0腳。由第二章的分析可知,流量計輸出信號頻率較低,適合采用周期法測量以獲得較高的測量精度。具體軟件流程如圖 4.2 所示。
圖 4.2 一周期測量模塊軟件流程圖
2.1、流量半周期信號測量的流程:
本模塊基于測周法原理,采用T/C1 捕捉功能實現(xiàn)流量信號的半周期測量。具體是:T/C1 初始化后,在T/C1 輸入捕捉中斷服務(wù)中需要讀取兩個 ICR1 的值。個時間值就是第 0 次下降沿觸發(fā)時得到的 ICR1 的時間印記;而第二個值是第 1 次下降沿觸發(fā)時得到的時間印記。當(dāng)?shù)诙€值被記錄下來時立即禁止T/C1 的所有中斷。在測頻子程序中需要對前后得到的兩個 ICR1 值進行判斷并將它們進行減法運算得到差值。下一步需要判斷第二個值是否溢出。此處的溢出條件是當(dāng)?shù)?個讀取到的值大于第1個讀取到的值并且TCNT1的值出現(xiàn)過從65536到 0 的變化情況。如果判斷到溢出了就說明前后兩次的差值超過了 16 位定時計數(shù)器T/C1 的長度,T/C1 的長度 65536。在已經(jīng)溢出的情況下,需要記錄溢出次數(shù)。另外,為了降低被測頻率的下限值也需要記錄溢出的次數(shù),具體可以在T/C1 的溢出中斷中設(shè)置一個標(biāo)志位負(fù)責(zé)溢出次數(shù)的記錄,該溢出次數(shù)的值可以用于頻率的計算頻。具體軟件流程如圖 4.3 所示[2]。
圖 4.3 半周期測量程序流程圖
2.2、流量信號 1/4 周期測量的流程:
ATmega16 自帶 AD 轉(zhuǎn)換模塊。ADC 次轉(zhuǎn)換時序,如圖 4.4 所示。由手冊知道 ADC 轉(zhuǎn)換模塊工作時首先需要初始化 ADC,所以次 ADC 轉(zhuǎn)換需要 25 個 ADC 時鐘周期 ( ADCSRA 寄存器的 ADEN 置位) 。正常轉(zhuǎn)換需要13 個 ADC 時鐘周期,如圖 4.4 所示[32]。
圖 4.4 ADC 次轉(zhuǎn)換時序圖
圖 4.5 ADC 連續(xù)正常轉(zhuǎn)換時序圖
ATMEGA16 有多種 AD 轉(zhuǎn)換模式,不同的模式下,所需的轉(zhuǎn)換時間不同。如表所示[32]。
表 4.1 ADC 轉(zhuǎn)換和采用保持時間
圖 4.7 ADC 控制和狀態(tài)寄存器
本設(shè)計中,為了測量 1/4 周期,軟件方面采用 ATmega16 單片機自帶的 10位 ADC 轉(zhuǎn)換模塊和外部中斷 INT0 及定時器 T2 相結(jié)合的方式完成測量。電路方面采集信號經(jīng)濾波,放大后的模擬信號,一路信號經(jīng)整形電路 2 處理后產(chǎn)生所需要中斷信號 INT0;一路信號輸入至單片機的 ADC0 口,作為 AD 轉(zhuǎn)換的單端模擬輸入信號。
設(shè)計中需要注意的地方。1、因為該單片機的 ADC 轉(zhuǎn)換模塊在 50 k Hz 至 200k Hz 輸入時鐘的條件下,可以得到***好的轉(zhuǎn)換精度,又因為本系統(tǒng)時鐘為3.2MHZ,所以需要 16 分頻產(chǎn)生所需 200KHZ 的 ADC 時鐘。2、ADC 讀數(shù)采用默認(rèn)右對齊。讀數(shù)據(jù)時先讀取了 ADCL,那么必須緊接著讀取一次 ADCH。3、ADC 輸入電壓范圍為 0 至+5V;參考電壓采用 ADC 內(nèi)部 AVCC;4、通過外部中斷源 INT0 控制 ADC 轉(zhuǎn)換的啟動和關(guān)閉[2]。
具體過程如圖 4.8 所示。
圖 4.8 四分之一周期測量程序流程圖 1
圖 4.8 四分之一周期測量程序流程圖 2
3、通訊模塊的流程:
在設(shè)計串口程序之前需要先簡要說明一下 ATMEGA16 的 USART(同步和異步串行接收器和發(fā)送器),以及USART傳輸數(shù)據(jù)需要滿足的格式。ATMEGA16自帶的全雙工的 USART,是一個使用方便、功能強大的串行通訊模塊。主要特點為:
1) 能處于全雙工工作模式
2) 可以同步或異步通信
3) 主,從時鐘的同步信息
4) 具有生成多種波特率的波特率發(fā)生器
5) 在 XTAL 低頻率下有高的波特率
6) 8 位或 9 位數(shù)據(jù)
7) 噪聲濾波
8) 超越誤差的檢測
9) 幀錯誤探測
10) 錯誤起始位的檢測
11) 三個獨立的中斷
在異步串行通信中發(fā)送方和接收方要實現(xiàn)正常的通信必須采用相同的約定。首先,約定的***底層的協(xié)議。比如需要采用相同的傳輸波特率和相同格式的數(shù)據(jù)幀。通信雙方,如果所使用的波特率和數(shù)據(jù)幀格式不一樣那么通信就不能實現(xiàn)。本系統(tǒng)采用 ATMEGA16 自有的 USART 模塊[18]。
本系統(tǒng)中雖然通訊協(xié)議選擇的是 485 通訊,但和 232 串口通訊的工作模式基本相同。本系統(tǒng)串行口通信方式使用異步正常工作方式;設(shè)置波特率為9600bps;數(shù)據(jù)幀的傳輸格式設(shè)置為 8 位數(shù)據(jù)位、1 位起始位、1 位停止位、無奇偶校驗位。首先,需要初始化異步串口通信,內(nèi)容包括確定串口工作的方式(編程寄存器為 UCSRA、UCSRB 、 UCSRC)和設(shè)定串口工作的波特率(編程寄存器為 UBBRRH、 UBBRRL)。
在具體程序設(shè)計中,串口采用中斷方式接收數(shù)據(jù);串口采用查詢方式發(fā)送數(shù)據(jù)。下位機串行接收數(shù)據(jù)時,為了保證數(shù)據(jù)接收的完整性,每次需要連續(xù)接收8bit 數(shù)據(jù)。串口收發(fā)數(shù)據(jù)程序具體流程圖如圖 4.9 所示。
圖 4.9 串口通訊程序流程圖
4、渦輪流量計顯示模塊的流程:
由于本設(shè)計所需顯示內(nèi)容不是很多,在滿足顯示要求的基礎(chǔ)上,應(yīng)該盡量減少器件成本,因此在本系統(tǒng)設(shè)計中選擇太陽人電子有限公司的 1602 字符型液晶顯示屏,該模塊顯示容量為 16×2。 1602LCD 的時序在第四章顯示模塊設(shè)計有詳細(xì)的說明。模塊讀操作時序如圖 4.10 和模塊寫操作時序如圖 4.11 所示[2]。
圖 4.10 讀操作時序圖
圖 4.11 寫操作時序圖
圖 4.12 渦輪流量計顯示模塊軟件流程圖
5、渦輪流量計按鍵模塊的流程:
按鍵由四個鍵組成,分別是設(shè)置鍵、UP 鍵、DOWN 鍵 、MOVE 鍵。程序的邏輯為,當(dāng)按下四個按鍵中的任意一鍵就進入按鍵處理程序中,然后判斷按下的按鍵類型,如果是設(shè)置鍵則顯示 K 值并且較低位閃爍,這時可以通過按上鍵和下鍵進行數(shù)值設(shè)置,上鍵為當(dāng)前數(shù)值+1,左鍵為當(dāng)前數(shù)值-1,當(dāng)再次按下設(shè)置鍵后保存返回。若一開始是按上鍵或者下鍵或者 MOVE 鍵而不是進入設(shè)置程序后才按的話,只會顯示當(dāng)前 K 值,再按下別的鍵無響應(yīng)。通過 MOVE 鍵和 UP 鍵組合鍵可以向左移動閃爍位置。通過 MOVE 鍵和 DOWN 鍵組合可以向右移動閃爍位置。具體操作是先按住 MOVE 鍵不松開,再按下 UP 鍵或者 DOWN 鍵,就可以移動閃爍位置。軟件流程圖如圖 4.13。
圖 4.13 渦輪流量計按鍵程序流程圖
6、渦輪流量計軟件抗干擾措施:
基于軟件解決干擾的方法,都屬于軟件抗干擾。該方法具有使用靈活,不增加硬件成本的優(yōu)點。基本思想是,如果某外界因素干擾到系統(tǒng)的正常工作,內(nèi)部程序可以自動讓系統(tǒng)恢復(fù)到穩(wěn)定狀態(tài)?;蛘邔κ芨蓴_的輸入信號進行軟件處理后,能滿足系統(tǒng)的輸入要求。又或者是保護軟件系統(tǒng)可靠工作的軟件輔助方法。
由于在渦輪流量計實際工作環(huán)境中,存在很多不確定的干擾信號。所以在硬件抗干擾措施的基礎(chǔ)上需要增加軟件抗干擾技術(shù),以便增強系統(tǒng)的整體性能。本系統(tǒng)主要采取了以下幾種軟件抗干擾措施。
(1) 系統(tǒng)初始化。在系統(tǒng)上電時,程序會對單片機和各器件芯片的寄存器進行初始化設(shè)置。初始化以后,電路中所有需要設(shè)置的芯片都回到了***初的默認(rèn)設(shè)置狀態(tài)。這樣就保證了設(shè)備復(fù)位以后能立即回到正常的工作狀態(tài)。上電初始化還可以防止內(nèi)存程序跑飛的突發(fā)故障。事實證明,無論是手動初始化還是自動初始化都能夠在較大程度上增強系統(tǒng)抗干擾的性能。
(2) 數(shù)字濾波抗干擾技術(shù)。在程序中可以通過對 ADC 模塊采集的數(shù)據(jù)進行平均值濾波處理,可以有效的去除系統(tǒng)的突發(fā)性脈沖干擾。具體可以先去掉 N個數(shù)據(jù)中的***大值和***小值再計算 N-2 個數(shù)據(jù)的算術(shù)平均值。為了加快測量速度,一般 N 取 4。其軟件流程圖如圖 4.14 所示。
(3) 防止抖動技術(shù)。通過軟件延時和多次判斷的方式能夠避免鍵盤開關(guān)信號的抖動。在單片機鍵盤的處理程序中,為防止四個按鍵抖動和彈跳產(chǎn)生的干擾,采用按鍵延時檢測和多次檢測的方式加以規(guī)避[[11][21]。
本文小結(jié):
本章詳細(xì)敘述了渦輪流量計系統(tǒng)軟件部分的設(shè)計。首先概述了軟件設(shè)計,然后分別介紹了下位機各個模塊軟件設(shè)計,并給出了軟件流程圖。同時,設(shè)計的軟件抗干擾措施,可以在一定程度上提高系統(tǒng)的可靠性。