基于STM32和μCOS的医用注射泵系统软件设计

  作者:王婉 刘振洗 胡林军 郭书磊 时间:2017-11-28来源:电子产品世界

编者按:本文提出一种采用STM32F103ZET6处理器平台,使用μC/OS-II操作系统,借助μC/GUI控件进行界面开发的注射泵控制系统。采用基于模块化分层的软件设计方法,满足注射泵对多功能、易用界面、低功耗和多任务的需求,以提高医用注射泵的工作效率及可靠性。

作者 / 王婉 刘振洗 胡林军 郭书磊 中国电子科技集团公司第四十一研究所(安徽 蚌埠 233010)

王婉(1989-),女,硕士,助理工程师,研究方向:医疗电子。

摘要:本文提出一种采用STM32F103ZET6处理器平台,使用μC/OS-II操作系统,借助μC/GUI控件进行界面开发的注射泵控制系统。采用基于模块化分层的软件设计方法,满足注射泵对多功能、易用界面、低功耗和多任务的需求,以提高医用注射泵的工作效率及可靠性。

引言

  医用注射泵是一种新型泵力仪器,将少量药液精确、均匀、持续地泵入病人体内,操作便捷、可靠性好。注射泵应具备的功能有:设置输液速度和输液量,随时更改输液参数,程序预设和数据保存,对异常情况进行报警。使用医用注射泵抢救危重患者,能减轻护士工作量,提高工作效率,准确、安全、有效地配合医生抢救。

1 系统概述

  本文设计的系统采用闭环控制思想,结合嵌入式技术、传感检测技术和电机控制技术,从而实现高精度、高可靠性的医用注射泵系统开发。系统整体组成框图如图1所示,注射泵控制系统主要包括注射器推杆位置检测模块、阻塞压力检测模块、注射器规格检测模块、声光报警模块、LCD显示模块、注射参数存储模块和电源管理模块。注射泵工作时,STM32F103ZET6(以下简称STM32)处理器发出PWM脉冲使步进电机旋转,而步进电机通过机械传动装置将旋转运动变成直线运动,推动注射器的活塞进行注射,同时STM32通过采集传感器反馈的数据指导注射泵工作。

2 软件设计

2.1 整体软件架构

  本系统采用STM32F103ZET6处理器平台,以μC/OS-II 实时操作系统为系统平台,并应用了μC/GUI图形支持软件。采用基于模块化分层的软件设计方法,具体如图2所示。包括应用软件层、系统软件层和硬件外设配置层,每一层又分为不同的功能模块,方便注射泵的调试和功能扩展。

  应用软件层通过μC/OS-II系统建立任务,包括系统主任务、μC/GUI界面任务、键盘扫描任务、旋转编码器检测任务和报警指示灯显示任务。

  系统软件层包括移植于STM32处理器的μC/GUI图形系统、μC/OS-Ⅱ操作系统和中断管理系统。μC/GUI界面程序实现实时显示注射泵的各种参数和运行状态,如注射器规格、输液速度、预输液量、已输液量、电池电量、注射运行标志及报警信息提示等,使操作者能够实时掌握注射泵的工作状态,并提供良好的人机交互界面;μC/OS-Ⅱ操作系统负责执行任务调度、任务管理、时间管理、内存管理和任务间的通信与同步等基本功能;异常与中断处理模块提供中断服务程序,主要包括系统时钟节拍处理函数、按键及编码器定时扫描中断、电源管理模块定时扫描中断、产生PWM脉冲的定时中断、EEPROM读写中断、注射器规格及脱落检测中断。

  硬件外设配置层主要完成外围器件的驱动及应用配置。包括LCD驱动配置,压力传感器应用配置,注射器检测用传感器驱动配置,按键、编码器、LED灯及蜂鸣器应用配置,注射器推杆位置检测用传感器应用配置,EEPROM驱动配置和步进电机驱动配置。

  该设计具有界面化控制、多任务处理、数据实时传递,并配合人性化的键盘板,能极大地提高使用者的工作效率。

2.2 系统主程序设计

  系统的主程序讲述的是整个系统的执行过程,如图3所示。在所有的初始化工作完成后,进入系统主界面,通过按键设置注射参数,包括注射模式、药物量、注射时间、注射速度等参数,然后检测注射器规格,开始注射。传感检测模块实现闭环控制、保证本系统安全可靠运行,对注射过程进行注射阻塞检测、注射器脱落检测和注射器推杆位置检测,如果不满足要求则进行报警、停止注射。并在剩余药量小于预定值时进行注射近空报警,提醒用户提前做好准备。

2.3 功能模块软件实现

2.3.1 步进电机控制

  本设计采用两相混合式步进电机,步进电机根据电机驱动器的控制信号进行工作。通过改变PWM脉冲频率和占空比控制电机的运动速度。电机运动方向固定为正转,使能信号由STM32的GPIO引脚控制,高电平使能控制信号输出,电机转动。

  PWM脉冲由STM32的内部定时器产生,通过改变相关寄存器配置来改变脉冲频率与占空比。PWM 配置分以下几个步骤:

  1)定时器时钟经预分频器分频后为计数器提供时钟;

  2)重装载寄存器和输出比较寄存器的数值不断与计数器比较;

  3)计数器的数值与重装载寄存器相等时,复位计数器并翻转输出信号;

  4)计数器数值与输出比较寄存器相等时,翻转输出信号。

2.3.2 注射器检测

  一般的医用注射泵均使用ml注射器,常用的规格有10ml、20ml、30ml和50ml,系统在进行注射前需要获取注射器规格,注射过程中如果注射器发生脱落,需要及时报警并停止输液。本设计使用光电开关检测注射器规格和注射器脱落与否。检测注射器规格的信号连接至STM32的GPIO引脚,通过外部中断的方式检测对应GPIO引脚的电平变化来判断注射器规格同理,可以检测注射器是否脱落。

2.3.3 注射器推杆位置检测

  注射过程中需要通过注射器推杆位移的变化来计算已注射药量,本设计使用位移传感器检测注射器推杆位置。将检测信号连接至STM32的ADC模块,在注射时,首先测出注射器推杆的初始位置电压值,然后实时获取推杆运动中的电压值,根据两个电压值之差,就可得出注射器推杆运动的距离,继而算出已注射容量。

2.3.4 阻塞压力检测

  当针头堵塞或输液管路打折等原因造成输液不畅时,液路系统压力大于正常注射时的压力,可通过检测注射器推杆处的压力值进行判断。检测的压力信号连接至STM32的ADC引脚,STM32采集变换并放大1000倍后的电压值,然后根据应变片压力和电压的线性关系,计算出实时压力值,如果压力值大于预设的报警值,则进行报警,并停止注射。

2.3.5 声光报警

  当注射泵出现异常工作时,需要及时进行警告处理。本系统采用蜂鸣器、LED、LCD三种方式进行报警。蜂鸣器和LED分别接到STM32的GPIO引脚,当注射完成或注射阻塞时,对应的LED点亮并蜂鸣报警;当电池电量不足、注射器脱落、注射器推杆错位、注射即将完成时,LCD提示并蜂鸣报警。

2.3.6 注射参数存储

  为了方便查询上次关机时的输液模式、参数等信息,本设计添加了参数存储功能。EEPROM采用I2C总线与STM32交换数据,每次开机时,读取EEPROM存储的参数值并显示,每次设置的参数值改变时都进行重新存储。

2.3.7 锂电池供电管理

  本设计具有交、直流两种供电方式,并且两种方式能自动切换。使用电源管理模块获取电池的电量信息,通过SMBD和SMBC将锂电池连接到STM32的I2C总线,采用SMBus总线模式定时读取电池信息,并在LCD实时显示电量。如果电池电量不足,则进行报警,如果充电完成,则点亮LED示意。

2.3.8 按键及编码器检测方案

  按键连接至STM32的GPIO引脚,编码器连接至STM32定时器的编码器接口引脚。通过定时器扫描按键和编码器状态。按键分为短按和长按功能,短按可实现开始/停止、蜂鸣器消音、模式切换、参数选择和报警消除功能,长按可实现快注、注射器标定功能。编码器用于实现参数值的输入,可实现小数与整数部分的切换,参数值改变大小与旋转速度一致。

2.3.9 LCD显示

  LCD实现实时显示注射泵的各种参数和运行状态,如注射器规格、注射速度、预输药量、已输药量、电池电量、注射运行标志及报警信息提示等,使操作者能够实时掌握注射泵的工作状态,并提供良好的人机交互界面。本设计采用FSMC(灵活的静态存储器控制器)接口控制液晶显示模块,采用16位宽数据总线,使用NE1作为片选线,借助μC/GUI控件绘制所需的交互界面。

3 结论

  本设计提供了一种人机交互友好、占用资源少、可移植性强、基于模块化分层的注射泵软件结构,能够满足注射泵对多功能、易用界面、低功耗以及多任务的需求,使医用注射泵的工作效率显著提高、可靠性变强。根据本软件设计方法生产的注射泵适用于长时间微量、均匀、精确地注射药液,性能上完全满足国内医院对静脉输液的要求。

  参考文献:

  [1]王晓明.电动机的单片机控制 [M].北京航空航天大学出版社,2002.

  [2]刘伟.PWM技术在电机驱动控制中的应用[D].合肥工业大学,2009

  [3]简毅,刘宝.基于AT91SAM9261的步进电机S曲线加减速控制研究与实现[J].轻工机械, 2012.

  [4]何伶俐,贺超,杨庆华.基于uPSD3234单片机的智能注射泵控制系统设计[J].绵阳师范学院学报,2008.

  [5]刘波文,孙岩.嵌入式实时操作系统uC/OS-II经典实例:基于STM32处理器[M].北京航空航天大学出版社,2014.

  本文来源于必威娱乐平台 2017年第12期第43页,欢迎您写论文时引用,并注明出处。

关键词: 医用注射泵 STM32 μC/OS-II μC/GUI 201712

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版