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