这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 基于MN101EF32D单片机的电子血压计设计

共2条 1/1 1 跳转至

基于MN101EF32D单片机的电子血压计设计

助工
2014-12-04 20:31:16     打赏

血压是极为重要的健康指标,血压测量的准确与否直接关系到人们的健康。国家把血压计列为强制检定计量器具。一般医院使用的水银血压计基于人工柯氏音法,这种方法存在一些固有的缺点:一是放气的快慢对读数有直接影响,国际标准放气速度为每秒3~5mmHg,而不同的医生放气有快有慢,会影响测量的准确度;二是这种方法以人的视觉、听觉和协调程度为主要依据,很难标准化。为此,本设计从血压的检测方法着手,采用日本松下公司高速、低功耗的MN101EF32D单片机,作为血压计测量、控制、数据读写、数据显示的核心,可准确地采用示波法(振荡法)测量血压。

  工作原理

  示波法(振荡法)是根据袖带在减压过程中,其压力振荡波的振幅变化包络线来判定血压的。目前比较一致的看法是当袖带压力振荡波的振幅最大时,袖带的压力就是动脉的平均压。动脉的收缩压对应于振幅包络线的第一个拐点,舒张压对应于包络线的第二个拐点。

  硬件设计

  系统基本工作原理如图1所示。压力传感器输出的电压信号首先通过低通滤波器滤波,之后由运放电路将信号转化为适合单片机的输入信号,最后将模拟的采样信号经过MN101EF32D单片机转化为数字量。程序对采集的数据进行数字滤波后分析,计算出人体血压的两个关键指标"舒张压"和"收缩压",之后单片机立即将数据存储到外部存储器中,并将这些重要数据显示在LCD上。


  传感器介绍及其外围电路的设计

  该血压计使用的传感器为MPS-3100-006G压阻式压力传感器,是由四个等值电阻组成的惠式电桥,其输出电压和输入压力成正比,理想状态下当压力输入时,电阻值就跟着改变,但实际上温度的改变也会影响其阻值输出结果。另外,由于晶体和电路设计制作的误差,加上封装过程等方面的影响,零点偏移不是零。所以必须由外加元件来进行个别温度补偿电路校正。其重要指标如下:

  a、传感器测定范围:5.8~15PSIG

  b、操作温度范围:?40~85℃

  c、驱动电流:1.5~3mA

  d、驱动电压:5~15V

  e、零点漂移:?25~25mV

  f、电阻温度系数为:0.2%/℃

  因为血压信号取自手臂,测量的信号容易受袖带的位置、手臂的挪动而带来的干扰。根据这些专业特点,要求系统具备高输入阻抗、高增益、高共模抑制比、低噪声以及低漂移等特征。如图2所示,图中的T1即为MPS-3100-006G压阻式压力传感器。整个电路首先将压力信号转换为电压信号,然后进行放大滤波。图中U1、U2为有源运放LM324,它的输入阻抗很高。压力传感器的信号通过放大后,并通过调节VR1的大小来改变运放的闭环增益,以调节为适应于A/D的电压输入范围。U1运放回路用来测量袖带中的压力,测量的数据用来供MCU分析并控制对袖带充气和放气的速度。另外U2运放回路是将通过C11电容隔直的交流信号放大,此回路测量的是人体的脉搏波。两个回路的采集数据构成了血压计各个指标的重要计算参数。


  MN101EF32D的特性

  MN101EF32D是松下(Panasonic)公司于2008年初推出的产品,MN101Exx系列8位单片机复合了多功能的外围功能,具有灵活而最优化的硬件结构,简洁而高效的指令体系,充分实现经济性和高速性。

  MN101E32D型单片机,内置64KBFlash、4KBRAM,具备6个外部中断、20个内部中断(包括NMI)、9个定时器计数器、3个串行接口、8路A/D转换器、32×4段LCD驱动器、监视定时器、单系统的数据自动传送功能、同步输出功能以及蜂鸣器输出等外围功能。最小指令执行时间可达50ns,封装为64引脚LQFP。本血压计使用MN101EF32D的功能大致如下:

  a、10位A/D采样,用于静态压力及脉搏波的测量。

  b、LCD显示控制器,直接驱动23*4段的液晶显示器,显示测量的过程及结果。

  c、定时器功能,用于定时A/D采样数据并计算自动关机时间。

  d、采用数字信号处理的技术对A/D采样的信号进行处理,主要有数字低通滤波和相关的计算。

  e、电源开启采用硬件控制的方法,电源关闭采用软件控制的方法,关机时除了稳压模块外,其它芯片处于断电状态,功耗极低。

  f、测量时可以选择mmHg和Kpa作为主显示方式,测量精度高,达到静态1mmHg、动态3mmHg的测量精度。由于采用铁电存储器作为存储媒介,数据的保存时间很长。

  MN101EF32D与外部串行铁电存储器的硬件连接

  在选择外部存储器时,由于考虑到要长期反复擦除、写入所设置的工作参数和测量到的重要信息,并保存大量的历史数据,因此必须使用容量较大的静态存储器,以便写入尽可能多的数据信息并保证掉电后数据不丢失。由于EEPROM本身的设计工艺。寿命有限,而且写入的时间较长,因此不适合用于电池供电的系统。血压计需要保存的数据设计依次为收缩压(2个字节)、舒张压(2个字节)、平均压(2个字节)、脉搏(2个字节)、每次记录的时间(5个字节)等,每次测量需要13字节存储数据。假设每天测量4次,需要13×4=52字节,血压计能够保存7天的数据则需要364字节,故选用"铁电"的24cL04。当打开血压计使用的时候,单片机在其PA0口模拟出IIC总线的SCL,并输入给外部存储器24cL04的SCL引脚,同时PA1口与24cL04的SDA口进行数据交换,将有用的数据显示在LCD上。


  电源处理模块及其相关电路设

  本血压计选用2节7号电池作为电源的输入。为了达到较好的供电质量,在此电路中选择了DC/DC升压芯片RN5RK331A,将2节串联的1.5伏7号电池构成的3V左右的电压升到3.3V,供给系统中的模拟电路电源,也作为数字电路的正电源供给MCU(如图3所示)。考虑到气泵、气阀如果与模拟电路、数字电路直接共用一个电源,会引入比较大的干扰,从而影响压力传感器、运放以及MCU的正常工作,所以设计成气泵、气阀不与其它器件接在一起,直接由电池供电。


  另外,血压计的重要采集数据通过运放放大的袖带气压和隔直后的脉搏波,由于它们都是通过微小的信号放大后得到的,所以A/D转换的设计也极为重要。系统采用智能充气测量、自动降压,在降压的过程中进行测量。由于在气阀工作降压的时候,电源受到波动,如果用系统电源直接拿来作为A/D的参考电压基准,必然会给测量带来误差。采用NationalSemiconductor的LM385作为A/D转换的电压基准连接到芯片的VREF 引脚,确保采集的数据转换准确。

  LCD显示模块的设计

  如图4、5所示,为了使用户更为方便、简单地使用本系统,采用LCD显示。



  松下的MN101EF32D芯片内置了LCD驱动模块,可以直接驱动LCD。先初始化LCD方式控制寄存器1(LCDMD),它是8位寄存器,用来指定LCD时钟、LCD显示的ON/OFF、显示占空比等。

  系统软件设计

  软件的主要流程如下:

  上电后,首先完成系统的初始化工作。单片机开始给气泵供电,让袖带迅速充气至被测者收缩压以上约30mmHg左右。之后单片机通过1路A/D开始采集袖带的气压,并根据袖带内气压下降的速度来控制排气阀排气,使袖带内匀速降压(3~5mmHg/s)。与此同时,另外1路A/D开始采集经过隔直的脉搏波。当脉搏波的振幅最大时,袖带的压力就是动脉的平均压。动脉的收缩压对应于振幅包络线的第一个拐点,舒张压对应于包络线的第二个拐点。

  软件主要细分为以下3个重要模块:

  一)匀速降压控制模块

  尽管气阀有自动缓慢放气的特点,但为了使袖带迅速充气至被测者收缩压以上30mmHg左右后匀速降压(3~5mmHg/s),而不能用普通的处理方法,因为整个测量过程中容易受到外界震动的影响,如人为的震动袖带、气管的震动、人的身体运动等,另外气管的刚性度也会影响到袖带内气压微弱的变化。所以袖带内的压力降低的速度与气阀开关的频率为非线形关系。

  本设计采用了PID算法来控制气阀的开关时间来确保袖带以3~5mmHg/s的速度匀速降压。受到单片机的处理速度和RAM资源的限制,这里不采用浮点数运算,而将所有参数全部用整数,最后再除以2N(相当于移位),作类似定点数运算,可大大提高运算速度。最终赋值给定时器,来控制气阀的开启时间,从而保证降压的速度恒定。

  在PID算法中三个基本的参数Kp、Ki、Kd的设定与调整是比较难的部分,根据这些参数的作用原理,总结调整方法大致如下:

  1、压力很快就降到目标值,但压力降的太多:

  a)比例系数太大;

  b)微分系数过小;

  2、压力下降达不到目标值:

  a)比例系数过小;

  b)积分系数过小;

  3、基本上能够控制在目标上,但上下偏差较大,且经常波动

  a)微分系数过小;

  b)积分系数过大;

  二)信号处理模块

  本血压计测量信号为2路,MPS-3100-006G压力传感器的信号首先进行低通滤波处理,排除因外界干扰造成的信号读数的误差,之后放大送AD1,作为静态血压信号;隔直后经再次放大送AD2,作为脉搏波信号。由于MN101EF32D的A/D为10位,因此最高精度可达1/1024。为了最大限度地利用A/D转换的采样速度,用中断来实现A/D转换后的数据处理。当A/D转换完毕,在中断程序中,用防脉冲干扰移动平均值法来实现简单有效的数字滤波,使测量更加准确。具体做法为在一次定时中断内连续进行5次A/D转换,去掉最大值和最小值,剩余3个数据求算术平均值,该算术平均值作为此次的A/D转换结果。


  三)计算血压模块

  袖带气压和脉搏波经信号处理模块的处理后,得出如图6所示的数据。图中的下方为被测者的脉搏波,上方为血压计升压和压降过程中的袖带压力。在此基础上分析信号,供收缩压、舒张压、平均压和心率的计算。单片机在测量过程中已经存储各个脉搏波的峰值,以及每个脉搏波的间隔时间。


  收缩压判据的确定采用最大振幅法,即在放气过程中脉搏波幅度包络线的上升段,当某一个脉搏波的幅度Ui与最大幅度Um(平均压)之比刚刚大于Ks时,就认为此时对应的气袖压力为收缩压。

Ps=P/Ui=Ks*Um


  舒张压判据的确定也是用最大振幅法来判定的,不过是在脉搏波幅度包络线的下降段,当某一个脉搏波的幅度Ui与最大幅度Um(平均压)之比刚刚小于Kd时,就认为此时对应的气袖压力为舒张压。

Pd=P/Ui=Kd*Um


  先用经验参数Ks=0.54和Kd=0.72来计算,经测试后再进行修正。

  心率即为脉搏波的周期,具体也为算术平均值做法。

  结论

  基于MN101EF32D单片机的血压计,充分利用了该芯片本身的功能,具备电路简单、功耗低、电源要求单一、精度高以及实用性强等特点,有着广阔的市场前景.


菜鸟
2015-08-20 17:32:03     打赏
2楼

代码能共享一下么



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]