1 引言
隨著現(xiàn)代控制技術(shù)的發(fā)展,,在工業(yè)控制領(lǐng)域需要對(duì)現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集,,在一些重要場(chǎng)合對(duì)數(shù)據(jù)采集的要求更高,例如在電廠,、鋼鐵廠,、化工領(lǐng)域的生產(chǎn)中都需要對(duì)大量數(shù)據(jù)進(jìn)行現(xiàn)場(chǎng)采集,而溫度采集又是其中極為重要的部分,,因此,,需要一種高精度、低成本的數(shù)據(jù)采集與控制系統(tǒng),。
為了方便地實(shí)現(xiàn)溫度采集與控制系統(tǒng),,筆者選用MSC1201作為系統(tǒng)的MCU。MSC1201是的德州儀器(TI)新推出的一款低噪聲,、低成本數(shù)據(jù)采集微處理器,,它具有的增強(qiáng)型8051內(nèi)核,執(zhí)行速度比標(biāo)準(zhǔn)8051內(nèi)核快3倍,,而功耗卻更低,,MSC1201中的ADC的防噪性能為75nV,比市場(chǎng)上大多數(shù)獨(dú)立式ADC都好,,此外,,MSC1201的ADC還可在功耗僅為3mV時(shí)達(dá)到1ks/s的采樣速率,因此,,搭配合適的信號(hào)拾取元件就能組成一種性能優(yōu)異的數(shù)據(jù)采集控制系統(tǒng),。
筆者設(shè)計(jì)的恒溫箱溫度控制系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。該恒溫箱主要用于電子設(shè)備的高溫實(shí)驗(yàn),。通過(guò)小鍵盤設(shè)定實(shí)驗(yàn)溫度和時(shí)間,,達(dá)到定時(shí)后并能發(fā)出警告,箱體打開(kāi)后啟動(dòng)風(fēng)扇散熱,,為了使溫度控制更加準(zhǔn)確,,在箱體內(nèi)采用多點(diǎn)測(cè)溫,同時(shí)為了保證電子設(shè)備的均勻受熱,,設(shè)計(jì)中采用步進(jìn)電機(jī)帶動(dòng)托盤使待測(cè)物在箱內(nèi)轉(zhuǎn)動(dòng),,并在定時(shí)結(jié)束時(shí)停止轉(zhuǎn)動(dòng)。在恒溫箱工業(yè)時(shí),,箱內(nèi)溫度通過(guò)數(shù)碼管顯示,。定時(shí)剩余時(shí)間也通過(guò)數(shù)碼管顯示。
2 MSC1201型微處理器
本設(shè)計(jì)采用TI的MSC1201型微處理器作為主處理器,,MSC1201的封裝形式為QFN-36,,在3V供電時(shí)功耗為3mW,。具有工業(yè)級(jí)的工業(yè)溫度范圍即-40℃-+125℃。
模擬特性包括數(shù)據(jù)采集精度達(dá)到24位無(wú)損采集,,工業(yè)頻率為10Hz時(shí)有效分辨達(dá)到22位,;片內(nèi)可編程增益控制,最高可將信號(hào)放大128倍,;工作噪聲為75nV,,片內(nèi)提供精確的參考電壓,具有偏差校正功能,,片上溫度傳感器可以快速方便地組成檢測(cè)系統(tǒng),,極小的偏差漂移(0.02ppm/℃),放大漂移(0.5ppm/℃)使得系統(tǒng)具有較強(qiáng)的溫度適應(yīng)能力,。
數(shù)字功能包括具有與8051兼容的增強(qiáng)型處理器內(nèi)核,;擁有1KB自舉ROM、256字節(jié)數(shù)據(jù)SRAM,、4KB閃存具有安全保護(hù)措施,;存儲(chǔ)器讀/寫循環(huán)可達(dá)100萬(wàn)次,保存100年,。
外部特征包括有16個(gè)通用I/O引腳,、1個(gè)32位累加器、2個(gè)16位定時(shí)/計(jì)數(shù)器,、可編程看門狗定時(shí)器,、全雙工USART、SPI,、I2C接口,;空閑狀態(tài)下消耗電流小于200μA,停止?fàn)顟B(tài)下電流小于100nA,;中斷源多達(dá)20個(gè),,可以滿足一般工業(yè)現(xiàn)場(chǎng)的控制要求。MSC201的結(jié)構(gòu)框圖如圖2所示,。
3 溫度采集系統(tǒng)的硬件組成
通常,,為了組成一種溫度控制系統(tǒng),采用如圖3所示的模塊化設(shè)計(jì),。
由圖3可見(jiàn),,從傳感器到CPU還有許多環(huán)節(jié)需要系統(tǒng)設(shè)計(jì)者來(lái)設(shè)計(jì)。但是采用MSC1201型微處理器后許多環(huán)節(jié)就可以省略,。如圖中虛線包含的部分,,處理器自身已經(jīng)包含這些中間處理過(guò)程,只要設(shè)置相關(guān)寄存器就可以調(diào)整它們的參數(shù),。
3.1 溫度傳感器
在許多溫度采集系統(tǒng)中用熱敏電阻器作為測(cè)溫器件,,然后通過(guò)查表或附加電路得到輸出電壓與溫度的關(guān)系,,查表需要一段存儲(chǔ)空間來(lái)保存表格數(shù)據(jù)且會(huì)增加代碼長(zhǎng)度,因此使用熱敏電阻器的成本較高,。另一方面,,由于熱敏電阻器輸出的非線性使其高溫段和低溫段的測(cè)量誤差變化較大,而在多點(diǎn)測(cè)量時(shí)對(duì)每一種器件都要單獨(dú)調(diào)零,,因而在應(yīng)用時(shí)有許多局限。
在筆者設(shè)計(jì)的溫度檢測(cè)系統(tǒng)中,,采用ADI公司的AD590型溫度傳感器作為溫度測(cè)量元件,,AD590是電流型傳感器,當(dāng)電源電壓為4V-30V使流經(jīng)器件的電流隨溫度的變化而變化,。其溫度變化規(guī)律為1μA/K,,表示以K氏溫度衡量溫度,溫度變化1℃電流變化1μA,,這種線性變化的規(guī)律給應(yīng)用帶來(lái)很大方便,,應(yīng)用AD590時(shí)電源電壓的變化也會(huì)影響電流輸出,但電源電壓高時(shí)影響會(huì)小一些,,因此電源電壓適當(dāng)調(diào)高,,圖4示出AD590與MSC1201的連接,其中,,
從(1)式可以看出,,AD590輸出電壓與溫度的關(guān)系,如果選擇(R1+VR1)=10KΩ,,那么可得下式:
圖4中R1與VR1串聯(lián),,通過(guò)調(diào)節(jié)VR1的阻值來(lái)獲得10kΩ的電阻值。沒(méi)有直接使用10kΩ的電阻器是為了提高系統(tǒng)測(cè)量精度,。
由于溫度檢測(cè)的后級(jí)接收差分信號(hào)輸入,,因此只需要在差分輸入的負(fù)端引入2.732V參考電壓即可得到隨攝氏溫度線性變化的輸出電壓。如圖4所示,,調(diào)節(jié)VR3阻值使在AIN1,、AIN3引腳上具有2.732V電壓即可生成隨攝氏溫度線性變化的輸入信號(hào)。若設(shè)計(jì)的后級(jí)是單端輸入,,則只需在校正單元減去2.732V即可,。
3.2 多路選擇開(kāi)關(guān)
輸入多路選擇開(kāi)關(guān)屬于MSC1201的內(nèi)置功能模塊,可以接收差分輸入,。如圖2所示,,如果AIN0選作差分輸入的正端輸入,則其他任意通道可以作為差分信號(hào)的負(fù)端輸入,,并可通過(guò)交換差分輸入的正負(fù)端來(lái)消除誤差,,在本系統(tǒng)中選用AIN0輸入AD590的輸出電壓V(T),,將2.732V作為差分信號(hào)負(fù)端輸入到AIN1,MSC1201可以自動(dòng)檢測(cè)這些信號(hào)輸入引腳是否開(kāi)路或短路,。
另外,,該電路還可以檢測(cè)自身溫度,當(dāng)輸入多路選擇開(kāi)關(guān)的配置寄存器全部設(shè)為1時(shí),,電路內(nèi)的測(cè)溫二極管就連接到ADC的輸入端,,此時(shí)其余輸入通道開(kāi)路,這有利于器件自身的保護(hù),,當(dāng)芯片溫度過(guò)高時(shí),,可以通過(guò)強(qiáng)制電路進(jìn)入空閑模式使系統(tǒng)降溫。
通道可以通過(guò)寄存器ADMUX來(lái)選擇,,如下所示:
其中,,高4位決定差分正端輸入通道,而低4位決定負(fù)端輸入通道,。
3.3 放大器
通常情況下檢測(cè)到的信號(hào)很微弱,,需要進(jìn)行放大。而MSC1201內(nèi)置可編程增益放大器(PGA)的增益可以設(shè)為1,、2,、4、8,、32,、64、128,。通過(guò)使用PGA可以提高ADC的有效分辨率,。例如在信號(hào)電壓范圍為±2.5V時(shí),若PGA增益設(shè)為1,,則ADC最小分辨率為1.5μV,;當(dāng)PGA增益設(shè)為128、信號(hào)電壓范圍為±19mV時(shí),,ADC的分辨率為75nV,,改變PGA增益會(huì)使放大器輸入阻抗變化,但通常放大器的輸入阻抗很高,,一般不會(huì)對(duì)輸入信號(hào)產(chǎn)生影響,。放大器的放大倍數(shù)由寄存器ADCON0的低3位確定。
3.4 信號(hào)調(diào)理
在溫度檢測(cè)中,,輸入環(huán)節(jié)會(huì)不可避免的引入某些誤差,,使輸入信號(hào)產(chǎn)生不同程度的畸變。為了消除這些誤差對(duì)系統(tǒng)的影響,,需要對(duì)輸入信號(hào)進(jìn)行調(diào)理,。
3.4.1 ADC補(bǔ)償
通過(guò)使用寄存器ODAC,,PGA的模擬輸出可以獲得最高能夠達(dá)到測(cè)量電壓范圍一半的偏移補(bǔ)償。寄存器ODAC是8位,,最高位為符號(hào)位,,表示補(bǔ)償?shù)恼?fù),其余7位表示補(bǔ)償?shù)拇笮?。由于ODAC引入的只是對(duì)PGA的模擬補(bǔ)償,,因此并不影響ADC的測(cè)量范圍。
3.4.2 ADC校準(zhǔn)
基于MSC1201/02的數(shù)據(jù)采集系統(tǒng)的偏移和增益誤差可以通過(guò)校準(zhǔn)來(lái)減小,。寄存器ADCON1的CAL2:CAL0可控制校準(zhǔn),。每次校準(zhǔn)需要7個(gè)Tdata(數(shù)據(jù)采集時(shí)間)周期來(lái)完成。
完成校準(zhǔn)必須在輸入端施加信號(hào),,再由器件計(jì)算出偏移量以補(bǔ)償系統(tǒng)偏差。在進(jìn)行系統(tǒng)偏移校正時(shí),,需要輸入0V或很小的電壓信號(hào),,并讀取輸出結(jié)果,如果結(jié)果為正,,說(shuō)明轉(zhuǎn)換中存在正偏移誤差,,應(yīng)在結(jié)果中減去該偏移量。反之,,如果結(jié)果為負(fù),,就要加上該偏移量。
系統(tǒng)增益校準(zhǔn)需要輸出滿量程信號(hào),,并測(cè)量輸出結(jié)果來(lái)實(shí)現(xiàn)增益校準(zhǔn),。增益校準(zhǔn)實(shí)際上就是調(diào)整放大器的輸出信號(hào)斜率以補(bǔ)償實(shí)際輸出與理想輸出的誤差。
系統(tǒng)上電后就要進(jìn)行校準(zhǔn),,而在電源電壓,、參考電壓或PGA增益發(fā)生變化時(shí)要重新進(jìn)行校準(zhǔn)。當(dāng)校準(zhǔn)完成時(shí),,ADC的中斷標(biāo)志位變?yōu)楦唠娖?,在程序中可通過(guò)檢查該位來(lái)判斷校準(zhǔn)是否完成,若校準(zhǔn)完成,,此時(shí)輸入數(shù)據(jù)才有效,。
3.5 A/D轉(zhuǎn)換
在A/D轉(zhuǎn)換中的調(diào)制器是二階系統(tǒng),調(diào)制器工作頻率為fMOD,,該頻率與fACLK有關(guān),,而fACLK可以在模擬時(shí)鐘寄存器(ACLK)中設(shè)置,其關(guān)系式如下:
fMOD=fCLK/[(ACLK+1)64]=fACLK/64 (3)
整個(gè)A/D轉(zhuǎn)換的數(shù)據(jù)輸出率為:
fDATA=fMOD/數(shù)據(jù)抽取率 (4)
數(shù)據(jù)抽取率從A/D轉(zhuǎn)換結(jié)果中取得數(shù)據(jù)的比率,,如抽取率為10中取1,,其含義就是調(diào)制器最近輸出的10個(gè)數(shù)據(jù)進(jìn)行處理(如取平均值),,其結(jié)果就作為本次A/D轉(zhuǎn)換的結(jié)果。這里的處理工作是由數(shù)字濾波器完成的,。
A/D轉(zhuǎn)換在缺省條件下使用內(nèi)部2.5V作為參考電壓,,此時(shí)AGND引腳必須連接REFIN-引腳。而REFOUT/REFIN+引腳應(yīng)該通過(guò)1只0.1μF的電容器接地,,同時(shí)電容器應(yīng)盡量靠近引腳,,MSC1201也可以使用外部參考電壓,需要通過(guò)ADC控制寄存器ADCON0來(lái)進(jìn)行選擇,。
3.6 數(shù)字濾波
數(shù)字濾波可以使用快速設(shè)置濾波器,、Sinc2或Sinc3濾波器。
為了使系統(tǒng)的A/D轉(zhuǎn)換具有低噪聲,、響應(yīng)快速的優(yōu)點(diǎn),,筆者按以下策略來(lái)選擇濾波通道:當(dāng)數(shù)據(jù)輸入通道改變時(shí),系統(tǒng)將在接下來(lái)的2次轉(zhuǎn)換中使用快速設(shè)定濾波器,,而其中第一次的轉(zhuǎn)換結(jié)果又將舍棄,。緊接著依次使用Sinc2或Sinc3濾波器以改善噪聲性能。
3.7 CPU
MSC1201內(nèi)置的FLASH具有100萬(wàn)次的讀寫次數(shù),,數(shù)據(jù)可以保存100年,,可以自由地在FLASH中劃分?jǐn)?shù)據(jù)存儲(chǔ)區(qū)和程序存儲(chǔ)區(qū)。MSC1201擁有自舉ROM,,256字節(jié)RAM,、128字節(jié)特殊功能寄存器,具有4組bank工作寄存器,,當(dāng)前程序只使用一組bank寄存器,。通過(guò)改變當(dāng)前bank寄存器可以快速切換程序上下文環(huán)境。這些設(shè)計(jì)極大方便了系統(tǒng)的設(shè)計(jì),。
由于MSC1201系列處理器使用更高效的15型處理器核心,,所以在使用相同外部時(shí)鐘的情況下它的指令執(zhí)行速度比標(biāo)準(zhǔn)51型處理器快1.5-3倍,在使用相同的代碼和外部時(shí)鐘的情況下該處理器的吞吐量比標(biāo)準(zhǔn)51型處理器高2.5倍,。
因此,,工作于33MHz的MSC1201處理器運(yùn)行能力等于工作于82.5MHz的8051核,這將有助于設(shè)計(jì)者降低處理器的運(yùn)行頻率,,降低系統(tǒng)功耗并減小系統(tǒng)噪聲,。
3.8 顯示模塊
作為系統(tǒng)輸出,采用2個(gè)SR120281型4位7段式LED模塊顯示檢測(cè)到的溫度和定時(shí)剩余時(shí)間,。該模塊含4個(gè)數(shù)碼管,,采用共陰極連接。模塊中4位數(shù)碼管的陽(yáng)極引腳并聯(lián),通過(guò)陰極選擇需要點(diǎn)亮的數(shù)碼管,。LED的陽(yáng)極驅(qū)動(dòng)采用MOTOROLA公司的MC14495型譯碼驅(qū)動(dòng)器來(lái)完成,,利用bic-8718型驅(qū)動(dòng)電路產(chǎn)生4位數(shù)碼管的位選擇信號(hào)。每次點(diǎn)亮1位數(shù)碼管,,通過(guò)選擇適當(dāng)?shù)倪x通順序,,利用人的視覺(jué)殘留即可得到1次顯示中4位數(shù)碼管同時(shí)點(diǎn)亮的效果。
4 溫度控制系統(tǒng)的軟件設(shè)計(jì)
系統(tǒng)軟件的復(fù)雜度與其所要完成的任務(wù)密切相關(guān),。本系統(tǒng)主要用于小型恒溫箱的溫度控制,,需要控制的對(duì)象有加熱裝置的開(kāi)關(guān)、風(fēng)機(jī)的開(kāi)關(guān)和帶動(dòng)托盤旋轉(zhuǎn)的步進(jìn)電機(jī)等,。使用者通過(guò)按鍵設(shè)定恒溫箱的工作溫度和工作時(shí)間,,定時(shí)到時(shí),加熱器關(guān)閉并告警,。還有一些顯示控制及對(duì)小鍵盤輸入的響應(yīng)處理,。其程序包含以下幾部分:鍵盤掃描子程序、溫度信號(hào)采集子程序,、顯示控制子程序,、電機(jī)控制子程序、繼電器控制子程序和通信子程序,。圖5所示是系統(tǒng)的軟件流程。
5 PC與溫度控制系統(tǒng)的通信
對(duì)于一種溫度采集與控制系統(tǒng),,實(shí)驗(yàn)完畢后可能要使用實(shí)驗(yàn)數(shù)據(jù),,當(dāng)需要對(duì)現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行更加復(fù)雜的數(shù)學(xué)分析運(yùn)算和對(duì)數(shù)據(jù)進(jìn)行海量存儲(chǔ)時(shí),與PC主機(jī)的通信非常重要,。筆者利用MAX232電路實(shí)現(xiàn)系統(tǒng)與PC主機(jī)的串行通信,,并設(shè)計(jì)了上位機(jī)軟件。PC主機(jī)每隔30s與下位機(jī)通信一次以獲得溫度數(shù)據(jù),,并將這些數(shù)據(jù)存入ACCESS數(shù)據(jù)庫(kù)中,,便于日后查詢。
利用VC完成上位機(jī)軟件,,在VC中通過(guò)使用MSComm控件來(lái)完成串口通信,,在接收到數(shù)據(jù)后通過(guò)DAO方法訪問(wèn)數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)、查找,、排序等操作,。由于篇幅限制,具體過(guò)程恕不贅述,。
6 結(jié)束語(yǔ)
基于MSC1201型微處理器的溫度數(shù)據(jù)采集與控制系統(tǒng)采用了新型處理器,,在應(yīng)用中節(jié)省了大量的硬件設(shè)計(jì)工作,縮短了設(shè)計(jì)周期,以較小的成本完成了多點(diǎn)溫度數(shù)據(jù)的實(shí)時(shí)采集與控制,。