1 PIC16F877单片机
PIC16F877单片机美国微芯(Micro Chip)公司推出的8位CMOS FLASH 28/40引脚的单片机。单片机采用RISC CPU,有35条单字节的指令,即保证了必要的指令效率也兼具了控制芯片成本和简化编程复杂度。其主要特点如下:
宽工作电压为2.0~5.5 V;
时钟周期为0~20 MHz指令周期为0~5 MHz;
片内FLASH ROM为8 k Words,RAM为368 B,E2PROM为256 B;
低功耗工作电流<0.6 mA@3V时钟周期为4 MHz;
2个8位和1个16位定时器;
2个16位捕捉/比较模块或2个10位PWM模块;
10位多信道ADC;
串行通信口SPI,I2C,USART及8位并行通信口。
2 外围组件介绍
FGN-605PGSR是日本专业传感器供货商fujikura公司推出的专门用于血压计的气压传感器,其尺寸为10.3 mm×7 mm×9.5 mm,可测压力范围-34.47~+34.47 kPa符合所要量测的压力范围。FGN-605PGSR原理是在恒流源供电的文氏电桥上的电阻随气压变化而输出双端差分电压信号。LM324是常用的4运放14脚双列直插集成电路,LM311是常用的4比较器14脚双列直插集成电路,其具有电源电压范围宽,静态功耗小,可单电源使用,低价等优点。HD44780A是日立推出的点阵字符液晶显示控制器和驱动器,可显示16字×1行或16字×2行或20字×4行之文字模式,每个字为5*7点矩阵字型。
3电子血压计工作原理
3.1 血压测量原理定义
血压的概念就是血液流经血管壁时的压力。由心脏出来的血液,需要有推力,才能绕行身体一周,心脏就是借着不停的收缩、放松,将血液推送前进。血压有两种,一是收缩压:是当心脏收缩把血液打到血管所测得的血压,二是舒张压:是心脏在不收缩所得的压力。当袖带的压力等于血压时,血液开始可以流通而产生所谓的袖带声,这时候也就是收缩压,必须开始从这里做记录,直到最后当袖带声没有的时候,此点即为舒张压。
3.2 系统工作原理
系统框图如图2所示。系统由压力传感器(FGN-605PGSR),恒流源(LM324×1),差分放大(LM324×3),0.8 Hz二阶高通滤波(LM324×1),200倍放大(LM324×2),38Hz二阶低通滤波(LM324×1),血压脉冲触发(LM311×1),液晶驱动器(HD44780A)和单片机(PIC16F877)组成。
一次测量血压的过程为:按激活键单片机PWM输出控制气泵充气至200 mmHg高,慢慢以每秒约下降5 mmHg的速度放气。压力传感器输出信号经差分放大器后变单端信号一路送入单片机ADC监视直流分量,另一路送入0.8 Hz二阶高通滤波器滤除直流分量;交流分量经200倍放大后输入38 Hz二阶低通滤波器去除电源及皮肤与袖带摩擦的高频噪声和工频干扰并将此信号维持在0~5 V之问,滤波后的交流分量一路送入血压脉冲触发然后触发单片机ADC工作,另一路送入单片机ADC计算幅值,先找出最大振幅值Amax,在往前找幅值为0.5Amax的瞬态位置对应血压直流分量即为收缩压,往后找幅值为0.8Amax的瞬态位置对应血压直流分量即为舒张压,将计算出的收缩压和舒张压结果输出至液晶驱动器显示。血压信号及收缩压和舒张压位置如图3所示。单片机主要工作为:PWM输出控制气泵充气漏气调整袖带内气压;一路ADC采样袖带内气压直流分量以便取得收缩压和舒张压;一路ADC采样袖带内气压交流分量经分析计算分析后确定收缩压和舒张压的瞬态时间位置;接收血压脉冲信号触发ADC工作;将计算出的收缩压和舒张压结果输出至液晶驱动器显示。
4 硬件设计
4.1 PIC16F877单片机
时钟输入 外接有源晶振通过OSC1/CLKIN(Pin13)输入8 MHz主频。
电源输入 系统电源为9 V电池,通过外部7805降压到直流5 V输入VDD(Pin11,32)。
按键输入 按键低电平脉冲通过RB0/INT(Pin33)输入,以中断方式触发一次测量血压的过程,中断服务子程序有消除按键抖动的处理。
气泵驱动 RC1(Pin33)为内部PWM模块的输出信道,PWM驱动气泵充气和放气。
喇叭驱动 RC3(Pin37)驱动喇叭输出测量血压时的提示和过程声音。
液晶驱动控制 对HD44780A输出指令和数据进行显示控制,RC.3~5(Pin18,23,24)接HD44780A控制线RS,R/W,EN;RD.0~7(Pin19~22,27~30)接HD44780A数据总线DB0~7。
4.2 提供传感器偏置的恒流源
如图4所示,运放LM324-11输入正端为可设定的直流偏置电压Vref,LM324-11输出端和输入负端提供了压力传感器电桥恒流偏置的回路。
回路电流为:
如图4所示,经过两个运放LM324-12,13隔离,LM324-14差分放大后其输出电压为:
4.3 差分转单端输出的放大电路
4.4 0.8 Hz二阶高通巴特沃思滤波器
采用二阶巴特沃思二阶高通滤波,运放LM324-24接成跟随器放大倍数为1,高通滤波器的传递函数为:
取二阶巴特沃思网络函数的系数a11=1.414,截止角频率ωc=0.8×2π,取C1=C2=0.1μF。
可以计算得到:
4.5 200倍放大电路
如图4所示,用两个级运放LM324-21,22搭成的比例放大电路,第一级为20倍放大,第二级为10倍放大。
4.6 38Hz二阶低通巴特沃思滤波器
采用二阶巴特沃思二阶低通滤波,运放LM324-23接成跟随器,放大倍数为1,低通滤波器的传递函数为:
取二阶巴特沃兹网络函数的系数a11=1.414,截止角频率ωc=38×2 ,取C3=C4=0.1μF。
可以由以下计算得到:
4.7 血压脉冲触发
利用比较器LM311设定一定的电压门限,将血压交流信号形成脉冲,输入PIC16F877 RC2的CCP1触发ADC信道1工作。
5 单片机软件设计
5.1 初始化工作
上电后对单片机寄存器,SRAM,特殊功能的设置如PWM,输入输出端口的设置做必要的初始化;对HD44780A输出指令关闭显示。
5.2 按键输入
未按键时RB0/INT(Pin33)端口为大电阻上拉状态,有按键时低电平脉冲通过此端口输入,中断方式触发一次测量血压的过程,进入中断服务子程序后每隔10 ms判断一次端口状态,连续读到3次低电平,则判断按键有效,这是消除按键抖动的处理。判断按键有效后对HD44780A输出指令显示开始测试画面。
5.3 气泵充气
判断按键有效后,PWM输出对气泵充气。停止充气的条件有两个必须同时满足:一是ADC信道0测到的血压直流分量是否大于4 V;二是ADC信道1测到血压交流分量是否介于1.6~4.9 V之间。满足此条件表示气压已足够,可停止充气,一般此时气压略大于200 mmHg。
5.4 测量血压
PWM输出匀速放气。心跳脉冲通过CCP1触发ADC信道1采样血压交流分量测出每个脉冲的峰峰值,同时计算出这个脉冲时间段内ADC信道0测到的血压直流分量的平均值。把峰峰值和直流平均值作为一对数据记录起来,每个心跳脉冲会对应一对数据。 5.5 计算收缩压和舒张压
ADC信道0测到的血压直流分量是否小于1 V表示气压低于50 mmHg,是单次测量结束的标志。然后开始统计记录下来的若干组峰峰值和直流平均值,找出峰峰值最大的值Amax,在往前找峰峰值最接近0.5Amax的一对数据其中血压直流分量即为收缩压,往后找峰峰值最接近0.8Amax的一对数据其中血压直流分量即为舒张压。判断测出收缩压和舒张压的值落在合理的数据范围内,如:收缩压应在80~190 mmHg范围内和舒张压50~120 mmHg范围内。将计算出落在合理数据范围内的收缩压和舒张压结果输出至液晶驱动器显示。
5.6 ADC数据处理
ADC信道1测血压交流分量的采样率为2 kHz,其取值原由为:心跳脉冲频率上限约为2 Hz,定义峰值出现的时间约占心跳脉冲周期的1%,在峰值附近ADC测量10次,所以ADC的采样率=2 Hz/1%×10=2 kHz。因为ADC测量到数据含有电源及皮肤与袖带摩擦的高频噪声,必须经过ADC多次测量才可将噪声造成的异常数据去除,这里采用的做法将多次测量的数据先做比较先去掉个别与大多数数据相差较大的数据,在剩下的数据中取偏大(小)的几个数据做平均从而得到高(低)峰值。本设计将PIC16F877设置单次数模转换时间为48μs,具体条件为FUSC=8 MHz,TOSC=125 ns,TAD=32TOSC,故单次数模准转换时间TADC=12TAD=12×32×125 ns=48μs。实际上在数模转换前还必须保留20 μs采样保持时间。这种设置采样率的最大值可做到1/(48μs+20 μs)=14.7 kHz远大于要求的2 kHz,故满足要求。ADC信道0测血压直流分量模准转换时间设置与ADC信道1相同,每次采样紧接着ADC信道1采样后进行。
(1) 充气时在限定时间内未满足气压足够高即停止充气的条件,则先放气然后重新充气。连续3次出现此异常,则HD44780A输出错误信息。5.7 异常处理
(2) 放气时在限定时间内未满足气压足够低即停止血压测量的条件,则放弃此次测量数据再放气然后重新充气并测量。连续3次出现此异常,则HD44780A输出错误信息。
(3) 测量后计算出的收缩压和舒张压未落在合理的数据范围内,则放弃此次测量数据再放气然后重新充气并测量。连续3次出现此异常,则HD44780A输出错误信息。
6 结 语
电子血压计具有低成本、小型化、低功耗、自动化程度高的优点,在使用上带来了便携和易操作的特点,从而使电子血压计呈现出家用化的趋势。本文给出了完整的携带式电子血压计设计方案,并基于PIC 16F877为控制核心辅以压力传感器和外围的模拟电路以及LCD驱动芯片实现了电子血压计的设计。此设计可直接转化为实际产品,故有较高的实用价值。