基于MSP430的远程实时心电仪的设计和实现-光学工程硕士论文_第1页
基于MSP430的远程实时心电仪的设计和实现-光学工程硕士论文_第2页
基于MSP430的远程实时心电仪的设计和实现-光学工程硕士论文_第3页
基于MSP430的远程实时心电仪的设计和实现-光学工程硕士论文_第4页
基于MSP430的远程实时心电仪的设计和实现-光学工程硕士论文_第5页
已阅读5页,还剩66页未读 继续免费阅读

基于MSP430的远程实时心电仪的设计和实现-光学工程硕士论文.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分类号 学号 M201072813 学校代码 10487 密级 硕士学位论文 基于 MSP430 的远程实时心电仪 的设计和实现 学位申请人: 刘 通 学 科 专 业 : 光学工程 指 导 教 师 : 罗志祥 副教授 答 辩 日 期 : 2013.1. 19 A Dissertation Submitted in Partial Fulfillment of the Requirements for the Degree of Master of Engineering Design and Implement of Remote real-time ECG monitor based on MSP430 Candidate : Liu Tong Major : Optical Engineering Supervisor : Associate Prof. Luo Zhixiang Huazhong University of Science ADC12CTL0为16位转换控制寄存器,控制了ADC12的大部分操作。由于要对 ADC12进行操作,所以应该首先打开ADC12。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 40 (2) ADC12CTL1|=SHS_1+CONSEQ_2; ADC12CTL1也是转换控制寄存器,和ADC12CTL0是ADC12的重要寄存器。这 里SHS_1选择采样触发输入源为定时器Timer_A,CONSEQ_2为转换模式选择位,这 里选择带通道多次转换。 (3) ADC12MCTL0|=SREF_4; ADC12MCTL0为16位转换存储器控制寄存器, 每个转换存储器ADC12MEMx都 有对对应的转换存储器控制寄存器。MSP430F149片内共有16个16位的转换存储器, 这组寄存器用来存放A/D转换结果。由于是12位ADC,所以只用其中低12位,高4 位在读出时为0。 0 0 0 0 0 MSB LSB (4) ADC12IE|=BIT0; 打开ADC中断。 如果ADC12转换时间比较长, 或者有几件事情需要MSP430F149 处理,那么就要用中断方式解决转换数据的读取,采用这种方式,在转换期间, MSP430F149可以处理其他事情,效率很高。所以,ADC12用转换结束信号(即中断) 作为中断请求,如果相应的中断是允许状态,在读取中断向量之后就可以直接存取转 换的数据了。 (5) CCR1=31980; CCR0=32000; 定时器Timer_A寄存器CCRx为捕获/比较寄存器,通过以上设计,即可精确的得 到ADC12的采样频率。其中,CCR0用作周期寄存器,CCR1用作捕获寄存器。在脉 冲上升沿时,捕获一个定时器数据(CCR1的计数器),这个数据在CCR1中读出;在下 降沿又捕获一个定时器数据(CCR0),即周期寄存器的数据。那么,两次捕获的定时器数 据差就是窄脉冲的电平高度。 (6) TACTL|=TACLR+TASSEL_2; TACTL为Timer_A的控制寄存器。 这里选择系统时钟MCLK作为定时器Timer_A 的时钟源,并清除定时器计数位。 4.1.2 数据包格式 系统ADC12以250Hz采样频率对心电信号进行采样, 可知每秒可以产生250个数 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 41 据点,又由于A/D转换器为12位,需要2字节来存储器一个数据点,所以每秒产生 500个字节的数据。 以每秒传送1个数据包来看,一个数据包共515个字节,包括15字节的数据头和 500字节的数据部分,如表4-1所示。 表 4-1 数据包格式 含义含义 起始字节起始字节 截止字节解释截止字节解释 数据包长度 1 3 表示整个数据包的长度(包括数据头部分) 患者 ID 4 7 表示心脏病人的 ID 号 数据长度 8 9 表示这一包里面的数据个数 采样间隔 10 11 表示 ADC12 采样的时间间隔(ms) 数据段 12 511 500 字节的数据 结束符 512 515 表示这个数据包结束 (1) 在数据前加上15字节的数据头能够使得接收数据包的出错率大大降低。在医 生服务器端相应的增加数据头检测机制,通过检测数据头是否为给定的数据头,来判 断该数据包是否正确接收。 (2) 数据包长度占3字节,且长度可变,使程序设计和处理更加灵活。 (3) 患者ID对应医生服务器中病人数据库中的ID, 可以方便的调出和查看不同ID 患者的实时心电数据,不用担心数据处理错误。 (4) 数据长度为500, 由于每秒产生250个采样数据点, 每个采样数据点占2字节, 所以每个数据包的数据长度为500字节。 (5) 采样频率为250Hz,即采样间隔为4ms,所以这里的采样间隔2字节为00 04。 (6) 结束符4字节规定为00 ff 00 ff,能够起到很好的数据排错功能。 本系统设置两个数据缓冲区:主缓冲区BUF1和过渡缓冲区BUF2。BUF1用于存 放ADC采样的结果,BUF2用于存放将要进行无线数据传输的数据。当一个数据包接 收完成后,立即将BUF1赋值给BUF2,让BUF1接续接收下一个数据包,不会影响下 一个数据包的接收。然后前一个数据包的数据在BUF2中就可以进行无线数据传输了。 医生服务器UI在收到发送来的数据包后就开始进行相应处理,进行数字滤波、显 示、心率计算等。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 42 4.2 远程实时心电仪端 远程实时心电仪端软件设计即为基于系统MSP430F149单片机的程序设计41,包 括GPRS模块驱动、 蓝牙模块驱动、USB模块驱动、ADC12控制四个部分。 由于ADC12 控制部分在4.1小节已经进行了介绍,故不再作介绍。下面介绍三个模块的驱动设计。 4.2.1 GPRS 模块驱动设计 GPRS模块是基于华为公司的MC323无线模块为中心的通信模块。通过 MSP430F149单片机给MC323发送AT指令来实现GPRS模块功能。 (1) AT指令简介 AT指令时用来控制TE(Terminal Equipment)(如单片机、PC等用户终端)和 MT(Mobile Terminal)(如GPRS模块、 蓝牙模块、 移动台等移动终端)之间交互的规则42。 如图4-1所示。 图 4-1 AT 指令流程图 每个AT命令中只能包含一条AT指令, 对于由终端设备主动向单片机报告的 URC指示或者response相应,也要求一行最多有一个,不允许上报的一行中有多 条指令或者相应。AT指令以回车作为结尾,响应或上报以回车换行为结尾。 AT指令是以AT作首,以字符结束的字符串,AT指令的响应数据在返回码中。每 个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线 路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理43。 (2) AT指令的格式 为了增加AT命令以及响应格式的可读性及规范性,AT指令的格式一般为: ATXXX=, 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 43 其中,XXX表示实际的AT命令,用于实现指定的功能;arg表示实现该XXX命令的 参数,参数的个数不定,可能没有,也可能有多个。 AT指令返回结果的格式如下: OK 其中,CR表示回车符,LF表示换行符,OK表示AT指令执行成功,result为可 选返回结果,即当AT指令要求有返回结果时,返回result结果。 (3) GPRS模块控制 利用MSP430F149单片机的I/O对MC323模块进行控制,需采取如下步骤: 1) 设置命令行结束符 ATS3=013 该命令是设置命令行结束符S3,S3以ASCII码值形式保存命令结束符。这里设置 S3=013,即设置命令行结束符为字符CR,ASCII码值为0x0D。 在使用S3=命令来设置S3时,须使用当前的S3字符来作为此行命令的结 束符, 而此行命令的结果码中则会立即使用新设置的S3字符, 而不会等到下一行命令。 2) 关闭回显 ATE=0 该命令设置MC323模块为不回送从MSP430F149接收的字符。 如果不设置回显命 令,那么每次向MC323发送AT指令后,无论有无实际数据需要(如查询操作),系统 都会收到返回码,从而增加了系统解析AT回显命令的时间。因此这里关闭回显,从而 减小客户端解析AT命令的时间,提升系统工作效率。 3) 关闭信号强度主动上报 ATRSSIREP=0 和关闭回显相同,这里关闭信号强度主动上报也是减小系统解析AT指令的时间, 增加系统工作效率。 4) TCP初始化 ATIPINIT=,“card”,“card” 系统采用基于TCP/IP协议的数据通信,在进行TCP/IP通信之前,需要对MC323 进行TCP连接初始化,才能进行TCP链接的打开、TCP数据的传输等。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 44 该命令用来初始化TCP的链接。在初始化完成后,MC323将获得一个本地IP,只 有完成这些才能进行下一步的操作。 本AT指令中的两个参数“card”和“card”表示用户名和密码,在无特殊要求的 情况下可以忽略。 该AT指令如果执行完成,将返回OK 5) 查询TCP是否已经初始化 ATIPINIT? 该AT指令为查询指令,将会产生返回结果码,用于查询当前TCP连接是否初始 化完成。 如果已经初始化,将返回得到的IP地址、APN等信息;如果初始化未完成,将返 回IPINIT:0。表示初始化不成功,需重新初始化。 6) 建立TCP/IP连接 ATIPOPEN=1, “TCP”,“115.156.236.69”,9999,6666 该命令为整个GPRS驱动设计的核心指令,该命令用来与单个或多个远程服务器 通过无线方式建立链接,完成数据交换,支持TCP、UDP两种方式。 该指令中第一个参数“1”表示链接号,通常,一个TCP/IP连接有5个链接号, 即5个连接通道,根据网络状态的不同,可以动态的进行更改。 指令中第二个参数“TCP”表示建立的链接为TCP链接而非UDP链接。 指令中第三个参数为远端服务器的IP地址, 表示系统将要链接的目标IP地址。 在 本系统中,即为远端的医生服务器的IP地址。 指令中第四个参数“9999”为要链接的远端服务器的端口,范围在165535,该端 口可以任意设置,但需与远端服务器的端口保持一致。 指令中第五个参数“6666”为本地的收发端口,这里可有可无,当不设置时,系 统会自动分配一个端口。取值范围为165535。 如果链接建立成功, 系统会收到从MC323返回的结果码OK。 7) 数据传输 ATIPSENDEX=1,2,515 在进行了TCP初始化、建立TCP连接后,就可以进行数据传输了。该命令通过已 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 45 经建立的链接发送ADC数据,支持4种模式发送数据。 第一个参数“1”表示已经建立的链接号。 第二个参数“2”表示发送的模式。这里选择第二种,即限长透明传输模式,在这 种模式下,先发送命令告诉MC323要发送数据的长度,等待MC323返回OK后,再 接着输入数据直至达到请求的长度。例如:用户想发送4字节数据 0x00, 0x08, 0x1B, 0x2C,可输入命令IPSENDEX=1,2,4,然后等待 OK 返回,接着输入 4字节数据 0x00,0x08,0x1B,0x2C,接收端将收到此 4字节数据。 第三个参数即为数据长度。 本系统采用循环发送数据的方式,以每秒钟发送1次数据包来实现和远端服务器 的通信。 8) 关闭TCP链接 AT=IPCLOSE=1 AT=IPCLOSE=7 当系统关闭之前或要断电时,需首先关闭正在进行数据传输的TCP链接,并从 GPRS网络中注销退出。 该命令用来关闭TCP链接,并注销GPRS网络。 参数“1”表示要关闭的链接号,参数“7”表示MC323模块从网络注销,类似拨 号的断开网络。 4.2.3 蓝牙模块驱动设计 蓝牙模块的驱动同样是利用MSP430F149单片机的串口来向蓝牙模块发送AT指令 来实现的,蓝牙模块的设置相对于GPRS模块来说较为简单,现说明如下。 (1) 测试通讯 AT 用于测试蓝牙设备是否工作,如果正常,则返回OK。 (2) 更改蓝牙串口通讯波特率 AT+BAUD8 设置蓝牙串口通讯波特率为115200,这里设置的串口波特率要和MSP430F149单 片机串口的波特率要相同才行,否则通讯会不正常。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 46 设置好了波特率后,下次上电使用无需在进行设置,可以掉电保持波特率。 (3) 更改蓝牙配对密码 AT+PINxxxx 参数xxxx为索要设置的配对密码,模块在出厂时的默认配对密码为1234。 参数可以掉电保存,只需要修改一次。 以上各参数一经修改设置,永久有效,下次上电后仍有效,无需再进行设置,所 以设置完毕后,就可以进行串口通讯了。 4.2.4 USB 驱动设计 (1) CH376模块命令 本系统USB模块采用U盘文件管理控制芯片CH376。对CH376的控制是通过 MSP430F149单片机通过I/O口以SPI接口方式给CH376发送命令实现的。 本系统中所用到的命令如表4-2所示。 表 4-2 本系统用到的部分 CH376 命令 代码 命令名称 CMD_ 输入数据 输出数据 命令用途 代码 命令名称 CMD_ 输入数据 输出数据 命令用途 06H CHECK_EXIST 任意数据 按位取反 测试通讯接口和工作状态 数据 16H 0BH SET_SDO_INT 中断方式 设置 SPI 接口的 SDO 引脚的 中断方式 0CH GET_FILE_SIZE 数据 68H 文件长度(4)获取当前文件长度 15H SET_USB_MODE 模式代码 (等 10uS) 操作状态 设置 USB 工作模式 22H GET_STATUS 中断状态 获取中断状态并取消中断 请求 2FH SET_FILE_NAME 字符串(n) 设置将要操作的文件的文 件名 30H DISK_CONNECT 产生中断 检查磁盘是否连接 31H DISK_MOUNT 产生中断 初始化磁盘并测试磁盘是否就绪 32H FILE_OPEN 产生中断 打开文件或目录,枚举文件和目录 34H FILE_CREATE 产生中断 新建文件 35H FILE_ERASE 产生中断 删除文件 36H FILE_CLOSE 是否允许更新 产生中断 关闭当前已经打开的文件或目录 39H BYTE_LOCATE 偏移字节数(4) 产生中断 以字节为单位移动当前文件指针 3CH BYTE_WRITE 请求字节数(2) 产生中断 以字节为单位向当前位置写入数据块 2DH WR_REQ_DATA 数据流(n) 数据长度 向内部指定缓冲区写入请求的数据块 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 47 表中输出数据为“产生中断”的命令通常需要时间去执行操作。CH376在命令执行 完成后向MSP430F149单片机请求中断,MSP430F149读取中断状态作为该命令的操 作状态。CH376的中断状态如表4-3所示。 表 4-3 操作中断状态表 状态字节 状态名称 中断状态分析说明 状态字节 状态名称 中断状态分析说明 14H USB_INT_SUCCESS USB 事务或者传输操作或者文件操作成功 15H USB_INT_CONNECT 检测到 USB 设备连接事件 16H USB_INT_DISCONNECT检测到 USB 设备连接事件 17H USB_INT_BUF_OVER 传输的数据有误或者数据太多缓冲区溢出 18H USB_INT_USB_READY USB 设备已经被初始化(已经分配 USB 地址) 1DH USB_INT_DISK_READ 存储设备读操作,请求数据读出 1EH USB_INT_DISK_WRITE存储设备写操作,请求数据写入 1FH USB_INT_DISK_ERR 存储设备操作失败 (2) USB接口控制及 U 盘读写 对USB接口的控制以及U盘的读写操作都是通过单片机MSP430F149的I/O口来 控制的,要完成USB数据的传输,首先要对CH376芯片进行初始化工作,初始化完 毕后,等待U盘的插入并进行U盘的初始化,随后就可以对U盘中的文件进行读写操 作了。 具体的操作过程如下。 1) 测试MSP430F149和CH376之间的通讯接口 发送命令:CMD_CHECK_EXIST 第一步要检查CH376是否正常工作。 该命令需要输入1个数据, 可以是任意数据, 如果CH376正常工作, 那么CH376的输出数据时输入数据的按位取反。 这里输入57H, 这输出数据应该是A8H才是正常工作,否则工作不正常。 2) 设置USB工作模式 发送命令:CMD_SET_USB_MODE 该命令需要输入1个数据用于设置USB工作模式,这里模式代码为06H,即设置 为已启用的USB主机方式,自动产生SOF包。该模式是指能自动检测U盘是否连接, 当U盘连接或断开时都会产生中断通知MSP430F149,并且CH376会自动定时产生 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 48 USB帧周期开始包SOF发送给已经连接的USB设备。 3) 设置SPI的SDO引脚的中断方式 发送命令:CMD_SET_SDO_INT 该命令首先需要输入1个数据16H,然后输入新的中断方式。这里输入90H作为 新的中断方式, 即设置SDO引脚一直为输出, 且在SCS片选无效时兼做中断请求输出, 等效于INT#引脚,供单片机查询中断请求状态。 4) 检测U盘是否连接 发送命令:CMD_DISK_CONNECT 该命令用于检查U盘是否连接,不支持SD卡。CH376在命令执行完成后向 MSP430F149请求中断。如果操作状态时USB_INT_SUCCESS,那么说明有U盘连接, 否则,U盘未连接,需继续等待U盘的连接。 该命令每1秒钟执行一次,用于循环检查U盘的连接情况,如果U盘连接上,则 跳出循环,执行后面的程序。 5) U盘初始化 发送命令:CMD_DISK_MOUNT 该命令用于初始化磁盘并测试磁盘是否就绪。新连接的U盘必须通过该命令进行 初始化,然后才能进行文件读写操作,有些U盘可能需要多次初始化才能返回操作成 功状态USB_INT_SUCCESS。另外,在文件操作的过程中,该命令也可以随时用于测 试磁盘是否就绪。 该 命 令 同 样 采 用 每1秒 循 环 执 行 , 如 果U盘 初 始 化 成 功(返 回 USB_INT_SUCCESS),则跳出循环,执行后面的程序。 6) 打开U盘根目录下的指定文件 发送命令:CMD_SET_FILE_NAME CMD_FILE_OPEN 第一条命令用于设置将要操作的文件或文件夹的文件名或者目录名。 输入数据以0 为结束的字符串,不超过14个字符。第二条命令用于打开指定的文件或者文件夹。打 开文件时读写文件之前的必要操作。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 49 如果成功开发目录,则中断状态返回ERR_OPEN_DIR,此时文件长度无效,为 0FFFFFFFFH。如果成功打开文件,那么中断状态返回USB_INT_SUCCESS,此时文 件长度有效。如果没有找到指定文件,那么中断状态返回ERR_MISS_FILE。 7) 新建文件 发送命令:CMD_FILE_CREATE 当指定文件不存在时, 就需要新建文件。 同样需要先通过CMD_SET_FILE_NAME 命令设置将要新建的文件的文件名。 8) 移动到文件末尾 发送命令:CMD_BYTE_LOCATE 以字节为单位移动当前文件指针。该命令需要输入偏移字节数,这里输入 0FFFFFFFFH,表示将文件指针移动到末尾。 9) 向文件写入数据 完整的字节写操作步骤如下: 1) MSP430F149发出CMD_BYTE_WRITE命令并输入请求写入的字节数,开始写 操作; 2) CH376检查请求的字节数,如果为0,那么执行刷新文件长度操作,将内存中 长度变量保存至U盘中,完成后输出中断状态为USB_INT_SUCCESS,转步骤4; 3) CH376检查剩余的请求字节数,如果为0,那么结束写操作并中断通知 MSP430F149,中断状态为USB_INT_SUCCESS,否则根据请求字节数、内部缓冲区状 态计算出本次允许写入的字节数,并从请求字节数中减去本次允许字节数得到剩余的 请求字节数,同时移动当前文件指针,然后中断通知MSP430F149,中断状态为 USB_INT_DISK_WRITE。 4) MSP430F149分析中断状态,如果是USB_INT_DISK_WRITE,则通过 CMD_WR_REQ_DATA命令得到本次允许的字节数并写入数据块后继续,如果是 USB_INT_SUCCESS,那么转步骤6; 5) MSP430F149发出CMD_BYTE_WR_GO命令通知CH376继续写操作,CH376 自动转步骤3; 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 50 6)请求写入的字节数全部写入完毕,整个写操作结束。 图4-2所示为往U盘写入一次数据包时的结果。当然,实际的情况可能不止写入 一次数据包,而是多次写入数据包。相应的,在服务器UI界面,有相应的数据校验机 制来对数据包的正确性进行检测。 图 4-2 USB 读写情况 这里的患者ID号暂定为手机号,该系统由于还未市场化、商用化,故系统的维护 工作暂不放在本论文研究的范围内。 由于每次往U盘中写入的只能是字符,所以再写入U盘之前,先要将ADC得到 的数字数据进行ASCII转字符,那么一个字节的ADC数据就对应3个字节的字符。并 且每秒钟写入一次, 一个数据包500个字节, 则每秒要向U盘写入1500个字节的数据。 除了向U盘中写入ADC数据外,还应该写入能够记录该病人信息的的一些数据, 如病人ID、数据长度、测试时间等信息。 (3) USB掉电保护 当系统因为电池没电或因故障而突然断电时,此时如果未经掉电保护处理,那么 正在ADC处理的心电数据以及正在向U盘中写入的ADC数据都将会丢失。因此,对 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 51 心电数据进行掉电保护是很有必要的。 系统利用MSP430F149芯片内部集成的flash模块来实现掉电保护,由于flash存 储器具有非易失性,能够掉电保存。因此可以先将ADC数据暂存于flash存储器中, 此时就算系统断电,存在flash中的数据也不会丢失,等系统上电后,便将flash存储 器中暂存的数据读出来,进行写U盘操作,就可以数据不丢失,真正起到掉电保护的 作用。具体过程如图4-3所示。 图 4-3 USB 断电保护 图 4-4 一次 U 盘写入的完整结果 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 52 如果flash中确实有ADC数据存在,则先将flash中的数据读出到RAM中,再写 入U盘。如图4-4所示。 考虑到ADC转换会产生中断,在中断程序执行时,单片机不允许操作flash模块, 因此需要在ADC转换完成之前操作flash。ADC是每4ms转换一次,即每4ms产生一 次中断,即4ms内必须完成一次对flash的操作。 Flash的操作包括擦写数据块、写入数据两步,擦写数据块用时较少,但写入庞大 的ADC数据时就用时较长,因此写入数据时需分段写入,即每4ms写入一次数据,然 后等待ADC中断程序处理完毕,再进行下一轮的写入。 4.3 医生服务器 UI 端 本部分为基于PC的软件开发,以visual studio 2010作为开发平台,以MFC为框 架进行应用程序的开发44-46。 图 4-5 服务器 UI 界面 UI用户界面, 这里设计的医生服务器UI旨在为医生设计一个直观的用户界面 来显示病人心电变化情况,如病人ID、心电波形、心率等情况。 MFC(Microsoft Foundation Classes),是微软提供的基础类库,以C+类的形式封 装了Windows的API,并且包含了一个应用程序框架,从而减小了应用程序开发人员 的工作量,值得一提的是,MFC包含的类中包含了大量用于绘图的封装类和很多 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 53 Windows的内建控件和组件的封装类。因此用于需要显示图形类的应用程序而言,选 用MFC框架是较为适合的。 经过开发得出的UI界面如图4-5所示。本部分主要介绍心电信号的处理和显示。 4.3.1 心电信号的数字滤波 前已提及,在影响心电信号质量的诸多噪声中,尤以50Hz的工频干扰最为明显, 通过一般的模拟滤波器如双T陷波器很难将其完全的滤除,而且设计模拟滤波器会增 加系统成本和体积,增大系统功耗。因此,本系统采用数字滤波的方法来对50Hz噪声 进行处理,该方法简单易行。 该数字滤波器设计平台基于matlab,设计一个500Hz采样频率的2阶IIR数字滤波 器47-48,该陷波滤波器用于滤除50Hz的工频干扰。采用零极点累试法,设置陷波频率 为50Hz,陷波带宽为10Hz,为了达到这些要求,可以实现下面的传递函数: 12 12 1 1.618 ( ) 1 1.5160.8783 zz H z zz (4-1) 该传递函数可以转换为可编程的递归算法: 1212 1.6181.51640.8783 kkkkkk NOutNInNInNInNOutNOut (4-2) 式中,k表示当前输入输出值,k-1表示前一次输入或输出的值,k-2表示前二次输入 或输出值。 将上述公式转换为实际的C/C+代码即可实现数字滤波。值得注意的是,由于上 述公式中涉及到浮点数的计算,如果不做整数处理,将会造成很大的时间消耗,并使 得系统效率降低,对于实时性要求高的本系统而言是应该尽量避免的。因此,考虑到 系统效率问题,应该将浮点运算变为整数运算,方法是在上述公式两端乘上一个系数 4096,则公式变成以下形式。 4096662714096262111 35982 4096 L iNIniNInL iNInL iNoutL iNout iNOut (4-3) 该公式实现50Hz的2阶陷波。 虽然在基于PC上设计数字滤波器能够设计更高阶的滤波器,但实际上,设计一个 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 54 2阶滤波器对本系统而言已足够满足要求。 图4-6显示的是未经50Hz陷波的心电波形,图4-7显示的是经过50Hz陷波的心 电波形,二者区别明显,可以很清楚的看到数字滤波后的效果。 图 4-6 数字滤波前的心电波形 图 4-7 数字滤波后的心电波形 4.3.2 心率的计算 要能较为准确的计算心率,首先要心电信号的波形有所了解。一个典型的心电周 期波形图如图4-2所示。 从图4-2中可以看出,在一个心跳周期中,最明显的标志就是QRS过程49-50,因 为这个过程心电信号的电压波动很大,摆幅明显。且R波的电压幅值远远高于其他波 峰的幅值。因此,若能在一定时间内能够检测出R波出现的次数,就有办法计算出心 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 55 率值。 图 4-8 典型的心电周期图 很显然,心脏每跳动一次,就会有一次QRS过程,就会产生一次R波。因此,心 率可以这么理解,即在1分钟时间内产生R波的次数。 由于在一秒时间内,R波可能不会出现,所以不能每秒钟都进行实时心率的计算。 系统这里选取每4秒钟计算一次心率, 由于每秒钟有500个心电数据,4秒钟就是2000 个数据。即每2000个数据就可以计算出实时心率,瞬时性非常好,远远强过人工掐脉 (人工掐脉得到的心率是一分钟的平均心率,不是瞬时心率)。 假设要求的心率为X,那么心率计算的数学公式如下(R波个数是指在大小为2000 的数据缓冲里,R波出现的次数): X/(60500)=(R波个数-1)/(最后一个R波位置-第一个R波位置) (4-4) 求出X。在式(4-4)中,(最后一个R波位置-第一个R波位置)得到的是最后一个R波和 第一个R波之间隔了多少个数据。 (R波个数-1)得到的是在这么多个毫秒内,经历多少个心跳周期。为什么要减去一 呢?假设一个延x轴传播的二维波,两个波峰之间是多少个波动周期呢?一个。三个 波峰之间是多少个波动周期呢?两个。所以要减去一,得到的才是心跳周期的个数。 有了这个公式,再加上一个好的R波检测算法,即可实时计算出心率。这里R波 检测算法采用比较成熟的阈值法,即根据心电信号的幅值情况,选择一个较为合适的 阈值,作为判定是否存在R波的方法。由于R波较其他波的波峰在幅值上要大很多, 所以用阈值法较为适合。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 56 4.3.3 心电波形的显示 在服务器UI端将进行数字滤波处理后的数字心电信号进行DAC转换并显示在UI 界面上。 心电信号经前端12位的ADC采样,得到的数据最大不会超过4096,由于ADC 参考电压为3.3V,但心电信号放大1000倍左右幅值仅1V左右,虽然前端模拟电路对 信号进行了1V的抬升,幅值也就2V左右。因此,在服务器UI上进行DAC转换的最 大刻度选择3000左右即可,对应模拟电压2.4V左右。如下式表示: ADC3.3(2.4V) = 1240963000 V ADCDAC 参考电压最大的实际心电电压 位幅度幅度 (4-5) 在服务器UI端,进行心电数据的DAC恢复,且根据PC显示器的物理分辨率来 设置数据点与数据点之间的像素间隔。 为了便于观察, 将数据点之间的像素间隔设为2, 这样一个数据包500个字节就会有1000个像素的跨度,对于一个19寸的液晶显示器 来说,能够至少完全显示1个数据包的波形,方便医生观察。 由于数据点之间的间隔较小(只有2个像素),因此可以用直线直接进行拟合,误差 较小。这里实现该显示功能的具体程序由于篇幅原因不做介绍。 4.4 测试及结果 图 4-9 测试结果 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 57 在完成了服务器端UI界面的软件开发后,就对系统进行测试。本测试是本人身上 佩戴医用心电电极,根据手机号码SIM卡进行GPRS通讯,并在服 务器端进行心电波形的实时显示。得到的波形结果如图4-9和图4-10所示: 图 4-10 测试结果 图4-9显示的心率为83,图4-10显示的心率为96,分别为不同时段,不同身体状 态时所测的。结果满足系统要求。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 58 5 结论和展望 本论文研究设计了一种低成本低功耗的远程实时心电仪系统,在能够实现远程心 电仪基本的功能如数据通信、数据显示、心率计算等之外,做到了成本低、功耗低、 体积小、实时性高等特点,极大了方便了在家中或户外的心脏病人,加强了对心脏病 人的保护。 本论文本着低成本、低功耗的原则,进行了系统方案的提出和论证,并对系统硬 件部分和软件部分进行了详细的设计,并经过测试后通过,得到的结论如下所述: (1) 系统选择超低功耗的TI公司的MSP430系列单片机作为本系统的主控核心。 该系列单片机不仅功耗超低,而且片内的资源也十分的丰富,其中含有的12位ADC 模块和flash模块都在本系统中得到使用,对本系统来说非常的适合,且性价比高。 (2) 本系统对前端模拟电路进行了精心的优化设计,整体上为两级放大电路,并采 用功耗低、共模抑制比高的仪表放大器AD620作为第一级放大电路的放大器,能够很 好的抑制共模噪声,放大有效的心电信号;后面接一个1V的电压抬升电路使信号能够 被ADC采样。整个模拟前端系统做到了功耗低、元器件少、性能优良。 (3) 系统功能丰富,使用灵活。该便携式心电仪设有三个功能:GPRS、蓝牙、U 盘。用户可以通过对应的按钮自由切换,使用十分方便。 (4) 服务器UI端采用数字滤波,免去了传统的模拟滤波器,使得系统成本更低、 功耗更低,且效率更好。 与此同时,本系统还存在着尚需改进的地方。 (1) 系统缺乏相应的应急机制。即当网络发生拥塞时,病人端无法将当时的心电信 号传达到远端的医生,而医生端也不清楚病人这边的情况,缺乏相应的提醒功能和应 变机制。在以后的设计中,可以利用无线模块的网络强度信号主动上报功能来提醒病 人或医生。 (2) 加入短信业务功能。由于医生不一定会一直坐在服务器旁边看着电脑,因此病 人在准备发送数据之前先用短信发给医生,提醒医生将有数据发送,让医生做好诊断 病人的准备。利用无线通讯SMS(short message service)可以做到发送数据的功能。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 59 (3) 建立病人数据库。由于本系统为试验品,尚没有进行商用,所以没有做很多的 数据存储工作,如病人ID、心率、心跳波形等。这对日后进行系统和数据维护很有必 要。利用MFC的文档视图类框架可以方便的实现对病人信息的存储,方便以后打开查 看和参考。 本论文将主要的精力放在了硬件设计上,在完成远程实时心电仪的基本功能外, 力求做到低功耗和低成本,在功能的完善性和日后的维护方面还有着很大的提升空间。 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 60 致 谢 首先,非常感谢我的导师罗志祥老师。在我攻读硕士学位的两年半的过程中,罗 老师给予了我很大的关心和指导,从罗老师这里我学到了很多硬件和软件方面的专业 知识,我的毕业论文,得到了罗老师悉心的指导和帮助,无论是从选题还是到论文都 完成的很顺利。 我也要感谢我的父母对我的学习和生活上的支持和鼓励,没有他们的鼓励和关怀, 也许我就不能继续我的求学之路。 最后,我还要感谢陈亮同学在我的毕业课题上对我的帮助,正因为有了团队合作 和交流,才能在课题完成过程中上克服一个有一个的困难。 我要向在百忙之中抽时间对本文进行审阅、评定和参加本人论文答辩的各位师长 表示感谢! 刘 通 二一二年十二月喻园 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 61 参考文献 1 科尔达. 基于MSP430 FG439的心电仪. 杭州: 科尔达科技有限公司, 2008. 25 2 Yang Xue, Wu Shui-cai, Zhang Song, et al. Application and development of electrocardiogram monitoring for homecare. Journal of Clinical Rehabilitative Tissue Engineering Research, 2007, 11(22): 43924394 3 Wang Hong-peng, Yan Xiao-wei, Yang Xiao-zong. Research and design of ECG telemonitoring system based on CDMAIX. Computer Engineering and Desing, 2006, 27(18): 33243327 4 Hande Alemdar, Cem Ersoy. Wireless sensor networks for healthcare: A survey. Computer Networks, 2010, 54(15): 26882710 5 Morales D P, Garcia A, Castillo E, et al. Flexible ECG acquisition system based on analog and digital reconfigurable devices, Sensors and Actuators A: Physical, 2011, 165(2): 261270 6 张旭. 便携式远程实时动态心电监护系统的研究: 硕士学位论文. 哈尔滨: 东北 农业大学, 2010 7 Chen Hao, Zhou Lianshuang, Yu Jiequan. Development and appliacation of a portable device for cardiac remote monitoring. Journal of Biomedical Engineering, 2010, 27(3): 666670 8 胡大可. MSP430系列单片机C语言程序设计与开发. 北京: 航空航天大学出版社, 2003. 3641 9 张东亮. DSP原理与应用. 北京: 机械工业出版社, 2012. 85100 10 郑玉珍. DSP原理及应用. 北京: 机械工业出版社, 2012. 5561 11 朱兆优, 陈坚, 邓文娟. 单片机原理与应用: 基于STC系列增强型8051单片机. 北京: 电子工业出版社, 2012. 3337 12 王亮. 基于DSP的心电监护系统的设计与开发: 硕士学位论文. 山东: 山东大学, 2010 13 王建校, 危建国, 孙宏滨. MSP430 5xx/6xx系列单片机应用基础与实践. 北京: 高 等教育出版社, 2012. 7781 华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 62 14 王昊, 李昕. 集成运放应用电路设计360例. 北京: 电子工业出版社, 2007. 5761 15 (日) 马场清太郎. 运算放大器应用电路设计. 北京: 科学出版社, 2007. 122125 16 丁玉美, 高西全. 数字信号处理. 西安: 西安电子科技大学出版社, 2005. 8889 17 赵红怡, 张常年. 数字信号处理及其MATLAB实现. 北京: 化学工业出版社, 2002: 6869 18 楼顺天, 李伯菡. 基于MATLAB的系统分析与设计. 西安: 先电子科技大学出版 社, 1999. 4144 19 Liu Yang. Can ARM MCU occupy absolute advantage on MCU market. Edn China, 2010, 18(9): 8182 20 沈建华, 杨艳琴. MSP430系列16位超低功耗单片机原理与实践. 北京: 北京航空 航天大学出版社, 2008. 2225 21 Sahambi J S. Using wavelet transtorms for ECG characterization. IEEE BME, 2001, 3(5): 7783 22 Kong K Y, CY NG, Kong. Wed-Based Monitoring of real-time ECG date. IEEE Computers in Cardiology, 2000, 38(2): 2942 23 蒋鑫, 刘红星, 何爱军等. 生物电采集中右腿驱动电路参数的确定. 北京生物医 学工程, 2011, 30(5): 506511 24 Winter B B, Webster J G. Driven-Right-Leg Circuit design. IEEE Transactions on Biomedical Engineering, 1983, 30(1): 6266 25 Wong A, Pun K P, Zhang Y T, Choy CS. An ECG measurement IC using driven-right-leg circuit. IEEE ISCAS, 2006: 345348 26 孙宇舸, 叶柠, 于艳波. 基于右腿驱动技术的脑电信号放大器的设计. 东北大学 学报: 自然科学版, 2010, 31(6): 777781 27 Texas Instruments, Inc., MSP430x13x, MSP430x14x, MSP430x14x1 Mixed Signal microcontroller Data Sheet. U.S.A., 2004. 1518 28 Yu M Chi, Stephen R Deiss. Non-contact Low Power EEG/ECG Electrode for High Density Wearable Biopotential Sensor Networks. IEEE BSN, 2009. 246250 29 Wayne J Smith, John R LaCourse. Non-Contact Biopotential Measurement from the Human Body Using a Low-Inpedance Charge Amplifier. IEEE Bioengineering 华 中 科 技 大 学 硕

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论