版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 智能液位傳感器</b></p><p><b> 摘 要</b></p><p> 摘 要:介紹了壓力傳感器的應(yīng)用,設(shè)計了智能液位傳感器。此設(shè)計通過壓力傳感器測出液體的壓力,輸出0 - +5V的模擬電壓通過ADC0804采集轉(zhuǎn)換成數(shù)字量送入單片機處理,由RS232串口通信送到上位機,并顯示出高度。此設(shè)計能完成0
2、-1.5m高度的液位測量,能精確到厘米。此設(shè)計主要由壓力傳感器,單片機,ADC0804轉(zhuǎn)換器構(gòu)成。</p><p> 關(guān)鍵詞:智能液位傳感器,單片機,AD轉(zhuǎn)換器</p><p> Abstract:This article introduces the application of pressure sensor, and designs a intelligent level se
3、nsor. This design detects the liquid pressure through the pressure sensors, and it will send the voltage from 0 to 5V which is converted into digital quantity by the simulation ADC0804 acquisition to the SCM processin
4、g. Then the digital will be sent to the PC which shows the high by RS232 serial interface communication. This design can finish 0 to 1.5 m high level measurement, and accurate </p><p> Keywords:Intelligence
5、 level sensor ,Single-chip microcomputer,AD converter </p><p><b> 目錄</b></p><p><b> 1緒論4</b></p><p> 1.1設(shè)計目的5</p><p> 1.2 設(shè)計任務(wù)與要求5</p
6、><p> 1.3 智能液位傳感器的基本原理5</p><p><b> 2總體方案設(shè)計6</b></p><p> 2.1 智能液位傳感器設(shè)計方案框圖6</p><p> 2.2 方案論證7</p><p> 2.3 方案可能的擴展功能8</p><p>
7、 3 單元模塊電路的設(shè)計9</p><p> 3.1各單元模塊功能介紹及電路設(shè)計9</p><p> 3.1.1 傳感器輸出部分9</p><p> 3.1.2 ADC0804數(shù)據(jù)采集轉(zhuǎn)化部分9</p><p> 3.1.3 單片機最小系統(tǒng)模塊10</p><p> 3.1.4 RS232模塊1
8、1</p><p> 3.2 電路參數(shù)計算及元器件的選擇12</p><p> 3.2.1 元器件的選擇12</p><p> 3.3 特殊元器件介紹13</p><p> 3.2.1 ADC080414</p><p> 3.1.2 壓力傳感器D3B16</p><p>
9、 3.4 個單元模塊的聯(lián)接17</p><p><b> 4 軟件設(shè)計19</b></p><p> 4.1 軟件設(shè)計原理及所用的工具19</p><p> 4.1.1 單片機部分19</p><p> 4.1.2 上位機VB部分20</p><p> 4.2 軟件的設(shè)計流程框
10、圖22</p><p> 4.3 軟件設(shè)計總結(jié)23</p><p><b> 5 系統(tǒng)調(diào)試24</b></p><p> 5.1 硬件結(jié)構(gòu)部分24</p><p> 5.2 VB部分24</p><p> 5.3 壓力傳感器部分25</p><p>
11、 6 系統(tǒng)功能及指標(biāo)參數(shù)26</p><p> 6.1系統(tǒng)功能26</p><p> 6.2 系統(tǒng)各部分的測試參數(shù)26</p><p> 6.2.1 AD部分調(diào)試參數(shù)26</p><p> 6.2.2 系統(tǒng)測量液面高度的數(shù)據(jù)參數(shù)27</p><p> 6.2.3 調(diào)試總結(jié)28</p>
12、<p><b> 7 結(jié)論29</b></p><p> 8 總結(jié)與體會及感謝語30</p><p><b> 9 參考文獻31</b></p><p><b> 附錄32</b></p><p><b> 附錄1:32</b&g
13、t;</p><p><b> 附錄2:程序35</b></p><p> 附錄3 元器件清單38</p><p><b> 1緒論</b></p><p> 液位檢測在許多控制領(lǐng)域已較為普遍,各種類型的液位檢測傳感器較多,按原理分有浮子式、壓力式、超聲波式、吹氣式等。各種方式都根據(jù)其需
14、要設(shè)計完成,其結(jié)構(gòu)、量程和精度適用于各自不同的場合,大多結(jié)構(gòu)較為復(fù)雜,制造成本偏高;市面上也有現(xiàn)成的液位計,有投入式、浮球式、彈簧式等,多數(shù)成品價格驚人。以上液位計多數(shù)輸出為模擬量電流或電壓,有些為機械指針讀數(shù),不能用于遠程監(jiān)視;普遍適用于靜止液面,在波動液面易引起讀數(shù)的波動;也有用電容法測液位的系統(tǒng),此法是一種簡單易行的方案。本文利用壓力傳感器測液體壓力的原理,結(jié)合單片機設(shè)計出一種智能液位檢測裝置。</p><p&
15、gt; 本學(xué)期開設(shè)了傳感器及傳感器技術(shù),單片機等課程。本課程設(shè)計是在學(xué)完這么多課程的基礎(chǔ)上,為了能更好的掌握這些課的內(nèi)容,把理論應(yīng)用于實際而提出來的。旨在發(fā)揮我們的設(shè)計,創(chuàng)新意識。通過本課程設(shè)計可以掌握和鞏固傳感器的基本設(shè)計方法,工業(yè)水位的測量方法,單片機的基本應(yīng)用,顯示電路的連接等知識。進一步加強對課堂理論知識的理解與綜合應(yīng)用能力,從而提高我們解決問題的能力和創(chuàng)造發(fā)明能力。</p><p> 如今傳感器的應(yīng)
16、用是非常的廣泛,并且已經(jīng)融入到我們的生活,工作,科研等領(lǐng)域中。在我組進行設(shè)計中我們首先對壓力傳感器輸出的電壓和對應(yīng)的液體高度進行整理和多次測量得出一個比較與實際高度符合的函數(shù)。我們通過壓力傳感器測出液體壓力,利用ADC0804對傳感器的輸出電壓進行采集并將模擬電壓信號轉(zhuǎn)換成數(shù)字電平信號0,1。然后將采集的數(shù)據(jù)送入單片機最小系統(tǒng)進行處理然后利用RS232電平轉(zhuǎn)換送到PC機,PC機上用VB編寫一個顯示界面,再在VB中利用程序?qū)?shù)字量轉(zhuǎn)換成以
17、厘米為單位的高度并顯示出來。</p><p> 液位傳感器的應(yīng)用雖然非常廣泛,但是現(xiàn)在高精度的液位的傳感器價格非常貴,實現(xiàn)民用還有一定的難度。所以我們的設(shè)計應(yīng)更加創(chuàng)新利用更小的成本設(shè)計生產(chǎn)出更好的傳感器。</p><p><b> 設(shè)計目的</b></p><p> 1.理解并掌握智能液位傳感器的原理及實現(xiàn)的方法。</p>
18、<p> 2. 掌握ADC,RS232電平轉(zhuǎn)換電路的原理,壓力傳感器的特性參數(shù)的計算及選擇。</p><p> 3.掌握單片機最小系統(tǒng)的組成。</p><p> 4.培養(yǎng)實踐技能,提高分析和解決實際問題的能力。</p><p> 5.學(xué)習(xí)基本理論在實踐中綜合運用的初步經(jīng)驗,掌握模擬電路及數(shù)字電路設(shè)計的基本方法、設(shè)計步驟,培養(yǎng)綜合設(shè)計與調(diào)試能力。&l
19、t;/p><p> 1.2 設(shè)計任務(wù)與要求</p><p> 1.利用一個液位傳感器及周邊電路,完成液位到電信號的轉(zhuǎn)換;液位測量采用測量液體的壓強的方式;測量范圍0-1.5米;</p><p> 2.設(shè)計一個單片機系統(tǒng)控制一個ADC對壓力變送器輸出的電信號進行采集;</p><p> 3.編寫數(shù)據(jù)轉(zhuǎn)換程序;將二進制的量化數(shù)據(jù)轉(zhuǎn)換為以厘米為
20、單位的ASCLL標(biāo)準(zhǔn)字符串形式傳送到PC機;注:ASCLL標(biāo)準(zhǔn)字符串是以ASCLL碼為信息的編碼方式,字符串結(jié)尾數(shù)據(jù)是一個字節(jié)00H;</p><p> 4.設(shè)計單片機通信程序以及RS232電平轉(zhuǎn)換電路;</p><p> 5.設(shè)計單片機相關(guān)運行程序;</p><p> 6.設(shè)計相關(guān)電路,如單片機系統(tǒng),模擬輸入通道,ADC,和電源電路等;</p>
21、<p> 7.報告格式嚴格按照《課程設(shè)計報告格式要求說明》執(zhí)行;</p><p> 1.3 智能液位傳感器的基本原理</p><p> 本次設(shè)計的智能液位傳感器的基本原理是利用一個壓力傳感器測出在水管的水的壓力,壓力變送器的輸出為是0-5V的模擬電壓信號(或是4-20毫安的模擬電流信號),利用ADC0804對傳感器的輸出電壓進行采集并將模擬電壓信號轉(zhuǎn)換成數(shù)字電平信號0,1
22、。然后將采集的數(shù)據(jù)送入單片機最小系統(tǒng)進行處理然后利用RS232電平轉(zhuǎn)換送到PC機,PC機上用VB的MS.COM控件編寫一個顯示界面,再在VB中利用程序?qū)?shù)字量轉(zhuǎn)換成以厘米為單位的高度并顯示出來。</p><p><b> 2總體方案設(shè)計</b></p><p> 通過查閱大量相關(guān)技術(shù)資料,并結(jié)合自己的實際知識,我主要提出了兩種技術(shù)方案來實現(xiàn)系統(tǒng)功能。下面我將首先對
23、這兩種種方案的組成框圖和實現(xiàn)原理分別進行說明。</p><p> 2.1 智能液位傳感器設(shè)計方案框圖</p><p> 兩種方案的框圖如下圖:</p><p><b> 方案1:</b></p><p><b> 方案2:</b></p><p><b>
24、 2.2 方案論證</b></p><p> 對于方案1和2按照理論來看做出來能夠達到一定的預(yù)期效果,能達基本滿足本次設(shè)計的基本要求。但是兩種方案不同之處就在于傳感器的選擇和AD的選擇,現(xiàn)就這兩個方面來論述.為什么選擇方案2。</p><p> 方案1的傳感器部分是利用應(yīng)變片做的壓力變送器,其結(jié)構(gòu)如下圖2.1:</p><p><b>
25、圖 2.1 </b></p><p> 這是利用4片應(yīng)變片做的全橋電路其電壓靈敏度比單臂工作時提高了4倍,消除了一定的非線性誤差。其輸出的為電流信號但是非常小,所以在外部又加了一個差動放大將信號放大才能滿足AD 0 - +5V的輸入電壓的要求。但是此類的工作都是提供1.5mA的橫流源,我們自己做的恒流源很難滿足要求。硬件部分完成以后還要對其進行測試線性度,但是測量比較麻煩后期的數(shù)據(jù)處理也比較繁瑣,最
26、后達到的效果也比較差所以就沒有選擇應(yīng)變片制作。</p><p> 對于AD的選擇主要是ADC0832與ADC0804之間的選擇。</p><p> ADC0832是8位分辨率;+5V電源供電;輸入電壓為0 - +5V;工作頻率250HZ;轉(zhuǎn)換時間為32us;數(shù)據(jù)轉(zhuǎn)送是8位串行傳送;</p><p> ADC0804是8位分辨率;5V電源供電;輸入電壓為0 -
27、+5V;轉(zhuǎn)換時間的100us;存取時間是135us;數(shù)據(jù)傳送是8位并行傳送;</p><p> 通過直觀的觀察可以發(fā)現(xiàn)由于ADC0832的數(shù)據(jù)傳送是8位串行的所以傳完8位數(shù)據(jù)需要的時間為256us,而ADC0804為8位的并行數(shù)據(jù)傳送,傳8位數(shù)據(jù)只需100us。所以ADC0804的轉(zhuǎn)換存取速度更快,這樣系統(tǒng)的工作效率更高。所以我們采用的是ADC0804。</p><p> 綜上我們本次
28、設(shè)計液位傳感器采用的方案2。</p><p> 2.3 方案可能的擴展功能</p><p> 我們這次設(shè)計的智能液位傳感器結(jié)構(gòu)還比較簡單,只是完成測液位并讀出頁面高度的基本功能,在這幾完成后發(fā)現(xiàn)該系統(tǒng)還能擴展許多功能。比如增加報警系統(tǒng)(應(yīng)用于比如水庫的水位測量時可以做下限報警和超限報警);遠程的控制系統(tǒng)(比如家用的水塔水不足時可以控制水泵加水)。</p><p>
29、; 3 單元模塊電路的設(shè)計</p><p> 本節(jié)主要介紹系統(tǒng)各單元模塊的具體功能、電路結(jié)構(gòu)、工作原理、以及各個單元模塊之間的聯(lián)接關(guān)系;同時本節(jié)也會對相關(guān)電路中的參數(shù)計算、元器件選擇、以及核心器件進行必要說明。</p><p> 3.1各單元模塊功能介紹及電路設(shè)計</p><p> 本系統(tǒng)電路模塊主要分為四個單元模塊,它們分別是:傳感器輸出部分;ADC080
30、4的數(shù)據(jù)采集轉(zhuǎn)換模塊;單片機最小系統(tǒng)模塊;RS232模塊.各單元模塊功能及相關(guān)電路的具體說明如下。</p><p> 3.1.1 傳感器輸出部分</p><p> 3.1.2 ADC0804數(shù)據(jù)采集轉(zhuǎn)化部分</p><p> 該級電路一共實現(xiàn)了兩個功能:第一個是對模擬電壓信號的采集。第二個功能是將模擬電壓信號轉(zhuǎn)換成數(shù)字信號。</p><p&
31、gt; 這一級的原理圖如圖3.2:</p><p> 圖3.2 ADC0804數(shù)據(jù)采集轉(zhuǎn)換電路圖</p><p> 3.1.3 單片機最小系統(tǒng)模塊</p><p> 這部分主要是由STC89C52單片機組成的一個最小系統(tǒng),通過單片機來控制ADC0804的信號采集轉(zhuǎn)換以及對RS232串口通信的控制。</p><p> 該級電路原
32、理圖如圖3.3:</p><p> 圖3.3 單片機最小系統(tǒng)電路圖</p><p> 3.1.4 RS232模塊</p><p> RS232模塊主要通過USB轉(zhuǎn)串口線來與PC機通信將ADC0804采集和轉(zhuǎn)換的數(shù)據(jù)傳給上位機顯示出所測得液面高度。</p><p> 模塊的原理圖如圖3.4:</p><p>
33、; 圖3.4 RS232電路圖</p><p> 3.2 電路參數(shù)計算及元器件的選擇</p><p> 3.2.1 元器件的選擇</p><p> 設(shè)計所用儀器及器件如下表1:</p><p><b> 表1</b></p><p> 3.3 特殊元器件介紹</p>
34、<p> 這一節(jié)將對設(shè)計過程中用到的一些特殊元器件進行介紹,主要是介紹該特殊元器件的內(nèi)部結(jié)構(gòu),工作原理,及使用時應(yīng)該注意的事項。</p><p> 3.2.1 ADC0804</p><p> ADC0804的內(nèi)部原理結(jié)構(gòu)圖如下圖3.5:</p><p> 圖3.5 ADC0804的內(nèi)部原理結(jié)構(gòu)圖 </p><p>
35、ADC0804主要技術(shù)指標(biāo)如下:</p><p> (1) 高阻抗?fàn)顟B(tài)輸出</p><p> (2) 分辨率:8 位(0~255)</p><p> (3) 存取時間:135 us</p><p> (4) 轉(zhuǎn)換時間:100 us</p><p> (5) 總誤差:-1- +1LSB</p>&
36、lt;p> (6) 工作溫度:ADC0804C為0度-70度;ADC0804L為-40 度-85 度</p><p> (7) 模擬輸入電壓范圍:0V - +5V</p><p> (8) 參考電壓:2.5V</p><p> (9) 工作電壓:5V</p><p> (10) 輸出為三態(tài)結(jié)構(gòu)</p><p
37、> ADC0804的引腳圖如下圖3.6:</p><p> 圖 3.6 ADC0804引腳圖</p><p> 引腳及功能特性如下:</p><p> CS 、RD 、WR (引腳1、2、3):是數(shù)字控制輸入端,滿足標(biāo)準(zhǔn)TTL 邏輯電平。其中CS 和WR 用來控制A/D 轉(zhuǎn)換的啟動信號。CS 、RD 用來讀A/D 轉(zhuǎn)換的結(jié)果,當(dāng)它們同時為低電平時
38、,輸出數(shù)據(jù)鎖存器DB0~DB7 各端上出現(xiàn)8 位并行二進制數(shù)碼。</p><p> LKI(引腳4)和CLKR(引腳19):ADC0801~0805 片內(nèi)有時鐘電路,只要在外部“CLKI”和“CLKR”兩端外接一對電阻電容即可產(chǎn)生A/D 轉(zhuǎn)換所要求的時鐘,其振蕩頻率為fCLK≈1/1.1RC。其典型應(yīng)用參數(shù)為:R=10KΩ,C=150PF,fCLK≈640KHZ,轉(zhuǎn)換速度為100μs。若采用外部時鐘,則外部f
39、CLK 可從CLKI 端送入,此時不接R、C。</p><p> 允許的時鐘頻率范圍為100KHZ~1460KHZ。</p><p> INTR (引腳5): INTR 是轉(zhuǎn)換結(jié)束信號輸出端,輸出跳轉(zhuǎn)為低電平表示本次轉(zhuǎn)換已經(jīng)完成,可作為微處理器的中斷或查詢信號。如果將CS 和WR 端與INTR 端相連,則ADC0804 就處于自動循環(huán)轉(zhuǎn)換狀態(tài)。CS =0 時,允許進行A/D 轉(zhuǎn)換。&l
40、t;/p><p> WR 由低跳高時A/D 轉(zhuǎn)換開始,8 位逐次比較需8×8=64 個時鐘周期,再加上控制邏輯操作,一次轉(zhuǎn)換需要66~73 個時鐘周期。在典型應(yīng)用fCLK=640KHZ 時,轉(zhuǎn)換時間約為103μs~114μs。當(dāng)fCLK 超過640KHZ,轉(zhuǎn)換精度下降,超過極限值1460KHZ 時便不能正常工作。</p><p> VIN(+)(引腳)和VIN(-)(引腳7):被
41、轉(zhuǎn)換的電壓信號從VIN(+)和VIN(-)輸入,允許此信號是差動的或不共地的電壓信號。如果輸入電壓VIN的變化范圍從0V到Vmax,則芯片的VIN(-)端接地,輸入電壓加到VIN(+)引腳。由于該芯片允許差動輸入,在共模輸入電壓允的情況下,輸入電壓范圍可以從非零伏開始,即Vmin 至Vmas。此時芯片的VIN(-)端應(yīng)該接入等于Vmin 的恒值電碼墳上,而輸入電壓VIN仍然加到VIN(+)引腳上。</p><p>
42、; AGND(引腳8)和DGND(引腳10):A/D 轉(zhuǎn)換器一般都有這兩個引腳。模擬地AGND 和數(shù)字地DGND 分別設(shè)置引入端,使數(shù)字電路的地電流不影響模擬信號回路,以防止寄生耦合造成的干擾。</p><p> VREF/2(引腳9):參考電壓VREF/2 可以由外部電路供給,從“VREF/2”端直接送入,VREF/2 端電壓值應(yīng)是輸入電壓范圍的二分之一。所以輸入電壓的范圍可以通過調(diào)整VREF/2 引腳處的
43、電壓加以改變,轉(zhuǎn)換器的零點無需調(diào)整。</p><p> ADC0804 轉(zhuǎn)換器的工作時序如圖3.7:</p><p> 圖3.7 工作時序圖</p><p> 3.1.2 壓力傳感器D3B</p><p> 我們這次智能液位傳感器設(shè)計使用的傳感器部分采用的是壓力傳感器D3B,液位測量采用的測量液體壓強的方式。壓力傳感器如下圖3.8:
44、</p><p><b> 圖 3.8</b></p><p> 傳感器主要參數(shù)如下:</p><p> 工作電壓:4.2v—6.2v;壓力范圍:0-----1000mm水柱,0----0.1Kg/c㎡;電壓輸出:0.23v---4.9v;線性度0.2%;外型:30×30×20mm 。</p
45、><p> 接線方式:每個接線柱下皆有標(biāo)示,G-接地,I-接+5V另與O-之間加載2.2K上拉電阻即可通過0-輸出</p><p> 傳感器本身不能放到水里,所以設(shè)計時我們是利用水管引水到傳感器中央的壓力感應(yīng)膜上。</p><p> 3.4 個單元模塊的聯(lián)接</p><p> 個單元的聯(lián)接如下圖3.9:</p><p&
46、gt; 圖 3.9 個單元模塊的聯(lián)接圖</p><p> 說明:AD的輸入連接的是壓力傳感器的輸出端。</p><p><b> 4 軟件設(shè)計</b></p><p> 本次設(shè)計主要用到的軟件主要涉及到單片機的c語言編程,上位機的VB部分的界面編程。</p><p> 4.1 軟件設(shè)計原理及所用的工具<
47、/p><p> 4.1.1 單片機部分</p><p> 單片機程序部分主要功能是:控制ADC0804接收模擬數(shù)據(jù)轉(zhuǎn)換成數(shù)字量,由89C52接收數(shù)字量,將處理后的數(shù)字量通過串口通訊傳給上位機。</p><p> 該程序部分設(shè)計過程中使用的是keil軟件來編寫的,利用STC-ISP軟件進行下載和調(diào)試的。主要就是通過STC89C52來控制AD采集轉(zhuǎn)換部分和串口通信,該
48、部分的核心程序如下:</p><p> void adopen() //adc0804初始化</p><p><b> { </b></p><p><b> wr=1;</b></p><p><b> wr=0;</b></p><p>
49、<b> wr=1;</b></p><p><b> delay(1);</b></p><p><b> rd=0;</b></p><p><b> i=i;</b></p><p><b> i=i;//延時</b>
50、</p><p><b> j=P1;</b></p><p><b> rd=1;</b></p><p><b> }</b></p><p> void initial()//串口初始化</p><p><b> {</
51、b></p><p> TMOD=0x20;//設(shè)置定時器1為工作方式2</p><p><b> TH1=0xfd;</b></p><p><b> TL1=0xfd;</b></p><p><b> TR1=1;</b></p><p&
52、gt; REN=1;//串口始能REN=1時允許串行口接收數(shù)據(jù)</p><p> SM0=0;//模式1,8位數(shù)據(jù),波特率由軟件設(shè)置</p><p><b> SM1=1;</b></p><p> EA=1;//總通斷</p><p> ES=1;//串口通斷</p><p><
53、b> }</b></p><p> 4.1.2 上位機VB部分</p><p> 這個部分主要是通過Microsoft Visual Basic 6.0這個軟件來編寫一個上位機界面來顯示所測得到的液面高度,利用的VB里面的串口通信控件MS.COM來實現(xiàn)的。</p><p> 顯示的輸入的兩個部分都是顯示在vb里的text文本框里的。<
54、/p><p><b> 核心程序如下:</b></p><p> 串口的設(shè)置如下程序:</p><p> Private Sub Form_Load() '設(shè)置串口</p><p> MSComm1.Settings = "9600,N,8,1"
55、 '串口通訊初始化:波特率為9600,沒有校驗位,八位數(shù)據(jù)傳送,一位停止位</p><p> MSComm1.RThreshold = 1</p><p> MSComm1.InputMode = comInputModeText '以文本形式接收數(shù)據(jù)</p><p> Combo1.AddItem "COM1"&
56、lt;/p><p> Combo1.AddItem "COM2"</p><p> Combo1.AddItem "COM3"</p><p> Combo1.AddItem "COM4"</p><p> Combo1.AddItem "COM5"</
57、p><p> Combo1.AddItem "COM6"</p><p><b> j = 0</b></p><p><b> End Sub</b></p><p> 程序的核心部分:VB的串口通訊控件MSComm</p><p> Privat
58、e Sub MSComm1_OnComm() </p><p> Dim a As String</p><p> Select Case MSComm1.CommEvent</p><p> Case comEvReceive '每接收一個數(shù)據(jù)就觸發(fā)一次事件</p><p> a = M
59、SComm1.Input</p><p> b = Asc(a)</p><p> e(j) = b '收20個數(shù)據(jù)取平均值再顯示出來 減小抖動</p><p><b> j = j + 1</b></p><p> If j = 19 Then</p>&l
60、t;p> MSComm1.PortOpen = False</p><p> For k = 0 To 19</p><p> summ = summ + e(k)</p><p><b> Next k</b></p><p> c = summ / 20</p><p><
61、;b> summ = 0</b></p><p> i = (c / 255) * 10</p><p> If i < 0.08 Then</p><p> Text2.Text = 0</p><p> Text1.Text = 0</p><p><b> Else&
62、lt;/b></p><p> Text2.Text = i * 1.04</p><p> Text1.Text = 18.33766 * i * 1.04</p><p><b> End If</b></p><p> MSComm1.PortOpen = True</p><p&
63、gt;<b> j = 0</b></p><p><b> End If</b></p><p> End Select</p><p><b> End Sub</b></p><p> 4.2 軟件的設(shè)計流程框圖</p><p> 4.
64、3 軟件設(shè)計總結(jié)</p><p> 軟件設(shè)計中主要運用了所學(xué)的單片機課程和VB語言中的知識,單片機中的程序用的是C語言。程序主要包含了ADC0804的初始化;調(diào)用串口功能;串口的初始化;延時程序,主代碼段實現(xiàn)了打開AD并對數(shù)據(jù)進行采集轉(zhuǎn)換。</p><p> 上位機利用的是VB的知識,利用串口通信控件MS.COM來實現(xiàn)的。編寫出來的顯示界面如下圖4.1:</p><
65、p> 圖 4.1 顯示界面</p><p> 該界面內(nèi)可以選擇串口端口號,達到了本次設(shè)計的基本要求,顯示了AD的輸入電壓和測得的液面高度值。</p><p><b> 5 系統(tǒng)調(diào)試</b></p><p> 5.1 硬件結(jié)構(gòu)部分</p><p> 硬件部分我們先是通過PROTEL軟件畫的AD部分;單片機部
66、分和RS232部分的原理圖,然后這部分沒有畫PCB圖就直接用萬用板和排線進行搭建的。這樣在焊接的過程中就會顯得比較麻煩,必須很細心才能很好的完成,如果哪個地方焊接錯誤或者是將要用到的引腳沒有焊接上都會導(dǎo)致系統(tǒng)不能工作。比如像我們這次的設(shè)計就出現(xiàn)過這樣的問題,在焊接完單片機最小系統(tǒng)和RS232串口通信后覺得因該能下載程序到單片機內(nèi)部了,結(jié)果利用直流可調(diào)的穩(wěn)壓電源給單片機加了+5V的工作電壓結(jié)果單片機不能工作。在經(jīng)過討論發(fā)現(xiàn)應(yīng)該是單片機沒有
67、起振,然后發(fā)現(xiàn)是晶振的兩個引腳焊接反了,這樣小小的失誤會導(dǎo)致嚴重的后果。</p><p> 在焊接好ADC0804部分后我們對其進行了調(diào)試,在調(diào)試AD時,我們發(fā)現(xiàn)通過P0口始終不能將數(shù)據(jù)寫到AD,后來經(jīng)過查閱資料發(fā)現(xiàn),要想使P0口輸出數(shù)據(jù)必須在P0口接上拉電阻,后來我們換P2口為數(shù)據(jù)輸出口,才成功將AD驅(qū)動成功。</p><p><b> 5.2 VB部分</b>
68、</p><p> 上位機部分的調(diào)試是結(jié)合前面的AD采集系統(tǒng)一起來進行調(diào)試的這樣下過會更直觀。這里的調(diào)試用到了直流可調(diào)的穩(wěn)壓電源,給單片機加上+5V的工作電壓后在AD輸入端加上0-5V的輸入電壓然后利用RS232串口通信將采集并轉(zhuǎn)換的電壓值顯示在PC上利用VB做的顯示界面上。結(jié)果發(fā)現(xiàn)當(dāng)AD沒有給輸入電壓時,上位機顯示有輸入電壓,經(jīng)過查資料發(fā)現(xiàn)這是由于由于AD器件本身的原因,當(dāng)沒有給輸入時,其輸入端呈高阻狀態(tài),所
69、以當(dāng)沒有輸入時,所測到得電壓是錯誤的,為了解決這個問題我們嘗試了幾種方法,其中是用運放做電壓跟隨器來進行阻抗變換,使AD輸入端不再懸空,但是由于很多運放都不是軌道軌的運放(即不是滿伏輸出運放),而且會大大增加硬件的結(jié)構(gòu),所以不選擇這種方法,后來我們想到給輸入端加下拉電阻的方法,可以將輸入端電壓拉至地端,并且當(dāng)有輸入時,其顯示的電壓也是輸入電壓。</p><p> 在剛開始設(shè)計上位機顯示這部分時我們沒有想到由于系
70、統(tǒng)整體的原因,所采集到得數(shù)據(jù)有很大的抖動,討論過后發(fā)現(xiàn)是有多方面的原因的。其一就是我們這次設(shè)計采用的AD0804的采集轉(zhuǎn)換時間為100us,這個時間是非常短的所以數(shù)據(jù)在不斷地更新。后來經(jīng)過老師對數(shù)字濾波的詳細講解,我們下來也查閱了于數(shù)字濾波相關(guān)的資料,然后運用到上位機部分。在程序部分利用取多組數(shù)據(jù)再取均值的方法,雖然系統(tǒng)的測試速度有所變慢,但數(shù)據(jù)抖動很小,只在百分位抖動,影響不大。</p><p> VB加的部
71、分程序如下:</p><p> For k = 0 To 19</p><p> summ = summ + e(k)</p><p><b> Next k</b></p><p> c = summ / 20</p><p><b> summ = 0</b>&
72、lt;/p><p> i = (c / 255) * 10</p><p> 5.3 壓力傳感器部分</p><p> 傳感器部分主要我們是購買的成品回來,在調(diào)試時主要是檢驗其是否到達要求,輸出的線性度如何。在測試時我們把G-接地,I-接+5V另與O-之間加上2 K上拉電阻即可通過0-輸出,然后給傳感器裝上水管后先不加水看起輸出的電壓時多少,再不斷的加水看輸出的電
73、壓是否在給的范圍之內(nèi),再加水到傳感器的極限輸出即傳感器的最大輸出電壓是多少。</p><p> 6 系統(tǒng)功能及指標(biāo)參數(shù)</p><p><b> 6.1系統(tǒng)功能</b></p><p> 本次設(shè)計的智能液位傳感器主要能實現(xiàn)以下功能:</p><p> 壓力傳感器采用的測量液體的壓強的方式來實現(xiàn)測量液面高度;<
74、;/p><p> 設(shè)計的單片機系統(tǒng)能控制ADC對壓力傳感器的輸出電壓信號進行采集并轉(zhuǎn)換;</p><p> 測量范圍能基本達到設(shè)計的要求在0-1米的范圍內(nèi)誤差較小;</p><p> 能在上位機上直觀的顯示出測量的液面高度;</p><p> 6.2 系統(tǒng)各部分的測試參數(shù)</p><p> 6.2.1 AD部分調(diào)
75、試參數(shù)</p><p> 在調(diào)通AD后我們對AD的數(shù)據(jù)采集功能進行了測試,測試數(shù)據(jù)如下圖6.1:</p><p> 圖 6.1 AD的采集數(shù)據(jù)與給定的輸入數(shù)據(jù)</p><p> 這幾組數(shù)據(jù)都是在室內(nèi)測得的,都是在室溫接近30度的情況測得。我們對所測得的數(shù)據(jù)進行了處理,一共測了5組數(shù)據(jù)(給定的輸入電壓是在直流穩(wěn)壓電源上直接讀的,而測得的數(shù)據(jù)則是通過我們所做的上位
76、機顯示程序讀出來的),求出了每組數(shù)據(jù)的樣本均值和樣本方差,通過直觀的觀察發(fā)現(xiàn)和給定的AD輸入誤差不是很大,我們也通過excel做表發(fā)現(xiàn)這幾組測得的數(shù)據(jù)與給定的輸入電壓誤差很小。這說明AD的線性度還是比較高的。</p><p> 6.2.2 系統(tǒng)測量液面高度的數(shù)據(jù)參數(shù)</p><p> 這里測的數(shù)據(jù)是整個系統(tǒng)組在一起進行的測量,測量我們所給的液面高度。</p><p&
77、gt; 測得的數(shù)據(jù)如下圖6.2:</p><p> 圖6.2 液面高度的測量數(shù)據(jù)</p><p> 這些數(shù)據(jù)都是在室內(nèi)測得的,在室溫30度左右測得。一共測了三組數(shù)據(jù),電壓利用上位機顯示程序直接讀得,而高度的數(shù)據(jù)則是用米尺測得,一個電壓對應(yīng)一個液面高度。數(shù)據(jù)處理則是求斜率的問題,每一個高度對應(yīng)一個斜率主要為后面的上位機顯示液面高度的VB程序找一個理論的依據(jù)。這樣也可以看壓力傳感器的工作
78、的線性度如何。</p><p> 6.2.3 調(diào)試總結(jié)</p><p> 通過調(diào)試我們發(fā)現(xiàn)調(diào)試時最費時間的藥考慮很多因素,調(diào)試過程要將整個系統(tǒng)組合起來看工作是否正常,能否達到基本的要求。</p><p> 我們設(shè)計的只能液位傳感器能基本滿足設(shè)計的基本要求,通過壓力傳感器測量液位的壓強方式,ADC0804對壓力傳感器的輸出的模擬電壓進行采集和轉(zhuǎn)換送入單片機然后通
79、過RS232串口通信傳送到上位機上顯示液面的高度。實現(xiàn)了將二進制的量化轉(zhuǎn)換為以厘米為單位的ASCLL標(biāo)準(zhǔn)字符串形式傳送到PC機。測量范圍在0-1米內(nèi)時誤差能基本滿足要求。誤差主要就是來至壓力傳感器的輸出與ADC0804的輸入有一定的差距,這主要是由于整個系統(tǒng)連接起來過后傳感器的內(nèi)部電阻將其輸出電壓拉下來了,我們在以后對系統(tǒng)加入電壓跟隨器來改善。</p><p><b> 7 結(jié)論</b>&
80、lt;/p><p> 本次設(shè)計的智能液位傳感器達到了預(yù)期的基本要求,主要特色之一就是直接利用壓力傳感器測液體的壓力的方式實現(xiàn)了測液面的高度,這種方式實現(xiàn)起來比較容易;其二就是將測量系統(tǒng)與PC機相結(jié)合起來這樣對數(shù)據(jù)的讀數(shù)比較直觀,并且能精確到厘米。不過此設(shè)計也有很多不足之處,測量時要在容器的底部開口才能讀出壓力,還可以加入報警系統(tǒng),當(dāng)測量超出范圍時,系統(tǒng)自動報警。還有就是還可以加上一定的數(shù)據(jù)存儲能力,這樣要對以前的數(shù)
81、據(jù)進行研究的地方非常有幫助。</p><p><b> 8 總結(jié)與體會</b></p><p> 綜合上述各部分的測試結(jié)果,本設(shè)計完成了課程設(shè)計的大多數(shù)的要求?;具_到了預(yù)期的目標(biāo)。</p><p> 這次智能綜合設(shè)計歷時接近一個月,在這期間可以說是苦多于甜,但是可以學(xué)到很多很多的東西,不僅可以鞏固以前所學(xué)過的知識,而且學(xué)到了很多書本上沒
82、有接觸過的知識。以前接觸的那些程序都是很短很基礎(chǔ)的,但是在課程設(shè)計中碰到了一些復(fù)雜的程序編寫,這時畫程序方框圖就顯得很有必要了。通過畫程序方框圖可以使我們對所要完成的每一步任務(wù)都有一個很清楚的思路,讓我們明白每一步的任務(wù),同時在程序測試的過程中也有利于查錯。</p><p> 另外,以前對于編程工具的使用還處于一知半解的狀態(tài)上,經(jīng)過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結(jié)果,怎么去了解每個寄
83、存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。 </p><p> 這次課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在同學(xué)們的幫助下并且查閱了很多相關(guān)的資料才得以解決。通過本次課程設(shè)計,我進一步溫習(xí)和鞏固了課本的理論知識,增強了理論聯(lián)系實際的能力,同時也增強了我通過檢索資料來獲取相關(guān)專業(yè)信息以及利用檢索到的信息來解決面臨問題的能力。本次設(shè)計使我深刻認識到自己軟件編程方面的知識薄弱,同時也使我體
84、會到軟件編程在實際硬件電路連接中的重要作用,軟件編程的使用使硬件開銷大大減少,同時也使設(shè)計更加的簡潔易于控制,在今后的學(xué)習(xí)中我們會加強軟件編程方面知識的積累和運用,會更加注重理論與實際的結(jié)合。</p><p> 在這次作品制作過程中,我們知道了要真正的做出作品需要考慮非常多的因素,有些看似不起眼的細節(jié)都可能對電路產(chǎn)生巨大的影響,如連線是否可等。通過這次課程設(shè)計自己看到了許多工程和一些產(chǎn)品中的要求,讓自己明白了自
85、己現(xiàn)在缺乏很多工程意識和思考問題的全面性。</p><p> 在此我要特別感謝我們的課程設(shè)計指導(dǎo)老師鄭海春老師。在設(shè)計過程中他為我們提供了很多的幫助和指導(dǎo)。在老師的身上我們學(xué)也到很多實用的知識,在此我們表示感謝!同時,對給過我們組幫助的所有同學(xué)和各位指導(dǎo)老師再次表示忠心的感謝!</p><p><b> 9 參考文獻</b></p><p>
86、; [1]汪德彪. MCS-51單片機原理及接口技術(shù)[M]. 北京電子工業(yè)出版社. 2004.</p><p> [2]胡文金,鐘秉翔. 單片機應(yīng)用技術(shù)實訓(xùn)教程[M]. 重慶大學(xué)出版社. 2005.</p><p> [3]張毅剛,彭喜元,董繼成. 單片機原理及應(yīng)用[M]. 重慶大學(xué)出版社. 2003.</p><p> [4] 謝自美.電子線路設(shè)計?實驗?
87、測試[M] . 武漢:華中科技出版社,2000.5</p><p> [5] 譚浩強.C程序設(shè)計(第三版)[M]. 北京:清華大學(xué)出版社,2008.1</p><p> [6] 王華奎.數(shù)字信號處理及應(yīng)用[M]. 北京:高等教育出版社,2006.12</p><p> [7] 姚燕南.微型計算機原理與接口技術(shù)[M]. 北京:高等教育出版社,2006.4<
88、/p><p> [8] 古天祥.電子測量原理[M]. 北京:機械工業(yè)出版社,2009.1</p><p> [9] 徐科軍.傳感器與檢測技術(shù)[M]. 北京:電子工業(yè)出版社,2010.11</p><p><b> 附錄</b></p><p><b> 附錄1:</b></p>&
89、lt;p><b> 總電路圖如下圖1:</b></p><p><b> 圖 1 總電路圖</b></p><p><b> 實物圖如下圖:</b></p><p><b> 實物圖1</b></p><p><b> 實物圖2
90、</b></p><p><b> 實物圖3</b></p><p><b> 附錄2:程序</b></p><p><b> 單片機程序如下:</b></p><p> #include<reg52.h></p><p>
91、; #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar flag,i,j;</p><p> sbit wr=P3^6;</p><p> sbit rd=P3^7;</p><p> void dela
92、y(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b>
93、 }</b></p><p> void adopen()//adc0804初始化</p><p><b> {</b></p><p><b> wr=1;</b></p><p><b> wr=0;</b></p><p>&
94、lt;b> wr=1;</b></p><p><b> delay(1);</b></p><p><b> rd=0;</b></p><p><b> i=i;</b></p><p><b> i=i;//延時</b>&
95、lt;/p><p><b> j=P1;</b></p><p><b> rd=1;</b></p><p><b> }</b></p><p> void initial()//串口初始化</p><p><b> {</b
96、></p><p> TMOD=0x20;//設(shè)置定時器1為工作方式2</p><p><b> TH1=0xfd;</b></p><p><b> TL1=0xfd;</b></p><p><b> TR1=1;</b></p><p&g
97、t; REN=1;//串口始能REN=1時允許串行口接收數(shù)據(jù)</p><p> SM0=0;//模式1,8位數(shù)據(jù),波特率由軟件設(shè)置</p><p><b> SM1=1;</b></p><p> EA=1;//總通斷</p><p> ES=1;//串口通斷</p><p><b
98、> }</b></p><p> void main()</p><p><b> {</b></p><p> initial(); </p><p><b> while(1)</b></p><p><b> {</b&
99、gt;</p><p> adopen();</p><p> if(flag==1)</p><p><b> {</b></p><p><b> ES=0;</b></p><p><b> flag=0;</b></p>
100、<p><b> SBUF=j/2;</b></p><p> while(!TI);</p><p><b> TI=0;</b></p><p><b> ES=1;</b></p><p><b> }</b></p&g
101、t;<p><b> }</b></p><p><b> }</b></p><p> void ser() interrupt 4//串口中斷</p><p><b> {</b></p><p> while(TI);flag=1;</p&g
102、t;<p><b> }</b></p><p> 上位機VB部分程序如下:</p><p> Dim i As Single</p><p> Dim j As Integer</p><p> Dim k As Integer</p><p> Dim d(1) As
103、 Byte</p><p> Dim b As Long</p><p> Dim c As Double</p><p> Dim summ As Double</p><p> Dim e(20) As Double</p><p> Private Sub Combo1_click()</p>
104、;<p> MSComm1.CommPort = Combo1.ListIndex + 1 '選擇通訊口</p><p><b> End Sub</b></p><p> Private Sub Command1_Click()</p><p> MSComm1.PortOpen = True
105、 '打開串口</p><p><b> End Sub</b></p><p> Private Sub Command10_Click()</p><p><b> End</b></p><p><b> End Sub</b></p>
106、;<p> Private Sub Form_Load() '設(shè)置串口</p><p> MSComm1.Settings = "9600,N,8,1" '串口通訊初始化:波特率為9600,沒有校驗位,八位數(shù)據(jù)傳送,一位停止位</p><p> MSComm1.RThreshold =
107、1</p><p> MSComm1.InputMode = comInputModeText '以文本形式接收數(shù)據(jù)</p><p> Combo1.AddItem "COM1"</p><p> Combo1.AddItem "COM2"</p><p> Combo1.AddI
108、tem "COM3"</p><p> Combo1.AddItem "COM4"</p><p> Combo1.AddItem "COM5"</p><p> Combo1.AddItem "COM6"</p><p><b> j = 0&
109、lt;/b></p><p><b> End Sub</b></p><p> Private Sub MSComm1_OnComm() '程序的核心部分:VB的串口通訊控件MSComm</p><p> Dim a As String</p><p> Select Case MSC
110、omm1.CommEvent</p><p> Case comEvReceive '每接收一個數(shù)據(jù)就觸發(fā)一次事件</p><p> a = MSComm1.Input</p><p> b = Asc(a)</p><p> e(j) = b '收20個
111、數(shù)據(jù)取平均值再顯示出來 減小抖動</p><p><b> j = j + 1</b></p><p> If j = 19 Then</p><p> MSComm1.PortOpen = False</p><p> For k = 0 To 19</p><p> summ =
112、summ + e(k)</p><p><b> Next k</b></p><p> c = summ / 20</p><p><b> summ = 0</b></p><p> i = (c / 255) * 10</p><p> If i < 0
113、.08 Then</p><p> Text2.Text = 0</p><p> Text1.Text = 0</p><p><b> Else</b></p><p> Text2.Text = i * 1.04</p><p> Text1.Text = 18.33766 * i
114、 * 1.04</p><p><b> End If</b></p><p> MSComm1.PortOpen = True</p><p><b> j = 0</b></p><p><b> End If</b></p><p> E
115、nd Select</p><p><b> 附錄3 元器件清單</b></p><p> 元器件清單如下表1:</p><p><b> 表1:元器件清單表</b></p><p> 由于這次的設(shè)計所用的電阻電容是在實驗室找的而且很便宜就沒有計算在成本內(nèi),總的來說這次設(shè)計的智能液位傳感器成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機實現(xiàn)的智能液位傳感器畢業(yè)論文
- 單片機實現(xiàn)智能液位傳感器大學(xué)課題論文(設(shè)計)word格式
- 畢業(yè)論文--基于單片機的智能傳感器設(shè)計(含外文翻譯)
- 畢業(yè)論文---基于單片機的液位控制系統(tǒng)設(shè)計
- 畢業(yè)設(shè)計(論文)+基于單片機的濕度傳感器設(shè)計與實現(xiàn)
- 畢業(yè)論文(設(shè)計)基于單片機的液位控制系統(tǒng)設(shè)計
- 基于單片機的智能臺燈畢業(yè)論文
- 基于profibus-dp現(xiàn)場總線的智能液位傳感器接口研發(fā)——畢業(yè)論文
- 基于profibus-dp現(xiàn)場總線的智能液位傳感器接口研發(fā)——畢業(yè)論文
- 畢業(yè)論文---基于單片機的智能血壓設(shè)計
- 基于單片機的數(shù)字式軸角傳感器設(shè)計-畢業(yè)論文外文翻譯
- 基于單片機的wifi智能小車畢業(yè)論文
- 基于51單片機的智能小車畢業(yè)論文
- 基于智能傳感器和單片機的溫度監(jiān)測系統(tǒng).pdf
- 基于單片機的智能小車控制畢業(yè)論文
- 基于單片機的智能小車設(shè)計畢業(yè)論文
- 基于單片機的智能窗簾設(shè)計-智能電網(wǎng)畢業(yè)論文
- 基于單片機的智能風(fēng)扇控制器設(shè)計【畢業(yè)論文】
- 基于51單片機實現(xiàn)智能電飯煲功能的設(shè)計與實現(xiàn)畢業(yè)論文
- 基于單片機的濕度傳感器設(shè)計
評論
0/150
提交評論