基于單片機實現的智能液位傳感器畢業(yè)論文_第1頁
已閱讀1頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  智能液位傳感器</b></p><p><b>  摘 要</b></p><p>  摘 要:介紹了壓力傳感器的應用,設計了智能液位傳感器。此設計通過壓力傳感器測出液體的壓力,輸出0 - +5V的模擬電壓通過ADC0804采集轉換成數字量送入單片機處理,由RS232串口通信送到上位機,并顯示出高度。此設計能完成0

2、-1.5m高度的液位測量,能精確到厘米。此設計主要由壓力傳感器,單片機,ADC0804轉換器構成。</p><p>  關鍵詞:智能液位傳感器,單片機,AD轉換器</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設計目的5</p><p>  1.2 設計任務與要求5</p

6、><p>  1.3 智能液位傳感器的基本原理5</p><p><b>  2總體方案設計6</b></p><p>  2.1 智能液位傳感器設計方案框圖6</p><p>  2.2 方案論證7</p><p>  2.3 方案可能的擴展功能8</p><p>

7、  3 單元模塊電路的設計9</p><p>  3.1各單元模塊功能介紹及電路設計9</p><p>  3.1.1 傳感器輸出部分9</p><p>  3.1.2 ADC0804數據采集轉化部分9</p><p>  3.1.3 單片機最小系統(tǒng)模塊10</p><p>  3.1.4 RS232模塊1

8、1</p><p>  3.2 電路參數計算及元器件的選擇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 個單元模塊的聯接17</p><p><b>  4 軟件設計19</b></p><p>  4.1 軟件設計原理及所用的工具19</p><p>  4.1.1 單片機部分19</p><p>  4.1.2 上位機VB部分20</p><p>  4.2 軟件的設計流程框

10、圖22</p><p>  4.3 軟件設計總結23</p><p><b>  5 系統(tǒng)調試24</b></p><p>  5.1 硬件結構部分24</p><p>  5.2 VB部分24</p><p>  5.3 壓力傳感器部分25</p><p> 

11、 6 系統(tǒng)功能及指標參數26</p><p>  6.1系統(tǒng)功能26</p><p>  6.2 系統(tǒng)各部分的測試參數26</p><p>  6.2.1 AD部分調試參數26</p><p>  6.2.2 系統(tǒng)測量液面高度的數據參數27</p><p>  6.2.3 調試總結28</p>

12、<p><b>  7 結論29</b></p><p>  8 總結與體會及感謝語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>  液位檢測在許多控制領域已較為普遍,各種類型的液位檢測傳感器較多,按原理分有浮子式、壓力式、超聲波式、吹氣式等。各種方式都根據其需

14、要設計完成,其結構、量程和精度適用于各自不同的場合,大多結構較為復雜,制造成本偏高;市面上也有現成的液位計,有投入式、浮球式、彈簧式等,多數成品價格驚人。以上液位計多數輸出為模擬量電流或電壓,有些為機械指針讀數,不能用于遠程監(jiān)視;普遍適用于靜止液面,在波動液面易引起讀數的波動;也有用電容法測液位的系統(tǒng),此法是一種簡單易行的方案。本文利用壓力傳感器測液體壓力的原理,結合單片機設計出一種智能液位檢測裝置。</p><p&

15、gt;  本學期開設了傳感器及傳感器技術,單片機等課程。本課程設計是在學完這么多課程的基礎上,為了能更好的掌握這些課的內容,把理論應用于實際而提出來的。旨在發(fā)揮我們的設計,創(chuàng)新意識。通過本課程設計可以掌握和鞏固傳感器的基本設計方法,工業(yè)水位的測量方法,單片機的基本應用,顯示電路的連接等知識。進一步加強對課堂理論知識的理解與綜合應用能力,從而提高我們解決問題的能力和創(chuàng)造發(fā)明能力。</p><p>  如今傳感器的應

16、用是非常的廣泛,并且已經融入到我們的生活,工作,科研等領域中。在我組進行設計中我們首先對壓力傳感器輸出的電壓和對應的液體高度進行整理和多次測量得出一個比較與實際高度符合的函數。我們通過壓力傳感器測出液體壓力,利用ADC0804對傳感器的輸出電壓進行采集并將模擬電壓信號轉換成數字電平信號0,1。然后將采集的數據送入單片機最小系統(tǒng)進行處理然后利用RS232電平轉換送到PC機,PC機上用VB編寫一個顯示界面,再在VB中利用程序將數字量轉換成以

17、厘米為單位的高度并顯示出來。</p><p>  液位傳感器的應用雖然非常廣泛,但是現在高精度的液位的傳感器價格非常貴,實現民用還有一定的難度。所以我們的設計應更加創(chuàng)新利用更小的成本設計生產出更好的傳感器。</p><p><b>  設計目的</b></p><p>  1.理解并掌握智能液位傳感器的原理及實現的方法。</p>

18、<p>  2. 掌握ADC,RS232電平轉換電路的原理,壓力傳感器的特性參數的計算及選擇。</p><p>  3.掌握單片機最小系統(tǒng)的組成。</p><p>  4.培養(yǎng)實踐技能,提高分析和解決實際問題的能力。</p><p>  5.學習基本理論在實踐中綜合運用的初步經驗,掌握模擬電路及數字電路設計的基本方法、設計步驟,培養(yǎng)綜合設計與調試能力。&l

19、t;/p><p>  1.2 設計任務與要求</p><p>  1.利用一個液位傳感器及周邊電路,完成液位到電信號的轉換;液位測量采用測量液體的壓強的方式;測量范圍0-1.5米;</p><p>  2.設計一個單片機系統(tǒng)控制一個ADC對壓力變送器輸出的電信號進行采集;</p><p>  3.編寫數據轉換程序;將二進制的量化數據轉換為以厘米為

20、單位的ASCLL標準字符串形式傳送到PC機;注:ASCLL標準字符串是以ASCLL碼為信息的編碼方式,字符串結尾數據是一個字節(jié)00H;</p><p>  4.設計單片機通信程序以及RS232電平轉換電路;</p><p>  5.設計單片機相關運行程序;</p><p>  6.設計相關電路,如單片機系統(tǒng),模擬輸入通道,ADC,和電源電路等;</p>

21、<p>  7.報告格式嚴格按照《課程設計報告格式要求說明》執(zhí)行;</p><p>  1.3 智能液位傳感器的基本原理</p><p>  本次設計的智能液位傳感器的基本原理是利用一個壓力傳感器測出在水管的水的壓力,壓力變送器的輸出為是0-5V的模擬電壓信號(或是4-20毫安的模擬電流信號),利用ADC0804對傳感器的輸出電壓進行采集并將模擬電壓信號轉換成數字電平信號0,1

22、。然后將采集的數據送入單片機最小系統(tǒng)進行處理然后利用RS232電平轉換送到PC機,PC機上用VB的MS.COM控件編寫一個顯示界面,再在VB中利用程序將數字量轉換成以厘米為單位的高度并顯示出來。</p><p><b>  2總體方案設計</b></p><p>  通過查閱大量相關技術資料,并結合自己的實際知識,我主要提出了兩種技術方案來實現系統(tǒng)功能。下面我將首先對

23、這兩種種方案的組成框圖和實現原理分別進行說明。</p><p>  2.1 智能液位傳感器設計方案框圖</p><p>  兩種方案的框圖如下圖:</p><p><b>  方案1:</b></p><p><b>  方案2:</b></p><p><b> 

24、 2.2 方案論證</b></p><p>  對于方案1和2按照理論來看做出來能夠達到一定的預期效果,能達基本滿足本次設計的基本要求。但是兩種方案不同之處就在于傳感器的選擇和AD的選擇,現就這兩個方面來論述.為什么選擇方案2。</p><p>  方案1的傳感器部分是利用應變片做的壓力變送器,其結構如下圖2.1:</p><p><b>  

25、圖 2.1 </b></p><p>  這是利用4片應變片做的全橋電路其電壓靈敏度比單臂工作時提高了4倍,消除了一定的非線性誤差。其輸出的為電流信號但是非常小,所以在外部又加了一個差動放大將信號放大才能滿足AD 0 - +5V的輸入電壓的要求。但是此類的工作都是提供1.5mA的橫流源,我們自己做的恒流源很難滿足要求。硬件部分完成以后還要對其進行測試線性度,但是測量比較麻煩后期的數據處理也比較繁瑣,最

26、后達到的效果也比較差所以就沒有選擇應變片制作。</p><p>  對于AD的選擇主要是ADC0832與ADC0804之間的選擇。</p><p>  ADC0832是8位分辨率;+5V電源供電;輸入電壓為0 - +5V;工作頻率250HZ;轉換時間為32us;數據轉送是8位串行傳送;</p><p>  ADC0804是8位分辨率;5V電源供電;輸入電壓為0 -

27、+5V;轉換時間的100us;存取時間是135us;數據傳送是8位并行傳送;</p><p>  通過直觀的觀察可以發(fā)現由于ADC0832的數據傳送是8位串行的所以傳完8位數據需要的時間為256us,而ADC0804為8位的并行數據傳送,傳8位數據只需100us。所以ADC0804的轉換存取速度更快,這樣系統(tǒng)的工作效率更高。所以我們采用的是ADC0804。</p><p>  綜上我們本次

28、設計液位傳感器采用的方案2。</p><p>  2.3 方案可能的擴展功能</p><p>  我們這次設計的智能液位傳感器結構還比較簡單,只是完成測液位并讀出頁面高度的基本功能,在這幾完成后發(fā)現該系統(tǒng)還能擴展許多功能。比如增加報警系統(tǒng)(應用于比如水庫的水位測量時可以做下限報警和超限報警);遠程的控制系統(tǒng)(比如家用的水塔水不足時可以控制水泵加水)。</p><p>

29、;  3 單元模塊電路的設計</p><p>  本節(jié)主要介紹系統(tǒng)各單元模塊的具體功能、電路結構、工作原理、以及各個單元模塊之間的聯接關系;同時本節(jié)也會對相關電路中的參數計算、元器件選擇、以及核心器件進行必要說明。</p><p>  3.1各單元模塊功能介紹及電路設計</p><p>  本系統(tǒng)電路模塊主要分為四個單元模塊,它們分別是:傳感器輸出部分;ADC080

30、4的數據采集轉換模塊;單片機最小系統(tǒng)模塊;RS232模塊.各單元模塊功能及相關電路的具體說明如下。</p><p>  3.1.1 傳感器輸出部分</p><p>  3.1.2 ADC0804數據采集轉化部分</p><p>  該級電路一共實現了兩個功能:第一個是對模擬電壓信號的采集。第二個功能是將模擬電壓信號轉換成數字信號。</p><p&

31、gt;  這一級的原理圖如圖3.2:</p><p>  圖3.2 ADC0804數據采集轉換電路圖</p><p>  3.1.3 單片機最小系統(tǒng)模塊</p><p>  這部分主要是由STC89C52單片機組成的一個最小系統(tǒng),通過單片機來控制ADC0804的信號采集轉換以及對RS232串口通信的控制。</p><p>  該級電路原

32、理圖如圖3.3:</p><p>  圖3.3 單片機最小系統(tǒng)電路圖</p><p>  3.1.4 RS232模塊</p><p>  RS232模塊主要通過USB轉串口線來與PC機通信將ADC0804采集和轉換的數據傳給上位機顯示出所測得液面高度。</p><p>  模塊的原理圖如圖3.4:</p><p>

33、;  圖3.4 RS232電路圖</p><p>  3.2 電路參數計算及元器件的選擇</p><p>  3.2.1 元器件的選擇</p><p>  設計所用儀器及器件如下表1:</p><p><b>  表1</b></p><p>  3.3 特殊元器件介紹</p>

34、<p>  這一節(jié)將對設計過程中用到的一些特殊元器件進行介紹,主要是介紹該特殊元器件的內部結構,工作原理,及使用時應該注意的事項。</p><p>  3.2.1 ADC0804</p><p>  ADC0804的內部原理結構圖如下圖3.5:</p><p>  圖3.5 ADC0804的內部原理結構圖 </p><p>  

35、ADC0804主要技術指標如下:</p><p>  (1) 高阻抗狀態(tài)輸出</p><p>  (2) 分辨率:8 位(0~255)</p><p>  (3) 存取時間:135 us</p><p>  (4) 轉換時間: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)結構</p><p

37、>  ADC0804的引腳圖如下圖3.6:</p><p>  圖 3.6 ADC0804引腳圖</p><p>  引腳及功能特性如下:</p><p>  CS 、RD 、WR (引腳1、2、3):是數字控制輸入端,滿足標準TTL 邏輯電平。其中CS 和WR 用來控制A/D 轉換的啟動信號。CS 、RD 用來讀A/D 轉換的結果,當它們同時為低電平時

38、,輸出數據鎖存器DB0~DB7 各端上出現8 位并行二進制數碼。</p><p>  LKI(引腳4)和CLKR(引腳19):ADC0801~0805 片內有時鐘電路,只要在外部“CLKI”和“CLKR”兩端外接一對電阻電容即可產生A/D 轉換所要求的時鐘,其振蕩頻率為fCLK≈1/1.1RC。其典型應用參數為:R=10KΩ,C=150PF,fCLK≈640KHZ,轉換速度為100μs。若采用外部時鐘,則外部f

39、CLK 可從CLKI 端送入,此時不接R、C。</p><p>  允許的時鐘頻率范圍為100KHZ~1460KHZ。</p><p>  INTR (引腳5): INTR 是轉換結束信號輸出端,輸出跳轉為低電平表示本次轉換已經完成,可作為微處理器的中斷或查詢信號。如果將CS 和WR 端與INTR 端相連,則ADC0804 就處于自動循環(huán)轉換狀態(tài)。CS =0 時,允許進行A/D 轉換。&l

40、t;/p><p>  WR 由低跳高時A/D 轉換開始,8 位逐次比較需8×8=64 個時鐘周期,再加上控制邏輯操作,一次轉換需要66~73 個時鐘周期。在典型應用fCLK=640KHZ 時,轉換時間約為103μs~114μs。當fCLK 超過640KHZ,轉換精度下降,超過極限值1460KHZ 時便不能正常工作。</p><p>  VIN(+)(引腳)和VIN(-)(引腳7):被

41、轉換的電壓信號從VIN(+)和VIN(-)輸入,允許此信號是差動的或不共地的電壓信號。如果輸入電壓VIN的變化范圍從0V到Vmax,則芯片的VIN(-)端接地,輸入電壓加到VIN(+)引腳。由于該芯片允許差動輸入,在共模輸入電壓允的情況下,輸入電壓范圍可以從非零伏開始,即Vmin 至Vmas。此時芯片的VIN(-)端應該接入等于Vmin 的恒值電碼墳上,而輸入電壓VIN仍然加到VIN(+)引腳上。</p><p>

42、;  AGND(引腳8)和DGND(引腳10):A/D 轉換器一般都有這兩個引腳。模擬地AGND 和數字地DGND 分別設置引入端,使數字電路的地電流不影響模擬信號回路,以防止寄生耦合造成的干擾。</p><p>  VREF/2(引腳9):參考電壓VREF/2 可以由外部電路供給,從“VREF/2”端直接送入,VREF/2 端電壓值應是輸入電壓范圍的二分之一。所以輸入電壓的范圍可以通過調整VREF/2 引腳處的

43、電壓加以改變,轉換器的零點無需調整。</p><p>  ADC0804 轉換器的工作時序如圖3.7:</p><p>  圖3.7 工作時序圖</p><p>  3.1.2 壓力傳感器D3B</p><p>  我們這次智能液位傳感器設計使用的傳感器部分采用的是壓力傳感器D3B,液位測量采用的測量液體壓強的方式。壓力傳感器如下圖3.8:

44、</p><p><b>  圖 3.8</b></p><p>  傳感器主要參數如下:</p><p>  工作電壓:4.2v—6.2v;壓力范圍:0-----1000mm水柱,0----0.1Kg/c㎡;電壓輸出:0.23v---4.9v;線性度0.2%;外型:30×30×20mm  。</p

45、><p>  接線方式:每個接線柱下皆有標示,G-接地,I-接+5V另與O-之間加載2.2K上拉電阻即可通過0-輸出</p><p>  傳感器本身不能放到水里,所以設計時我們是利用水管引水到傳感器中央的壓力感應膜上。</p><p>  3.4 個單元模塊的聯接</p><p>  個單元的聯接如下圖3.9:</p><p&

46、gt;  圖 3.9 個單元模塊的聯接圖</p><p>  說明:AD的輸入連接的是壓力傳感器的輸出端。</p><p><b>  4 軟件設計</b></p><p>  本次設計主要用到的軟件主要涉及到單片機的c語言編程,上位機的VB部分的界面編程。</p><p>  4.1 軟件設計原理及所用的工具<

47、/p><p>  4.1.1 單片機部分</p><p>  單片機程序部分主要功能是:控制ADC0804接收模擬數據轉換成數字量,由89C52接收數字量,將處理后的數字量通過串口通訊傳給上位機。</p><p>  該程序部分設計過程中使用的是keil軟件來編寫的,利用STC-ISP軟件進行下載和調試的。主要就是通過STC89C52來控制AD采集轉換部分和串口通信,該

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;//設置定時器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時允許串行口接收數據</p><p>  SM0=0;//模式1,8位數據,波特率由軟件設置</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來實現的。</p><p>  顯示的輸入的兩個部分都是顯示在vb里的text文本框里的。<

54、/p><p><b>  核心程序如下:</b></p><p>  串口的設置如下程序:</p><p>  Private Sub Form_Load() '設置串口</p><p>  MSComm1.Settings = "9600,N,8,1"

55、 '串口通訊初始化:波特率為9600,沒有校驗位,八位數據傳送,一位停止位</p><p>  MSComm1.RThreshold = 1</p><p>  MSComm1.InputMode = comInputModeText '以文本形式接收數據</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 '每接收一個數據就觸發(fā)一次事件</p><p>  a = M

59、SComm1.Input</p><p>  b = Asc(a)</p><p>  e(j) = b '收20個數據取平均值再顯示出來 減小抖動</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 軟件的設計流程框圖</p><p>  4.

64、3 軟件設計總結</p><p>  軟件設計中主要運用了所學的單片機課程和VB語言中的知識,單片機中的程序用的是C語言。程序主要包含了ADC0804的初始化;調用串口功能;串口的初始化;延時程序,主代碼段實現了打開AD并對數據進行采集轉換。</p><p>  上位機利用的是VB的知識,利用串口通信控件MS.COM來實現的。編寫出來的顯示界面如下圖4.1:</p><

65、p>  圖 4.1 顯示界面</p><p>  該界面內可以選擇串口端口號,達到了本次設計的基本要求,顯示了AD的輸入電壓和測得的液面高度值。</p><p><b>  5 系統(tǒng)調試</b></p><p>  5.1 硬件結構部分</p><p>  硬件部分我們先是通過PROTEL軟件畫的AD部分;單片機部

66、分和RS232部分的原理圖,然后這部分沒有畫PCB圖就直接用萬用板和排線進行搭建的。這樣在焊接的過程中就會顯得比較麻煩,必須很細心才能很好的完成,如果哪個地方焊接錯誤或者是將要用到的引腳沒有焊接上都會導致系統(tǒng)不能工作。比如像我們這次的設計就出現過這樣的問題,在焊接完單片機最小系統(tǒng)和RS232串口通信后覺得因該能下載程序到單片機內部了,結果利用直流可調的穩(wěn)壓電源給單片機加了+5V的工作電壓結果單片機不能工作。在經過討論發(fā)現應該是單片機沒有

67、起振,然后發(fā)現是晶振的兩個引腳焊接反了,這樣小小的失誤會導致嚴重的后果。</p><p>  在焊接好ADC0804部分后我們對其進行了調試,在調試AD時,我們發(fā)現通過P0口始終不能將數據寫到AD,后來經過查閱資料發(fā)現,要想使P0口輸出數據必須在P0口接上拉電阻,后來我們換P2口為數據輸出口,才成功將AD驅動成功。</p><p><b>  5.2 VB部分</b>

68、</p><p>  上位機部分的調試是結合前面的AD采集系統(tǒng)一起來進行調試的這樣下過會更直觀。這里的調試用到了直流可調的穩(wěn)壓電源,給單片機加上+5V的工作電壓后在AD輸入端加上0-5V的輸入電壓然后利用RS232串口通信將采集并轉換的電壓值顯示在PC上利用VB做的顯示界面上。結果發(fā)現當AD沒有給輸入電壓時,上位機顯示有輸入電壓,經過查資料發(fā)現這是由于由于AD器件本身的原因,當沒有給輸入時,其輸入端呈高阻狀態(tài),所

69、以當沒有輸入時,所測到得電壓是錯誤的,為了解決這個問題我們嘗試了幾種方法,其中是用運放做電壓跟隨器來進行阻抗變換,使AD輸入端不再懸空,但是由于很多運放都不是軌道軌的運放(即不是滿伏輸出運放),而且會大大增加硬件的結構,所以不選擇這種方法,后來我們想到給輸入端加下拉電阻的方法,可以將輸入端電壓拉至地端,并且當有輸入時,其顯示的電壓也是輸入電壓。</p><p>  在剛開始設計上位機顯示這部分時我們沒有想到由于系

70、統(tǒng)整體的原因,所采集到得數據有很大的抖動,討論過后發(fā)現是有多方面的原因的。其一就是我們這次設計采用的AD0804的采集轉換時間為100us,這個時間是非常短的所以數據在不斷地更新。后來經過老師對數字濾波的詳細講解,我們下來也查閱了于數字濾波相關的資料,然后運用到上位機部分。在程序部分利用取多組數據再取均值的方法,雖然系統(tǒng)的測試速度有所變慢,但數據抖動很小,只在百分位抖動,影響不大。</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>  傳感器部分主要我們是購買的成品回來,在調試時主要是檢驗其是否到達要求,輸出的線性度如何。在測試時我們把G-接地,I-接+5V另與O-之間加上2 K上拉電阻即可通過0-輸出,然后給傳感器裝上水管后先不加水看起輸出的電壓時多少,再不斷的加水看輸出的電

73、壓是否在給的范圍之內,再加水到傳感器的極限輸出即傳感器的最大輸出電壓是多少。</p><p>  6 系統(tǒng)功能及指標參數</p><p><b>  6.1系統(tǒng)功能</b></p><p>  本次設計的智能液位傳感器主要能實現以下功能:</p><p>  壓力傳感器采用的測量液體的壓強的方式來實現測量液面高度;<

74、;/p><p>  設計的單片機系統(tǒng)能控制ADC對壓力傳感器的輸出電壓信號進行采集并轉換;</p><p>  測量范圍能基本達到設計的要求在0-1米的范圍內誤差較小;</p><p>  能在上位機上直觀的顯示出測量的液面高度;</p><p>  6.2 系統(tǒng)各部分的測試參數</p><p>  6.2.1 AD部分調

75、試參數</p><p>  在調通AD后我們對AD的數據采集功能進行了測試,測試數據如下圖6.1:</p><p>  圖 6.1 AD的采集數據與給定的輸入數據</p><p>  這幾組數據都是在室內測得的,都是在室溫接近30度的情況測得。我們對所測得的數據進行了處理,一共測了5組數據(給定的輸入電壓是在直流穩(wěn)壓電源上直接讀的,而測得的數據則是通過我們所做的上位

76、機顯示程序讀出來的),求出了每組數據的樣本均值和樣本方差,通過直觀的觀察發(fā)現和給定的AD輸入誤差不是很大,我們也通過excel做表發(fā)現這幾組測得的數據與給定的輸入電壓誤差很小。這說明AD的線性度還是比較高的。</p><p>  6.2.2 系統(tǒng)測量液面高度的數據參數</p><p>  這里測的數據是整個系統(tǒng)組在一起進行的測量,測量我們所給的液面高度。</p><p&

77、gt;  測得的數據如下圖6.2:</p><p>  圖6.2 液面高度的測量數據</p><p>  這些數據都是在室內測得的,在室溫30度左右測得。一共測了三組數據,電壓利用上位機顯示程序直接讀得,而高度的數據則是用米尺測得,一個電壓對應一個液面高度。數據處理則是求斜率的問題,每一個高度對應一個斜率主要為后面的上位機顯示液面高度的VB程序找一個理論的依據。這樣也可以看壓力傳感器的工作

78、的線性度如何。</p><p>  6.2.3 調試總結</p><p>  通過調試我們發(fā)現調試時最費時間的藥考慮很多因素,調試過程要將整個系統(tǒng)組合起來看工作是否正常,能否達到基本的要求。</p><p>  我們設計的只能液位傳感器能基本滿足設計的基本要求,通過壓力傳感器測量液位的壓強方式,ADC0804對壓力傳感器的輸出的模擬電壓進行采集和轉換送入單片機然后通

79、過RS232串口通信傳送到上位機上顯示液面的高度。實現了將二進制的量化轉換為以厘米為單位的ASCLL標準字符串形式傳送到PC機。測量范圍在0-1米內時誤差能基本滿足要求。誤差主要就是來至壓力傳感器的輸出與ADC0804的輸入有一定的差距,這主要是由于整個系統(tǒng)連接起來過后傳感器的內部電阻將其輸出電壓拉下來了,我們在以后對系統(tǒng)加入電壓跟隨器來改善。</p><p><b>  7 結論</b>&

80、lt;/p><p>  本次設計的智能液位傳感器達到了預期的基本要求,主要特色之一就是直接利用壓力傳感器測液體的壓力的方式實現了測液面的高度,這種方式實現起來比較容易;其二就是將測量系統(tǒng)與PC機相結合起來這樣對數據的讀數比較直觀,并且能精確到厘米。不過此設計也有很多不足之處,測量時要在容器的底部開口才能讀出壓力,還可以加入報警系統(tǒng),當測量超出范圍時,系統(tǒng)自動報警。還有就是還可以加上一定的數據存儲能力,這樣要對以前的數

81、據進行研究的地方非常有幫助。</p><p><b>  8 總結與體會</b></p><p>  綜合上述各部分的測試結果,本設計完成了課程設計的大多數的要求?;具_到了預期的目標。</p><p>  這次智能綜合設計歷時接近一個月,在這期間可以說是苦多于甜,但是可以學到很多很多的東西,不僅可以鞏固以前所學過的知識,而且學到了很多書本上沒

82、有接觸過的知識。以前接觸的那些程序都是很短很基礎的,但是在課程設計中碰到了一些復雜的程序編寫,這時畫程序方框圖就顯得很有必要了。通過畫程序方框圖可以使我們對所要完成的每一步任務都有一個很清楚的思路,讓我們明白每一步的任務,同時在程序測試的過程中也有利于查錯。</p><p>  另外,以前對于編程工具的使用還處于一知半解的狀態(tài)上,經過一段上機的實踐,對于怎么去排錯、查錯,怎么去看每一步的運行結果,怎么去了解每個寄

83、存器的內容以確保程序的正確性上都有了很大程度的提高。 </p><p>  這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在同學們的幫助下并且查閱了很多相關的資料才得以解決。通過本次課程設計,我進一步溫習和鞏固了課本的理論知識,增強了理論聯系實際的能力,同時也增強了我通過檢索資料來獲取相關專業(yè)信息以及利用檢索到的信息來解決面臨問題的能力。本次設計使我深刻認識到自己軟件編程方面的知識薄弱,同時也使我體

84、會到軟件編程在實際硬件電路連接中的重要作用,軟件編程的使用使硬件開銷大大減少,同時也使設計更加的簡潔易于控制,在今后的學習中我們會加強軟件編程方面知識的積累和運用,會更加注重理論與實際的結合。</p><p>  在這次作品制作過程中,我們知道了要真正的做出作品需要考慮非常多的因素,有些看似不起眼的細節(jié)都可能對電路產生巨大的影響,如連線是否可等。通過這次課程設計自己看到了許多工程和一些產品中的要求,讓自己明白了自

85、己現在缺乏很多工程意識和思考問題的全面性。</p><p>  在此我要特別感謝我們的課程設計指導老師鄭海春老師。在設計過程中他為我們提供了很多的幫助和指導。在老師的身上我們學也到很多實用的知識,在此我們表示感謝!同時,對給過我們組幫助的所有同學和各位指導老師再次表示忠心的感謝!</p><p><b>  9 參考文獻</b></p><p>

86、;  [1]汪德彪. MCS-51單片機原理及接口技術[M]. 北京電子工業(yè)出版社. 2004.</p><p>  [2]胡文金,鐘秉翔. 單片機應用技術實訓教程[M]. 重慶大學出版社. 2005.</p><p>  [3]張毅剛,彭喜元,董繼成. 單片機原理及應用[M]. 重慶大學出版社. 2003.</p><p>  [4] 謝自美.電子線路設計?實驗?

87、測試[M] . 武漢:華中科技出版社,2000.5</p><p>  [5] 譚浩強.C程序設計(第三版)[M]. 北京:清華大學出版社,2008.1</p><p>  [6] 王華奎.數字信號處理及應用[M]. 北京:高等教育出版社,2006.12</p><p>  [7] 姚燕南.微型計算機原理與接口技術[M]. 北京:高等教育出版社,2006.4<

88、/p><p>  [8] 古天祥.電子測量原理[M]. 北京:機械工業(yè)出版社,2009.1</p><p>  [9] 徐科軍.傳感器與檢測技術[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;//設置定時器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時允許串行口接收數據</p><p>  SM0=0;//模式1,8位數據,波特率由軟件設置</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() '設置串口</p><p>  MSComm1.Settings = "9600,N,8,1" '串口通訊初始化:波特率為9600,沒有校驗位,八位數據傳送,一位停止位</p><p>  MSComm1.RThreshold =

107、1</p><p>  MSComm1.InputMode = comInputModeText '以文本形式接收數據</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 '每接收一個數據就觸發(fā)一次事件</p><p>  a = MSComm1.Input</p><p>  b = Asc(a)</p><p>  e(j) = b '收20個

111、數據取平均值再顯示出來 減小抖動</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>  由于這次的設計所用的電阻電容是在實驗室找的而且很便宜就沒有計算在成本內,總的來說這次設計的智能液位傳感器成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論