心电信号采集系统课程设计方案_第1页
心电信号采集系统课程设计方案_第2页
心电信号采集系统课程设计方案_第3页
心电信号采集系统课程设计方案_第4页
心电信号采集系统课程设计方案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

心电信号采集系统课程设计方案一、课程设计概述1.1设计背景与意义心电信号(ECG)是反映心脏电活动的生物电信号,其波形特征(如P波、QRS波群、T波)可用于心脏功能评估及心律失常等疾病初步诊断。本课程设计通过搭建小型化心电信号采集系统,掌握生物电信号的特性、前置放大、滤波、模数转换及数据可视化等核心技术,培养电子技术、信号处理在生物医学工程领域的应用能力,为后续医疗设备设计与开发奠定基础。1.2设计目标功能目标:实现单导联心电信号的实时采集、滤波、显示与数据存储,可清晰识别P波、QRS波群、T波;性能指标:输入阻抗≥5MΩ(减少信号衰减);共模抑制比(CMRR)≥80dB(抑制工频干扰);带宽0.05-100Hz(覆盖心电信号有效频率范围);采样率≥250Hz(满足Nyquist采样定理,避免混叠);信噪比(SNR)≥30dB(确保波形清晰);教学目标:理解心电信号的生理机制与特性,掌握模拟电路(放大、滤波)、数字电路(ADC)及嵌入式系统(单片机编程)的协同设计方法。1.3设计依据技术标准:《心电图机技术要求》(GB9706.15-2008)、《医用电气设备第1部分:安全通用要求》(GB9706.1-2020);理论基础:生物医学信号处理、模拟电子技术、数字信号处理、嵌入式系统原理;参考资料:《生物医学传感器与测量》(黄国亮著)、Arduino/PIC单片机编程手册、心电信号滤波算法文献。二、系统总体方案设计2.1系统组成架构本系统采用“传感器模块→模拟前端模块→数字处理模块→显示存储模块”的四级架构,具体组成如下:graphTDA[心电电极(传感器)]-->B[模拟前端模块(放大+滤波+电平抬升)]B-->C[数字处理模块(单片机+ADC)]C-->D[显示模块(OLED屏)]C-->E[存储模块(SD卡)]C-->F[上位机(PC端,可选)]G[电源模块(3.3V/5V)]-->AG-->BG-->CG-->D2.2各模块功能说明模块名称核心功能关键技术要求传感器模块采集人体体表心电信号(I导联:左臂-右臂)采用Ag/AgCl一次性心电电极,减少极化电位干扰模拟前端模块1.差分放大(将μV级信号放大至V级);2.滤波(去除工频、肌电干扰);3.电平抬升(将负信号转为正信号,适配ADC输入范围)差分放大倍数≥1000倍;滤波截止频率0.05Hz(低通)、100Hz(高通)、50Hz(陷波)数字处理模块1.模数转换(将模拟信号转为数字信号);2.数据处理(简单滤波算法优化波形);3.控制显示与存储ADC分辨率≥12位;采样率250Hz;支持I/O口扩展显示存储模块1.实时显示心电波形(2-3秒波形滚动);2.存储原始数据(.txt/.csv格式)OLED屏分辨率≥128×64;SD卡支持16GB及以上存储电源模块为各模块提供稳定直流电源采用锂电池(3.7V)供电,经稳压模块输出3.3V/5V,纹波≤10mV三、硬件电路设计3.1传感器模块(心电电极)电极选择:采用3个Ag/AgCl一次性心电电极(左臂LA、右臂RA、右腿RL),其中LA和RA为信号电极(采集I导联信号),RL为右腿驱动电极(抑制共模干扰);连接方式:电极通过屏蔽线连接至模拟前端,屏蔽层接地(减少电磁干扰),线缆长度≤1m(避免信号衰减)。3.2模拟前端模块(核心电路)3.2.1差分放大电路采用仪表放大器AD620实现差分放大,优势是输入阻抗高、CMRR大,电路设计如下:放大倍数计算公式:A_v=1+\frac{2R_G}{R_1},其中R_G为增益电阻,R_1为内部固定电阻(24.7kΩ);设计参数:取R_G=247Ω,则放大倍数A_v=1+\frac{2×247}{24700}=101倍(一级放大),后续通过运算放大器LM358进行二级放大(10倍),总放大倍数1010倍,满足μV级信号放大需求。3.2.2滤波电路50Hz陷波电路(去除工频干扰):采用双T网络陷波电路,中心频率50Hz,衰减≥20dB,元器件参数:R=16kΩ,C=200nF(计算公式:f_0=\frac{1}{2πRC});低通滤波电路(去除高频肌电干扰):采用二阶RC低通滤波,截止频率100Hz,参数:R=16kΩ,C=100nF;高通滤波电路(去除基线漂移):采用一阶RC高通滤波,截止频率0.05Hz,参数:R=33MΩ,C=0.1μF。3.2.3电平抬升电路由于心电信号包含负电压成分(范围约-0.5V~+0.5V),而ADC输入通常为0-3.3V,需通过加法电路抬升电平:采用运算放大器LM358,将信号与1.65V参考电压(3.3V/2)叠加,输出信号范围变为1.15V~2.15V,适配ADC输入范围。3.3数字处理模块3.3.1单片机选型与ADC设计单片机选择:采用ArduinoUno(基于ATmega328P芯片),优势是编程简单、外设丰富,内置10位ADC(若需更高分辨率,可外接12位ADC芯片ADS1115);ADC参数配置:输入通道:选择模拟输入引脚A0;参考电压:采用内置3.3V参考电压;采样率:通过编程设置为250Hz(每隔4ms采样一次)。3.3.2数据处理流程单片机读取ADC转换后的数字信号(范围0-1023,对应电压0-3.3V);通过软件算法进一步优化信号:采用滑动平均滤波(窗口大小5点),平滑波形,减少随机噪声;将处理后的数据发送至显示模块和存储模块,同时可通过串口上传至PC端(波特率9600bps)。3.4显示与存储模块OLED显示模块:选用0.96英寸I2C接口OLED屏(128×64分辨率),通过I2C协议与单片机通信,编程实现心电波形的实时滚动显示(横坐标为时间,每格代表80ms;纵坐标为电压,每格代表0.1V);SD卡存储模块:采用SPI接口SD卡模块,通过SPI协议与单片机连接,将原始采样数据(时间戳+电压值)以.csv格式存储,便于后续用MATLAB或Excel分析。3.5电源模块供电方案:采用3.7V锂电池(容量1000mAh)供电,通过AMS1117-3.3V稳压模块输出3.3V,为单片机、OLED屏、ADC供电;通过AMS1117-5V稳压模块输出5V,为模拟前端电路供电;低功耗设计:在不影响性能的前提下,关闭单片机未使用的外设(如串口、定时器),OLED屏在无操作时进入休眠模式,延长电池续航时间(预计续航≥4小时)。四、软件程序设计4.1编程环境与语言编程环境:ArduinoIDE(适用于ArduinoUno)或MPLABXIDE(适用于PIC单片机);编程语言:C/C++(Arduino使用基于C++的封装语言,语法简洁)。4.2主程序流程graphTDA[系统初始化]-->B[初始化单片机I/O口、ADC、I2C/SPI接口]B-->C[初始化OLED屏、SD卡模块]C-->D[SD卡创建数据文件(如ECG_20250101.csv)]D-->E[ADC开始采样(250Hz)]E-->F[读取采样数据,转换为电压值]F-->G[软件滑动平均滤波]G-->H[发送数据至OLED屏,显示心电波形]H-->I[将数据(时间戳+电压值)写入SD卡]I-->J{是否按下停止键?}J--否-->EJ--是-->K[关闭SD卡文件,系统休眠]4.3核心子程序设计4.3.1ADC采样子程序//Arduino示例代码(ADC采样)floatreadECG(){intadcValue=analogRead(A0);//读取ADC值(0-1023)floatvoltage=adcValue*(3.3/1024.0);//转换为电压值(0-3.3V)floatecgVoltage=voltage-1.65;//减去电平抬升的1.65V,还原原始信号(-1.65V~+1.65V,实际有效范围-0.5V~+0.5V)returnecgVoltage;}4.3.2滑动平均滤波子程序//滑动平均滤波(窗口大小5点)floatslidingFilter(floatnewData){staticfloatdataBuffer[5];//数据缓冲区staticintbufferIndex=0;floatsum=0;dataBuffer[bufferIndex]=newData;//新数据存入缓冲区bufferIndex=(bufferIndex+1)%5;//循环更新索引for(inti=0;i<5;i++){sum+=dataBuffer[i];}returnsum/5;//返回平均值}4.3.3OLED显示子程序//绘制心电波形(以128×64OLED为例)voiddrawECG(floatecgVoltage){staticintx=0;inty=map(ecgVoltage,-0.5,0.5,63,0);//将电压值映射为OLED屏的y坐标(0-63)if(x>=128){//当x轴满屏时,清空屏幕并重置xoled.clearDisplay();x=0;}oled.drawPixel(x,y,WHITE);//绘制当前点oled.display();//刷新显示x++;//x轴坐标递增}4.3.4SD卡存储子程序//数据写入SD卡voidsaveData(floatecgVoltage){FiledataFile=SD.open("ECG_DATA.csv",FILE_WRITE);//打开文件(若不存在则创建)if(dataFile){unsignedlongtime=millis();//获取时间戳(毫秒)dataFile.print(time);dataFile.print(",");dataFile.println(ecgVoltage);//写入心电电压值dataFile.close();//关闭文件}}五、系统测试与性能验证5.1测试环境搭建硬件连接:按系统架构连接各模块,确保电极与人体接触良好(涂抹导电膏),屏蔽线接地可靠;软件准备:在ArduinoIDE中上传程序,PC端安装串口助手(如SSCOM)或MATLAB,用于接收和分析数据;测试对象:健康成年人(无心脏疾病史),测试时保持静坐,避免肢体运动(减少肌电干扰)。5.2功能测试信号采集测试:观察OLED屏是否显示稳定的心电波形,能否清晰识别P波(幅度较小,位于QRS波群前)、QRS波群(幅度最大,为主要特征波)、T波(位于QRS波群后);数据存储测试:测试结束后,取出SD卡,通过电脑查看.csv文件,验证数据是否连续存储(每4ms一条记录),格式是否正确(时间戳+电压值);上位机通信测试:通过串口将数据上传至PC端,用MATLAB绘制心电波形,对比OLED屏显示结果,验证数据一致性。5.3性能指标测试性能指标测试方法预期结果实际测试结果输入阻抗用阻抗分析仪测量模拟前端输入阻抗≥5MΩ-CMRR输入1V/50Hz共模信号,测量输出信号幅度,计算CMRR(CMRR=20lg(差模增益/共模增益))≥80dB-带宽输入不同频率的正弦信号(0.05Hz~100Hz),测量输出幅度,绘制幅频特性曲线0.05-100Hz内幅度衰减≤3dB-采样率统计1秒内ADC采样次数250次/秒-信噪比采集静息状态下心电信号,计算信号有效值与噪声有效值的比值(SNR=20lg(V_s/V_n))≥30dB-5.4常见问题与调试方法常见问题可能原因调试方法波形无显示或杂乱1.电极接触不良;2.电源纹波过大;3.干扰严重1.重新涂抹导电膏,确保电极贴合皮肤;2.检查稳压模块输出,增加滤波电容;3.加强屏蔽,将右腿驱动电极接地QRS波群不清晰1.放大倍数不足;2.滤波参数不当1.调整AD620的增益电阻R_G,增大放大倍数;2.优化陷波电路参数,增强50Hz干扰抑制数据存储失败1.SD卡未格式化;2.SPI接口接触不良1.将SD卡格式化为FAT32格式;2.重新插拔SD卡模块,检查引脚焊接六、课程设计报告要求6.1报告结构引言:课程设计背景、意义、目标及主要内

温馨提示

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

评论

0/150

提交评论