基于单片机的便携式多功能实时生理参数监测仪
便携式多功能实时生理参数监测仪是一种可对跑步者跑步时的各种生理参数进行实时监测的仪器,该仪器以凌阳单片机为核心,配以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所有,未经许可不得转载。
上一篇:电能表的多样性