何汁艷,鞏權(quán)慶
(南通大學(xué) 電氣工程學(xué)院,江蘇 南通 226019)
在傳統(tǒng)的溫度測(cè)量中,用戶直接在檢測(cè)設(shè)備上讀取數(shù)據(jù).但是,如果被測(cè)點(diǎn)距離遠(yuǎn)、環(huán)境惡劣,現(xiàn)場(chǎng)無(wú)人時(shí)工控機(jī)自動(dòng)監(jiān)測(cè)和記錄測(cè)控點(diǎn)的即時(shí)數(shù)據(jù)就顯得尤為必要.為解決傳統(tǒng)的檢測(cè)方法不能及時(shí)了解工況的問(wèn)題,開(kāi)發(fā)了終端溫度監(jiān)控軟件,以C8051F020自熱溫度為監(jiān)控對(duì)象,PC機(jī)控制MCU在任意時(shí)刻檢測(cè)實(shí)時(shí)溫度數(shù)據(jù)并存入數(shù)據(jù)庫(kù);可視化監(jiān)控界面可反饋當(dāng)前和歷史數(shù)據(jù),數(shù)據(jù)存儲(chǔ)記錄可供用戶查詢和分析參考.
片上系統(tǒng)C8051F020 SOC(System on Chip)的微控制器MCU(Micro Controller Unit)負(fù)責(zé)器件自熱溫度數(shù)據(jù)的采集與通信;VB(Visual Basic)6.0人機(jī)交互管理界面提供實(shí)時(shí)數(shù)據(jù);適配器[2]完成JTAC接口與RS232接口之間的協(xié)議轉(zhuǎn)換,整體結(jié)構(gòu)見(jiàn)圖1.
圖 1 終端溫度監(jiān)控系統(tǒng)硬件結(jié)構(gòu)圖Fig.1 Terminal temperature monitoring system-based hardware structure diagram
C8051F020單片機(jī)的內(nèi)部和外部振蕩器驅(qū)動(dòng)電路都能產(chǎn)生系統(tǒng)時(shí)鐘,協(xié)調(diào)CPU及其部件工作.編程選擇后者,并使之能100 ms時(shí)鐘丟失檢測(cè).
交叉開(kāi)關(guān)按數(shù)字外設(shè)優(yōu)先權(quán)級(jí)別分配,可用I/O的端口引腳,系統(tǒng)選擇全雙工串行通信接口(UART0)外設(shè),分配數(shù)字引腳p0.0和p0.1并使之能交叉開(kāi)關(guān).
ADC0(Analog to Digital Converter)模/數(shù)轉(zhuǎn)換器包括一個(gè)9通道可配置模擬多路開(kāi)關(guān)AMUX(Analog Multiplexer),一個(gè)可編程增益放大器PGA(Pr ogrammable Gain Amplifier)和一個(gè)轉(zhuǎn)換速率為100 kps、12位分辨率的逐次逼近寄存器型ADC.轉(zhuǎn)換步驟如下:
(1)允許溫度傳感器工作;
(2)選擇片內(nèi)溫度傳感器通道作為ADC輸入;
(3)選擇增益和轉(zhuǎn)換的ADC0SAR時(shí)鐘,SAR轉(zhuǎn)換時(shí)鐘來(lái)源于系統(tǒng)時(shí)鐘,由公式(1)給出:
(1)
式中,ADC0SC為配置寄存器ADC0CF的轉(zhuǎn)換時(shí)鐘控制位,CLKSAR0為所需要的轉(zhuǎn)換時(shí)鐘周期;
(4) 定義ADC0跟蹤方式和A/D轉(zhuǎn)換結(jié)果數(shù)據(jù)格式;
(5) 啟動(dòng)轉(zhuǎn)換.
配置基準(zhǔn)電壓VREF模擬開(kāi)關(guān),ADC編程選擇外部或片內(nèi)帶隙基準(zhǔn)作為基準(zhǔn)電壓發(fā)生器.電壓基準(zhǔn)是ADC能夠接受的最大直流輸入電壓,編程設(shè)定溫度傳感器輸出電壓信號(hào)PGA的增益以符合ADC的電壓基準(zhǔn).
集成開(kāi)發(fā)環(huán)境IDE(Integrated Development Environment)與C8051F020 MCU的JTAG調(diào)試邏輯接口支持生產(chǎn)和系統(tǒng)測(cè)試所需要的邊界掃描功能,可以進(jìn)行非侵入式的全速在線系統(tǒng)的編程與調(diào)試.
啟動(dòng)Keil μVision集成開(kāi)發(fā)環(huán)境,建立新項(xiàng)目UART_TEST.UV2.由于使用的是Siliom Laboratories公司的調(diào)試器,目標(biāo)CPU應(yīng)在相應(yīng)的節(jié)點(diǎn)下選擇與硬件系統(tǒng)一致的器件型號(hào)并選擇與上位機(jī)匹配的串行通信波特率和數(shù)據(jù)傳輸格式.
Mscomm(Microsoft Communication Control)控件是Microsoft公司提供的簡(jiǎn)化Windows下的串行通信組件ActiveX控件,它為應(yīng)用程序提供了串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法:查詢和事件驅(qū)動(dòng).前者通過(guò)查詢屬性值來(lái)查詢事件和錯(cuò)誤,適用于不必對(duì)每個(gè)接收的數(shù)據(jù)都產(chǎn)生事件的場(chǎng)合如電話撥號(hào)程序.系統(tǒng)中選擇后者,因?yàn)槌邮粘鲥e(cuò)外都是有效數(shù)據(jù),格式為ASCII字符.進(jìn)入VB監(jiān)控窗要初始化串行口,設(shè)定Msomm控件屬性,包括Commport屬性,返回通信端口號(hào);PortOpen屬性,打開(kāi)端口;Setrings屬性,設(shè)置通信參數(shù)(115200,n,8,1);InputMode屬性,接收類型為二進(jìn)制數(shù)據(jù)等.
分析系統(tǒng)的實(shí)時(shí)性要求,將并行處理的任務(wù)劃分,見(jiàn)表1.
表 1 軟硬件任務(wù)分配表Tab.1 Hardwre and software task distribution
注:表示接收緩沖區(qū)有數(shù)據(jù).
下位機(jī)完成間隔1 s采集一次數(shù)據(jù),LED閃爍指示.通信雙方按約定傳輸數(shù)據(jù),通信波特率由公式(2)確定:
(2)
式中,SMOD0為UART0波特率系數(shù)控制位;SYSCLK為振蕩器的振蕩頻率;T1M為設(shè)定定時(shí)器1系統(tǒng)時(shí)鐘的分頻系數(shù);X為定時(shí)器1定時(shí)初值.
C8051F×××單片機(jī)不能處理浮點(diǎn)數(shù),與器件內(nèi)部絕對(duì)溫度成正比的采集數(shù)據(jù)代碼發(fā)送給上位機(jī)轉(zhuǎn)換成相應(yīng)的溫度攝氏度數(shù)值.公式(3)給出了PGA增益為1時(shí)兩者的關(guān)系:
Vtemp=2.86 mV/℃×Temp+776 mV,
(3)
式中,Vtemp為溫度傳感器的輸出電壓;Temp為器件內(nèi)部攝氏溫度值.
A/D轉(zhuǎn)換結(jié)果左對(duì)齊格式的輸出代碼與輸入電壓成正比,見(jiàn)公式(4):
(4)
式中,CODE為左對(duì)齊的ADC輸出代碼;Gain為PGA增益;VREF為電壓基準(zhǔn).如果使用內(nèi)部VREF,大約為2.43 V.
公式(3)代入(4)并假設(shè)Gain=2,VREF=2.43 V,解方程得到Temp,見(jiàn)公式(5):
(5)
式中,Temp為器件內(nèi)部的攝氏溫度值;CODE為左對(duì)齊的ADC輸出代碼.
下位機(jī)應(yīng)用軟件設(shè)計(jì)包括接收聯(lián)絡(luò)命令、數(shù)據(jù)采集和傳送數(shù)據(jù)3個(gè)模塊.上位機(jī)分析軟件采用VB開(kāi)發(fā),完成On_Comm( )事件以及相關(guān)命令控件的代碼設(shè)計(jì),這里以流程控制框圖的形式分別給出,描述系統(tǒng)的全部功能,見(jiàn)圖2.
(a) 下位機(jī) (b) 上位機(jī)(a) Terminal station (b) Control center PC圖 2 串行通信程序框圖Fig.2 Serial communication block diagram
系統(tǒng)根據(jù)工業(yè)現(xiàn)場(chǎng)用戶的需求設(shè)計(jì),包括采集數(shù)據(jù)存入數(shù)據(jù)庫(kù)、查詢當(dāng)前和歷史數(shù)據(jù)記錄、繪制不重復(fù)采樣點(diǎn)曲線、生成格式化報(bào)表和打印輸出.
進(jìn)入主界面,單擊“開(kāi)始聯(lián)絡(luò)”,文本框顯示發(fā)送和接收的聯(lián)絡(luò)命令.如錯(cuò)誤,會(huì)給出提示信息,單擊“關(guān)閉串口”,再次聯(lián)絡(luò);如正確,“開(kāi)始聯(lián)絡(luò)”變?yōu)椤敖邮諗?shù)據(jù)”.“傳送數(shù)據(jù)”命令窗提示用戶輸入正確的口令,開(kāi)始傳送數(shù)據(jù).上位機(jī)校驗(yàn)接收的數(shù)據(jù),校驗(yàn)正確后存入數(shù)據(jù)庫(kù);如錯(cuò)誤,“數(shù)據(jù)錯(cuò)誤”命令窗提示用戶輸入口令,重新接收.“再次接收”用于接收一組新的數(shù)據(jù),“繪制曲線”顯示當(dāng)前或歷史數(shù)據(jù).
界面中曲線標(biāo)出連續(xù)三天選取不同溫差時(shí)刻獲得的最新10點(diǎn)采樣值.天氣狀況:24日的最高氣溫為28~29 ℃;25日和26日的最高和最低氣溫分別較前一天下降1℃,偏南風(fēng)3~4級(jí).圖中溫度驟然下降是24日雷雨時(shí)短時(shí)陣風(fēng)7~8級(jí)并伴有雷電時(shí)測(cè)得的.在曲線描繪的10點(diǎn)數(shù)據(jù)中,24日上午采集6個(gè)采樣點(diǎn),晚上新增編號(hào)為645~695的4個(gè)點(diǎn),25日保持,26日新增最后一個(gè)中午時(shí)的采樣點(diǎn),見(jiàn)圖3.
圖 3 操作管理界面與運(yùn)行實(shí)例Fig.3 Operation management interface and operational case
可以通過(guò)數(shù)據(jù)控件訪問(wèn)Access2003數(shù)據(jù)庫(kù).引擎[3]建立VB面向?qū)ο蟮腄AO[4]編程接口.數(shù)據(jù)控件負(fù)責(zé)數(shù)據(jù)庫(kù)和工程之間的數(shù)據(jù)交換,與數(shù)據(jù)綁定控件一起使用.在選擇上述控件時(shí),要注意兩者的兼容性.這里,選擇數(shù)據(jù)控件ADOdc和可綁定的ActiveX控件Dbgrid,并為要訪問(wèn)的數(shù)據(jù)庫(kù)建立一個(gè)OLEDB鏈接.系統(tǒng)運(yùn)行后,數(shù)據(jù)源的Recordset記錄集對(duì)象自動(dòng)填充綁定控件.向數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)是一個(gè)難點(diǎn),以下給出節(jié)選的程序片段:
//打開(kāi)數(shù)據(jù)庫(kù)
Public cnn as NewADODB.Connection
Public rec as NewADODB.Recordset
cnn.open“Provider=Microsoft.Jet.OLE DB.4.0;Data Source=;Persist Security Info=False”
Set rec=cnn.execute("select*from data")
//向數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)
With Adodcl.Recordset
rec.addnew
rec.num=自動(dòng)編號(hào)
rec.temp=溫度值
tec.time=系統(tǒng)時(shí)間
rec.update//確認(rèn)所做的添加
cnn.close
ADOdcl.refresh//刷新數(shù)據(jù)
End With
選擇Mschart控件繪制曲線,設(shè)定控件屬性頁(yè),建立2個(gè)繪圖區(qū),分別描述采集點(diǎn)和理論值.
Data Report對(duì)象、Section對(duì)象和Data Report控件3個(gè)部分組成數(shù)據(jù)報(bào)表設(shè)計(jì)器,步驟如下:
(1)為Data Report對(duì)象配置數(shù)據(jù)源;
(2)用Command命令建立Data Environment與數(shù)據(jù)庫(kù)的連接;
(3)將數(shù)據(jù)報(bào)表設(shè)計(jì)器添加到工程,給Data Report添加新的分組,使之與最低一層的Command對(duì)象建立一一對(duì)應(yīng)的關(guān)系.
格式化報(bào)表見(jiàn)圖4,最后一行為歷史采集的729個(gè)不同采樣點(diǎn)的溫度數(shù)據(jù)平均值.
圖 4 采集數(shù)據(jù)的格式化報(bào)表Fig.4 Formatted report on collected data
調(diào)試前,電路板上有關(guān)跳線要正確設(shè)置.跳線中的TX是串行口(UART0)發(fā)送數(shù)據(jù)端,PX是接收數(shù)據(jù)端,RS232與RS485通信口不能同時(shí)占用串行口.建議選擇與開(kāi)發(fā)板匹配的開(kāi)發(fā)工具,防止其驅(qū)動(dòng)能力影響程序的正常下載.可以在串口助手的接收區(qū)觀察UART0發(fā)出的數(shù)據(jù),也可以向?qū)Ψ桨l(fā)送,調(diào)試助手的數(shù)據(jù)格式是字符型,這一點(diǎn)與Mscomm緩沖區(qū)不同.由于使用了多個(gè)中斷,要正確處理中斷優(yōu)先級(jí)別.將數(shù)據(jù)存入數(shù)據(jù)庫(kù)時(shí),要注意指針?biāo)诘奈恢?
一個(gè)工作在11.059 2 MHz、采用開(kāi)關(guān)型降壓穩(wěn)壓器提供3.3 V電源電壓的C8051F×××系列單片機(jī),功率消耗大約為35 mW.對(duì)于64腳的TQFP封裝,其θJA值是39.5 ℃/W.使用常數(shù)θJA時(shí)假定標(biāo)準(zhǔn)的PCB安裝方式.依據(jù)器件的自熱溫度計(jì)算公式[5]:
T=θJA×P,
(6)
式中,θJA為封裝的熱耗散常數(shù);P為器件消耗的功率.求得其理論值為0.211 ℃.受氣溫變化和周圍空氣流通狀況的影響,實(shí)際測(cè)量器件的自熱溫度有明顯的漲落,歷史數(shù)據(jù)平均值高出給定的傳感器自熱理論參數(shù)15.64%.
測(cè)試結(jié)果證明,C8051F020單片機(jī)器件的自熱溫度對(duì)于氣溫和空氣流通狀況不同的應(yīng)用環(huán)境存在自熱誤差.μC/OS-Ⅱ在C8051F020微處理器上開(kāi)發(fā)的終端溫度監(jiān)控軟件已經(jīng)通過(guò)了全面調(diào)試,達(dá)到了預(yù)期的階段性設(shè)計(jì)目標(biāo),能方便用戶對(duì)被控對(duì)象進(jìn)行實(shí)時(shí)監(jiān)控和信息管理,具有良好的開(kāi)發(fā)應(yīng)用前景.
參考文獻(xiàn):
[1] 張泉.μC/OS-Ⅱ在C8051F020單片機(jī)系統(tǒng)上的移植與應(yīng)用研究[D].上海:上海交通大學(xué),2009.
[2] 王曉寧,譚業(yè)雙,呂洪斌,等.基于C8051F020的通用串口適配器的設(shè)計(jì)與實(shí)現(xiàn)[J].國(guó)外電子元器件,2007(6):17-20.
[3] 張妍垚,孫曦東.VB連接數(shù)據(jù)庫(kù)[J].處理微機(jī),2010(3):53-55.
[4] 段宏偉.基于VB 6.0平臺(tái)的兩種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的分析與比較[J].赤峰學(xué)院學(xué)報(bào),2009,25(3):128-130.
[5] 黃穎琦.C8051F片內(nèi)溫度傳感器測(cè)量環(huán)境溫度誤差分析[J].甘肅科技,2007,23(10):95-96.