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