王瑞琦,董高旭,周渴望
(西安航空学院 电子工程学院,西安710077)
随着信息科学和生命科学的密切结合和人们生活水平的提高,市场上出现了越来越多的检测人体健康的设备仪器。本次设计就健康检测中两个比较重要的生理特征,心率和体温来设计了一款检测心率体温的装置。脉搏和体温的测量可以作为判断人体健康的一种重要依据。一些疾病的发生就会伴随着体温和脉搏的变化,所以实时地测量人体脉搏体温是预防一些疾病的基本方式。体温作为检查人体健康重要的理据之一,体温的变化成了病情的判断依据,特别是新冠肺炎病毒的爆发,体温的正常与否就成了是否感染的最基本的依据,体温计的需求也随之增多。同时脉搏的跳动次数也是检测人体健康的重要理据之一,一个正常成年人的心脏跳动次数为60~120 次/min,当然人在不同的环境下、情绪下脉搏的跳动次数都是不一样的。
本设计的主控制系统使用的是STM32 单片机[1],分别对脉搏传感器、显示屏和蜂鸣器等器件进行控制。脉搏传感器的部分采用了光电脉搏传感器[2],此传感器的可靠性高,结构简单;放大滤波的部分使用一阶的有源滤波电路;整形的部分使用施密特触发器;显示屏使用LCD1602 液晶显示器进行测量数据的显示;使用DS18B20 温度传感器采集当前体温信号[3];测量数据超出限定值时蜂鸣器报警。总体设计如图1所示。
图1 系统总体方框图Fig.1 Block diagram of system structure
人体脉搏跳动会影响人体血液中的氧合血红蛋白和血红蛋白的浓度[4],设计采用光电式脉搏传感器[5],通过人体内氧合血红蛋白和血红蛋白对660 nm 的红光和940 nm 的红外光的吸收程度不同来检测出一个跳动周期转换成电信号[6],经过信号放大整形电路之后输入到STM32 单片机中[7]。体温通过DS18B20 温度传感器测量输入到STM32 单片机。经过STM32 单片机对输入信号的处理、控制、输出最后在LCD1602 液晶显示屏上显示出所需数据。如果测量中出现数据超出设定的理论值范围,则报警电路进行蜂鸣器报警。
单片机,是一种微小型计算机中非常重要的一部分。单片机主要是由内部的单块集成电路组成[8],其中包含有很强的数据处理能力的CPU、IO 口和RAM 存储器。需要用相对应的编译器将程序烧写就可以实现对器件的控制。STM32F103 单片机在32位的MCU 中具有出众的通讯和控制功能,很适合低电压、低功率和高性能的应用。它是STC 公司早期产品,多用于工业控制,其最大的作用就是控制各种外设和传感器。自行处理和计算得到一系列数据和信号,并进行相应的控制。
本次设计选用了STM32F103C8T6 单片机,相比于51 单片机系列多了很多功能,不但运行速度快,还自带有2 个AD 转换,并且有4 个串口进行通讯。应用中频率可以达到72 MHz,是同类型中产品性能最高的,它的功率损耗为36 mA,也是同类产品中功率损耗最低的,其管脚图如图2所示。
图2 单片机管脚图Fig.2 Pin diagram of MCU
本设计采用光电式脉搏传感器来采集脉搏信号[9]。光电式脉搏传感器的工作原理是通过人体心脏的跳动[10],也就是有周期性的收缩和舒张从而导致人体的血液中的氧合血红蛋白和血红蛋白的浓度不同来采集脉搏信号的[11]。氧合血红蛋白和血红蛋白对660 nm 的红光和940 nm 的红外光吸收的不同来采集一次脉搏信号,传输至放大电路中,经过放大电路的信号放大后输入到单片机中处理。本设计的脉搏信号采集电路如图3所示。
图3 脉搏信号采集电路Fig.3 Pulse signal acquisition circuit
本设计选择的温度传感器为DS18B20,它传输的是数字信号,是一种三线的传感器,一根接地线,一根接+5 V 电压,最后一根则是连接单片机芯片进行体温信号的传输[12]。
DS18B20 的特点和参数[13]:具有特殊的单线接口的方式,只需要一条口线与微处理器连接,就可以实现双向连接;不需要使用其他的外部元器件辅助;具有直径为6 mm 的不锈钢保护管;最多可以8个DS18B20 并联使用,如果过多就会因电压低而导致信号传输不稳定;测温范围在-55~125 ℃之间;工作电压在3.0~5.5 VDC。
本设计使用的温度传感器的电路如图4所示。
图4 温度传感电路Fig.4 Temperature sensing circuit
对于软件部分的设计,首先要考虑到单片机对于各个电子器件的控制运行。通过使用Keil Vision2 软件进行软件部分的设计编程,单片机通过程序来控制各部分硬件的协调工作,单片机将采集到的脉搏体温的信号在单片机中处理后,将数字信号输出到显示屏部分,显示出当前的数据。当测量到的脉搏体温数据超出原本设定值时,单片机会给蜂鸣器发出指令,使蜂鸣器发出报警信号作为提醒。各部分硬件之间的工作需要单片机通过软件程序来实现。
给系统上电之后,系统主程序先进行心率初始化,LCD1602 显示器初始化。等待系统正常工作之后,通过按键设置一个测量脉搏数的范围,当系统检测到脉搏体温信号后传输到本系统流程中[14],通过计算、处理之后再输出到LCD1602 中显示出具体的数值[15]。当测量的值超出了设置的范围,系统会给蜂鸣器发出一个高电平指令使蜂鸣器发出报警。流程如图5所示。
图5 主程序流程Fig.5 Master program flow chart
开启开关电源后,采集体温信号的传感器开始工作。DS18B20 传感器会实时地把检测到的体温信号以数字量的形式传输到单片机中。
DS18B20 先进行初始化WENDU(int temperature);显示温度传感器经过短暂的延迟750 μs void delay_beep(75)[16],void ds18B20reset(void),read DS-18B20-a bit 进行一位一位读取字节,写入一个直接到DS18B20 中。
本设计的温度检测流程如图6所示。
图6 温度检测流程Fig.6 Flow chart of temperature detection
本次设计的脉搏体温检测仪从检测上分为两部分,一是硬件部分,二是软件部分。首先要对设计的硬件实物进行检测,检查元器件的正负极,引脚等焊接的是否正确,元器件之间的走线是否完全按照电路图所示,焊接是否正确完好,是否有漏焊、虚焊、桥接等导致元器件无法工作的原因。检查完毕之后,然后对系统的软件控制部分进行测试:
(1)将软件程序烧入STM32 单片机中,上电之后,检查各个元器件的工作指示灯是否正确亮起,正常工作。
(2)寻找一个正常成年人,将其手指放在脉搏心率传感器上,注意保持稳定不动几秒钟,因为手指抖动的话会导致测试结果不准确。
(3)将DS18B20 温度传感器放在腋窝进行温度的测量[17]。将测到的温度脉搏信号输入到单片机中处理后,最后在显示屏上显示出读数。
(4)对于蜂鸣器的报警不能找一个不合格的人来测试,只能通过设置蜂鸣器的报警范围来检测蜂鸣器的工作是否正常。
在经过硬件检测好,软件程序调试好之后。系统开始上电测试设计系统性能,测试时找一个正常成年人需要测试一系列的数据来说明系统的稳定性。测试结果如表1所示。
通过对以上测试数据的分析,本设计基本完成了对脉搏和体温的测量和显示。当测量值高于设定值时,蜂鸣器也会发出报警信号。通过测试数据可以得到系统符合设计要求。
本次设计实现了以下目标:①设计实现了脉搏信号的采集,并且将信号输入到单片机中,经过单片机的计算处理后,成功地显示在了液晶显示屏上;②设计实现了体温信号的采集,同样将信号输入到了单片机后,经过单片机的计算处理之后,成功地输出到液晶显示屏并且显示出具体示数;③设计中,可以设置脉搏和体温的上限,检测时将读数设置在范围之外,蜂鸣器发出了报警信号。
表1 测试结果Tab.1 Test results
设计的不足和未来改进手段如下:①采集脉搏体温信号时会受到外界因素的干扰,导致测量结果的误差较大。以后可以尝试使用其他精度和准确度比较高的信号采集模块;②选择的DS18B20 温度传感器会受到环境温度的影响,外界环境温度不能超过人体体温,否则会影响测试结果;③对DS18B20温度传感器而言,温度是实时传输给单片机信号的,所以显示的体温是慢慢变化最终接近于人体体温。若要提高测温速度,需尝试其他传感器。