AT89C52單片機的液位檢測系統
隨著現代測量技術的發(fā)展,對測量系統提出了越來越高的要求。在自動蒸餾測控系統中,準確及時地檢測出蒸餾過程中從冷凝管餾出的第一滴液滴是獲取初餾點的前提;實時、準確地測量出量筒中回收液體體積的變化是控制蒸餾過程中不同時段不同蒸餾速度的依據。而目前擔負著對冷凝管餾出的液滴進行檢測、回收、計量、測速等任務的完成有諸多不盡人意的地方,需要更加完善、合理的液滴、液位檢測跟蹤控制系統。
從液位測量的方法看,按檢測器與液體接觸與否分為兩大類:一是接觸式測量,二是非接觸式測量。當需要通過測量液位變化確定體積變化時,一般采用非接觸式測量方法。但在大多數非接觸式測量中,液位傳感器測試范圍較大,絕對分辨率均大于0.5ml,因而在體積變化范圍為0-100ml,液位變化范圍為0-200mm時,要達到0.1ml的分辨率,普通的傳感器就難以滿足要求。為此,需要研制一種測量普通100ml玻璃量筒中液體體積實時變化的高精度液位檢測系統。
針對以上所存在的問題,本文介紹了一種以AT89C52單片機為核心的液位檢測系統,實現了對變化的液位進行高精度體積測量的目的。
一、 積測量原理
由于量筒的容積
是確定的,且制作均勻,那么一定體積的液體在量筒內對應的高度也是一定的。傳感器與螺桿是相互耦合的,螺桿的頂端與步進電機的中軸是直接相連的,步進電機每走一步,螺桿就跟著轉一個小角度。因此,在電機步距和螺桿螺距一定的情況下,量筒的單位高度與電機步數成正比關系。于是,可將量筒內液體的體積直接轉換成電機的步進數,即電機每走一步所代表的液體的體積是多少毫升。
體積測量示意圖如圖1所示。為了確定電機的步進數與確定量筒內液體的體積毫升數之間的換算關系,我們需要對此系統進行校準,具體校準的方法是:
1. 測量體積為10ml液體的電機步進數,將其值設為L1;
2. 測量體積為100ml液體的電機步進數,將其值設為L2;
根據以上步驟記錄的數據,計算出電機每走一步所代表的體積毫升數,將其值設為T,則有如下的計算公式:T=90/(L2-L1)。這樣就可以很方便地計算出跟蹤器所跟蹤的液體體積。
二、 硬件電路組成及原理
本系統的基本組成是:紅外光電傳感器、輸入電路、時鐘電路、復位電路、顯示電路、步進電機及驅動電路、單片機實時處理與控制電路等。
其基本的工作原理是:紅外光電傳感器檢測到的各種信號,經過信號處理電路后,把光信號轉換成了電信號,同時把電信號送給單片機進行判斷和計算處理后,再發(fā)出控制指令,控制步進電機工作,完成對變化液位的檢測與跟蹤。
該硬件電路原理框圖如圖2所示:
1、紅外光電傳感器
紅外光電傳感器是由紅外發(fā)射二極管和敏感三極管組成,紅外發(fā)射二極管發(fā)出的紅外光的波長和敏感三極管的受光波長相同或相近。當發(fā)射管和接受管之間沒有障礙物時,敏感三極管由于收到紅外光信號而導通,電路輸出電平為低電平;當發(fā)射管和接受管之間有障礙物擋住時,敏感三極管由于收不到紅外光信號而截止,電路輸出電平為高電平。
該系統中,對量筒中的液體表面的檢測基本上是利用散射原理,在玻璃量筒中液體表面處的液體會發(fā)生外延現象或吸附現象而形成一個環(huán)形曲面,這個曲面正好供我們檢測用。它是由一對紅外光電對管組成的,在玻璃量筒中液體表面處的液體會發(fā)生外延現象或吸附現象而形成一個環(huán)形曲面,由于散射作用,接收管接收不到發(fā)射管的紅外光信號而截止,電路輸出電平為高電平。因此,可以利用其輸出電平的高低來檢測液面的位置,其輸出信號再通過電纜輸出到單片機接口電路和顯示驅動電路進行處理。為了適應本系統的特殊要求,我們將紅外發(fā)射、接受管分別裝在U形板的兩邊,兩管距離大于玻璃量筒的直徑。為了減少外來自然光的干擾,在兩管的發(fā)射、接受頭安裝有一定深度的導光孔槽,它一方面減少了外來光的干擾,另一方面可以限制光束直徑,以利于提高檢測分辨率。
2、步進電機及驅動電路
在步進電機工作中,其電源大多是采用單極性直流電,通過對步進電機的各相繞組按恰當的時序方式通電,就可使其執(zhí)行步進轉動。本系統所用電機為四相電機,當兩相繞組通電時,相應的兩個磁極就分別形成N-S極,產生磁場,并與轉子形成磁路。在磁場的作用下,轉子將轉動一定的角度,使轉子齒與定子齒對齊,從而使步進電機向前“走”一步。因此,控制電機轉動主要是按照電機轉動方向的要求,由單片機順序地輸出相應的控制信號即可。
下面以正轉為例進行說明,正轉時,要求按ABCDA的順序依次輸出寬為8ms的正脈沖,且兩脈沖之間有一小延時。由此可以往8255的PC0~PC3口依次輸出1000、0100、0010、0001、1000等一系列的信號,每一個高電平保持8ms,輸出時間間隔為1ms,即可滿足控制需要。同理,也可以控制電機反轉,只是輸出信號的順序相反。于是在寄存器中的初始控制字可設為00010001B(即11H),電機每走一步,則對此寄存器的內容向左(正轉)或向右(反轉)循環(huán)移一位,然后取出此寄存器的內容并輸出,就可以完成對電機的控制。
3、單片機實時處理及控制
針對本課題而言,硬件電路應該盡量的簡單,部分能用軟件實現電路盡可能的不用硬件電路,以此來達到產品的小型化、價格低、性能可靠的目的。在選擇單片機時也應充分考慮其便利和實用,8031單片機最大缺點是需要外接EPROM,電路復雜,而且EPROM還是用紫外線進行擦除的,使用起來很不方便。在經過廣泛的比較之后,確定采用ATMEL 公司的AT89C52 FLASH單片機。它不僅具有8031單片機的一切功能,還有許多功能是8031所沒有的。其內部帶有8KB可多次擦寫的FLASH內部程序存儲器,可用電擦除,十分方便。
AT89C52單片機主要有以下一些特點:
(1)、與MCS-51產品兼容;
(2)、具有8KB可改寫的FLASH內部程序存儲器,可進行1000次擦/寫操作;
(3)、全靜態(tài)操作:0Hz到24MHz;
(4)、三級程序存儲器加密;
(5)、256字節(jié)內部RAM;
(6)、32條可編程I/O線;
(7)、3個16位定時/計數器;
(8)、8個中斷源;
(9)、可編程串行口;
(10)、低功耗空閑和掉電方式。
單片機實時處理及控制部分的主要功能是接收來自紅外光電傳感器轉換過的電信號,同時接收輸入電路送來的狀態(tài)信息,經過判斷計算后,一方面發(fā)出控制指令,控制電機的運轉,進行液位的檢測與跟蹤;另一方面送出所需要的數據,進行數據的顯示和狀態(tài)指示。因此,這一部分是本系統的關鍵部分,它的性能的好壞直接關系到整個系統的性能好壞。具體硬件電路是以AT89C52單片機為核心,通過擴展并口8255來實現的,其電路如圖3所示。
由圖3可以看出,鍵入電路與AT89C52的P1口相連,接收所鍵入的狀態(tài)信息并送單片機。液位信號直接送P3.0口,在自動跟蹤時,單片機對P3.0口不斷地查詢,一有信號就進行判斷處理。液滴信號與P3.2口(即INT0中斷引腳)相連,由于液滴的檢測是隨時的,因此需要用中斷來控制,當液滴信號一來中斷便響應,記錄下液滴數。上、下限位信號分別接P3.4、P3.5口,在運行中,一但出現了上、下限位信號時,說明已超出了預定的運行范圍,單片機收到信號后,發(fā)出控制指令,停止電機的轉動。其它一些如顯示、電機驅動等控制信號的發(fā)出由總線分時送8255,完成預定的任務。
8255的片選信號/CS及口地址選擇線A0和A1分別由AT89C52的P2.7和P0.0、P0.1經地址鎖存后提供,故8255的A口、B口、C口及控制口地址分別為7FFCH、7FFDH、7FFEH和7FFFH。8255的D0~D7分別與AT89C52的P0.0~P0.7相連,其/RD、/WR與AT89C52的/RD、/WR一一對應相接。
三、 軟件設計
系統軟件是整個系統的重要組成部分,只有在它的指揮控制下硬件電路才能進行工作,完成相應的功能,而且部分硬件電路的缺陷還可以通過軟件編程加以彌補。根據系統的功能要求,軟件是用MCS-96匯編語言,采用模塊化結構,由主程序、自動檢測跟蹤子程序、校準子程序、顯示子程序等組成。在本系統中,高精度測量的實現在很大程度上是由軟件來保證的。
主程序包括系統參數初始化和循環(huán)工作過程,是本系統中軟件部分的核心。它主要完成的任務是:首先,對單片機狀態(tài)參量和程序自定義的狀態(tài)參量進行系統初始化;其次,對各子程序進行管理和控制,安排相應的指令,提供子程序的入口數據,以達到完成系統功能的目的。
液位自動檢測跟蹤子程序的功能是控制液位跟蹤器以底液液面為起始位置,連續(xù)地跟蹤液面的變化,并換算出實際的液體體積值,實時地進行顯示。其執(zhí)行步驟是:首先,紅外光電傳感器自動檢測到液位,并設此液位為跟蹤的底液面,顯示為“0”。然后,進入實時跟蹤狀態(tài),只要液位有變化(上升),檢測器便會自動跟蹤,實時顯示所跟液體的體積,直到液位不再變化為止。
校準子程序是在每次更換量筒時進行的,目的是找出量筒內液體的體積與電機的步進數之間的對應關系,然后送給單片機,進行體積計算時就有了新的標準,以此來提高測量精度。
四、結束語
采用AT89C52單片機實現的液位檢測系統在標準100ml玻璃量筒中,液位變化范圍在0-200mm時,能達到0.1ml的分辨率。實踐證明,本液位檢測系統性能價格比高、控制方式可靠,其設計思路和方法可以為自動蒸餾測控系統所借鑒,具有廣闊的應用前景。