宋林桂
摘 要:文章提出一種基于nRF52832的低功耗體溫計(jì)設(shè)計(jì)方法,并考慮到體溫計(jì)體積和紐扣電池電量的限制,在電路設(shè)計(jì)和程序設(shè)計(jì)過程中采取多種措施來降低系統(tǒng)功耗。
關(guān)鍵詞:nRF52832;低功耗;體溫計(jì)
1 硬件電路設(shè)計(jì)
為了滿足體溫計(jì)測(cè)量精度方面的要求,同時(shí)兼顧到可穿戴應(yīng)用對(duì)于低功耗和微型化的需求,對(duì)硬件電路進(jìn)行如下設(shè)計(jì)。
1.1 藍(lán)牙芯片選擇
本電路選擇nRF52832作為溫度采集和傳輸芯片,nRF52832是一款功能強(qiáng)大、高度靈活的超低功耗多協(xié)議SoC藍(lán)牙單芯片。nRF52832芯片內(nèi)置512 KB的Flash和64 KB的RAM,nRF52832采用32位ARM?Cortex?-M4F CPU,Cortex-M4F的內(nèi)核主頻高達(dá)64 MHz,擁有強(qiáng)大的運(yùn)算能力以及浮點(diǎn)運(yùn)算的技術(shù),NRF52832的電源電壓范圍是1.7~3.6 V。
1.2 傳感器選擇和電路設(shè)計(jì)
本設(shè)計(jì)中采用的型號(hào)為MEB-503E3950UL87的NTC熱敏電阻,具有體積小、靈敏度高的特點(diǎn),適用于體溫測(cè)量,在體溫30~45 ℃測(cè)量范圍內(nèi)的阻值變化范圍為40.24 KΩ~21.76 KΩ,結(jié)合電路結(jié)構(gòu),傳感器電路的分壓電阻選取阻值為30 KΩ,精度為±0.1%,溫度系數(shù)為25 PPM的高精度低溫漂電阻。傳感器和高精度低溫漂電阻串聯(lián),隨著溫度的改變,傳感器電路輸出的電壓也相應(yīng)改變[1]。
1.3 溫度信號(hào)處理電路設(shè)計(jì)
為了減小溫度采集的誤差,在傳感器電路和藍(lán)牙芯片的ADC采集電路之間加了電壓跟隨電路。運(yùn)放芯片使用3PEAK公司的為低功耗集成運(yùn)放芯片LMV358TP,LMV358TP的供電電壓范圍+2.1~+6.0 V,滿足紐扣電池供電的需求。LMV358TP的靜態(tài)工作電流只有40 uA,滿足低功耗的需求。
1.4 傳感器電源供電電路設(shè)計(jì)
傳感器電路的輸出電壓除了和溫度有關(guān),還和傳感器電路的供電電壓大小有關(guān)。電路使用紐扣電池供電,紐扣電池的輸出電壓不穩(wěn)定,使用可控精密穩(wěn)壓源芯片TL431提供穩(wěn)定的電源為傳感器電路供電,TL431的參考電壓端和陽極端連接在一起,輸出電壓和參考基準(zhǔn)電壓2.495 V一樣,工作電流是1 mA,限流電阻選680 Ω大小的電阻。傳感器電路和電壓跟隨器電路的供電電流大概1 mA,為了實(shí)現(xiàn)低功耗,傳感器電源供電和電壓跟隨器的電源由藍(lán)牙芯片的一個(gè)I/O口提供,藍(lán)牙I/O口最大的輸出電流3 mA,滿足溫度傳感器電路和處理電路供電需求[2]。
2 nRF52832軟件設(shè)計(jì)
nRF52832軟件設(shè)計(jì)包括nRF52832外設(shè)初始化、藍(lán)牙協(xié)議棧初始化、藍(lán)牙GAP參數(shù)初始化、藍(lán)牙串口服務(wù)初始化、藍(lán)牙廣播和連接參數(shù)初始化、藍(lán)牙廣播和配對(duì)、溫度定時(shí)采集發(fā)送程序設(shè)計(jì)。溫度采集使用nRF52832的SAADC采集,溫度定時(shí)采樣的定時(shí)器使用藍(lán)牙協(xié)議的軟定時(shí)器,溫度發(fā)送使用串口通信任務(wù)發(fā)送。系統(tǒng)軟件流程如圖1所示。
圖1 系統(tǒng)軟件流程
2.1 SAADC采集
溫度傳感器電路輸出電壓Vo=2.495/(Rx+30)×Rx,Rx為溫度傳感器的阻值。溫度傳感器電路的輸出電壓由nRF52832的SAADC進(jìn)行采樣,nRF52832總共有8路ADC采集,信號(hào)采集模式可以是單通道輸入采集和差分輸入采集,本設(shè)計(jì)使用單通道輸入采集。nRF52832的ADC采集的參考電壓有兩種:內(nèi)部產(chǎn)生的0.6 V和VDD/4,本設(shè)計(jì)的VDD電壓不穩(wěn)定,選擇內(nèi)部的0.6 V作為參考電壓,nRF52832還有ADC輸入電壓增益調(diào)節(jié)電路,本設(shè)計(jì)增益選擇1/6。nRF52832的ADC位數(shù)可以配置為8位、10位、12位和過采樣14位,本設(shè)計(jì)在滿足溫度采集的精度和低功耗的要求下選擇12位ADC采集配置。所以ADC轉(zhuǎn)化后的數(shù)字量為adc_result=Vo/3.6×4 096,由溫度傳感器的溫度和阻值數(shù)據(jù)擬合的溫度和數(shù)字量之間的關(guān)系式是wendu=-60/174.0×adc_result+851;把得到的浮點(diǎn)型變量轉(zhuǎn)換成字符串,然后通過nRF52832串口把溫度數(shù)據(jù)發(fā)送給手機(jī)[3]。浮點(diǎn)型變量轉(zhuǎn)換成字符串代碼如下:
data_array[0]=wendu/100+0x30;
data_array[1]=wendu/10%10+0x30;
data_array[2]=.;
data_array[3]=wendu%10+0x30;
2.2 軟件定時(shí)器
為了實(shí)現(xiàn)低功耗使用藍(lán)牙協(xié)議棧下的軟件定時(shí)器定時(shí)采集和發(fā)送溫度,并降低功耗和提高系統(tǒng)的穩(wěn)定性,定時(shí)5 s進(jìn)行溫度采集和溫度數(shù)據(jù)發(fā)送到手機(jī)。由于溫度傳感器供電的功耗比較大,為了降低系統(tǒng)功耗,定時(shí)60 s為溫度傳感器電路供電,定時(shí)60 s結(jié)束后停止溫度傳感器供電,并且停止溫度采集和發(fā)送溫度數(shù)據(jù),本方法很大程度上降低了系統(tǒng)功耗[4]。定時(shí)60 s的定時(shí)器初始化和啟動(dòng)程序如下:
err_code =app_timer_create(&my_timer, APP_TIMER_MODE_SINGLE_SHOT, my_timer_handler);
APP_ERROR_CHECK(err_code);
err_code =app_timer_start(my_timer, APP_TIMER_TICKS(60000), NULL);
APP_ERROR_CHECK(err_code);
app_timer_create()函數(shù)的第一個(gè)形參是定時(shí)器的ID。函數(shù)第二個(gè)參數(shù)是定時(shí)器的模式,分別是一次定時(shí)模式APP_TIMER_MODE_SINGLE_SHOT和重復(fù)定時(shí)模式APP_TIMER_MODE_REPEATED,定時(shí)60 s使用的APP_TIMER_MODE_SINGLE_SHOT模式,定時(shí)5 s使用的APP_TIMER_MODE_REPEATED模式。函數(shù)的第3個(gè)參數(shù)是定時(shí)中斷服務(wù)函數(shù),定時(shí)時(shí)間到進(jìn)入該中斷服務(wù)函數(shù)。app_timer_start()函數(shù)第一個(gè)形參還是定時(shí)器的ID。第二個(gè)參數(shù)是定時(shí)間,60 000表示60 000 uS,即定時(shí)60 s的時(shí)間。
2.3 串口通信任務(wù)
藍(lán)牙協(xié)議分為3層:應(yīng)用層、主協(xié)議層、控制層。應(yīng)用層有一些應(yīng)用任務(wù),分為標(biāo)準(zhǔn)藍(lán)牙任務(wù)和非標(biāo)準(zhǔn)藍(lán)牙任務(wù),標(biāo)準(zhǔn)藍(lán)牙任務(wù)是藍(lán)牙興趣小組SIG的官方網(wǎng)站公布的任務(wù):電池任務(wù)、心率任務(wù)等。串口通信任務(wù)位于應(yīng)用層,屬于非標(biāo)準(zhǔn)藍(lán)牙任務(wù),存在數(shù)據(jù)傳輸,藍(lán)牙協(xié)議里數(shù)據(jù)傳輸在主協(xié)議層里通用屬性協(xié)議(Generic Attribute Profile,GATT)層完成,藍(lán)牙協(xié)議在GATT層定義了兩個(gè)角色:GATT服務(wù)器和GATT客戶端,本設(shè)計(jì)中手機(jī)端屬于GATT客戶端,nRF52832屬于GATT服務(wù)器。一個(gè)GATT服務(wù)器通過一個(gè)稱為屬性表的表格組織數(shù)據(jù)傳輸,在GATT層一個(gè)屬性都有一個(gè)UUID值,本設(shè)計(jì)中有3個(gè)屬性就有3個(gè)UUID值,串口通信任務(wù)UUID值是0x6E400001-B5A3-F393-E0A9-E50E24DCCA9E,串口通信任務(wù)發(fā)送特性的UUID值是0x6E400002-B5A3-F393-E0A9-E50E24DCCA9E,串口通信任務(wù)接收特性UUID值是0x6E400003-B5A3-F393-E0A9-E50E24DCCA9E。
3 Android APP軟件設(shè)計(jì)
本文使用簡單易用的APP INVENTOR軟件設(shè)計(jì)Android手機(jī)APP,APP INVENTOR程序設(shè)計(jì)分為兩部分:界面設(shè)計(jì)和邏輯程序設(shè)計(jì)。界面設(shè)計(jì)把APP中用到的按鈕、文本、列表、藍(lán)牙4.0通信、定時(shí)器、活動(dòng)等組件拖到界面里面。邏輯程序設(shè)計(jì)包括藍(lán)牙協(xié)議參數(shù)初始化和啟動(dòng)藍(lán)牙掃描、藍(lán)牙配對(duì)、控制發(fā)送體溫開始采集指令、體溫定時(shí)采集顯示。
4 系統(tǒng)測(cè)試設(shè)計(jì)
藍(lán)牙體溫計(jì)溫度采集時(shí)電流3 mA,紐扣電池的容量是210 mAh,每采集一次的功耗是0.05 mAh,預(yù)計(jì)可以使用4 200次。體溫計(jì)溫度測(cè)量的精度可達(dá) 0.1 ℃,溫度測(cè)量的范圍是30~45 ℃。
5 結(jié)語
本文中所提出的數(shù)字體溫計(jì)設(shè)計(jì),能精確地進(jìn)行溫度測(cè)量,精度可達(dá)0.1 ℃,響應(yīng)時(shí)間快,是傳統(tǒng)水銀溫度計(jì)較好的替代產(chǎn)品。
[參考文獻(xiàn)]
[1]鄧遲,胡巍,刁盛錫,等.一種基于NTC的體溫傳感器測(cè)量誤差分析及校準(zhǔn)技術(shù)[J].中國醫(yī)療器械雜志,2015(6):395-399.
[2]吳蓬勃,張金燕,張小苗.基于nRF52832的藍(lán)牙魚缸水情檢測(cè)系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2018(2):79-83.
[3]陳宏銘,李水竹,陳宏維,等.適合便攜式快速反應(yīng)數(shù)字醫(yī)用體溫計(jì)的低功耗LCD顯示SoC芯片與方案實(shí)現(xiàn)[J].中國集成電路,2012(8):41-48.
[4]朱文亮.低功耗可穿戴式心電監(jiān)護(hù)系統(tǒng)研制與開發(fā)[D].蘇州:蘇州大學(xué),2018.
Design of low power consumption thermometer based on nRF52832
Song Lingui
(School of Electronic Information, Suzhou Chien-Shiung Institute of Technology, Taicang 215411, China)
Abstract:In this paper, a design method of low power consumption thermometer based on nRF52832 is proposed, considering the limitation of thermometer volume and button battery power, many measures are taken to reduce the power consumption of the system in the process of circuit design and program design.
Key words:nRF52832; low power consumption; thermometer