《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于VB的計(jì)算機(jī)溫度采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于VB的計(jì)算機(jī)溫度采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
摘要: 本系統(tǒng)用單片機(jī)對(duì)整個(gè)測量電路進(jìn)行管理和控制,使得整個(gè)系統(tǒng)智能化、體積小,、功耗低,、使用電子元件較少,內(nèi)部配線少,成本低,制造、安裝,、調(diào)試及維修方便。該系統(tǒng)中單片機(jī)作為下位機(jī),完成測溫任務(wù),測量結(jié)果可在本地顯示,也可通過下位機(jī)與上位機(jī)(PC機(jī))通訊,給出結(jié)果和提示信息。而上位機(jī)與下位機(jī)大多是通過PC機(jī)的RS-232串行接口實(shí)現(xiàn)通信,。Visual Basic是可視化面向?qū)ο蟮牟捎檬录?qū)動(dòng)技術(shù)的結(jié)構(gòu)化程序設(shè)計(jì)語言,本系統(tǒng)上位機(jī)是在Windows環(huán)境下利用Visual basic開發(fā)微機(jī)通信程序。
Abstract:
Key words :

1 系統(tǒng)功能及特點(diǎn)
  本系統(tǒng)用單片機(jī)對(duì)整個(gè)測量電路進(jìn)行管理和控制,使得整個(gè)系統(tǒng)智能化,、體積小,、功耗低、使用電子元件較少,內(nèi)部配線少,成本低,制造,、安裝,、調(diào)試及維修方便,。該系統(tǒng)中單片機(jī)作為下位機(jī),完成測溫任務(wù),測量結(jié)果可在本地顯示,也可通過下位機(jī)與上位機(jī)(PC機(jī))通訊,給出結(jié)果和提示信息。而上位機(jī)與下位機(jī)大多是通過PC機(jī)的RS-232串行接口實(shí)現(xiàn)通信,。Visual Basic是可視化面向?qū)ο蟮牟捎檬录?qū)動(dòng)技術(shù)的結(jié)構(gòu)化程序設(shè)計(jì)語言,本系統(tǒng)上位機(jī)是在Windows環(huán)境下利用Visual basic開發(fā)微機(jī)通信程序,。
2 系統(tǒng)基本原理
系統(tǒng)結(jié)構(gòu)如圖1所示,其中,,計(jì)算機(jī)要求能夠運(yùn)行Windows98或更高版本)操作系統(tǒng)和開發(fā)環(huán)境VB6.0,,具有標(biāo)準(zhǔn)的RS232串口,主要功能為數(shù)據(jù)采集處理和系統(tǒng)控制,,是人機(jī)交互的平臺(tái),。
 


現(xiàn)場溫度采集點(diǎn)共有4路,采用AD590采集溫度送到單片機(jī)的A/D轉(zhuǎn)換器轉(zhuǎn)入端,測量范圍最大值為50度,單片機(jī)定時(shí)采集溫度信號(hào),并按串行通信協(xié)議打包構(gòu)成數(shù)據(jù)幀,。在微機(jī)中采用VB6.0編程,,并選用MSCOMM控件進(jìn)行串行口通訊。MSComm控件是Microsoft提供的擴(kuò)展控件,用于支持VB程序?qū)Υ诘脑L問,同時(shí)支持查詢方法和事件驅(qū)動(dòng)通訊的機(jī)制,。事件驅(qū)動(dòng)通訊是交互方式處理串口事務(wù)的一種非常有效的方法,特別適合Windows程序的編寫,。因此用其實(shí)現(xiàn)微機(jī)串口的數(shù)據(jù)通訊相當(dāng)簡單,以很少的程序代碼就可以輕松實(shí)現(xiàn)串口的訪問和數(shù)據(jù)通訊。
3 硬件設(shè)計(jì)
3.1 測量電路設(shè)計(jì)
AD590將溫度轉(zhuǎn)換成相應(yīng)的電流后,,需要有電流電壓轉(zhuǎn)換電路(如圖2),,其中電容C起濾波作用。該電路中,,考慮到測溫范圍是0度—50度,,而ADC0809輸出電壓范圍為0-5V,故電阻R2取3.3千歐,,R3取15千歐,,其中R2是滑動(dòng)變阻器,精度高于R3,,電阻R4取100,,R5取50千歐,R4是滑動(dòng)變阻器,,精度高于R5,,電阻R6取33千歐。運(yùn)放是溫度電壓變換電路,,為了測試方便,,設(shè)計(jì)時(shí)將0度時(shí)的輸出電壓定為0V,每升高一度輸出電壓上升100mV,,與電壓之間的關(guān)系為:U=K(T-T0)V式中,,K為比例系數(shù),K=0.98V/度,T為環(huán)境溫度,,單位為度,,T0—測溫下限0度。當(dāng)T=+50度和T=0度時(shí),,變換電路輸出電壓上限為Umax=5V,電壓下限為Umin=0V,實(shí)現(xiàn)的辦法是:首先調(diào)整R2,,使得I1=273.2uA,當(dāng)溫度為0度時(shí),,通過AD590的電流I2=273.2uA,,此時(shí)I3=0uA,R4,、R5上無壓降,,即輸出電壓為0V;當(dāng)環(huán)境溫度為50度時(shí),,流過AD590的電流為323.2uA,,此時(shí),I3=I2-I1=50uA,調(diào)整R4,,使R4+R5=98千歐,,有(R4+R5)*I3=4.9V。同樣,,可以計(jì)算出其余各溫度所對(duì)應(yīng)的輸出電壓,。
 

3.2 模數(shù)轉(zhuǎn)換接口電路設(shè)計(jì)
本系統(tǒng)以89C51芯片作為主芯片,管理和控制整個(gè)系統(tǒng)。該芯片集成度高,兼容8051單
處機(jī),不同的是片內(nèi)有4KB的ROM,為PEROM(FLASH存儲(chǔ)器),。A/D轉(zhuǎn)換器的種類很多,目前
 

應(yīng)用較廣泛的有:逐次逼近式A/D轉(zhuǎn)換雙積分式A/D轉(zhuǎn)換器,、V/F變換式A/D轉(zhuǎn)換器。本系統(tǒng)所使用的單片機(jī)89C51是8位,因此采用8位A/D轉(zhuǎn)換器,其接口電路簡單,。絕大部分集成A/D轉(zhuǎn)換器的數(shù)據(jù)輸出都具有TTL電平,數(shù)據(jù)輸出寄存器具有可控三態(tài)輸出功能,可直接掛在數(shù)據(jù)總線上,否則,就要加緩沖器接口,數(shù)據(jù)分兩次讀出,比較麻煩。根據(jù)系統(tǒng)所要求的測量分辨力,采用8位A/D轉(zhuǎn)換器時(shí),其分辨力為50/250=0.2,已經(jīng)高于規(guī)定值,。溫度是一個(gè)緩慢變化的物理量,測量它時(shí)不需要高速A/D轉(zhuǎn)換器,通道上也不需要加采樣保持器,。逐次逼近型A/D轉(zhuǎn)換器屬于中速A/D轉(zhuǎn)換器,常用于工業(yè)多通道單片機(jī)控制系統(tǒng)?;谝陨显?本系統(tǒng)采用
ADC0809作為模數(shù)轉(zhuǎn)換器,。其結(jié)構(gòu)框圖如圖3。該芯片是8位逐次比較式A/D轉(zhuǎn)換芯片,具有地址鎖存控制的8路模擬開關(guān),最大非線性誤差小于+1LSB,應(yīng)用單一+5V電源,其模擬量輸入電壓的范圍為0 +5V,對(duì)應(yīng)的數(shù)字量輸出為00H FFH,可鎖存三態(tài)輸出,輸出與TTL兼容,功耗為15mW,轉(zhuǎn)換時(shí)間為100 S,無需調(diào)零或調(diào)整滿量程,。有28個(gè)引腳,其中:IN0,、IN1、IN2,、…,、IN7接8路模擬量輸入;AD-DA、ADDB,、ADDC接地址線,用以選定8路輸入中的一路,。
該系統(tǒng)中ADDC接地,AD-DA、ADDB分別接89C51的P3.3和P3.4,構(gòu)成4路輸入;ALE是地址鎖存允許,START是芯片的起動(dòng)引腳,其上脈沖的下降沿起動(dòng)一次新的A/D轉(zhuǎn)換,一起接入P3.7;EOC是轉(zhuǎn)換結(jié)束信號(hào),與P362相接,向單片機(jī)申請(qǐng)中斷,;OE是輸出允許端,直接接+5V,;CLK是時(shí)鐘端,因芯片的時(shí)鐘頻率最高只工作于640KHZ,故通常由單片機(jī)的ALE經(jīng)分頻后接向該引腳;DB0 DB7是數(shù)字量輸出,與PO相接,,LSB表示最低位,MSB表示最高位,。
3.3 串行接口電路設(shè)計(jì)
下位機(jī)(單片機(jī))通過串行口(RXD和TXD)與上位機(jī)(PC機(jī))進(jìn)行異步通信,采用RS—232標(biāo)準(zhǔn)接口。RS—232規(guī)定了自己的電氣標(biāo)準(zhǔn),而此標(biāo)準(zhǔn)并不能滿足TTL電平(MCS—51單片機(jī)串行口電平為TTL電平)傳送要求,。因此當(dāng)RS232電平與TTL電平接口時(shí),必須進(jìn)行電平轉(zhuǎn)換,。目前RS232與TTL的電平轉(zhuǎn)換最常用的芯片是傳輸線驅(qū)動(dòng)器MC1488和傳輸線接收器MC1489,其作用除了電平轉(zhuǎn)換外,還實(shí)現(xiàn)正負(fù)邏輯電平的轉(zhuǎn)換。
4 軟件設(shè)計(jì)
系統(tǒng)軟件主要是用VB6.0對(duì)RS232串口編程,。實(shí)現(xiàn)硬件之間的通訊,。MSComm是Microsoft公司提供的主要用于串行通信編程的ActiveX控件。ActiveX控件包括一系列的屬性,、方法和事件,,應(yīng)用程序通過ActiveX控件提供的接口來訪問控件的功能。通信控件把許多復(fù)雜的操作都留給了VB和Windows處理,,編程人員編程時(shí)只需設(shè)置其中的一些屬性,。
    系統(tǒng)的關(guān)鍵代碼如下:
Coast CMDconfig = "%0101210600" ’設(shè)置端口命令字符,
0--100度,,科學(xué)單位
Coast CMDdataInl = "#O1" ‘讀串口1數(shù)據(jù)命令字符
Coast CMDdataIn2 = "#02" ‘讀串口2數(shù)據(jù)命令字符
Coast CMDspanCalibration = "$010" ‘校準(zhǔn)命令字符
Coast CMDoffsetCalibration = "$011" ‘偏移量校準(zhǔn)命令字符
Coast CMDconfigStatus = "$012"‘讀端口信息命令字符
Coast CMDmoduleName = "$OlM"‘讀模塊名命令字符
Private Sub CmdStart_onClick( )‘開始命令子程序
    MSComml.CommPor = COMnum‘設(shè)置申口號(hào)
    If MSComml.PortOpen = False Then‘打開串口
        MSComml.PorOpen = True
    End If
    If COMnum = 1 Then
          CMDdataln = CMIMataInl
      Else
          CMDdataln = CMDdataIn2
      End If
    MSComml.Outpu t= CStr(CMDdataIn)&vbCr‘發(fā)出讀數(shù)命令
      TimeDelay 500‘延時(shí)500 ms
      Picturel.CurrentX = 0‘繪制曲線坐標(biāo)起點(diǎn)
      Picturel. CurrentY = temperature
    Timer1.Enabled = True‘開始計(jì)時(shí)
End Sub
Private Sub MSComml_OnComm( ) ‘事件響應(yīng)子程序
  Select Case MSComml.CommEvent‘判斷MSComml通訊事件
      Case comEvReceive‘收到Rthreshold個(gè)字節(jié)產(chǎn)生的接收事件
        MSComml.RThreshold = 0‘關(guān)閉OnComm事件接收
        TimeDelay 20‘延時(shí)20ms
    temperatureShow = Right(MSComml.Input.7) ‘讀取第一個(gè)數(shù)據(jù)字節(jié)(BCD碼高位字節(jié))
        temperature = VaI(temperature5how ) ‘數(shù)值組合,,標(biāo)定小數(shù)點(diǎn)
        MSComml.Output = CStr(CMDdataIn)&vbCr‘發(fā)送讀命令
        MSComml.InBufferCount = 0‘清空緩存
        MSComml.RThreshold = 1‘關(guān)閉OnComm事件接收
      Case comEventBreak‘收到Break

      Case Else
  End Select
End Sub
    系統(tǒng)時(shí)鐘最小可以設(shè)為1ms,在使用中需要注意,,由于串口速度有限,,系統(tǒng)運(yùn)行速度有限,ADAM4013模塊的采樣率也有限,,所以設(shè)置串口采樣間隔一般不能小于50ms,,否則會(huì)出現(xiàn)延時(shí)錯(cuò)誤。其實(shí)對(duì)于溫度采集來說,,20次/s的采樣率已經(jīng)夠用,,大的采樣率并無太大意義。
5 結(jié)束語
系統(tǒng)中沒有對(duì)溫度超過測溫范圍時(shí)情況的處理,可在系統(tǒng)改進(jìn)中增加一個(gè)報(bào)警電路,。將單片機(jī)的一個(gè)口與一個(gè)發(fā)光二極管相接,所測溫度超過規(guī)定溫度時(shí),發(fā)光二極管點(diǎn)亮,提醒用戶,。本系統(tǒng)由于進(jìn)行了實(shí)時(shí)顯示和數(shù)據(jù)存儲(chǔ)的設(shè)計(jì),便于直觀地觀察溫度變化和數(shù)據(jù)處理,。本系統(tǒng)最大的特點(diǎn)就是容易實(shí)現(xiàn),,不需要數(shù)據(jù)采集卡,,不需要硬件驅(qū)動(dòng)程序,硬件連接方便,,軟件編制也比較容易掌握,,特別適合短期的測溫系統(tǒng)開發(fā)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。