用MSP430設(shè)計(jì)超低功耗數(shù)字溫度計(jì)
概述
本文引用地址:http://2s4d.com/article/201710/367191.htm很多地方都需要測(cè)量溫度。在設(shè)計(jì)溫度遙測(cè)系統(tǒng)時(shí),通常需要采用電池供電的極低功耗模塊。傳統(tǒng)的測(cè)溫手段比較多,但不論是采用分立晶體管、熱敏電阻,或者是熱電偶,功耗都降不下來(lái)。本文介紹了一種滿足低功耗要求的可行方案,該方案使用一枚極低功耗的、帶Flash存儲(chǔ)器的MCU,以及數(shù)字溫度傳感器、液晶模塊(LCD)和一個(gè)32kHz的鐘表用振蕩器。該方案的突出特點(diǎn)是節(jié)能耐用,僅需一枚紐扣電池,就可以連續(xù)工作10年以上。
工作原理
圖一所示MCU擴(kuò)展系統(tǒng)的電源是一枚CR-2032型紐扣式鋰電池,這種電池的容量為220mAh。要讓系統(tǒng)達(dá)到連續(xù)工作10年(87600小時(shí))的要求,允許的最大負(fù)載電流可以用以下方法計(jì)算出來(lái):
220mAh / 87,600小時(shí) = 2.51 A
這個(gè)測(cè)溫系統(tǒng)不但要測(cè)量溫度,還要連續(xù)顯示測(cè)量結(jié)果。當(dāng)系統(tǒng)處于單步模式時(shí),TMP100溫度傳感器每完成一次測(cè)量,就會(huì)自動(dòng)進(jìn)入關(guān)斷模式,此時(shí)的典型功耗為0.1 A;系統(tǒng)處于節(jié)能低功率模式(LPM3)時(shí),晶振、LCD驅(qū)動(dòng)器和16位定時(shí)器繼續(xù)工作,此時(shí)MSP430的典型功耗為0.9 A;3位半LCD的典型功耗為1 A。
系統(tǒng)每個(gè)工作周期的耗電情況如圖2所示,溫度傳感器、MCU和LCD的總功耗平均值為2.45 A。為了盡可能延長(zhǎng)電池的使用壽命,在工作周期內(nèi)的絕大多數(shù)時(shí)間,系統(tǒng)都處于等待模式。
硬件設(shè)計(jì)說(shuō)明
電池加上一只0.1 F的去耦電容,構(gòu)成了這個(gè)系統(tǒng)的電源。MCU的復(fù)位端連接一只68k的上拉電阻,時(shí)鐘脈沖(ACLK)取自32.768KHz的鐘表用晶體。在I2C總線的SCL(時(shí)鐘)和SDA(數(shù)據(jù))上,分別連接一只10K的上拉電阻。
工作原理
MCU同溫度傳感器之間通過(guò)I2C總線連接。I2C總線占用2條MCU輸入輸出口線,二者之間的通信完全依靠軟件完成。溫度傳感器的地址可以通過(guò)2根地址引腳設(shè)定,這使得一根 I2C總線上可以同時(shí)連接8個(gè)這樣的傳感器。本方案中,傳感器的7位地址已經(jīng)設(shè)定為1001000。MCU需要訪問(wèn)傳感器時(shí),先要發(fā)出一個(gè)8位的寄存器指針,然后再發(fā)出傳感器的地址(7位地址,低位是WR信號(hào))。傳感器中有3個(gè)寄存器可供MCU使用,8位寄存器指針就是用來(lái)確定MCU究竟要使用哪個(gè)寄存器的。本方案中,主程序會(huì)不斷更新傳感器的配置寄存器,這會(huì)使傳感器工作于單步模式,每更新一次就會(huì)測(cè)量一次溫度。
要讀取傳感器測(cè)量值寄存器的內(nèi)容,MCU必須首先發(fā)送傳感器地址和寄存器指針。MCU發(fā)出一個(gè)啟動(dòng)信號(hào),接著發(fā)出傳感器地址,然后將RD/WR管腳設(shè)為高電平,就可以讀取測(cè)量值寄存器。
為了讀出傳感器測(cè)量值寄存器中的16位數(shù)據(jù),MCU必須與傳感器進(jìn)行兩次8位數(shù)據(jù)通信。當(dāng)傳感器上電工作時(shí),默認(rèn)的測(cè)量精度為9位,分辨力為0.5 C/LSB(量程為-128.5 C至128.5 C)。本方案采用默認(rèn)測(cè)量精度,根據(jù)需要,可以重新設(shè)置傳感器,將測(cè)量精度提高到12位。如果只要求作一般的溫度指示,比如自動(dòng)調(diào)溫器,那么分辨力達(dá)到1 C就可以滿足要求了。這種情況下,傳感器的低8位數(shù)據(jù)可以忽略,只用高8位數(shù)據(jù)就可以達(dá)到分辨力1 C的設(shè)計(jì)要求。由于讀取寄存器時(shí)是按先高8位后低8位的順序,所以低8位數(shù)據(jù)既可以讀,也可以不讀。只讀取高8位數(shù)據(jù)的好處有二,第一是可以縮短MCU和傳感器的工作時(shí)間,降低功耗;第二是不影響分辨力指標(biāo)。
MCU讀取傳感器的測(cè)量值后,接下來(lái)就要進(jìn)行換算并將結(jié)果顯示在LCD上。整個(gè)處理過(guò)程包括:判斷顯示結(jié)果的正負(fù)號(hào),進(jìn)行二進(jìn)制碼到BCD碼的轉(zhuǎn)換,將數(shù)據(jù)傳到LCD的相關(guān)寄存器中。
數(shù)據(jù)處理完畢并顯示結(jié)果之后,MCU會(huì)向傳感器發(fā)出一個(gè)單步指令。單步指令會(huì)讓傳感器啟動(dòng)一次溫度測(cè)試,然后自動(dòng)進(jìn)入等待模式,直到模數(shù)轉(zhuǎn)換完畢。MCU發(fā)出單步指令后,就進(jìn)入LPM3模式,這時(shí)MCU系統(tǒng)時(shí)鐘繼續(xù)工作,產(chǎn)生定時(shí)中斷喚醒CPU。定時(shí)的長(zhǎng)短可以通過(guò)編程調(diào)整,以便適應(yīng)具體應(yīng)用的需要。
功能擴(kuò)充
實(shí)現(xiàn)上文所述方案的程序代碼只有400字節(jié)左右,而MCU的 Flash程序存儲(chǔ)器有8k之多。此外,雖然MCU有256字節(jié)的RAM,但是本程序一個(gè)字節(jié)都不必用。這256字節(jié)的RAM以及那些未用的在系統(tǒng)可編程 (ISP)Flash存儲(chǔ)器可以用來(lái)記錄歷史數(shù)據(jù)。另外,MCU還剩余22根輸入輸出口線、一個(gè)雙端電壓比較器和一個(gè)完整的三通道16位定時(shí)器Timer A,這些空閑的資源可以用來(lái)實(shí)現(xiàn)其他一些常用的功能,例如鍵盤(pán)、合成鈴聲、模數(shù)轉(zhuǎn)換、電池電量檢測(cè)以及串行通信功能。由于系統(tǒng)時(shí)鐘使用的是32kHz的鐘表晶體,所以可以利用定時(shí)器中斷實(shí)現(xiàn)時(shí)鐘功能(RTC)。
由于溫度傳感器和MCU之間采用了I2C總線,所以,可以依靠分配不同的地址連接更多的傳感器。以3位地址的TMP100傳感器為例,總線上最多可以同時(shí)連接8枚傳感器。
小結(jié)
本文介紹了一種極低功耗測(cè)溫裝置的軟硬件設(shè)計(jì)方案,方案采用了MCU、傳感器和LCD顯示屏,具有功能完善、節(jié)能耐用、結(jié)構(gòu)簡(jiǎn)單、外形小巧、價(jià)格低廉等優(yōu)點(diǎn)。按照該方案制作的測(cè)溫裝置不但可以達(dá)到測(cè)量要求,而且可以在使用一枚3V電池供電的情況下,連續(xù)工作10年以上而不必更換電池。
評(píng)論