基于單片機(jī)的便攜式多功能實時生理參數(shù)監(jiān)測儀
便攜式多功能實時生理參數(shù)監(jiān)測儀是一種可對跑步者跑步時的各種生理參數(shù)進(jìn)行實時監(jiān)測的儀器,該儀器以凌陽單片機(jī)為核心,配以DS18B20溫度傳感器、ZD-3微振動傳感器、HK-2000脈搏傳感器及LCD顯示電路,使得該儀器具有實時監(jiān)測參數(shù)并顯示出來的功能
隨著國民經(jīng)濟(jì)的不斷發(fā)展,人們生活水平不斷提高和完善,健康已成了人們關(guān)注的焦點和追求的目標(biāo)。參加鍛煉無疑是保持健康的最佳方法,但很多人急于求成,往往適得其反,達(dá)不到鍛煉的效果,甚至可能對身體造成一定程度的傷害。目前市場上只有單純的跑步計步器,不能同時監(jiān)測人體生理參數(shù)并實時顯示,反饋給鍛煉者。本文設(shè)計的基于凌陽單片機(jī)的便攜式多功能實時生理參數(shù)監(jiān)測儀可將二者結(jié)合起來,并增加了MP3功能,使鍛煉者在鍛煉的同時還可以聽音樂,放松心情,從而達(dá)到提高鍛煉質(zhì)量的效果。
系統(tǒng)硬件設(shè)計
系統(tǒng)以單片機(jī)為核心,配置以各種集成傳感器,使系統(tǒng)體積變的小巧。由于采用了微型封裝的集成電路芯片,使連線變短,減少了通信接口的個數(shù),從而提高了整機(jī)工作的可靠性。系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
SPCE061A單片機(jī)
SPCE061A單片機(jī)內(nèi)部集成了模/數(shù)轉(zhuǎn)換器(ADC)、數(shù)/模轉(zhuǎn)換器(DAC)、32KB FLASH和2KB SRAM以及液晶驅(qū)動器。利用該單片機(jī)作為處理芯片,使得模、數(shù)信號之間的轉(zhuǎn)換、液晶驅(qū)動可以通過軟件來實現(xiàn),避免了外界信號的干擾,提高了系統(tǒng)的穩(wěn)定性及抗干擾能力。
SPCE061A最小系統(tǒng)
SPCE061A最小系統(tǒng)當(dāng)中,包括SPCE061A芯片外圍的基本模塊,有晶振輸入模塊(OSC)、鎖相環(huán)外圍電路(PLL)、復(fù)位電路(RESET)、指示燈(LED)等,如圖2所示。
圖2 SPCE061A最小系統(tǒng)
SPCE061A的內(nèi)核供電為3.3V,而I/O端口可接3.3V也可以接5V,所以在電源模塊(61板上)中有一個端口電平選擇跳線,如圖3中的J5,圖3為61板上的電源模塊圖。
圖3 SPCE061A電源模塊
DS18B20溫度傳感器
DS18B20溫度傳感器用12位存儲溫度值,理論精度可達(dá)到0.05℃,能實時、精確地檢測到人體溫度的變化,可通過單片機(jī)在液晶顯示器上顯示,避免了電壓或電流等模擬信號再轉(zhuǎn)換為數(shù)字信號的過程,從而提高了系統(tǒng)的抗干擾能力和精度。
DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括初始化時序、寫時序和讀時序。
DS18B20與單片機(jī)的典型接口設(shè)計
可以采用外接電源與寄生電源供電(就是供電電源從數(shù)據(jù)線上得到),寄生電源如圖4所示。
圖4 寄生電源供電
ZD-3微振動傳感器
ZD-3微振動傳感器是一種有源的高靈敏度微功耗振動檢測器件,以正弦波形式輸出,可利用74LS14施密特觸發(fā)器將其轉(zhuǎn)換成脈沖波,輸入單片機(jī)檢測高電平,能實時記錄跑步者或鍛煉者的步數(shù),進(jìn)而得到鍛煉者的能量損耗,以利于更有效的進(jìn)行鍛煉。
ZD-3微振動傳感器是一種有源的高靈敏度微功耗振動檢測器件,以正弦波形式輸出,可利用74LS14施密特觸發(fā)器將其轉(zhuǎn)換成脈沖波,輸入單片機(jī)檢測高電平,能實時記錄跑步者或鍛煉者的步數(shù),進(jìn)而得到鍛煉者的能量損耗,以利于更有效的進(jìn)行鍛煉。
HK-2000A脈搏檢測傳感器
HK-2000A傳感器是一種主要用在運動、健身器材上對脈搏檢測的傳感器,以脈沖波的形式輸出。當(dāng)脈搏波動一次時輸出一正脈沖,可將其輸出信號輸入單片機(jī),檢測高電平,記錄脈搏。
OCM4X8C液晶顯示模塊
OCM4X8C液晶顯示模塊采用128×64點陣的液晶顯示模塊,可顯示漢字及圖形,內(nèi)置國標(biāo)GB2312碼簡體中文字庫(16×16點陣)、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)??膳cCPU直接接口,提供8位并行及串行兩種連接方式連接微處理器。該液晶顯示模塊具有多種功能:光標(biāo)顯示、畫面移位、睡眠模式等。配合1×4鍵盤可實現(xiàn)參數(shù)設(shè)置,分析結(jié)果瀏覽和修改以及各種人機(jī)對話,能適時顯示各種生理參數(shù)值及記錄到的步數(shù)。
OCM4X8C液晶顯示模塊采用128×64點陣的液晶顯示模塊,可顯示漢字及圖形,內(nèi)置國標(biāo)GB2312碼簡體中文字庫(16×16點陣)、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)??膳cCPU直接接口,提供8位并行及串行兩種連接方式連接微處理器。該液晶顯示模塊具有多種功能:光標(biāo)顯示、畫面移位、睡眠模式等。配合1×4鍵盤可實現(xiàn)參數(shù)設(shè)置,分析結(jié)果瀏覽和修改以及各種人機(jī)對話,能適時顯示各種生理參數(shù)值及記錄到的步數(shù)。
報警模塊(聲光報警)
利用凌陽單片機(jī)內(nèi)部的語音功能及軟件控制,當(dāng)參數(shù)超過閾值時發(fā)出語音報警。同時輸出一高電平,驅(qū)動發(fā)光二極管發(fā)光,更容易提醒鍛煉者。
利用凌陽單片機(jī)內(nèi)部的語音功能及軟件控制,當(dāng)參數(shù)超過閾值時發(fā)出語音報警。同時輸出一高電平,驅(qū)動發(fā)光二極管發(fā)光,更容易提醒鍛煉者。
鍵盤輸入模塊
1×4鍵盤輸入模塊,系統(tǒng)設(shè)計的功能鍵采用中斷方式輸入,當(dāng)有任一功能鍵按下時,即產(chǎn)生中斷,CPU執(zhí)行中斷程序,讀取鍵碼并執(zhí)行相應(yīng)操作;沒有鍵按下時,不占用CPU的運行時間,提高了CPU的運行效率。由于SPCE061A有32個I/O口,所以顯示模塊可以直接接至I/O口,無須另外的硬件編碼,簡化了硬件設(shè)計。
1×4鍵盤輸入模塊,系統(tǒng)設(shè)計的功能鍵采用中斷方式輸入,當(dāng)有任一功能鍵按下時,即產(chǎn)生中斷,CPU執(zhí)行中斷程序,讀取鍵碼并執(zhí)行相應(yīng)操作;沒有鍵按下時,不占用CPU的運行時間,提高了CPU的運行效率。由于SPCE061A有32個I/O口,所以顯示模塊可以直接接至I/O口,無須另外的硬件編碼,簡化了硬件設(shè)計。
呼吸氣流溫度檢測模塊
呼吸氣流溫度檢測回路通過熱敏元件,檢測人體呼吸時呼出與吸入氣流溫度的變化情況,從而獲得呼吸頻率參數(shù),為了減少熱惰性帶來的誤差,準(zhǔn)確地測量呼吸氣流溫度的變化,要求熱敏元件熱容量越小越好。因此在電路中選用BLTS101PN結(jié)溫度傳感器(φ1mm,熱響應(yīng)時間τ<0.2s)。恒流源向PN結(jié)提供100μA的恒定正向電流,則PN結(jié)的正向壓降僅隨溫度T的變化而變化,該電壓信號由前置放大器放大后通過一4.84Hz低通濾波器,再經(jīng)過波形變換為數(shù)字信號送入單片機(jī)。
呼吸氣流溫度檢測回路通過熱敏元件,檢測人體呼吸時呼出與吸入氣流溫度的變化情況,從而獲得呼吸頻率參數(shù),為了減少熱惰性帶來的誤差,準(zhǔn)確地測量呼吸氣流溫度的變化,要求熱敏元件熱容量越小越好。因此在電路中選用BLTS101PN結(jié)溫度傳感器(φ1mm,熱響應(yīng)時間τ<0.2s)。恒流源向PN結(jié)提供100μA的恒定正向電流,則PN結(jié)的正向壓降僅隨溫度T的變化而變化,該電壓信號由前置放大器放大后通過一4.84Hz低通濾波器,再經(jīng)過波形變換為數(shù)字信號送入單片機(jī)。
系統(tǒng)軟件設(shè)計
軟件設(shè)計采用模塊化結(jié)構(gòu),菜單操作。利用C61及匯編語言編寫軟件,在液晶顯示屏上實時顯示各種生理參數(shù)的數(shù)據(jù),信號數(shù)據(jù)存儲采用FLASH, 這樣在儀器更換電池時不會丟失數(shù)據(jù)。所有測量參數(shù)均可設(shè)定上、下報警限,任一參數(shù)越限時都能發(fā)出聲、光報警,需要時,能用消聲鍵停止報警聲。儀器進(jìn)入工作狀態(tài)后,主程序首先完成對液晶顯示屏的初始化,然后進(jìn)入檢測狀態(tài)。由于呼吸阻抗信號具有基線漂移現(xiàn)象,因此在軟件設(shè)計中采用一種變化中值檢測法對基線進(jìn)行校正,具體方法是把上一次呼吸周期內(nèi)的中值點作為本次呼吸周期的檢測點,這樣即可克服在正常檢測電壓范圍內(nèi)基線漂移現(xiàn)象所帶來的漏檢情況。
程序流程圖如圖5所示。
圖5 主程序流程圖
數(shù)據(jù)采集部分
對生理參數(shù)的實時數(shù)據(jù)采集無疑是最重要的,主要通過傳感器進(jìn)行實時采集。由于人體的溫度在鍛煉時變化也是很緩慢的,因此,主要運用軟件定時中斷的方法進(jìn)行檢測。步數(shù)和脈搏等參數(shù),主要記錄的是頻率,只需軟件計數(shù)就可以,根據(jù)檢測到的高電平,計數(shù)器進(jìn)行自加運算,從而記錄頻率。
對生理參數(shù)的實時數(shù)據(jù)采集無疑是最重要的,主要通過傳感器進(jìn)行實時采集。由于人體的溫度在鍛煉時變化也是很緩慢的,因此,主要運用軟件定時中斷的方法進(jìn)行檢測。步數(shù)和脈搏等參數(shù),主要記錄的是頻率,只需軟件計數(shù)就可以,根據(jù)檢測到的高電平,計數(shù)器進(jìn)行自加運算,從而記錄頻率。
參數(shù)閾值設(shè)定
由于人體溫度正常情況下在36.5℃左右。因此,我們設(shè)定溫度域值的初值為36.5℃,以0.25℃為步進(jìn)量,可以用上下鍵增減,每按一次按鍵,就遞增或遞減0.25℃,直到達(dá)到鍛煉者想要設(shè)定的閾值為止(在35~42℃之間)。其他參數(shù)設(shè)定類似。
由于人體溫度正常情況下在36.5℃左右。因此,我們設(shè)定溫度域值的初值為36.5℃,以0.25℃為步進(jìn)量,可以用上下鍵增減,每按一次按鍵,就遞增或遞減0.25℃,直到達(dá)到鍛煉者想要設(shè)定的閾值為止(在35~42℃之間)。其他參數(shù)設(shè)定類似。
液晶驅(qū)動程序設(shè)計
系統(tǒng)顯示功能的實現(xiàn),實際上就是對OCM4X8C液晶顯示模塊的驅(qū)動編程。我們按照結(jié)構(gòu)化的編程思想利用C61語言將上翻、下翻、返回和確定等按鍵功能編成子函數(shù),這樣利于主程序的調(diào)用。液晶驅(qū)動的部分程序如下:
#include "spce061v004.h"
void Delay()
{ int i;
i=300;
while(i--);
}
void WriteBit(char B)
{ int D;
D=*P_IOB_Buffer&0xfffd; //SDA輸出數(shù)據(jù)
if(B!=0)
*P_IOB_Data=D|0x0002;
else
*P_IOB_Data=D&0xfffd;
D=*P_IOB_Buffer&0xfffe; //SCK脈沖
*P_IOB_Data=D|0x0001;
*P_IOB_Data=D&0xfffe;
}
void WriteByte(char B,char I)
{ int D,i;
D=*P_IOB_Buffer&0xffbf;
*P_IOB_Data=D|0x0040; //片選有效
for(i=1;i<6;i++)
WriteBit(1); //5個空脈沖,數(shù)據(jù)為1 synchronizing bitstring
WriteBit(0); //RW=0
...
...
...
D=*P_IOB_Buffer&0xffbf;
*P_IOB_Data=D&0xffbf; //片選有效
}
void LCDinit(void)
{ int D,i;
D=*P_IOB_Dir&0xffbc; //SDA為輸出
*P_IOB_Dir=D|0x0043;
D=*P_IOB_Attrib&0xffbc; //SDA為正邏輯輸出
*P_IOB_Attrib=D|0x0043;
D=*P_IOB_Buffer&0xffbc; //SCK脈沖
*P_IOB_Data=D&0xffbc;
i=3;while(i--);
WriteByte(0x30,0);
Delay();
WriteByte(0x01,0);
Delay();
WriteByte(0x06,0);
Delay();
WriteByte(0x0c,0);
Delay();
}
..................
系統(tǒng)顯示功能的實現(xiàn),實際上就是對OCM4X8C液晶顯示模塊的驅(qū)動編程。我們按照結(jié)構(gòu)化的編程思想利用C61語言將上翻、下翻、返回和確定等按鍵功能編成子函數(shù),這樣利于主程序的調(diào)用。液晶驅(qū)動的部分程序如下:
#include "spce061v004.h"
void Delay()
{ int i;
i=300;
while(i--);
}
void WriteBit(char B)
{ int D;
D=*P_IOB_Buffer&0xfffd; //SDA輸出數(shù)據(jù)
if(B!=0)
*P_IOB_Data=D|0x0002;
else
*P_IOB_Data=D&0xfffd;
D=*P_IOB_Buffer&0xfffe; //SCK脈沖
*P_IOB_Data=D|0x0001;
*P_IOB_Data=D&0xfffe;
}
void WriteByte(char B,char I)
{ int D,i;
D=*P_IOB_Buffer&0xffbf;
*P_IOB_Data=D|0x0040; //片選有效
for(i=1;i<6;i++)
WriteBit(1); //5個空脈沖,數(shù)據(jù)為1 synchronizing bitstring
WriteBit(0); //RW=0
...
...
...
D=*P_IOB_Buffer&0xffbf;
*P_IOB_Data=D&0xffbf; //片選有效
}
void LCDinit(void)
{ int D,i;
D=*P_IOB_Dir&0xffbc; //SDA為輸出
*P_IOB_Dir=D|0x0043;
D=*P_IOB_Attrib&0xffbc; //SDA為正邏輯輸出
*P_IOB_Attrib=D|0x0043;
D=*P_IOB_Buffer&0xffbc; //SCK脈沖
*P_IOB_Data=D&0xffbc;
i=3;while(i--);
WriteByte(0x30,0);
Delay();
WriteByte(0x01,0);
Delay();
WriteByte(0x06,0);
Delay();
WriteByte(0x0c,0);
Delay();
}
..................
主要技術(shù)指標(biāo)
主要生理參數(shù)
便攜式多功能實時生理參數(shù)監(jiān)測儀能檢測人在跑步時的溫度、脈搏、呼吸頻率和所跑過的步數(shù)等參數(shù)。具有實時檢測及實時顯示的功能。
便攜式多功能實時生理參數(shù)監(jiān)測儀能檢測人在跑步時的溫度、脈搏、呼吸頻率和所跑過的步數(shù)等參數(shù)。具有實時檢測及實時顯示的功能。
測試精度
可測的溫度范圍為-55~125℃,精度可以達(dá)到0.05℃。但是人體溫度一般為35~38℃,因此,閾值范圍可以在35~39℃,根據(jù)實時測得的溫度與設(shè)定閾值進(jìn)行比較,當(dāng)超過設(shè)定參數(shù)時就聲光報警。
可測的溫度范圍為-55~125℃,精度可以達(dá)到0.05℃。但是人體溫度一般為35~38℃,因此,閾值范圍可以在35~39℃,根據(jù)實時測得的溫度與設(shè)定閾值進(jìn)行比較,當(dāng)超過設(shè)定參數(shù)時就聲光報警。
總結(jié)
此儀器可以實時檢測到人在跑步和鍛煉時的溫度、呼吸、脈搏和步數(shù)。并可以記錄顯示,當(dāng)超過設(shè)定的閾值時,可以發(fā)出警報。本儀器輕便小巧,適合室內(nèi)、室外鍛煉時使用。同時,如果能將藍(lán)牙模快集成到該儀器中,可以實現(xiàn)這些生理參數(shù)的傳輸,達(dá)到對老人或病危病人的遠(yuǎn)程看護(hù)。
文章版權(quán)歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。