目前,市场上的血压计大部分仍是水银血压计,电子血压计在国外已经大量普及,而我国才开始应用。水银血压计每次测量必须由医生戴上听诊器进行测量,测量过程复杂,而且不同的医生,测量结果可能不同。而电子血压计弥补了水银血压计的不足。
1 硬件设计
1.1芯片介绍
MSP430是近几年流行的16位单片机,由于它具有超低功耗(在5V电压下运行于12MHz的80C51工作电流达到十几mA;而MSP430在3V时的工作电流为340μA,在2.2V的工作电流为220μA)、众多的片内外设、强大的数据处理能力、系统工作稳定、方便高效的开发环境等特点,被广泛应用在各种工业仪表中。加之笔者对430单片机比较了解,在本设计中选用了其中的一种MSP430F149,由于该设计中对单片机的外设模块只要求有A/D转换模块,所以可以选用MSP430中较便宜的系列。
CH375是南京沁恒有限公司生产的USB总线的通用接口芯片,支持USB-HOST主
机方式和USB-DEVICE/SLAVE设备方式。CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通讯方式,通过3根线,即串行输入、串行输出和中断输出与单片机/DSP/MCU/MPU等相连接。本文用的是从南京沁恒有限公司申请的样片。LCM用的是16×2的HS162-4。自建了自定义字符,实现了简单显示“血压是:XXX.X”。本文中使用HS162-4为的是试验方便,若是用到实际产品中,可以换用其他种类。
选择Motorola公司压力传感器MPX5050GP,其内部含有信号运放和信号调节功能,可以直接将动脉血液对血管壁的压力转换为0V~4.7V的电信号,其对应的血压值为0kPa~49.875kPa(0mmHg~375mmHg)。传感器采集到的信号送入单片机的AD12模块前要标度变换,即电平平移。
1.2工作原理
血压传感器将用户的血压变换成电压信号,经过滤波器送到149单片机的AD12模块中,再经过单片机处理后在LCM上显示,随时可以看到血压值。并且这些数据可以通过CH375储存在U盘中,在方便时将U盘插到PC机上,可以通过上位机软件进行观察,这样医生可以从整体上了解患者的血压变化情况,从而做出正确的诊疗结果。
1. 3系统框图
MSP430单片机使用串口方式同CH375相连,将数据写入U盘。图1为其原理框图。
1.4硬件设计中遇到的问题
在混合电压系统中,不同电源电压的逻辑器件相互接口时会存在以下3个主要问题:一是加到输入和输出引脚上允许的最大电压限制问题;二是两个电源间电流的互串问题;三是必须满足的输入转换门限电平问题。
器件对加到输入和输出脚的电压通常是有限制的。这些引脚有二极管或分离元件流向电源。例如3V器件的输入端接上5V信号,则5V电源将会向3V电源充电,持续的电流会损坏二极管和电路元件。
在等待或掉电方式时,3V电源降落到0V,大电流将流通到地,这使总线上的高电压被下拉到地,这些情况将引起数据丢失和元件损坏。必须注意的是:不管是在3V工作状态或是0V的等待状态都不允许电流流向Vcc。
所谓输入转换门限电平问题,即噪声容限问题。连接在一起的两个逻辑器件要想正常工作,必须满足高、低噪声容限都为正值。本文中CH375采用5V电源供电,MSP430F149采用3.3V供电。
CH375和MSP430F149的噪声容限值见表1。
MSP430F149驱动CH375时,高噪声容限=2.75V-2V=0.75V;低噪声容限=0.7V-0.25V=0.45V。
CH375驱动MSP430F149时,高噪声容限=4.5V-1.9V=2.7V;低噪声容限=0.9V-0.5V=0.4V。
由于噪声容限都为正值,所以MSP430F149和CH375可以直接相连正常工作。
2 软件设计
2.1串行数据格式问题
由于采用串行接口,串行数据格式必须一致。CH375的串行数据格式为:1个起始位、9个数据位、1个停止位,其中前8个数据位是一个字节数据,最后1个数据位是命令标志位。第9位为0时,前8位的数据被写入CH375芯片中,第9位为1时,前8位被作为命令码写入CH375芯片中。CH375的串行通讯波特率默认是9600b/s,单片机可以随时通过SET_BAUDRATE命令选择合适的通讯波特率。MSP430的通用串行通信模块分异步模式和同步模式。
异步通信的帧格式:1位起始位、7位或8位数据位、校验位(可奇/可偶/可无)、1位地址位(地址模式时)和1位或2位停止位。异步模式又分空闲多机模式和地址位多机模式。同步模式下,允许7位或8位数据流移入或移出MSP430单片机。
对照375的串行数据格式,笔者选用异步模式中的地址位多机模式。这种模式下,字符包含一个附加的位作为地址标志。数据块的第一个字符带有一个置位的地址位,表明该字符是一个地址。结合375的串行数据格式,把430的地址位看作第9位,可以模拟375的串行数据格式。
如果选用没有串行通信模块的430单片机,也可以选用串行方式,解决方法是用普通的IO口模拟串行通信的时序,当然要用到定时器Timer。可以用两个函数实现写命令和写数据的功能,程序中要用到位处理指令&,<<,>>等。现给出部分代码程序:
2.2软件滤波程序问题
虽然硬件用了滤波器,在软件中也要编写滤波程序,常用的软件滤波方法有11种,如限幅滤波法、中位值滤波法、算术平均滤波法、递推平均
滤波法等。文中采用中位值平均滤波法,即相当于“中位值滤波法”+“算术平均滤波法”,连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值。N值的选取:3~14。其优点是融合了两种滤波法的优点,可消除由于脉冲干扰所引起的采样值偏差;其缺点是测量速度较慢,和算术平均滤波法一样,比较浪费RAM。由于血压计对测量速度要求不高,而且149的RAM有2kb,所以选用该滤波方法。
2.3U盘读写文件格式问题
对U盘的读写分为两类:把U盘当作存储器,按照文件格式读写U盘。前者读写速度快,操作简单,但计算机不能直接读取写入的数据;后者由于按照文件格式,计算机可以直接看到相应的数据。公司子程序库提供U盘文件操作的API,对于普通用户可以直接调用这些API读写U盘,且可以与计算机无缝连接,但要求有600kb的RAM,若用51单片机则需要外扩RAM。由于笔者熟悉430单片机且149有2kb的RAM,满足要求,这也正是选用430单片机的一个原因。