智能静脉输液自动监控系统设计|毕业设计项目|毕设项目|单片机项目|物联网专业|毕业设计

一、項目介绍
摘 要
静脉输液是临床治疗中应用最广的一种给药方式,传统的输液过程主要是依靠人工监护来完成的,存在着护士工作负担重、异常情况反应慢、患者体验差等状况。本文根据以上问题,设计并实现了一套以STM32F411CEU6为主控制芯片、使用RT-Thread作为实时操作系统来组成的一套智能静脉输液自动监控系统。
系统用模块化设计为主控模块、滴速检测模块、温度检测及加热控制模块、液位检测模块、输液开关控制模块、显示模块、电源模块。滴速检测用SD01水滴传感器,采用红外光电原理检测液滴落地产生脉冲信号,主控芯片用脉冲计数得到实时滴速。温度检测用DS18B20防水数字温度传感器,实时检测药液温度,当温度低于设定的阈值时自动开始PTC加热片加热水液。液位检测使用非接触式液位传感器,当药液液位低于安全值时发出报警声,同时驱动舵机使输液管夹住,保证无空气进入静脉或者血液回流。系统使用TFT LCD显示屏对滴速、温度、液位等进行显示。软件方面采用了RT-Thread实时操作系统,把各个功能模块分成了不同的任务线程,从而实现实时地协同工作。
由测试结果可知系统滴速检测误差在正常范围内,温度检测误差为±0.5℃,液位报警响应时间小与1秒、舵机关断响应时间小与1秒,连续工作时间大于24小时。本系统功能齐全,性能稳定,成本可控,可以有效地减轻医护人员的工作负担,提高输液过程的安全性、患者舒适度,有较好的临床应用前景。
关键词:静脉输液;STM32;RT-Thread;滴速检测;温度控制;液位监测;自动关断
主要研究内容
本课题的主要目的就是设计出一个以STM32F411CEU6为主控制芯片,采用RT-Thread操作系统为内核的智能静脉输液自动监测系统。系统要实现输液过程中的滴速、药液温度、液位状态三个主要参数的实时监控,具有温度自动调节、液位过低自动关闭、异常声光报警、信息实时显示的功能。
具体而言,本课题的主要研究内容包括以下几个方面。
第一部分提出系统总体方案设计。在对临床需求和已有的研究结果充分了解的基础上,明确系统功能需求和技术指标,设计系统的总体架构,确定主控芯片和各个功能模块的选择方案。系统使用模块化设计思想,把滴速检测、温度检测、加热、液位检测、输液关断、显示交互、电源管理等分成不同的模块,有利于分步开发和调试。
第二部分为系统硬件设计。完成主控电路的STM32F411CEU6最小系统及时钟配置、滴速检测电路SD01水滴传感器接口、温度检测与加热控制电路DS18B20传感器及PTC加热片驱动、液位检测电路非接触式液位传感器接口、输液开关控制电路舵机驱动、显示电路TFT LCD SPI接口和电源电路设计。完成了PCB原理图的绘制、布局布线和实物焊接组装工作。
第三部分系统软件的设计。完成RT-Thread操作系统在STM32平台上移植以及配置工作,创建滴速检测任务、温度采集与加热控制任务、液位检测与报警任务、舵机控制任务、LCD显示任务等各个子任务,并使它们进行实时的协同调度。编写各个传感器驱动程序以及核心算法,包含滴速计数与滤波算法、DS18B20单总线通信协议、温度控制算法、舵机PWM控制、LCD图形界面显示等。
第四是要对系统进行测试和认证。制订完善的测试方案,创建模拟输液测试平台,对滴速检测的精度,温度检测及加热控制的效果,液位检测和报警的可靠性,舵机关断动作的效度,系统长时间工作稳定性的考察展开,保存测试数据加以剖析,从而判断系统能否达到设计需求。
通过对以上研究内容的实现,得到一套功能完备、性能良好、成本可控的智能静脉输液自动监控系统样机,为后续产品化及临床使用做准备。
系统功能需求
根据静脉输液的临床应用场景及已有研究基础,本系统要实现如下功能要求,每个功能要求均有对应的指标。
系统要能对输液过程中点滴速度实施实时检测,然后把数值用滴/分钟这一单位的形式表现出来。滴速检测的范围为临床常见的输液速度,即0~150滴每分钟。检测精度要控制在正负二滴每分钟之内,保证临床使用可靠。滴速检测要实时的,数据更新间隔时间不能大于一秒,这样可以保证护士可以及时地了解到输液的情况发生怎样的变化。另外系统还要有滴速异常报警功能,当滴速超过120滴/分或者小于40滴/分时,应发出声光报警信号。
温度检测及加热控制。系统应能实时检测吊瓶内药液温度,温度数值应能显示在显示屏上。由于冬季或者空调环境温度较低,一般低于室温,温度在15℃到20℃之间,直接注射到体内会导致病人不舒适,所以系统必须具有自动加热功能。当药液温度低于设定的32℃的时候,自动打开PTC加热片给吊瓶加温。当温度升高到上限阈值,即三十六摄氏度的时候就停止加热。温度控制采用滞回比较算法,不能让加热片在阈值附近经常地启停。温度检测的准确度为正负0.5℃,温度的调节误差不能大于正负1℃。
液位检测和自动停止。系统要对吊瓶里药液液位进行持续监测,判断药液是否要滴完。液位检测要采取非接触形式,不能让传感器同药液发生直接接触,这样容易造成交叉污染。当液位降到预定的阈值,一般为剩余药液量约为5~10毫升的时候,系统就应该发出声光报警,并且开始驱动舵机把输液管夹紧起来,防止空气进入血管或者血液回流。液位触发到舵机完成夹闭动作的响应时间不能大于一秒,保证安全。
信息显示。系统要配备一块显示屏,实时显示如下内容:当前滴速单位为滴每分钟,当前药液温度单位为摄氏度,液位状态为正常或者过低,报警状态为正常或者报警。显示屏亮度大、可视角度好,利于护士从任何角度观察。显示的内容应该简单明了,重要的数据要用较大的字体来显示。
声光报警。当系统检测出液位过低、滴速异常等异常情况的时候,就应发出声音报警和光报警。声音报警的音量应足够大,在病房环境噪声为50~60分贝时仍能清晰地听到。光报警应该使用高亮度LED,方便远处观察。其他性能要求。系统应有较好的可靠性,保证二十四小时不间断的正常工作不发生死机或者误报警。系统功耗要控制在合理的范围内,总功率不能超过十瓦。系统体积小、轻便,方便固定在输液架或吊瓶上使用。操作应该简单直观,护士不需要复杂培训就可以使用。
PCB设计与实物组装
在完成各个功能模块的电路原理图设计之后,还要做PCB印制电路板的设计和实物的组装。PCB设计就是把原理图上的电气连接关系转化为实际的物理铜箔走线的过程,合理的PCB布局布线对系统电磁兼容性、工作稳定性有着重要的作用。
本系统PCB设计为双层板,板厚1.6mm,尺寸不大于100mm×80mm,便于安装到输液架或者吊瓶挂架上。PCB布局以模块化为主,把STM32主控芯片放在板中央,各个功能模块的接口和器件都按照主控芯片分区来布置。电源电路靠近电源输入端,滤波电容靠近芯片电源引脚,减小电源环路面积。
布线时将信号线和电源线分开布设,防止平行长距离走线来减少串扰。时钟线以及高速信号线SPI走线尽量短,不能有过多的过孔和分支。地线用大面积敷铜的方式形成完整的地平面,减小地回路的阻抗。模拟地、数字地均采用单点接地方式,在电源输入端汇合,减小数字噪声对模拟信号的影响。
pcb设计完成之后,导出gerber文件交给pcb厂商打样生产。PCB裸板接收到以后做元器件焊接和组装工作。焊接顺序为先焊接STM32主控芯片等小封装器件,再焊接电阻电容等贴片元件,最后焊接接插件和传感器接口。焊接完毕后,用万用表测量电源和地之间的电阻是否为零,没有故障后再通电进行试验。
最后用焊接方式完成焊接好的电路板与SD01水滴传感器、DS18B20温度传感器、非接触式液位传感器、舵机、PTC加热片、TFT LCD显示屏等外围部件的连接,并组装成一个完整的系统样机。
二、文档介绍




三、項目设计
RT-Thread操作系统移植
系统软件的设计是智能静脉输液自动监控系统的重要组成,质量的好坏直接影响到系统的反应速度、稳定性、可维护性。本系统采用RT-Thread嵌入式实时多线程操作系统作为软件平台,把滴速检测、温度采集和加热控制、液位检测和报警、舵机控制、LCD显示等作为一个任务线程,由RT-Thread内核来统一调度和管理。
RT-Thread全称为Real Time-Thread,是一个国产开源的嵌入式实时多线程操作系统。它具有一个主要属性就是支持多任务,可以同时执行多个任务。需要注意的是,多任务同时运行并不意味着处理器在同一时刻真正在执行多个任务。实际上,处理器核心在一个时间点上只能运行一个任务,因为每一个任务每次执行的时间都很短,所以任务调度器会很快地切换任务之间的执行顺序,使人们感觉到有多个任务是在同时运行的。在RT-Thread系统里,任务是用线程来实现的,而线程调度器也就是上文提到的任务调度器。
RT-Thread主要使用的是C语言编程方式,简单明了,便于移植。它将面向对象的设计方法应用于实时系统设计当中,从而产生出一种代码风格优良、架构分明、模块化结构强以及可以进行裁剪的程序集。为了使微控制器系统占用Flash 3KB、RAM 1.2KB,可以使用方便的工具将NANO进行裁剪。对于资源充足的物联网设备,RT-Thread可以使用在线的软件包管理工具、系统配置工具对模块进行裁剪,使开发者能方便地将各种丰富有用的软件功能包导入到系统中。
相比Linux系统来说,RT-Thread体积小、成本低、功耗低、启动速度快。除此之外,RT-Thread还具有实时性好、占用资源少等优点,很适合于各种资源受限的环境使用。虽然32位MCU是它的主要运行平台,但许多带有MMU、基于ARM9、ARM11甚至Cortex-A系列级别的应用处理器在特定的应用场合下也可以使用RT-Thread。
近几年来,物联网的概念逐渐普及,物联网市场的发展速度很快,嵌入式设备的联网已经是大势所趋。终端联网使软件复杂度大大增加,传统的RTOS内核越来越不能满足市场的需要。在这种情况下,物联网操作系统的概念应运而生。物联网操作系统是以操作系统内核为基础,包含文件系统、图形库等较为完整的中间件组件,具有低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread就是一个物联网操作系统。RT-Thread与其他很多实时操作系统FreeRTOS、uC/OS等相比最大的区别就是具有丰富的中间件库。
滴速检测程序设计
滴速检测程序的主要任务就是用SD01水滴传感器输出脉冲频率来计算当前输液滴速(滴/分钟)。滴速检测精度与及时性关系密切,影响系统报警判断的准确性,程序的设计应该保证两种属性都达到良好的水平。
滴速检测的基本原理就是统计一定时间内脉冲的数量。SD01传感器每检测到一滴药液通过,就会使OUT引脚产生一个下降沿脉冲。STM32的GPIO引脚配置为外部中断触发模式,使用上升沿或者下降沿触发中断。中断服务程序里对滴速计数器进行加1操作。
为了使滴速读数更加稳定,防止由于偶然的因素造成数据的跳动,本系统使用滑动平均滤波算法。具体的实现方式就是创建一个长度为5的环形缓冲区,把最近五次每秒获取的滴速计数值存进去。系统每隔一秒读取一次滴速计数器,把当前计数值存入缓冲区,再算出缓冲区里五个数值的平均值,平均值乘以六十就得到了当前滴速,单位是滴每分钟。秒表清零后重新开始计数,循环反复。
该滑动平均滤波算法有如下优点,抑制了单次采样的随机误差,显示读数变得比较平滑稳定。第二,对滴速的突变反应比较快,每次计算时都包含了最新得到的采样值。第三,简单,计算量小,适合在嵌入式系统上使用。
滴速检测还要处理滴速异常报警。系统设定了滴速的正常范围,下限是40滴/分,上限是120滴/分。连续三次计算出来的滴速不在这个范围内,则认为滴速有误,并发出声光报警信号,在液晶显示屏上显示滴速异常报警。采用连续三次确认的方式可以有效地防止由于一次数据的突然变化所造成的误报。
滴速检测程序还具有滴速显示的功能。计算出新的滴速值之后,用消息队列把滴速值发送到显示刷新线程,显示刷新线程则会将滴速数值显示在LCD上。

温度采集与加热控制程序设计
温度采集与加热控制程序负责读取DS18B20温度传感器的数值,根据目前温度和设定的阈值关系控制PTC加热片的启停,从而达到对药液温度闭环调节的目的。
DS18B20的通信协议为单总线协议,对于时序有着很高的要求。温度采集程序按下面步骤进行。第一步是发出复位脉冲。主控把数据线DQ拉低时间超过480微秒之后才能释放,等DS18B20的DS引脚DQ线被拉低的时间在60至240微秒之间为存在脉冲响应时再拉下DQ线。如果主控没有检测到有脉冲,那么说明传感器没有连接或者故障,程序就输出错误码。第二步写入跳过ROM命令0xCC。此命令告诉DS18B20接下来的指令会针对总线上所有的传感器,因为本系统只有1个传感器,使用跳过ROM命令可以简化操作。第三步写入温度转换命令0x44。本命令开始DS18B20的温度模数转换,转换时间大约为750毫秒。第三步转为结果。程序可采用延时750毫秒或者重复读取传感器状态的方法来实现等待转换结束的功能。第五步再发一个复位脉冲,把跳过ROM命令0xCC写入。第六步把暂存器写入读暂存器命令0xBE。该命令使DS18B20开始把温度数据放到暂存器里。第七步读取温度低字节和高字节。DS18B20 返回两个字节的温度数据,先回送低字节再回送高字节。第八步,把两个字节合在一起成十六位有符号整数,高五位为符号位,后十一位是温度绝对值。温度值计算公式为,温度=合并后整数×0.0625。
加热控制用滞回比较算法。温度下限设为32℃,温度上限设为36℃。程序在主循环中以一定的时间间隔不断地对当前温度值进行读取,并且与上、下限做比较。当温度小于TL且加热标志是关闭时,就将PA2引脚设为高电平,并向PTC加热片供电,加热标志置为开启。如果当前温度大于TH并且加热标志为开启状态,则将PA2引脚设为低电平,切断MOSFET使PTC加热片断电,同时将加热标志设为关闭。如果当前温度在TL到TH之间,就保持加热片的当前状态不变。
该种阻尼的特性就是抑制在阈值点附近的快速开合。如果使用单阈值控制,温度达到目标值后关闭加热器,温度会迅速下降,再次低于阈值,造成加热片反复启停,不但消耗了电能,缩短了MOSFET和加热片的寿命。但是滞回控制加入了温度死区,使加热片在达到最高温度之后才停止工作,只有当温度降到最低点之后才会重新启动,从而增大了开关时间。
温度采集的频率为一秒一次。药液温度变化较慢,一秒钟采集一次就足够用来控制了。DS18B20做一次温度转换大概需要750毫秒,加上通信时间,一秒一次采集频率合理。接收到的温度值用消息队列传送到显示刷新线程,实时更新屏幕上的温度显示。
液位检测与报警程序设计
液位检测及报警程序对吊瓶内药液的液位进行实时检测,液位过低时发出声音光报警以及舵机关断。液位检测的可靠性直接影响输液的安全,所以程序设计时要考虑到抗干扰、防误触发的措施。
液位检测用非接触式液位传感器的输出电平来读取。传感器输出高电平的时候表示液位正常,输出低电平的时候表示液位低于阈值。STM32把连接传感器的GPIO引脚设为输入模式,在主循环中以周期的方式读取这个引脚的电平状态。
为了提高液位检测的可靠程度,程序中用防抖确认的方法来保证。第一次读到低电平就代表液位过低信号,程序并不立刻发出警报,而是启动了一个防抖定时器。连续五次读取都为低电平之后才会认为是真实的液位过低事件。能够很好的解决由于传感器短暂误触发、电磁干扰、液面波动等造成的假报警问题。防抖时间为500毫秒,五次读取之间间隔时间为100毫秒,可以保证可靠性的同时也不会因为防抖时间太长而造成延迟报警。
液位过低事件确定之后,程序就执行报警处理程序。首先把报警标志设为“1”,防止再次触发报警。其次用PWM信号驱动蜂鸣器引脚输出声音报警。蜂鸣器报警频率设置为2千赫兹,持续3秒后自动停止,液位过低状态如果一直存在,每隔10秒就会发出一次蜂鸣器报警。第三,在液位恢复到正常状态之前点亮LED指示灯。在LCD屏幕上显示液位低于预警线时的警告信息,屏幕背景色由原来的蓝色变成红色,引起医护人员的注意。第五步调用舵机控制函数,使舵机关断位置转动至夹紧输液管。
液位检测程序还要对液位恢复正常的情况进行处理。传感器的输出电平由低变高的时候,程序也使用了防抖确认的方式来确认液位是否正常。此时清除报警标志,关掉LED指示灯,LCD屏幕上恢复正常的显示,但是舵机仍处于断电状态,需要医护人员手动复位之后才可重新开始输液。因此,在护士赶到现场之前,输液管是被关闭的。
舵机控制程序设计
舵机控制程序用来在液位过低的时候驱动舵机转动,使机械臂压紧输液管达到关断的效果。舵机的控制依靠PWM脉冲宽度调制信号来达成,不同的脉冲宽度会带来不一样的转动角度。
舵机控制程序首先要对TIM3定时器的PWM输出功能进行初始化。配置步骤如下:使能TIM3和GPIOB的时钟,将GPIOB的PB0引脚复用为TIM3的通道3输出。配置TIM3向上计数模式,ARR设为19999,PSC设为95,计数时钟频率为96MHz/96=1MHz。PWM频率=计数时钟频率÷ARR+1,即1MHz除以20000=50Hz,周期为20ms。将PWM模式设为模式1,即当CNT小于CCR的时候输出有效的电平为高电平。比较值CCR的起始值设为500,即0度位置。启用TIM3的自动重装载预装载功能,开启TIM3计数器,开启TIM3PWM输出通道。
舵机控制函数有两个基本操作,即正常位置操作和关断位置操作。正常位置设比较值CCR=500,输出脉宽0.5毫秒,舵机转动到0度位置,不干扰正常的输液。关断位置操作设定比较值CCR为1500,输出脉宽1.5毫秒,舵机转到90度位置,或者设置CCR为2000对应135度位置,机械臂压迫输液管使其闭合。考虑到不同的输液管壁厚不一样,因此可以程序设定一个关断角度来实现压迫效果。
舵机转动所需时间一般为0.12秒,从0°转到90°大约需要0.12秒。因此在调用关断位置操作之后,程序要延时200毫秒以上,使舵机有时间转到另一个位置。舵机的电源要保持稳定,舵机在转动的时候电流较大,程序不能在此期间做其他大电流的操作,否则会造成电源电压波动。
舵机控制程序有手动复位的功能。护士更换吊瓶后可以按键使舵机恢复到原来的位置上,重新开始输液。手动复位时,舵机从关断位置转到0度的位置,也必须等转动完成后才开始。




结论
本文设计并实现了以STM32F411CEU6主控芯片、RT-Thread实时操作系统为硬件平台,对智能静脉输液进行自动控制的系统。系统具有滴速检测、药液温度检测、加热控制、液位检测及自动关断、LCD信息显示和声光报警等主要功能,可以减轻医护人员对患者的输液监测工作量,并且可以改善患者的舒适度。
本文完成的主要工作包括完成系统的总体方案设计。在充分调查临床需求以及已有的研究资料之后,确定系统所要实现的功能以及技术指标,设计了用STM32F411CEU6作为核心,以SD01水滴传感器、DS18B20温度传感器、非接触式液位传感器、PTC加热片、舵机、TFT LCD显示屏等外围器件组成的系统总体结构,并且完成各个关键器件选型论证。完成了系统硬件的设计工作。设计了一个最小系统电路,用STM32F411CEU6来设置系统时钟。设计了滴速检测电路,使用SD01传感器以及电平转换电路对液滴脉冲进行可靠的采集。设计了温度检测和加热控制电路,用DS18B20传感器采集温度,用MOSFET驱动PTC加热片。设计了液位检测电路,用非接触式液位传感器进行安全的液位监测。设计出输液开关控制电路,用PWM信号精确控制舵机的动作。设计显示电路,用SPI接口驱动TFT LCD屏幕。设计了电源电路,给各个模块供电稳定的3.3V、5V电源。完成了PCB的设计以及实物的组装。
完成了系统的软件设计。成功移植了RT-Thread实时操作系统,创建了数据采集线程、显示刷新线程和报警处理线程。编写了滴速检测程序,实现了脉冲计数法、滑动平均滤波法两种算法。编写了温度采集及加热控制程序,完成了DS18B20单总线通信协议、滞回比较温度控制算法的实现。编写了液位检测及报警程序,对防抖确认以及多级报警进行了处理。编写了舵机控制程序,可以实现PWM信号输出以及角度控制。编写了显示程序,可以对LCD进行初始化以及显示状态信息的图形化展示。
对整个系统进行测试并给出结果分析。建立了模拟输液测试平台,对滴速检测精度、温度检测与加热控制效果、液位检测与报警可靠性、舵机关断动作有效性、系统长时间运行稳定性等做了全方位的测试。通过测试可知,各项功能均达到设计要求,系统运行正常可靠。
本系统的主要创新点和优势有使用RT-Thread实时操作系统做多任务调度来提高系统实时性以及软件可维护性。将温度检测和自动加热结合起来,提高了患者输液的舒适度。将接触方式的液体液位检测设备替换为非接触方式的液体液位检测设备来消除交叉感染的风险。实现液位过低自关,防血流回流、防空气混入血管。
本系统还存在不足之处以及可以改进的方向。滴速检测对于高滴速来说仍然不够准确,以后可以采用响应速度快一些的光电传感器或者用机器学习的方法来改进液滴的识别。目前只支持单路输液的监测,后期可以扩展成多通道集中监测系统,使用无线通信模块把各个床位的输液状态数据传送到护士站,进行集中管理。可以增加数据记录、追溯的功能,把每次输液的全部历史数据保存在本地的Flash或者云端服务器上,有利于临床的统计分析以及医疗纠纷的追踪。可以增加手机APP远程监测的功能,在陪护区可以及时掌握患者的输液情况。
因此本文设计的智能静脉输液自动监控系统功能齐全、性能可靠、成本低,有较好的临床应用前景及推广价值。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)