1、血压计的原理和设计教学文案血压计的原理和设计血压计的原理和设计本文讲述如何使用Freescale(以下称为飞思卡尔)MCU设计血压计,飞思卡尔提供数款针对医疗电子的MCU,包括MK53N512、MC9S08MM128和MCF51MM256,集成16bit的模拟数字转换器(ADC)、12bit的数字模拟转换器(DAC)、两个可调增益运算放大器、两个TRIAMPS、模拟比较器和Vref生成器。K50系列产品同时还能在处理信号的时候执行DSP指令,MCF51MM系列产品则能执行MAC(乘法和累加)指令。文章旨在为生物医学工程师、医疗设备开发人员,或者任何具有医学实践并对血压计工作原理感兴趣的人提供参
2、考信息。当然这需要具备模拟电路和数字电路的基础知识。一、血压计的基本原理首先介绍动脉压力的生理学概念以及血压计的工作原理。1、动脉压力动脉压力(Arterial Pressure)是指血液在动脉血管中施加的静水压力(hydrostatic pressure),这是左心室收缩产生的结果。动脉收缩压(Systolic Arterial Pressure,SAP)是指心脏收缩的时候动脉形成较高的血压;舒张期动脉压(Diastolic Arterial Pressure,DAP)是指在心脏舒张的时候形成的最低血压。正常成人休息状态下的SAP和DAP分别是110mmHg和70mmHg,mmHg为压强单位
3、毫米汞柱。表1血流量(blood flow)指的是在单位时间内(通常以mL/min表示)流经任意器官组织的血液流量,血液将氧和其他营养物质传送给器官组织。血压的大小直接影响血流量,因为血液总是从高压的区域流向低压的区域,两个区域的血压差越大,那麽血流量就越大。血液由左心室泵出到大动脉(aorta)并达到较高的血压,随著血液的流动,血压逐渐降低直到为0mmHg,此时血液回到右心房(right atrium)。图1表示血压的变化。图1血管压力的变化2、血压计的工作原理血压计的工作原理主要基於示波法(oscillometric method),在测量过程中,示波法利用获取的压力脉冲信号来获得血压值。
4、袖带(occluding cuff)与气泵和压力传感器相连,袖带在使用过程中紧箍手臂。给袖带泵入气体使其膨胀,直到压力大於脉搏(systolic)的典型数值,然後袖带才逐渐放气。由於袖带的放气,当脉搏压力到达一定数值的时候,就开始出现脉动(pulsation)。脉动的大小代表了由於心脏收缩而产生的压力变化,它被用於计算心跳的速率。脉动的振幅逐渐增大到平均动脉压(Mean Arterial Pressure,MAP),然後缓慢下降到零。图2显示了袖带压力与脉动(pulsation)之间的关系。图2袖带(cuff)压力与心跳的关系在脉冲振幅最大的时候,示波法通过获得袖带压力来确定平均动脉压(MAP
5、)的大小。收缩和舒张的数值可以使用特殊算法计算,不同的医疗设备开发商有不同的算法。基於飞思卡尔芯片的血压计在计算收缩和舒张的数值主要根据以下原则当脉冲的振幅为MAP的70%的时候,此时测量获得的压力就近似为收缩压力,并且袖带压力大於MAP;类似的,脉冲振幅为MAP的50%时,此时寄存器内的袖带压力就近似为舒张压力,袖带压力小於MAP。二、血压计的硬件实现使用飞思卡尔Kinetis K53和Flexis MM系列MCU实现的血压计,除了文章开头所提到的几个组成部分之外,在性能方面还具有其他特点,比如K5X系列的产品还还支持包括MAC在内的DSP指令集合,MCF51MM也具有执行MAC指令的功能。
6、飞思卡尔公司医疗用途的MCU可降低医疗设备的BOM成本,兼具最佳的处理能力。只需要少数的外部器件进行压力感应和袖带控制。1、MED-BPM模拟前端电路MED-BPM模拟前端demo板针对血压计而设计,与飞思卡尔的医疗专用MCU结合使用。MED-BPM与MCU之间的通信使用专用连接器,使用飞思卡尔配套推出的Tower系统更可以快速的制作出产品原型,加速产品的上市时间。MED-BPM的结构见图3。图3MED-BPM的结构(1)医疗连接器demo板块中使用到的医疗器械连接器是标准器件,demo板块的型号为TWR-9S08MM、TWR-MCF51MM和TWR-K53。连接器包括用於医疗用途的最重要的模
7、拟周边设备,以及I2C接口进行数据通信。表1概括了医疗连接器信号特性。(2)袖带压力控制MED-BPM使用示波法进行血压的测量,这是一种无创伤(noninvasive)的方法,它使用外部袖带紧箍病患者的手臂,检测收缩和舒张动脉压力。MCU的GPIO引脚控制气泵给袖带充气,而另一个GPIO引脚则用於控制放气阀门对袖带进行放气。因为USB端口提供的电流(500mA)不足以驱动气泵和阀门(600mA),因此它们必须要由外部电源以得到足够的电流进行驱动。这需要光耦器件用於MCU控制信号与驱动部件的连接,如图4所示,光耦器件的输出被连接到MOSFET,MOSFET相当於一个开关,它控制气泵和阀门的动作。
8、图4MCU控制信号与驱动部件的连接电路(3)外部连接器在MED-BPM上,除了光耦器件和开关电路之外,还有外部气泵的连接器、阀门和电池。这就允许使用MCU信号控制外部的元器件。气泵电机和阀门使用两个AA电池进行供电,由於USB输出不能提供足够的电流驱动,图5显示连接器引脚的布局。图5连接器引脚功能(4)压力传感器示波法的本质就是测量袖带的压力变化,这使用的传感器MP3V5050芯片内部集成了双极运算放大器电路和薄膜电阻网路,此传感器提供高输出信号和温度补偿能力。MP3V5050的主要特性见表2,MP3V5050的输出信号与输入压力信号成比例。在应用电路中,此传感器可直接与放大电路连接。表2(5
9、)信号滤波和放大信号滤波和放大由三个滤波器、缓冲电路、同相放大器组成,见图6。滤波器为一阶RC无源电路,其截止频率可以由公式fc=1/2RC进行计算。信号经过10Hz的低通滤波电路(LPF),这个滤波电路由电阻和电容构成,主要为了消除高频噪声。之後,信号传输到缓冲电路,缓冲电路就是一个单独的运算放大器,它连接信号与传感器。在缓冲电路的输出端对动脉压力进行测量,然後信号再次由2.2Hz的RC高通滤波器进行滤波处理,移除高频噪声,得到比较洁净的信号传输到後面的放大电路。信号放大电路为同相放大器,包括二阶运算放大器、两个电阻(100k和1k),形成101的增益,以便能更加有效的识别袖带的振动。这部分
10、电路之後,信号进行10Hz的RC低通滤波电路,再次进行高频信号的过滤。图6滤波和放大电路2、功能描述MED-BPM demo板使用类似於示波法的测量方法,即所谓的斜坡上升(Ramp-Up)方法,在袖带充气的过程中进行测量。ramp-up方法同样需要将袖带紧密的箍住左手臂,接著放气阀门被关闭,气泵开始给袖带充气。见图7,在充气的同时,通过检测袖带的压力,并对信号进行放大,从而得到袖带的压力振动。图7压力振动电路持续监测这些振动,每个振动获得主要的袖带压力,并且保存振动的幅度。但压力到达最大值的时候,电机停止充气,阀门开启对袖带进行放气。在袖带放气的同时,MCU对压力数值进行计算。首先,检测所有脉
11、冲信号,并且找出幅度最大的脉冲信号,因为它代表MAP。在将这个脉冲信号被标记为MAP的时候,记录袖带的压力。利用上述计算方法,计算出收缩脉动压力和舒张脉动压力。三、软件模型MED-BPM演示板基於飞思卡尔的USB软件堆栈,可以被视为USB通信类器件(CDC)。演示板使用的状态机(state machine)每个周期执行一个状态,避免CPU的劫持和仿真并行处理。图8显示了软件的模型。图8软件模型每个状态机(state machine)是MCU必须执行的任务。系统可以执行几个任务,只有当前任务在FIFO序列中完成以後,才能执行下一个任务。每个状态机包含几个子状态机(sub-state machin
12、e),这就允许将这几个子状态机中均匀分配CPU负荷。就像前面提到的那样,软件基於飞思卡尔的USB堆栈和PHDC。MED-BPM演示板的软件分为三部分初始化;与电脑的通信;执行测量。1、初始化运行MED-BPM演示板的第一步是对所需的周边设备进行初始化。在main函数 ,首先调用的函数Init_Sys对USB工作时钟和中断进行设定,然後AFE和软件计数器所需的周边设备同样进行初始化以进行初次运转。USB被设定为CDC(通信类器件),从而启动USB与主机之间的通信。之後,状态机进入无限循环执行状态。(图9)图9初始化2、与电脑的通信电脑通过USB与器件连接,器件的工作被设定为CDC,并且器件的动作
13、被视为电脑的虚拟端口来使用。(1)接收指令函数SerialComm_PeriodicTask是通信类器件的虚拟comport子程序,它被主程序调用。这个函数持续监测USB输入缓冲器以便接收数据。在接收到数据包以後,函数检查接收到的数据包是否符合通信协议。如何符合协议,函数检查请求指令并开始执行。图10显示了SerialComm_PeriodickTask函数的执行流程。图10图10SerialComm_PeriodicTask函数流程图(2)执行指令MED-BPM对四个请求命令进行辨别。BpmStart/StopMeasurementReq启动或者停止血压测量;BpmStart/StopLea
14、kTestReq启动或者停止袖带气体漏的测试。无论执行上述哪一个指令,都会根据通信协议生成确认数据包,以此来表明这个指令已经被接收到。在执行启动请求的时候,确认数据包同时还包含其是否成功执行的信息。图11显示了请求指令的流程。图11请求命令流程图(3)发送数据包函数SerialComm_SendData将数据包发送到主机。数据包被创立的同时,被存储在输出缓冲器中,此时数据计数变量增加显示出输出缓冲器的容量改变。一旦SerialComm_SendData函数被调用,它就会检查数据技术变量的大小。如果这个变量不为零,那麽就表示输出缓冲器中仍然有信息需要发送。这个函数调用CDC接口、USB堆栈部件和
15、PHDC来发送数据包。图12显示了这个函数的执行流程。图12SerialComm_SendData函数流程图3、测量在执行BpmStartMeasurementReq函数的时候,调用Bpm_StartMeasurement函数,它对Bpm进行初始化并执行测量。这个函数首先重置所有参数确立初始化的状态,然後设定ADC的分辨率为12bit。由於首次ADC测量数据对动脉压力计算没有意义,因此这些采样数据可以被忽略。BpmIgnoreSamplesCounter和一定数量的采样一起加载。BpmActualState函数被设定为测量状态,以此表明测量的BPM状态机已经开始执行。软件计时器此时开始每隔10
16、ms获取ADC采样。在Bpm_StartMeasurement函数中,BPM状态机从待机状态中脱离出,并且开始进行测量。在执行下个状态机时候,调用StateMeasuring函数,图13显示了这个函数的流程。在ramp-up阶段,为了避免袖带过度膨胀对人体造成伤害,就需要不断的检查袖带压力,并且将这个压力与最大参考值进行比较。由於40mmHg以下获得的第一个采样信息没有参考价值,所以这些采样信息在第一个sub-state中可以忽略不计。采样计数器被预先设定,用来显示被忽略的采样数量。图13StateMeasuring函数流程在第一个采样被忽略之後,程序搜索主袖带压力的振动。通过前後两个采样之间
17、的比较,程序得出每个脉冲较高的数据。如果新的采样比前一个采样大,那麽新的采样就被设定为实际脉冲的较高点,一直到更高采样点的出现。如果在五个采样之後,新的采样点比前一个小,那麽可以认为这个脉冲正在下降,此时将进入寻找最低点的过程。在最大和最小脉冲都被确立之後,计算出它们的振幅,振幅和同时测量获得的主袖带压力一起存储在数组中,留待後面进行分析。运行血压计demo所需的组件当袖带达到其最大压力值,气泵电机将停止工作并且阀门打开。袖带放气的同时,MCU根据信号进行运算。第一步是从存储在数据数组中找出振幅最大的脉冲,并以此来确立MAP。也即是,脉冲振幅最大的时候,所测量获得的主袖带压力就是MAP。在此之後,收缩动脉压力由特定的脉冲确立,在这个脉冲下,主袖带压力大於MAP,其振幅为MAP脉冲的70%。确立舒张压力的脉冲,主袖带压力小於MAP,振幅为MAP脉冲的50%。最後,ADC数值被转换成mmHg单位,被传输到GUI界面显示出来。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1