李秉榮,劉夫云*,程 雄,王喬義,藍(lán)毓勝,馬永輝
(1.桂林電子科技大學(xué)機(jī)電工程學(xué)院,桂林 541004;2.右江礦務(wù)局, 桂林541004)
地磅是一種運用比較廣泛的稱重儀器,也稱為汽車衡。目前,我國很多地方仍使用傳統(tǒng)地磅,采用人工填寫單據(jù)、報表的方式來記錄數(shù)據(jù)。這種工作方式安全性差,容易出錯,效率低下,難以滿足現(xiàn)代生產(chǎn)經(jīng)營的要求。因此,針對國內(nèi)地磅稱重系統(tǒng)自動化程度不高的現(xiàn)狀,本文設(shè)計了一套地磅稱重系統(tǒng),將傳感器、單片機(jī)、A/D轉(zhuǎn)換芯片、計算機(jī)及數(shù)據(jù)庫有效的結(jié)合起來,實現(xiàn)了稱重數(shù)據(jù)的自動采集、自動處理和自動存儲,為企業(yè)的現(xiàn)代化管理提高效率。
首先,利用由電阻應(yīng)變式傳感器組成的測量電路測出壓力信號,經(jīng)過信號的放大、濾波,然后以模擬信號的方式傳送到A/D轉(zhuǎn)換器。其次,將經(jīng)A/D轉(zhuǎn)換后的的數(shù)字信號由單片機(jī)傳送給上位機(jī)。最后,在上位機(jī)以MyEclipse6.0.1 為開發(fā)環(huán)境,構(gòu)建一個地磅信息管理系統(tǒng),用于接收、顯示并存儲相關(guān)信息。具體方案如流程圖1。

圖1 總體方案設(shè)計流程圖
1.1.1 電阻應(yīng)變式傳感器的測量電路
電阻應(yīng)變式傳感器通常采用橋式測量電路。它由箔片式電阻應(yīng)變片電阻R1、R2、R3、R4組成。電橋的一個對角線接工作電壓E,另一個對角線接輸出電壓Uo。在測量重量之前,調(diào)節(jié)滑動式線性可變電阻器Rp1, 當(dāng)載荷為0 時, 輸出為零。測量電路如圖2[1-10]所示。

圖2 電阻應(yīng)變式傳感器的測量電路
1.1.2 差動放大電路
由于傳感器輸出的模擬信號比較微弱,需要放大一定的倍數(shù)才能滿足A/D轉(zhuǎn)換器的要求,這里采用一種典型的差動放大電路,它由UA741和電阻組成。差動放大電路如圖3[2-11]所示。

圖3 差動放大電路
1.1.3 單片機(jī)與PC機(jī)串口通信及A/D轉(zhuǎn)換電路
(1)單片機(jī)與PC機(jī)的串口通信采用RS-232C串行通信標(biāo)準(zhǔn)接口, RS-232C總線接口芯片種類很多,這里使用MAXIM公司生產(chǎn)的MAX232 芯片實現(xiàn)TTL和EIA之間的電平轉(zhuǎn)換,其接線電路如圖4所示。需要注意的是由于該工作電路對電源噪聲比較敏感,為了提高器件的抗干擾能力,這里采用了1.0 μF電容連接+5 V電源去耦。同時,在PCB布線時,電容應(yīng)該盡可能的靠近芯片。
(2)A/D轉(zhuǎn)換芯片采用ADC0832,這款芯片具有8位分辨率,雙通道A/D轉(zhuǎn)換,輸入輸出電平與TTL/CMOS兼容, 5 V電源供電時輸出電壓在0 ~5 V之間,工作頻率為250 kHz,轉(zhuǎn)換時間為32 ms,功耗為15 MW等優(yōu)點。適合本系統(tǒng)的要求。其與單片機(jī)的連接電路圖如圖4[3-4]所示。
實驗采用mpx4115 壓力傳感器來測量系統(tǒng)的精度,該傳感器承受壓力的線性區(qū)間為15 kPa~115 kPa。測量時補償值為9.3 kPa,即y=[(115-15)/(243-13)] *X+9.3。其中y—壓力, X—經(jīng) A/D轉(zhuǎn)換后的數(shù)字量。通過隨機(jī)對10組數(shù)據(jù)進(jìn)行測量,其實驗數(shù)據(jù)如下表1所示。

表1 實驗數(shù)據(jù)

圖4 單片機(jī)與PC機(jī)串口通信及A/D轉(zhuǎn)換電路
通過上述實驗數(shù)據(jù)可知,該系統(tǒng)的測量精度在0.1 ~0.3之間。
該系統(tǒng)采用RS-232C串口通信技術(shù),以MyEclipse6.0.1為開發(fā)環(huán)境,通過Sun公司提供的Java中的comm.jar包,完成單片機(jī)與PC機(jī)的串口通信,編制出了地磅稱重管理系統(tǒng)可視化軟件。
1.3.1 RS-232串行通信接口
RS-232是目前最常用的一種串行通信接口,被定義為一種低速率串行通信標(biāo)準(zhǔn),最大傳輸距離在50 m左右。采用RS-232串口通信能夠滿足設(shè)計的要求。
1.3.2 Java與COM口的串口通訊
Sun公司的J2SE中并沒有直接提供任何一種串行通信協(xié)議的開發(fā)包,而是以獨立的jar包形式發(fā)布在java.sun.com網(wǎng)站上的comm.jar,稱之為Java Communication API,它是J2SE的標(biāo)準(zhǔn)擴(kuò)展。comm.jar提供了對常用的RS-232串口通信的支持。與comm.jar包一起的還有兩個重要的文件:win32com.dll和 javax.comm.properties。 comm.jar提供了通信用的java API, win32com.dll提供了供comm.jar調(diào)用的本地驅(qū)動接口, 而 javax.comm.properties是這個驅(qū)動的類配置文件[5]。
Java讀寫COM口主要是調(diào)用Javax..comm包中的comm.API函數(shù)。在初始化波特率、數(shù)據(jù)位、停止位和奇偶校驗的同時,將輸入輸出數(shù)據(jù)流和該串口建立一個映射,串口的輸入輸出操作就直接反映在輸入流和輸出流上。通過CommPort類的get-InputStream()和getOutputStream()方法取得端口的輸入流和輸出流[6]。
1.3.3 Java與串行口通訊的軟件實現(xiàn)
串口讀寫數(shù)據(jù)的流程圖如下圖5所示。

圖5 向串口讀寫數(shù)據(jù)流程圖
串口讀寫程序如下所示:
/*打開并初始化串口程序*/
public void serialPortInitialize(){
portId=CommPortIdentifier.getPortIdentifiers(“COM 1”);//獲取通信端口COM1
serialPort=(SerialPort)portId.open(“ serialComm”,2000);//打開端口
serialPort.setSerialPortParams(1200, //波特率1200
SerialPort.DATABITS_8, //數(shù)據(jù)位8位
SerialPort.STOPBITS_1, //停止位1位
SerialPort.PARITY_NONE);//無奇偶校驗位
}
/*從端口讀取數(shù)據(jù)*/
InputStream input=serialPort.getInputStream();
Input.read(…);
/*往端口寫數(shù)據(jù)*/
OutputStream output=serialPort.getOutputStream();
Output.w rite(…);
1.3.4 單片機(jī)與PC機(jī)的通信協(xié)議
單片機(jī)端:單片機(jī)先發(fā)送0x00給PC機(jī),并且等待PC機(jī)的回復(fù),當(dāng)接收到PC機(jī)發(fā)送來的數(shù)據(jù)是0x00時,單片機(jī)開始向PC機(jī)發(fā)送數(shù)據(jù)。當(dāng)接收到PC機(jī)發(fā)送來的數(shù)據(jù)是0xff時,單片機(jī)不執(zhí)行任何操作,并且重新發(fā)送0x00 給PC機(jī),等待回復(fù)。PC機(jī)端:點擊軟件連接按鈕,接收單片機(jī)發(fā)送來的數(shù)據(jù),當(dāng)接收到的數(shù)據(jù)是0x00時,向單片機(jī)發(fā)送0x00,并且開始接收單片機(jī)傳發(fā)送的數(shù)據(jù),同時PC機(jī)端通過設(shè)置數(shù)據(jù)校驗來判斷數(shù)據(jù)是否接收完整,當(dāng)數(shù)據(jù)接收不完整時,向單片機(jī)發(fā)送0xff,丟失該數(shù)據(jù),并且重新接收數(shù)據(jù)。
該系統(tǒng)主要包括5個模塊,即串口通信模塊、數(shù)據(jù)錄入模塊、查詢打印模塊、權(quán)限管理模塊和數(shù)據(jù)統(tǒng)計模塊[7-12]。
(1)串行通信模塊
該模塊的功能實現(xiàn)了單片機(jī)與PC機(jī)的串口通信,實現(xiàn)了數(shù)據(jù)的傳輸。
(2)數(shù)據(jù)錄入和網(wǎng)絡(luò)通信模塊
該模塊用于記錄編號、車號、空車時間、重車時間、貨物名稱、型號規(guī)格、毛重、皮重、凈重、單價、過磅費、金額、供貨單位、收貨單位、司機(jī)、操作員和備注等數(shù)據(jù)。其中毛重、皮重是通過串口自動接收數(shù)據(jù),不需要人工記錄。同時,通過Java的socket類實現(xiàn)將記錄的數(shù)據(jù)實時的傳輸給中心服務(wù)器,便于通過企業(yè)內(nèi)部網(wǎng)或Internet查詢相關(guān)數(shù)據(jù)。
(3)查詢打印模塊
該模塊用于客戶打印稱重的相關(guān)數(shù)據(jù)。
(4)權(quán)限管理模塊
該模塊實現(xiàn)了不同的管理員對數(shù)據(jù)庫操作的不同權(quán)限,其中超級管理員可以添加或者更改操作員,可以實現(xiàn)對數(shù)據(jù)庫的任何操作,而操作員只有記錄數(shù)據(jù)的功能。
(5)數(shù)據(jù)統(tǒng)計模塊
該模塊用于記錄日統(tǒng)計數(shù)據(jù),月統(tǒng)計數(shù)據(jù)和季度統(tǒng)計數(shù)據(jù)。
本系統(tǒng)的軟件界面如圖6所示。

圖6 系統(tǒng)的軟件界面
本文系統(tǒng)的介紹了地磅稱重系統(tǒng)的硬件和軟件設(shè)計方法,其中硬件部分介紹了組成該系統(tǒng)的三個重要的電路,軟件部分介紹了Java程序中的comm.jar包。通過 RS-232串口,實現(xiàn)了Java與單片機(jī)的串口通信。最后,筆者通過Java語言開發(fā)了一個地磅信息管理系統(tǒng)。整個系統(tǒng)實現(xiàn)了數(shù)據(jù)的采集、處理、傳輸、顯示、通信、存儲、查詢和打印等功能,能夠滿足企業(yè)對稱重的自動化需求。
[ 1] 祝常紅.數(shù)據(jù)采集與處理技術(shù)[ M] .電子工業(yè)出版社.2008.1.
[ 2] 張紅潤,劉秀英,張亞凡,等.單片機(jī)應(yīng)用設(shè)200例[ M] .北京航空航天大學(xué)出版社.2006.7.
[ 3] AT89系列單片機(jī)技術(shù)手冊[ S] .北京威立電子技術(shù)有限公司.14-23.
[ 4] 張大明.單片機(jī)微機(jī)控制應(yīng)用技術(shù)[ M] .機(jī)械工業(yè)出版社.2006.8.
[ 5] 張思民,梁維娜.Java程序設(shè)計實踐教程[ M] .清華大學(xué)出版社.2006.8.
[ 6] 李良, 朱善安.基于Java的串口通信[ J] .電子器件, 2007(4):714-720.
[ 7] 李鐘蔚,馬文強,王殊宇.Java項目開發(fā)實例自學(xué)手冊[ M].人民郵電出版社.2008.9.
[ 8] 吳橋.汽車稱重管理信息系統(tǒng)的開發(fā)與應(yīng)用[D] .浙江:浙江大學(xué), 2006.
[ 9] 王華奎,馬建芬,趙菊敏,等.電子電路設(shè)計[M].電子工業(yè)出版社.2004.8.
[ 10] 周廣輝.基于無線網(wǎng)絡(luò)與Internet的壞境監(jiān)測系統(tǒng)[ D] .大連:大連理工大學(xué), 2005.
[ 11] 童詩白,華成英.模擬電子技術(shù)基礎(chǔ)[ M] .高等教育出版社.2001.1.
[ 12] 王立峰,延偉東,章華.軟件工程理論與實踐[M].北京:清華大學(xué)出版社.2002.