基于STM32 的心血管造影剂自动推注系统
2023-12-18宋源清袁成功董静文
赵 昌,宋源清,陈 光,袁成功,董静文,张 民
(1.青岛理工大学信息与控制工程学院,山东青岛 266520;2.青岛市光电工程技术研究院,山东青岛 622700)
依据《中国心血管健康与疾病报告2020 概要》,我国城乡居民的心血管死亡率正呈稳定上升态势。目前,中国高血压人群已达3.3 亿,心血管疾病死亡率居世界首位,远高于癌症类患者。在我国,对心血管疾病的医疗负荷比较高。2018 年,心血管疾病死亡在城乡居民总死因中占首位,农村占46.66%,城市占43.81%。随着社会经济发展、城市化和人口老龄化的加速,中国居民的生活方式发生了深刻的变化。不健康的饮食、身体活动不足、吸烟和其他生活方式风险因素普遍存在[1]。目前,医院放射科的心血管造影检查在放射室进行。从开始注射造影剂到检查和放射拍片的整个过程需要几十分钟。医生长时间在X 光下给每个病人注射造影剂[2]。放射科许多负责各种造影工作的医务人员由于受到辐射的影响,对身体造成了严重伤害。因此,需要对现在X 射线下注射造影剂的方法进行更新[3]。
1 硬件系统设计
1.1 系统总体设计
控制系统的设计框图,如图1 所示,系统以STM32H743VIT6 单片机为核心,主要包括压力传感器板(采集近心端,远心端压力),注射泵板(步进电机驱动模块),心电信号采集模块,PC 端的上位机软件等设备所构成。
图1 控制系统总体设计框图
1.2 主控模块
系统单片机外接两个晶振,一个是频率为32.768 kHz的低速晶振,一般用于计时,待机或低功耗模式时使用;另外一个是频率为25 MHz 的高速晶振,主要是提供更精准的系统时钟,一般用于锁相环倍频输出[4]。单片机外设主要应用8 路USART 接收和发送,外设I2C 的数据线和时钟线,SWD(串行调试接口)的两路GPIO 控制线,LED 状态指示灯的两路GPIO 控制线,两路ADC 采集的控制线,外部踏板三路GPIO 控制线,一路注射泵的GPIO 控制线。这是系统的主控芯片所应用到的全部外设接口。其中STM32H743VIT6主控模块原理图如图2 所示。
下载接口模块采用四线SWD(Serial Wire Debug)模式,同时引出了复位接口。SWD 模式比JTAG(Joint Test Action Group)在高速模式下更加可靠。当电路板尺寸有限时,SWD 下载模式需要更少的引脚和PCB 空间。下载接口如图3 所示。
图3 下载接口原理图
STM32H743VIT6 内部的ROM 只能在程序下载时进行擦除和改写,但是程序运行时是不能改写的。STM32H743VIT6 内部的RAM 中的程序运行时可以更改,但是掉电就丢失。有一些程序数据要存在系统中,要求掉电不丢失,而且程序数据还要能更改。所以STM32H743VIT6 内部和RAM 都不行。这时候系统中就需要一块EEPROM,它是一种掉电后程序数据不丢失的内存芯片。EEPROM 芯片的SCL 及SDA 引脚连接到STM32 对应的I2C 引脚中,结合上拉电阻,构成了I2C 通信总线,通过I2C 总线交互。EEPROM 芯片最常用的通信方式就是I2C 协议,I2C 通信协议由飞利浦公司开发,其使用的引脚少,硬件实现容易,扩展性强。
该文采用的芯片型号是M24C02-WMN6TP,它是一种具有2 kbit 内存的芯片,与I2C 总线兼容,供电电压范围为2.5~5.5 V。其电路原理图如图4所示。
图4 EEPROM原理图
1.3 通信模块
通信接口采用RS-232。作为行业标准,确保各厂家产品之间的兼容性。RS-232 是一对一的可以实现全双工通信的协议,同一时刻可完成数据的发送和接收,即可以允许数据在两个方向上同时传输。RS-232 定义了主信道和辅助信道,由主信道传输速率相比较快[5]。
通信协议采用Modbus,Modbus 通信协议诞生于1979 年,我国自动化领域常用的RS-232、RS-485 接口都支持此协议。协议采用主从模型,主设备可以针对性地查询不同设备地址的数据信息。在同一网络上,Modbus 可以连接多个设备进行通信,例如将压力数据和步进电机转速的两个数据采集模块连接在同一总线上,将采集数据发送到上位机[6]。
Modbus 通信协议可与RS-232 接口总线结合使用。因此,在下位机与PC 端的通信是通过基于Modbus 通信协议的RS-232 接口总线来完成的[7]。
文章采用一款SP3232E 系列是RS-232 收发器,采用+3.0~+5.5 V 电源供电,工作电压为3.3 V 时只需0.1 μF电容就可进行操作,满载时最小的数据传输速率为120 kbps。
1.4 输入输出模块
输入输出模块都采用光耦模块隔离信号。由于光耦具有单向传输的特性,因此,可使输入端和输出端进行完全的电气隔离。输出信号对输入端无干扰,工作稳定。由于光耦是光电式的,所以使用时间更长,摆脱了机械触点存在吸合次数的问题。其电路原理图如图5-6 所示。
图5 输入模块原理图
图6 输出模块原理图
1.5 心电信号采集模块
该文心电信号采集模块包括前端的输入保护和滤波电路、仪表放大器电路模块、右腿驱动电路模块,高通滤波电路模块、带通滤波电路模块、低通滤波电路模块、50 Hz 陷波电路模块、主放大电路等,最后通过主放大电路进入单片机的ADC 采集。前端的输入保护和滤波电路主要是抑制射频干扰和电磁干扰,电路中加入保护电阻,阻值大约100 kΩ,最大程度地减少了流回人体内的电流。仪表放大器的作用主要是缓冲后置滤波和A/D 转换模块的输入和采集,同时,提供低电平心电信号的放大。右腿驱动电路作用是提供了共模偏压并降低了共模噪声。由于ECG 信号的低频特性:频率一般为0.05~l00 Hz,能量主要集中在0.25~35 Hz[8]。该文设计的滤波频率范围为0.01~150 Hz,并加入50 Hz 陷波电路抑制工频干扰,最后进入主放大电路。主放大电路设计四种放大倍数,分别是2 倍、4 倍、8 倍和16 倍。人体心电信号经过电极采集,得到幅值为0.05~5 mV,通过设计的心电信号的采集电路可以放大到1 V 左右,符合A/D 输入口的要求。通过心电采集模块,可以得到放大无干扰的心电信号[9]。
1.6 电源模块
该文采用电源管理芯片是TJ1117GS 系列的LDO,LDO 是一种降压直流线性稳压器,输入电压或负载电流在一定范围内变化时仍能保持稳定的电压输出。LDO 具有低噪声、小体积、低功耗、性价比高、使用简单等优点。其电路原理图如图7 所示。
图7 电源模块原理图
图8 主程序流程图
1.7 主控电路板PCB
主控电路板PCB 采用四层板的设计,为了排除信号之间的干扰,信号线与电源线进行分层。并加入电源分割减少了PCB 走线,同时减少信号间干扰问题,保证信号的完整性[10]。
2 系统工作流程
整个系统分为学习和工作两种模式。学习模式:PC 端按下学习模式按钮后,在不接入注射泵时,模拟心脏收缩血液喷出的压力,即近心端压力传感器数据大于远心端压力传感器数据。压力传感器板接收到近心端和远心端的压力数据后上传给PC 和注射泵板。PC 需要显示三条曲线,分别是近心端压力曲线(简称P1)、远心端压力曲线(简称P2)、近心端减远心端压力曲线(简称P3)。PC 需要计算10 个压力波形内P3 的最大值、最小值和平均值,并进行显示。P1、P2、P3 是没有外接注射泵时血液喷出时的压力。工作模式:操作人员根据学习模式所得到的P3 数据。输入压力差数据,此数据为注射泵工作后近心端压力与远心端压力的差值,取其绝对值(简称P4)。另外,操作人员需要设置注射系数X、Y,操作人员点击运行按钮后,注射泵应该对压力传感器的数据进行闭环反馈,此时系统提取工作模式远心端压力传感器数据(简称P′2)(X×P′2-P′1)=Y×P4。(X、Y为操作人员设置的系数)(P′1 工作模式下近心端的压力)。操作人员点击停止按钮后,注射泵停止工作。
3 软件设计
3.1 软件介绍
该文用到的开发软件有Keil uVision5、STM32 CubeMX。HAL 库是ST 公司方便进行不同型号的STM32 芯片之间的移植而开发的库,在两个不同的STM32 芯片之间的移植基本不需要大的修改。HAL库相对标准库,同样的串口通信实验需要包含更多的文件,HAL 库更加复杂,但是相对于标准库,HAL库的移植性更强,能够适应更多不同种类的硬件,所以能够一个工程实现多个硬件应用,就综合能力而言,HAL 库更加强大,符合未来发展的趋势[11]。
在编译Keil uVision5 环境下,根据各芯片的时序要求对各控制芯片进行C 语言编写,实现主控芯片与各个芯片的通信控制,最终处理输入信号后通过串口按照传输协议发送给PC 端[12]。通过STM32 CubeMX 软件实现基本配置流程:配置STM32 单片机的时钟、GPIO、I2C、ADC 等接口、USART 串口,打开单片机中断;根据各芯片引脚的时序电平程序判断是否进入中断函数;根据解析数据标志位情况来判断是否通过串口将数据传输给PC 上位机。主程序流程图如8 所示。
3.2 心电信号检测
心电信号检测采用改进自适应差分阈值法检测R 波,自适应差分法算法简单,处理速度快,对经过硬件预处理后的信号,具有检测迅速、准确率高的特点。此方法首先设定检测阈值和判定条件,系统工作之前,先进行ECG 信号的学习,并且对ECG 信号进行分析,并对一些特征波形做出正确识别[13-14]。通过嵌入式系统的学习,根据R 波具有波形陡峭、幅度大、宽带窄的特点,对R 波的特征点进行存储。经过学习后,初步判断R 波的波形特点和阈值大小。然后开始工作,嵌入式系统实时对ECG 信号进行差分运算,计算出ECG 信号波形中各个数据点的幅度相对于时间的变化率,再将各个数据点的变化率与预先设定的阈值进行比较[15-16]。若阈值较大,则会出现QRS 波漏检的情况;而阈值较小时,无法排除如高尖P 波、高尖T 波等一些干扰的影响。而采用动态自适应阈值时,每检测到一个R 波时,都需要更新阈值,从而更加准确地判断R 波。若满足相应的判定条件,就判断检测到一个R 波[17]。
ECG 信号的学习原理:心电信号进行预处理,取开始一段时间的心电数据进行自学习,按时间分成相等的10 段,每一段时间期间至少有一个QRS 波群,在各段内求差分的最大值,将这10 个差分最大值排序,去掉最大值和最小值后对余下的差分值求算术平均值,并经反复试验确定出初始检测阈值,这里去掉10 个差分最大值中的最大值和最小值,既可以排除偶然出现的尖峰干扰导致的过大差分值,避免阈值过大造成漏检,又可以将一些过小的差分值除去,避免阈值过小造成误检[18]。
差分阈值法原理:ECG 信号某时刻的数据幅度值大于所设定的阈值,就可判定该时刻存在一个可能的R 波,差分阈值法就是利用差分运算对信号进行一阶差分,找到心电信号的所有拐点;对信号进行二阶差分,找到心电信号所有的波峰;让后再设定峰值阈值,找到R 波的峰值点[19]。
离散点的函数一阶差分如式(1)所示:
同理二阶差分如式(2)所示:
参照一阶导数对拐点的判定原理,可以通过一阶差分标记信号中所有的极值点和驻点。参照二阶导数对极值的判定原理,可以通过二阶差分将所有拐点中的极大值(波峰)标记出来。
得到初始阈值后,用初始检测阈值检测到8 个R波后,开始采用滑动平均的方法来修改检测阈值,得到相应的新的检测阈值。通过读取新的心电信号来修改初始阈值,新的阈值既包含了初始阈值的信息,又同时具有新的心电信号的阈值信息。通过滑动平均的方法进行修正,使其具有自学习功能,更接近真实值。读取新的心电信号的信息,使阈值随心电信号的变化有所改动,体现算法的自适应性。
3.3 上位机软件介绍
ECG 系统用于监控、管理心血管造影剂推注设备的工作。用户通过登录界面登录软件,登录界面如图9 所示。主画面控制可调整推注参数、监控推注实时信息、查看监控曲线、选择推注工作模式、切换模式、查看软件硬件状态等。
图9 登录界面
4 结束语
该文主要详细介绍了系统中主控部分的各电路模块。简单概述注射泵模块和近心端、远心端传感器以及软件的开发,其中包括单片机主控系统的概述及系统的工作流程,单片机主控模块的硬件开发以及PCB 绘制,硬件系统的各模块的连接及通信方式,心电信号检测算法,以及主控程序开发的流程和上位机软件的介绍。该系统设备减轻了医护人员的劳动强度,提高了造影工作的效率,减少造影时间,减轻病人的痛苦,具有非常实际的应用价值。