鐘鼎
(中國(guó)地質(zhì)大學(xué) 機(jī)械與電子信息學(xué)院,湖北 武漢 430074)
溫度測(cè)量[1]在家居生活和工業(yè)生產(chǎn)控制等領(lǐng)域都有著廣泛的使用,隨著電子技術(shù)的飛速發(fā)展,應(yīng)用領(lǐng)域還在不斷的擴(kuò)展,基于單片機(jī)控制的溫度測(cè)量系統(tǒng)也相繼被提出,隨著ARM公司最新Cortex系列內(nèi)核的推出,基于Cortex-M3內(nèi)核的高性價(jià)比的處理器受到了客戶廣泛歡迎,而在我國(guó),GSM網(wǎng)絡(luò)超過(guò)95%的覆蓋率也為無(wú)線通信和遠(yuǎn)程控制創(chuàng)造了良好的媒介,在某些特殊環(huán)境下,比如不易布線或者布線距離較長(zhǎng)環(huán)境下,都會(huì)使測(cè)量系統(tǒng)的成本升高,而且數(shù)據(jù)在長(zhǎng)距離的傳輸過(guò)程中極易受到干擾,利用技術(shù)成熟成本相對(duì)較低的GSM網(wǎng)絡(luò),不僅不受傳輸距離的限制,而且具有較好的抗干擾能力,使用便攜的手機(jī)發(fā)送短信控制來(lái)實(shí)現(xiàn)溫度的實(shí)時(shí)測(cè)量是一種較好的方法。
智能溫度測(cè)量系統(tǒng)主要由溫度測(cè)量模塊、GSM模塊、外接EEPROM、主控制器組成。主控制器使用意法半導(dǎo)體公司生產(chǎn)的STM32F103RBT6處理器,主要完成整個(gè)系統(tǒng)的運(yùn)行和自檢工作。溫度測(cè)量模塊使用DALLAS公司的DS18B20數(shù)字溫度傳感器,GSM模塊使用西門(mén)子工業(yè)TC35I模塊,其支持中文短信功能,通過(guò)通用串口協(xié)議與主控制器通信,接收和發(fā)送主控制器的命令,當(dāng)TC35I模塊接收到短消息命令后把命令發(fā)送給主控制器,主控制器分析短信命令,如為溫度測(cè)量指令則開(kāi)始測(cè)量溫度,測(cè)量數(shù)據(jù)通過(guò)TC35I模塊發(fā)送回去,同時(shí)備份測(cè)量數(shù)據(jù)在外接EEPROM中,整體結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)Fig.1 Overall structure of system
意法半導(dǎo)體公司新推出的STM32F103RBT6,是基于ARM公司最新推出的V7平臺(tái)的Cortex-M3內(nèi)核。芯片[2-3]具有128 k FLASH,20 k SRAM,2個(gè) SPI接口,3個(gè)串口, 一個(gè)USB,1個(gè) CAN,51個(gè) IO口。芯片的數(shù)據(jù)處理能力為1.25 DMips/MHz,在 72 MHz的工作時(shí)鐘下消耗 36 mA(所有外設(shè)處于工作狀態(tài)),待機(jī)時(shí)下降到2 μA,是目前32位處理器市場(chǎng)上功耗最低的產(chǎn)品,十多塊錢(qián)的市場(chǎng)售價(jià)為該產(chǎn)品創(chuàng)造了極高的性價(jià)比,除了在價(jià)格上的優(yōu)勢(shì)外,STM32主控芯片內(nèi)部包含了一個(gè)時(shí)鐘嘀嗒(SysTick)計(jì)時(shí)器,SysTick是一個(gè)24位的自動(dòng)重裝的倒計(jì)數(shù)定時(shí)器,在使用高速8 M外部時(shí)鐘信號(hào)時(shí),通過(guò)處理器內(nèi)部PLLMUL倍頻產(chǎn)生最高72 M的時(shí)鐘HCLK,SysTick的時(shí)鐘來(lái)自HCLK的8分頻,即72/8=9 MHz,通過(guò)計(jì)算當(dāng)裝載的初值為9時(shí)可以得到精確的1 μs的延時(shí),在使用DS18B20測(cè)量溫度時(shí)候,開(kāi)始,應(yīng)答,讀寫(xiě)時(shí)序中使用的延時(shí)都為μs級(jí),有較嚴(yán)格的時(shí)序要求,在STM32推出之前廣泛使用的單片機(jī)如51系列和AVR系列,都很難得到精確的μs級(jí)的延時(shí)程序,這導(dǎo)致在無(wú)參考數(shù)據(jù)的情況下通過(guò)軟件仿真得到的延時(shí)程序在實(shí)際驅(qū)動(dòng)DS18B20過(guò)程中往往需要多次對(duì)延時(shí)程序進(jìn)行調(diào)整,經(jīng)實(shí)驗(yàn)證明,在軟件仿真的環(huán)境下,也很難精確地對(duì)延時(shí)函數(shù)進(jìn)行運(yùn)行時(shí)間的估計(jì),而在有限的資源下,如果使用通用定時(shí)器完成延時(shí)也是不太現(xiàn)實(shí)的,而STM32處理器卻由于能夠使用精確的μs級(jí)延時(shí),為延時(shí)程序編寫(xiě)帶來(lái)很大方便。主控芯片與外設(shè)接口如圖1所示。
STM32F103RBT6雖然內(nèi)部自帶了溫度傳感器,但是其精度較差,為正負(fù)1.5度,而且由于考慮到芯片發(fā)熱的問(wèn)題,內(nèi)部自帶溫度傳感器很難測(cè)量到較準(zhǔn)確數(shù)據(jù),所以選用價(jià)格便宜精度較高的DS18B20溫度傳感器,其采用單總線方式傳輸,與主控制器的 PA0連接,工作電壓為 3~5.5 V,測(cè)溫范圍-55~+125度,理論上測(cè)量精度最高可達(dá)0.062 5度,實(shí)際測(cè)量中常用的默認(rèn)精度為 0.5度,在數(shù)據(jù)傳輸[4-5]過(guò)程中,讀和寫(xiě)的時(shí)序如下:
寫(xiě)時(shí)序:寫(xiě)0時(shí)主機(jī)拉低總線,延時(shí)60 μs,然后釋放總線。寫(xiě)1時(shí)主機(jī)拉低總線,延時(shí)2 μs,然后釋放總線。在連續(xù)寫(xiě)的過(guò)程中需要有1 μs以上的延時(shí)。
讀時(shí)序:讀時(shí)都由主機(jī)把電平拉低,延時(shí)大于 1 μs(3 μs)后,主機(jī)釋放總線,3~15μs時(shí)間段的后期,主機(jī)采樣電平(0或 1),延時(shí) 45 μs,整個(gè)讀時(shí)序周期大于 60 μs。
使用DS18B20[2]讀取一次溫度的流程為:復(fù)位→發(fā)送(0xcc)命令→發(fā)送轉(zhuǎn)換命令(0x44)→延時(shí)→發(fā)送讀數(shù)據(jù)命令(0xbe)→讀取兩個(gè)字節(jié)溫度→進(jìn)行數(shù)據(jù)處理。其中讀取的是一個(gè)12 bit的數(shù)據(jù),其中低4位為小數(shù)部分,高7位為整數(shù)部分,一位符號(hào)位,根據(jù)測(cè)量精度的要求可以對(duì)數(shù)據(jù)的整數(shù)部分和小數(shù)部分分開(kāi)進(jìn)行處理。
TC35I模塊是西門(mén)子公司支持中文短信息的工業(yè)級(jí)GSM模塊,工作在EGSM900和GSM1800雙頻段,電源范圍為直流3.3~4.8 V,通過(guò)接口連接器和天線連接器分別連接SIM卡讀卡器和天線,主控制器通過(guò)串口與TC35I模塊使用AT指令集完成雙向通信,TC35I模塊的電路圖如圖2所示,其主要由40引腳的TC35I和SIM卡組成,模塊通過(guò)串口TXD0和RXD0與主控制器通信,TC35I短消息功能支持Text和PDU兩種模式,在標(biāo)準(zhǔn)C環(huán)境下,短消息收發(fā)采用Text模式,TC35I模塊發(fā)送內(nèi)容為test的短消息的主要操作如下[6]:
圖2 TC35I模塊電路圖Fig.2 TC35I module circuit
當(dāng)TC35I模塊接收到短消息后會(huì)自動(dòng)向處理器發(fā)送提示信息,處理器通過(guò)串口中斷接收到提示信息,在標(biāo)準(zhǔn)的C環(huán)境下,通過(guò)檢驗(yàn)串口提示信息中是否含有“+CMTI”來(lái)判斷是否有短消息提示指令,如果有則處理器向TC35I模塊發(fā)送讀取短消息指令后,之后處理器提取TC35I收到的短消息。
外存儲(chǔ)設(shè)備使用外接EEPROM,在進(jìn)行溫度測(cè)量后測(cè)量數(shù)據(jù)發(fā)送給終端的同時(shí)會(huì)保存測(cè)量數(shù)據(jù)在外接存儲(chǔ)器AT24C02中,AT24C02總?cè)萘繛?56個(gè)字節(jié),一次溫度測(cè)量數(shù)據(jù)為2個(gè)字節(jié),所以使用便宜的24C02可以存儲(chǔ)超過(guò)100組的測(cè)量數(shù)據(jù),AT24C02片內(nèi)地址在接收到每一個(gè)數(shù)據(jù)字節(jié)地址后自動(dòng)加1,直到存儲(chǔ)滿后前面的數(shù)據(jù)將被覆蓋。STM32處理器自配IIC接口,但是考慮到移植性的問(wèn)題,使用IO口模擬IIC協(xié)議通信更容易實(shí)現(xiàn),接口電路如圖1所示。
當(dāng)SCL線[2]為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào),SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào)。 無(wú)論是數(shù)據(jù)還是地址的傳輸中,都是按照字節(jié)來(lái)傳輸,傳送的方向是從最高位開(kāi)始,每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位。在數(shù)據(jù)和地址的傳輸過(guò)程中始終注意:時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。當(dāng)主機(jī)向從機(jī)發(fā)送一個(gè)數(shù)據(jù)發(fā)送時(shí)序如下:起始信號(hào)→從機(jī)地址+方向→應(yīng)答→數(shù)據(jù)(8位)→應(yīng)答/非應(yīng)答→終止信號(hào)。其中方向值為“0”表示主機(jī)發(fā)送數(shù)據(jù),方向值為“1”表示主機(jī)接收數(shù)據(jù)。
軟件設(shè)計(jì)是在MDK環(huán)境下直接對(duì)寄存器編程.主函數(shù)流程如圖3所示,在軟件設(shè)計(jì)中建立一個(gè)長(zhǎng)度為20的字符數(shù)組buff[20]用來(lái)作為接收指令的緩存,當(dāng)處理器接收到指令test就開(kāi)始溫度測(cè)量,并把測(cè)量結(jié)果通過(guò)TC35I模塊發(fā)送到目的手機(jī),發(fā)送完成后清空buff緩存,在這里需要特別注意的是在初始化過(guò)程中需要用AT指令A(yù)T+CMGD=1來(lái)刪除TC35I模塊的模塊終端在位置1中存儲(chǔ)的短消息,這樣位置1的存儲(chǔ)空間就被釋放出來(lái),當(dāng)接收到新信息后,新接收到的消息會(huì)自動(dòng)存儲(chǔ)在位置1中,處理器提取位置1的短消息并轉(zhuǎn)存到buff中,然后再次清空位置1空間,為接收下一個(gè)信息做準(zhǔn)備。TC35I模塊接收信息后轉(zhuǎn)存入緩存buff的過(guò)程是利用串口接收中斷來(lái)完成的。
圖3 軟件系統(tǒng)流程Fig.3 Software system flow
軟件中斷函數(shù)有兩個(gè),一個(gè)是串口接收中斷,其把接收到的信息轉(zhuǎn)存入buff緩存,另一個(gè)是定時(shí)中斷,定時(shí)中斷使用TIM3中斷,該中斷定時(shí)地對(duì)溫度傳感器檢測(cè),對(duì)溫度傳感器的故障檢測(cè)是基于當(dāng)主機(jī)拉低電平480~960 μs產(chǎn)生復(fù)位脈沖,之后主機(jī)釋放總線,15~60 μs以后,接著由DS18B20拉低總線60~240 μs,產(chǎn)生應(yīng)答脈沖,通過(guò)是否檢測(cè)到應(yīng)答脈沖來(lái)判斷溫度傳感器是否正常工作,如果接收到應(yīng)答脈沖則正常測(cè)量溫度,如果未接收到應(yīng)答脈沖,處理器自動(dòng)發(fā)送短信報(bào)警信息1并進(jìn)入緊急模式,即轉(zhuǎn)為內(nèi)部溫度傳感器測(cè)量溫度,測(cè)量溫度后把測(cè)量結(jié)果與軟件設(shè)定溫度閥值比較,如超差則發(fā)送報(bào)警信息2,中斷流程如圖4所示。
圖4 中斷程序流程Fig.4 Interrupt flow
經(jīng)實(shí)驗(yàn)證明,該系統(tǒng)操作簡(jiǎn)單,具有較好的穩(wěn)定性,測(cè)量精度靈活,最高可達(dá)0.062 5度,成本低廉,利用GSM覆蓋面廣的特點(diǎn),適合在遠(yuǎn)距離監(jiān)控和布線成本較高的環(huán)境下使用。
[1]張英梅.stm32智能溫室控制系統(tǒng) [J].軟件,2010,31(12):14-18.ZHANG Ying-mei.Stm32’s controlling system of intelligent greenhouse[J].Software,2010,31(12):14-18.
[2]劉軍.例說(shuō)stm32[M].北京:北京航空航天大學(xué)出版社,2011.
[3]范書(shū)瑞.Cortex-M3嵌入式處理器原理與應(yīng)用[M].北京:電子工業(yè)出版社,2011.
[4]顏麗娜.基于DS18B20測(cè)溫系統(tǒng)設(shè)計(jì)[J].科技信息,2010(11):496-497.YAN Li-na.The design of testing temperature base on DS18B20[J].Science&Technology Information,2010 (11):496-497.
[5]郭天祥.新概念51單片機(jī)C語(yǔ)言[M].北京:電子工業(yè)出版社,2009.
[6]譚浩強(qiáng).C程序設(shè)計(jì)[M].3版.北京:清華大學(xué)出版社,2005.