何德伍
DOI:10.16661/j.cnki.1672-3791.2016.27.025
摘 要:該液位監(jiān)測(cè)控制系統(tǒng)主要是通過(guò)傳感器將液位的高度測(cè)量出來(lái),然后發(fā)送到上位機(jī),通過(guò)靜態(tài)和動(dòng)態(tài)圖形顯示的方法來(lái)對(duì)液位進(jìn)行監(jiān)測(cè);上位機(jī)上面設(shè)定相應(yīng)的按鈕可以對(duì)下位機(jī)進(jìn)行控制,讓下位機(jī)去完成指定的動(dòng)作。上位機(jī)和下位機(jī)采用藍(lán)牙進(jìn)行通信。上位機(jī)是在PC端運(yùn)行的應(yīng)用程序,下位機(jī)是由單片機(jī)組成的執(zhí)行和反饋系統(tǒng)。
關(guān)鍵詞:?jiǎn)纹瑱C(jī) 藍(lán)牙 上位機(jī)
中圖分類(lèi)號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2016)09(c)-0025-02
液位監(jiān)控技術(shù)是近幾年才發(fā)展起來(lái)的一項(xiàng)新技術(shù)。它的誕生標(biāo)志著科學(xué)技術(shù)又向前邁進(jìn)了一大步。此技術(shù)主要用來(lái)監(jiān)測(cè)一些如高壓,易爆的特殊液體。
該系統(tǒng)使用STC89C51單片機(jī)作為下位機(jī)的主控芯片。通過(guò)它來(lái)讀取液位值,接收和處理上位機(jī)的命令,以及對(duì)外部電路的控制。
1 硬件以及電路
該系統(tǒng)硬件主要由單片機(jī)最小系統(tǒng)、繼電器電路、DS18B20電路構(gòu)成。使用到的模塊有:藍(lán)牙模塊HC-06、超聲波模塊HC-SR04以及USB轉(zhuǎn)TTL模塊。
1.1 下位機(jī)控制電路
下位機(jī)控制電路是以單片機(jī)作為控制核心,通過(guò)使用繼電器來(lái)控制液體進(jìn)出開(kāi)關(guān)的打開(kāi)與關(guān)閉。其電路原理圖如圖1所示。
單片機(jī)通過(guò)拉低自身與繼電器相連的引腳,使繼電器內(nèi)部的線(xiàn)圈產(chǎn)生磁力來(lái)帶動(dòng)銜鐵的吸合,繼而讓液體進(jìn)出開(kāi)關(guān)打開(kāi)或者關(guān)閉。繼電器是一種常用的弱電控制強(qiáng)電元件。該次使用的是5 V的直流電控制220 V的交流電,使用它最大的好處就是能讓人安全的控制設(shè)備,不會(huì)造成事故。
1.2 指示燈電路
指示燈電路主要用來(lái)體現(xiàn)整個(gè)硬件的工作狀態(tài)。他由LED和電阻串聯(lián)在一起構(gòu)成,其中電阻起到一個(gè)限流的作用,用來(lái)保護(hù)指示燈不被損壞。當(dāng)它們所指示的電器電路沒(méi)有工作時(shí),就不會(huì)發(fā)光,反之就會(huì)發(fā)光。
1.3 液位測(cè)量電路
液位的測(cè)量主要使用超聲波模塊HC-SR04來(lái)測(cè)量。此模塊共有4個(gè)引腳,除了兩個(gè)正負(fù)極引腳外,另外兩個(gè)分別是TRIG、ECHO。這種模塊在配合單片機(jī)進(jìn)行測(cè)距時(shí),首先給與TRIG引腳1個(gè)10us的高電平,然后等待ECHO引腳拉高,一旦拉高就開(kāi)啟單片機(jī)的定時(shí)器進(jìn)行計(jì)時(shí)。最后測(cè)量出來(lái)的距離就等于聲速乘以時(shí)間最后除以2。
上面所做的只是粗略的測(cè)量,大家知道聲速受到溫度的影響很大,所以要進(jìn)行溫度補(bǔ)償,并要使用溫度傳感器。最后聲速的大小修改為:聲速=334.1+0.61×溫度。
1.4 上位機(jī)下位機(jī)的通信
上位機(jī)與下位機(jī)的通信實(shí)際是串口通信。上位機(jī)和下位機(jī)實(shí)時(shí)的數(shù)據(jù)交換就是通過(guò)串口實(shí)現(xiàn)。下位機(jī)向上發(fā)數(shù)據(jù)時(shí),先把液位值發(fā)送到緩沖區(qū)然后上位機(jī)會(huì)識(shí)別此數(shù)據(jù),最后進(jìn)行處理。上位機(jī)向下發(fā)數(shù)據(jù)也是發(fā)送到緩沖區(qū),下位機(jī)檢測(cè)到上位機(jī)發(fā)下來(lái)的數(shù)據(jù)就進(jìn)行判斷,然后進(jìn)行相關(guān)的控制動(dòng)作。
2 軟件設(shè)計(jì)
2.1 下位機(jī)程序流程
下位機(jī)中只要一打開(kāi)電源開(kāi)關(guān),整個(gè)下位機(jī)就開(kāi)始測(cè)距然后一直向上位機(jī)發(fā)送液位的距離。當(dāng)上位機(jī)有數(shù)據(jù)發(fā)下來(lái)時(shí),下位機(jī)就產(chǎn)生中斷,在中斷里匹配此數(shù)據(jù)對(duì)應(yīng)的程序命令,進(jìn)而執(zhí)行上位機(jī)的命令,直到中斷結(jié)束,最后又重復(fù)進(jìn)行測(cè)距和發(fā)送液位數(shù)據(jù)的步驟(如圖2)。
2.2 上位機(jī)制作
上位機(jī)采用軟件visual studio進(jìn)行開(kāi)發(fā),開(kāi)發(fā)所用到的語(yǔ)言是C Sharp。其界面如圖3所示。
由于電腦的串口有很多,所以要使用一個(gè)comboBox(下拉框)選擇通信的串口,當(dāng)串口選擇后要對(duì)串口進(jìn)行控制,因此使用button(按鈕)來(lái)打開(kāi)或者關(guān)閉串口。上位機(jī)的第一個(gè)功能是對(duì)液位進(jìn)行監(jiān)測(cè)。理所當(dāng)然要能夠動(dòng)態(tài)的顯示液位的高度值。實(shí)現(xiàn)此功能是則需要一個(gè)標(biāo)簽來(lái)顯示液位的高度值,但光是一個(gè)標(biāo)簽顯示還不夠,最好還要加上一個(gè)圖形來(lái)動(dòng)態(tài)顯示,所以?xún)?nèi)嵌一個(gè)了progressBar。progressBar來(lái)顯示液位的變化趨勢(shì)。而上位機(jī)實(shí)現(xiàn)控制下位機(jī)硬件是通過(guò)button來(lái)實(shí)現(xiàn)的,上位機(jī)中總共設(shè)計(jì)了4組開(kāi)關(guān),其中兩個(gè)是液體進(jìn)入和液體排出開(kāi)關(guān)。另外兩個(gè)是留著擴(kuò)展的,方便以后進(jìn)一步的升級(jí)。
上位機(jī)只要沒(méi)有打開(kāi)串口或者是串口打開(kāi)錯(cuò)誤時(shí)就一直等待,直到打開(kāi)串口就開(kāi)始工作。串口只要一打開(kāi)馬上顯示串口數(shù)據(jù),然后就等待是否有相關(guān)的按鈕被點(diǎn)擊,如果有就發(fā)送與此按鈕相關(guān)的命令到串口上。
3 系統(tǒng)測(cè)試
測(cè)試采用上位機(jī)和下位機(jī)先分開(kāi)測(cè)試,再合起來(lái)測(cè)試的思路看該系統(tǒng)是否符合要求。其測(cè)試方法與結(jié)果如表1所示。
4 結(jié)語(yǔ)
進(jìn)過(guò)測(cè)試該系統(tǒng)完全符合要求。上位機(jī)可以顯示液位高度值以及液位的變化趨勢(shì),同時(shí)還可以通過(guò)點(diǎn)擊上位機(jī)的相關(guān)按鈕來(lái)控制下位機(jī)中的硬件。下位機(jī)能實(shí)時(shí)發(fā)送液位值到上位機(jī)中,當(dāng)接收到上位機(jī)命令時(shí),下位機(jī)也能執(zhí)行此命令。
參考文獻(xiàn)
[1] 甘勇,尚展壘.C#程序設(shè)計(jì)[M].北京:人民郵電出版社,2016.
[2] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程[M].北京:電子工業(yè)出版社,2009.
[3] Robin Heydon.低功耗藍(lán)牙開(kāi)發(fā)權(quán)威指南[M].北京:機(jī)械工業(yè)出版社,2014.
[4] 明日科技.C#入門(mén)到精通[M].3版.北京:清華大學(xué)出版社,2012.
[5] 黃杰勇.Alrium Designer實(shí)戰(zhàn)攻略與高速PCB設(shè)計(jì)[M].北京:電子工業(yè)出版社,2015.