使用MSP430FG439的心率及心电图监测仪.docx
《使用MSP430FG439的心率及心电图监测仪.docx》由会员分享,可在线阅读,更多相关《使用MSP430FG439的心率及心电图监测仪.docx(10页珍藏版)》请在冰豆网上搜索。
![使用MSP430FG439的心率及心电图监测仪.docx](https://file1.bdocx.com/fileroot1/2023-2/24/e5c0fb18-77c4-49cd-97d6-a4a7e27cf2ad/e5c0fb18-77c4-49cd-97d6-a4a7e27cf2ad1.gif)
使用MSP430FG439的心率及心电图监测仪
使用MSP430FG439的心率及心电图监测仪
摘要
本文描述了如何运用MSP430FG439型微程序控制器制造一台数字心率监测仪。
此监测仪可将每分钟的心跳频率在LCD液晶显示器上显示出来。
此外,此仪器可通过RS232串行口输出数据流使心电图波形在电脑上显示出来。
PCB光绘文件、图解、材料清单及固件等与本文相关的资料以Zip压缩文件形式随附。
该仪器所使用的电池型号为CR20323-V锂电池。
1.引言
心电图(缩写为ECG,也可为EKG),是对一次心跳中心脏肌肉所产生的压力的图形描绘。
心电图能够精确地反映出心脏功能的好坏。
心脏能发出可扩散到整个心脏的电化学脉冲,使得心脏细胞以适时的顺序收缩和放松。
因此,心脏才能够跳动。
此顺序由一组神经细胞控制,即窦房结,由此使得心脏细胞产生偏振和消偏振现象。
由于这一运动本质上是电流的活动,并且人体因带有流体而可以导电,因此,这一电化学活动可在人体表明被测量到。
在人体的不同两点之间大约有1mv的实际电势,可通过在人体放置电极接头测得。
四肢和胸壁是放置电极接头的标准位置。
标准化的心电图能够对比不同人的情况,也能对比同一人的不同情况。
普通心电图会显示上下波动。
这种波动反映了心脏的心房和心室的变换收缩。
图
(一)为一次正常心跳的典型心动周期波形。
产生的电压代表的是一次心跳循环产生的压力。
第一个向上的波动P是由于心房收缩产生的,称之为心房波群。
其他波动,Q、R、S及T都是由心室的运动产生的,称之为心室波群。
如果某一心电图上显示出偏差,可能表明这一心脏的功能有不正常现象。
在本文中,微程序控制器利用心电图波形来测量心跳率。
因为心跳的计算是重点。
电极接头被简化成了两个接点,一个连在右臂,一个连在左臂。
一些练身仪器上经常能看到这种设置,比如跑步机。
图
(一)
2.电路描述
此仪器完整的电路图见图(9)
2.1.前端放大器
来自电极接头的电信号的最大值为1mv。
为了使这一信号能用于心率检测,有必要将其放大1000倍。
以如此高的倍数单纯的放大心电图信号有很大的困难,因为人体可被看成一个巨型的天线,它能接收到很多干扰,包括主要在50Hz-60Hz的线频干扰。
这需要在放大后用终滤器过滤。
遗憾的是任何放大器都能放大杂音的电压却不能放大目标的心电图信号。
在一些情况下,干扰甚至会完全覆盖心电图信号而使得放大后的信号没有任何使用意义。
较好的办法是使用差分放大器。
由于心电图电极接头能获得相同的共模信号,共模干扰就可以通过使用一个理想的匹配差分放大器而自动消除。
本仪器的前端所使用的差分放大器为INA321测量放大器。
此放大器完全匹配并平衡了放大产生的电阻。
此设备专门配合最小2.7-V单相(singlerailpowersupply,不知道怎么翻)供电使用。
INA321型测量放大器为心电图信号提供了一个固定的5倍放大。
它的共模抑制比(CMRR)规格由94dB扩展到了3kHz,因此INA321可拒收共模干扰信号包括线频率及其谐波。
INA321的静态电流为40μA,停机模式电流小于1μA.
2.2心电图放大器
INA321输出地心电图信号被OA0(MSP430FG439中三个集成运算放大器之一)放大。
图
(2)为EKG放大器前端的电路图。
包括在被OA0放大的情况下,EKG信号总共被放大了500倍。
电极接头长度及收缩而产生的轻微不平衡都会导致共模信号偏移,进而在OA0输出时产生杂音。
如图(3)所示,线频谱(或线频含量)可被视为EKG信号的扩展轨迹。
这种扩展是由超过EKG信号的多余线频量导致的。
OA0部分的1-MΩ的反馈电阻器同一个4.7-nF容电器并联,提供了一个250Hz的高频衰减,并起到了一个滤波器的功能。
由于放大倍数过大,输出结果对电极接头同皮肤接触产生的阻力的变化非常敏感。
这导致放大了的差分信号的直流电量的变化,也使其自身(指输出结果的变化)表现为基于ECG基线的漂移。
这种现象被人们称之为基线漂移,它经常会导致心电图的波动形轨迹。
这个问题可通过带有OA1设计的模拟积分仪解决。
这个积分仪可以将放大5倍的EKG信号的直流电量整合(integrates不知道翻得对不对,不懂),然后再将其反馈到INA321上。
这种反馈使得INA321的输出能保持在不变的直流等级(电平),而不受接触皮肤产生的电阻变化的影响。
如果此仪器主要用于EKG的显示和监测,那么第三个运算放大器OA2可被用作DAC1和第三个电极接头之间的一个单位增益缓冲器。
它常同人体的右腿或胸腔右侧连接在一起,以监测此人的EKG。
DAC1是MSP430FG439上两个集成12位数字模拟转换器之一。
使用DAC1可使用户通过适当的软件算法(运算法则)执行一个数字基线漂移计划。
本文并未介绍此功能。
DAC1可提供一个中间供给电压水平,作为放大器线路的bias(偏压,不知道对不对)
3.信号处理与心跳检测
3.1心电图抽样
放大的EKG信号由内部被发送到芯片上的ADC12模拟数字转换器上的A1输入端。
ADC12以抽样频率fsample512Hz进行EKG信号的抽样。
通过用Timer_A(一种计时器)的脉冲激发ADC12的转换进而实现精确地采样周期。
Timer_A由ACLK(辅助时钟或模拟输入阻抗与时钟频率)计时。
ACLK由32.768Hz的低频晶体振荡器构成。
EKG最快的偏转在20-ms内,发生在ORS组群上。
为了从医学角度评估EKG波形,从整体上把握ORS组群是非常重要的。
512Hz抽样频率或2ms的采样周期能够保证在ORS组群上获得至少10个样本,也能保证ORS组群的完全数字化。
ORS组群也能作为每次心跳的固定标志。
因此ORS组群的获得对于心跳率的计算是必要的。
正常心跳率应在每分钟60到200下之间,或是3Hz到4Hz。
3.2过滤电源干扰(line-frequency不知道是线频还是电源干扰)
抽样EKG波形包括一些重叠的电源干扰。
这种干扰可通过数字化过滤样本而排除。
本仪器安装的过滤器为通频带上频6Hz,阻带下限频率30Hz的17-tap(tap可能是圈)低频有限脉冲响应(FIR)滤波器。
滤波器系数可变以弥补滤波器衰减,并能够在滤波器输出时额外放大EKG信号。
这使得EKG信号总的放大倍数超过了1000倍。
图(4)为FIR滤波器输出地EKG波形。
过滤后的样本能够用MSP430中的DAC0输出,然后用于EKG波形的模拟重组,或者也可以用MSP430的UART(通用非同步收发传输器)以115.2kbps的速度传送到电脑显示器。
3.3检测ORS组群
为了准确计算心跳,必须检测每次心跳的ORS组群。
而ORS组群是EKG波形中上升最快的部分。
如果EKG低通滤波样本能被区分开,或能被高频滤波,那么每次心跳的ORS组群就能够分离开。
本仪器使用的是转角频率2Hz的17-tap高通FIR滤波器。
过滤输出结果由原来的输出结果减去一个固定临界值得来。
这就排除了由P和T波群带来的干扰及其他人为运动带来的影响。
用这种方法可使ORS组群从EKG整体波形中区分开来。
图(5)显示的是从ORS辨别器的输出到心跳检测和心率运算法则的输入过程的信号。
3.4FIR(有限脉冲响应)滤波器
本仪器使用的是线性相位对称FIR滤波器。
因为对称滤波器的系数具有对称性,因此能减少一半数学乘法运算量。
滤波结果大约为16bits。
图(6)为本仪器中的低通滤波器的幅度/频率变化关系曲线图。
要注意滤波器的放大倍数。
这是由所有的系数乘以一个常数(恒定值)得到的。
图(7)为本仪器中的高通滤波器的幅度/频率变化关系曲线图。
滤波器系数由ScopeFIR计算得出。
ScopeFIR是一种滤波器设计和分析软件工具(来自)。
其他滤波器设计工具,包括MATLAB等,也可用于设计滤波器并计算滤波器系数。
3.5.计算心跳率
计算每分钟的心跳数时已三次心跳为一个平均值。
Cmainfunction(不知道什么意思,应该是C语言的一个函数)的两个变量,时间计数值和脉搏周期能准确地随时标变化。
ORS辨别器输出的每个样本同一系列临界值对比就能检测出一次心跳的情况。
每个样本周期中脉搏周期会增加一次。
由于样本每隔1/512秒发生一次,那么根据脉搏周期变量的数量跟踪时标就很容易了。
一个有128个样本的时窗可被用做带有计数器的防反跳时间(debouncetimeusingcounter不太懂)。
每检测到一次心跳,时间计数器会重新设定,带有四个箭头的LCD图标就会打开显示心跳。
一次心跳中如能检测到128个连续的样本,则连续的两次心跳之间会有明显的分隔,四箭头LCD图标此时会关闭。
三次连续心跳累积为一次脉搏周期。
在第三次心跳时,脉搏周期就可用于计算每分钟的心跳,然后重置。
每分钟的心跳率=1/[脉搏周期/(3⨯512⨯60)]=92160/脉搏周期
4.软件
本仪器使用的软件是由C语言编程,以嵌入式工作台启动的版本,在MSP430网页上可免费下载。
本文以Zip压缩文件的形式随附此仪器复制源码。
软件使用的是以汇编语言写成的专用16⨯16bitsignedmultiplyroutine(有符号的多例程)。
此程序同C语言的数学程式库的乘法功能相比可加快FIR过滤器的计算。
此功能可从使用longmul16(registerintx,registerinty)句法的C语言主程序中调用。
三个C语言源文件("Heartrate.c","HeartratewithDACoutput.c",and"HeartratewithEKGDemo.c"),以zip压缩文件形式随附。
文件名即表明其函数性质。
按照函数性质区分的C语言源文件及用于编程的mul.s43汇编程序源文件必须包括在设计中。
EKG心率监测设计的内存使用率为代码存储器1168bytes,数据存储器225bytes和constmemory(不知道是什么存储器)64bytes。
这只占了嵌入式工作台启动版本中C语言自由编译器4-Kbyte存储限制的四分之一。
CPU运行频率为2.097152MHz,使用锁时环(FLL)固定主时钟。
整个EKG程序,包括FIR过滤器,ORS检测,及心率计算,使用的是1MIPS的CPU频带宽度。
5.仪器检测
将双面PCB(不知道是印刷电路板还是电路基板)顶部和底部的两个方形板放置在LCD的两边作为同人体双手接触的电极接头。
使用时要装好电源跳线开/关键。
必须用双手的拇指和食指捏住两个方形板。
注意不要碰到PCB上其他任何通电区。
较好的办法是从电路板的边缘拿住。
为了获得较好的信号质量,手指和方形板之间的接触电阻应尽量小。
皮肤干燥的人可在手指上均匀的涂一层润肤霜。
图(9)是使用中的EKG电路板,
注意:
此仪器设计只供参考,不可用于医疗抢救及检测。
5.1PCScopeEKG展示
在使用"HeartratewithEKGDemo.c"程序时,在EKG电路板和电脑之间需要一个RS-232电平位移器。
这里只需要TXlineP2.4/UTXD0,因为串行通信没有使用任何信号转换。
串行通信到电脑的传输速率(波特率)为115.2kbps。
电脑必须使用Windows的命令行选项运行scope.exe,以演示EKG。
Scope.exe是一个开放的PC应用源程序。
为方便起见,此应用程序已附加在本文随附源文件中的oscilloscope.zip文件下。
图(9)是使用PCScope应用程序的EKG演示截图。