无码无套少妇毛多18P,精品人人做人人爽久久久,免播放器无码av网址,无码99久任我爽精品视频

渦輪流量計(jì)系統(tǒng)系統(tǒng)軟件設(shè)計(jì)全面解析

  本章主要完成渦輪流量計(jì)各模塊的軟件設(shè)計(jì),也可以說是下位機(jī)設(shè)計(jì)。下位機(jī),通常是相對(duì)于上位機(jī)(PC)來說的,一般指工業(yè)現(xiàn)場的單片機(jī)系統(tǒng)。下位機(jī)軟件包含一周期測量模塊,半周期測量模塊,1/4 周期測量模塊,顯示模塊、按鍵模塊和串口通訊模塊,以及根據(jù)應(yīng)用的實(shí)際情況可選擇的數(shù)字濾波模塊。下位機(jī)軟件使用到的開發(fā)環(huán)境有 Code Vison AVR、AVR Studio、ICCAVR、Keil 等。上位機(jī)軟件,主要用于測試采集的數(shù)據(jù)是否準(zhǔn)確,保存一定量的數(shù)據(jù)來分析測量精度是否達(dá)到要求。

1、下位機(jī)軟件設(shè)計(jì):
1.1、系統(tǒng)主程序的流程:

  下位機(jī)軟件采用模塊化編寫,其中包括一周期測量模塊,半周期測量模塊,1/4T 周期測量模塊,顯示模塊、按鍵模塊和通訊模塊,以及根據(jù)環(huán)境情況可加上的濾波模塊。測量模塊部分采用匯編或者語言編寫;其它模塊程序采用語言編寫。通過定時(shí) 1s 來顯示一次當(dāng)前的流速,因?yàn)榱魉偃绻麑?shí)時(shí)顯示,由于采集速度太快,會(huì)導(dǎo)致我們眼睛看到的是雜亂的數(shù)字。系統(tǒng)軟件流程示意圖,如下圖 4.1 所示。濾波模塊根據(jù)具體情況添加,因?yàn)椴杉牧魉偈钱?dāng)前得到的實(shí)時(shí)流速,如果用濾波程序,比如滑動(dòng)平均濾波,需要采集數(shù)十個(gè)數(shù)據(jù)后,再調(diào)用濾波程序,濾波程序執(zhí)行也需要一定的時(shí)間,這樣無形中拖慢了采集的速度。所以當(dāng)系統(tǒng)工作在一般環(huán)境,例如實(shí)驗(yàn)室環(huán)境下時(shí),可不加濾波程序。在干擾嚴(yán)重的場合,可采取在第二章介紹的防脈沖干擾數(shù)字濾波技術(shù),濾波模塊的執(zhí)行應(yīng)放在測量模塊之后。

圖 4.1 系統(tǒng)軟件流程圖
圖 4.1 系統(tǒng)軟件流程圖

2、流量一周期信號(hào)測量的流程:
  信號(hào)經(jīng)低通濾波電路,預(yù)處理放大后,輸入至整形電路 1,經(jīng)整形電路 1 處理后,產(chǎn)生同頻率的方波信號(hào),再將該方波信號(hào)連接到 ATMEGA16 單片機(jī)的 PB0腳。由第二章的分析可知,流量計(jì)輸出信號(hào)頻率較低,適合采用周期法測量以獲得較高的測量精度。具體軟件流程如圖 4.2 所示。
圖 4.2 一周期測量模塊軟件流程圖

圖 4.2 一周期測量模塊軟件流程圖

2.1、流量半周期信號(hào)測量的流程:
  本模塊基于測周法原理,采用T/C1 捕捉功能實(shí)現(xiàn)流量信號(hào)的半周期測量。具體是:T/C1 初始化后,在T/C1 輸入捕捉中斷服務(wù)中需要讀取兩個(gè) ICR1 的值。個(gè)時(shí)間值就是第 0 次下降沿觸發(fā)時(shí)得到的 ICR1 的時(shí)間印記;而第二個(gè)值是第 1 次下降沿觸發(fā)時(shí)得到的時(shí)間印記。當(dāng)?shù)诙€(gè)值被記錄下來時(shí)立即禁止T/C1 的所有中斷。在測頻子程序中需要對(duì)前后得到的兩個(gè) ICR1 值進(jìn)行判斷并將它們進(jìn)行減法運(yùn)算得到差值。下一步需要判斷第二個(gè)值是否溢出。此處的溢出條件是當(dāng)?shù)?個(gè)讀取到的值大于第1個(gè)讀取到的值并且TCNT1的值出現(xiàn)過從65536到 0 的變化情況。如果判斷到溢出了就說明前后兩次的差值超過了 16 位定時(shí)計(jì)數(shù)器T/C1 的長度,T/C1 的長度 65536。在已經(jīng)溢出的情況下,需要記錄溢出次數(shù)。另外,為了降低被測頻率的下限值也需要記錄溢出的次數(shù),具體可以在T/C1 的溢出中斷中設(shè)置一個(gè)標(biāo)志位負(fù)責(zé)溢出次數(shù)的記錄,該溢出次數(shù)的值可以用于頻率的計(jì)算頻。具體軟件流程如圖 4.3 所示[2]。
圖 4.3 半周期測量程序流程圖

圖 4.3 半周期測量程序流程圖

 2.2、流量信號(hào) 1/4 周期測量的流程:
  ATmega16 自帶 AD 轉(zhuǎn)換模塊。ADC 次轉(zhuǎn)換時(shí)序,如圖 4.4 所示。由手冊(cè)知道 ADC 轉(zhuǎn)換模塊工作時(shí)首先需要初始化 ADC,所以次 ADC 轉(zhuǎn)換需要 25 個(gè) ADC 時(shí)鐘周期 ( ADCSRA 寄存器的 ADEN 置位) 。正常轉(zhuǎn)換需要13 個(gè) ADC 時(shí)鐘周期,如圖 4.4 所示[32]。
圖 4.4 ADC 次轉(zhuǎn)換時(shí)序圖

圖 4.4 ADC 次轉(zhuǎn)換時(shí)序圖
圖 4.5 ADC 連續(xù)正常轉(zhuǎn)換時(shí)序圖

圖 4.5 ADC 連續(xù)正常轉(zhuǎn)換時(shí)序圖
ATMEGA16 有多種 AD 轉(zhuǎn)換模式,不同的模式下,所需的轉(zhuǎn)換時(shí)間不同。如表所示[32]。
表 4.1 ADC 轉(zhuǎn)換和采用保持時(shí)間
表 4.1 ADC 轉(zhuǎn)換和采用保持時(shí)間
圖 4.7 ADC 控制和狀態(tài)寄存器

圖 4.7 ADC 控制和狀態(tài)寄存器
  本設(shè)計(jì)中,為了測量 1/4 周期,軟件方面采用 ATmega16 單片機(jī)自帶的 10位 ADC 轉(zhuǎn)換模塊和外部中斷 INT0 及定時(shí)器 T2 相結(jié)合的方式完成測量。電路方面采集信號(hào)經(jīng)濾波,放大后的模擬信號(hào),一路信號(hào)經(jīng)整形電路 2 處理后產(chǎn)生所需要中斷信號(hào) INT0;一路信號(hào)輸入至單片機(jī)的 ADC0 口,作為 AD 轉(zhuǎn)換的單端模擬輸入信號(hào)。

  根據(jù)手冊(cè)得知 ADC 模塊的單次轉(zhuǎn)換結(jié)果計(jì)算公式為REFINVVADC?1024? 。公式中,INV 是被選中通道的輸入電壓,REFV 是 ADC 模塊的參考電壓。轉(zhuǎn)換的結(jié)果存入 ADC 的結(jié)果寄存器中(ADCL,ADCH)。(0X000)表示輸入電壓為0 即為模擬地。(0X3FF=1023=1024-1)表示輸入引腳的電壓為 5V 即為參考電壓值減去一個(gè) LSB。在本設(shè)計(jì),因?yàn)榻Y(jié)果為右對(duì)齊,REFV 設(shè)計(jì)為 5V,所以ADCL=0XFF,ADCH=0X03 表示輸入電壓為 5V 即處于信號(hào)的***高點(diǎn)位置。
  設(shè)計(jì)中需要注意的地方。1、因?yàn)樵搯纹瑱C(jī)的 ADC 轉(zhuǎn)換模塊在 50 k Hz 至 200k Hz 輸入時(shí)鐘的條件下,可以得到***好的轉(zhuǎn)換精度,又因?yàn)楸鞠到y(tǒng)時(shí)鐘為3.2MHZ,所以需要 16 分頻產(chǎn)生所需 200KHZ 的 ADC 時(shí)鐘。2、ADC 讀數(shù)采用默認(rèn)右對(duì)齊。讀數(shù)據(jù)時(shí)先讀取了 ADCL,那么必須緊接著讀取一次 ADCH。3、ADC 輸入電壓范圍為 0 至+5V;參考電壓采用 ADC 內(nèi)部 AVCC;4、通過外部中斷源 INT0 控制 ADC 轉(zhuǎn)換的啟動(dòng)和關(guān)閉[2]。

  具體過程如圖 4.8 所示。
圖 4.8 四分之一周期測量程序流程圖 1

圖 4.8 四分之一周期測量程序流程圖 1

圖 4.8 四分之一周期測量程序流程圖 2
圖 4.8 四分之一周期測量程序流程圖 2

3、通訊模塊的流程:
  在設(shè)計(jì)串口程序之前需要先簡要說明一下 ATMEGA16 的 USART(同步和異步串行接收器和發(fā)送器),以及USART傳輸數(shù)據(jù)需要滿足的格式。ATMEGA16自帶的全雙工的 USART,是一個(gè)使用方便、功能強(qiáng)大的串行通訊模塊。主要特點(diǎn)為:
1) 能處于全雙工工作模式
2) 可以同步或異步通信
3) 主,從時(shí)鐘的同步信息
4) 具有生成多種波特率的波特率發(fā)生器
5) 在 XTAL 低頻率下有高的波特率
6) 8 位或 9 位數(shù)據(jù)
7) 噪聲濾波
8) 超越誤差的檢測
9) 幀錯(cuò)誤探測
10) 錯(cuò)誤起始位的檢測
11) 三個(gè)獨(dú)立的中斷
  在異步串行通信中發(fā)送方和接收方要實(shí)現(xiàn)正常的通信必須采用相同的約定。首先,約定的***底層的協(xié)議。比如需要采用相同的傳輸波特率和相同格式的數(shù)據(jù)幀。通信雙方,如果所使用的波特率和數(shù)據(jù)幀格式不一樣那么通信就不能實(shí)現(xiàn)。本系統(tǒng)采用 ATMEGA16 自有的 USART 模塊[18]。
  本系統(tǒng)中雖然通訊協(xié)議選擇的是 485 通訊,但和 232 串口通訊的工作模式基本相同。本系統(tǒng)串行口通信方式使用異步正常工作方式;設(shè)置波特率為9600bps;數(shù)據(jù)幀的傳輸格式設(shè)置為 8 位數(shù)據(jù)位、1 位起始位、1 位停止位、無奇偶校驗(yàn)位。首先,需要初始化異步串口通信,內(nèi)容包括確定串口工作的方式(編程寄存器為 UCSRA、UCSRB 、 UCSRC)和設(shè)定串口工作的波特率(編程寄存器為 UBBRRH、 UBBRRL)。
  在具體程序設(shè)計(jì)中,串口采用中斷方式接收數(shù)據(jù);串口采用查詢方式發(fā)送數(shù)據(jù)。下位機(jī)串行接收數(shù)據(jù)時(shí),為了保證數(shù)據(jù)接收的完整性,每次需要連續(xù)接收8bit 數(shù)據(jù)。串口收發(fā)數(shù)據(jù)程序具體流程圖如圖 4.9 所示。
圖 4.9 串口通訊程序流程圖
圖 4.9 串口通訊程序流程圖

4、渦輪流量計(jì)顯示模塊的流程:
  由于本設(shè)計(jì)所需顯示內(nèi)容不是很多,在滿足顯示要求的基礎(chǔ)上,應(yīng)該盡量減少器件成本,因此在本系統(tǒng)設(shè)計(jì)中選擇太陽人電子有限公司的 1602 字符型液晶顯示屏,該模塊顯示容量為 16×2。 1602LCD 的時(shí)序在第四章顯示模塊設(shè)計(jì)有詳細(xì)的說明。模塊讀操作時(shí)序如圖 4.10 和模塊寫操作時(shí)序如圖 4.11 所示[2]。
圖 4.10 讀操作時(shí)序圖

圖 4.10 讀操作時(shí)序圖
圖 4.11 寫操作時(shí)序圖
圖 4.11 寫操作時(shí)序圖

  在實(shí)際電路中, RS 連接到微控制器的 PC1 口,R/W 接 PC2 口,E 接 PC3口,DB4~DB7 連接到 PC[4:7]端口。根據(jù)上面的時(shí)序圖 4.10 和圖 4.11,可分別畫出液晶 1602 顯示模塊流程圖和寫指令子程序流程圖和寫數(shù)據(jù)子程序流程圖。如下圖 4.12 所示。

圖 4.12 渦輪流量計(jì)顯示模塊軟件流程圖

圖 4.12 渦輪流量計(jì)顯示模塊軟件流程圖

5、渦輪流量計(jì)按鍵模塊的流程:
  按鍵由四個(gè)鍵組成,分別是設(shè)置鍵、UP 鍵、DOWN 鍵 、MOVE 鍵。程序的邏輯為,當(dāng)按下四個(gè)按鍵中的任意一鍵就進(jìn)入按鍵處理程序中,然后判斷按下的按鍵類型,如果是設(shè)置鍵則顯示 K 值并且較低位閃爍,這時(shí)可以通過按上鍵和下鍵進(jìn)行數(shù)值設(shè)置,上鍵為當(dāng)前數(shù)值+1,左鍵為當(dāng)前數(shù)值-1,當(dāng)再次按下設(shè)置鍵后保存返回。若一開始是按上鍵或者下鍵或者 MOVE 鍵而不是進(jìn)入設(shè)置程序后才按的話,只會(huì)顯示當(dāng)前 K 值,再按下別的鍵無響應(yīng)。通過 MOVE 鍵和 UP 鍵組合鍵可以向左移動(dòng)閃爍位置。通過 MOVE 鍵和 DOWN 鍵組合可以向右移動(dòng)閃爍位置。具體操作是先按住 MOVE 鍵不松開,再按下 UP 鍵或者 DOWN 鍵,就可以移動(dòng)閃爍位置。軟件流程圖如圖 4.13。
圖 4.13 渦輪流量計(jì)按鍵程序流程圖
圖 4.13 渦輪流量計(jì)按鍵程序流程圖

6、渦輪流量計(jì)軟件抗干擾措施:
  基于軟件解決干擾的方法,都屬于軟件抗干擾。該方法具有使用靈活,不增加硬件成本的優(yōu)點(diǎn)?;舅枷胧牵绻惩饨缫蛩馗蓴_到系統(tǒng)的正常工作,內(nèi)部程序可以自動(dòng)讓系統(tǒng)恢復(fù)到穩(wěn)定狀態(tài)?;蛘邔?duì)受干擾的輸入信號(hào)進(jìn)行軟件處理后,能滿足系統(tǒng)的輸入要求。又或者是保護(hù)軟件系統(tǒng)可靠工作的軟件輔助方法。
  由于在渦輪流量計(jì)實(shí)際工作環(huán)境中,存在很多不確定的干擾信號(hào)。所以在硬件抗干擾措施的基礎(chǔ)上需要增加軟件抗干擾技術(shù),以便增強(qiáng)系統(tǒng)的整體性能。本系統(tǒng)主要采取了以下幾種軟件抗干擾措施。
(1) 系統(tǒng)初始化。在系統(tǒng)上電時(shí),程序會(huì)對(duì)單片機(jī)和各器件芯片的寄存器進(jìn)行初始化設(shè)置。初始化以后,電路中所有需要設(shè)置的芯片都回到了***初的默認(rèn)設(shè)置狀態(tài)。這樣就保證了設(shè)備復(fù)位以后能立即回到正常的工作狀態(tài)。上電初始化還可以防止內(nèi)存程序跑飛的突發(fā)故障。事實(shí)證明,無論是手動(dòng)初始化還是自動(dòng)初始化都能夠在較大程度上增強(qiáng)系統(tǒng)抗干擾的性能。
(2) 數(shù)字濾波抗干擾技術(shù)。在程序中可以通過對(duì) ADC 模塊采集的數(shù)據(jù)進(jìn)行平均值濾波處理,可以有效的去除系統(tǒng)的突發(fā)性脈沖干擾。具體可以先去掉 N個(gè)數(shù)據(jù)中的***大值和***小值再計(jì)算 N-2 個(gè)數(shù)據(jù)的算術(shù)平均值。為了加快測量速度,一般 N 取 4。其軟件流程圖如圖 4.14 所示。
圖 4.14 渦輪流量計(jì)濾波程序流程圖
(3) 防止抖動(dòng)技術(shù)。通過軟件延時(shí)和多次判斷的方式能夠避免鍵盤開關(guān)信號(hào)的抖動(dòng)。在單片機(jī)鍵盤的處理程序中,為防止四個(gè)按鍵抖動(dòng)和彈跳產(chǎn)生的干擾,采用按鍵延時(shí)檢測和多次檢測的方式加以規(guī)避[[11][21]。

本文小結(jié):
  本章詳細(xì)敘述了渦輪流量計(jì)系統(tǒng)軟件部分的設(shè)計(jì)。首先概述了軟件設(shè)計(jì),然后分別介紹了下位機(jī)各個(gè)模塊軟件設(shè)計(jì),并給出了軟件流程圖。同時(shí),設(shè)計(jì)的軟件抗干擾措施,可以在一定程度上提高系統(tǒng)的可靠性。

相關(guān)新聞

返回頂部