基于ZigBee与PID算法的多功能静脉输液控制器

2017-08-02 08:59卓明锋王鑫凯殷惠莉邱泽源
网络安全与数据管理 2017年14期
关键词:下位上位输液

卓明锋,王鑫凯,殷惠莉,邱泽源,代 芬

(华南农业大学 电子工程学院,广东 广州 510642)



基于ZigBee与PID算法的多功能静脉输液控制器

卓明锋,王鑫凯,殷惠莉,邱泽源,代 芬

(华南农业大学 电子工程学院,广东 广州 510642)

设计了一种基于STC89C52单片机的多功能静脉输液控制器,控制器实现静脉输液过程的输液时间实时监测和智能加热控温,并与上位机进行不间断的数据通信。加热模块通过独立按键可设定恒温运行时的温度值,并用LCD1602显示设定温度值。在运行过程中DS18B2采样到温度,再将转换后的数字量用LCD1602进行显示,调用PID算法,确定PWM波的占空比,确定加热的功率,直到能在规定的温度下恒温加热。红外对管计时模块通过对液滴的采样获得速度,进而计算出所需输液时间并且在LCD1602上显示,显示过程中可通过独立按键重置速度和输液所需时间。应用程序的开发与运行环境是Visual Studio 2015,由VC++的MFC编程得到,无线通信由ZigBee实现。

输液加热;PID算法;红外对管;MFC;ZigBee

0 引言

随着社会的进步与发展,医疗问题越来越受到人们的关注,而作为医疗上必不可少的一个环节—输液,也就对于人们的重要性也日趋重要。在中国的冬天,特别是北方地区,低温度的液体输入到病人的血管中,不仅会让病人感觉到不适,还有可能加重病人的病情;病人和医护人员因不能及时获取输液时的实时状态,浪费了广大病人宝贵的时间,也给医护人员的工作带来了很大的困扰。为了向病人及医护人员提供输液实时状态,设计出了一个多功能静脉输液控制器,它通过采集输液信息来算出输液剩余时间,并且可以显示输液液体温度和输液剩余时间,自动提示病人和护士,同时实时监控输液的状态并且把数据传到上位机,还可以调控输液的液体温度并保持温度。

1 系统总体设计

1.1 系统结构

单个控制器的系统[1]框图如图1所示,主控制器的单片机[2]采用了STC89C52RC。对输液信息的采集,采用了红外对管测出输液时液体的滴速和矩阵键盘输入液体体积。加热温控模块采用STC89C52单片机进行控制,独立按键输入设定温度,调用PID算法来实现温度的精确控制,通过DS18B20温度传感器实时显示温度在LCD1602上,设定温度上下限以保证系统整体结构[3]稳定安全。

图1 单控制器系统结构

整个系统的框图如图2所示,利用ZigBee的无线数据透传以及上位机应用程序的控制,可以实现上位机对多个病人的智能控制、智能提示、智能呼叫。整个系统分为加热温控模块、上位机通信模块、计时报警模块[4]。

图2 单控制器系统结构

1.2 加热温控模块的PID算法

在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器是应用最为广泛的一种自动控制器。它具有原理简单、易于实现、适用面广、控制参数相互独立、参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象——“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器[5]是一种最优控制。

比例(P)、积分(I)、微分(D)控制算法各有作用:比例,反映系统的基本(当前)偏差e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;积分,反映系统的累计偏差,使系统消除稳态误差,提高无差度;微分,反映系统偏差信号的变化率e(t)-e(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。积分和微分都不能单独起作用,必须与比例控制配合。

PID增量式算法如下:

Δu(k)=u(k)-u(k-1)

(1)

Δu(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]

(2)

进一步可以改写成:

Δu(k)=Ae(k)-Be(k-1)+Ce(k-2)

(3)

采用Kp=10,Kie=10,Kd=6, 映射在单片机就是当实时温度达到预设温度时,控制继电器断开电路,系统停止加热,当实时温度小于预设温度时,控制继电器接通电路,系统开始加热。当预设温度和实时温度有3℃及以上的温度差时,系统全力加热,当预设温度和实时温度的温度差小于3℃时,系统进入PID算法[4]以保持温度在某一特定值。

1.3 上位机无线通信模块数据的传送与接收

1.3.1 无线数据传输原理

数据可以从上位机通过串口传给ZigBee主管,ZigBee主管把数据发给单片机上的ZigBee子管,ZigBee子管通过单片机的TXD/RXD传给单片机或者把数据传出来,实现了上位机与单片机无线通信的要求。反过来,数据也可以从单片机传到ZigBee子管,再到ZigBee主管,最后送达上位机。

1.3.2 广播模式的ZigBee实现一对多的无线通信

基于本设计,采用了三个ZigBee,一个作为主管,其他两个为子管(子管数量可根据输液病人数量所定)。

广播模式中,每个ZigBee都能无差别地接收彼此的数据,但是同一时刻每个ZigBee只能接收一个ZigBee的信息,即上位机每一时刻只能接收一个下位机传来的数据。这就导致了三个问题:当上位机发出数据给特定的下位机时,其他不相干的下位机也能收到信息;当下位机实时给上位机发数据时,其他下位机也能收到此下位机发出的数据;上位机实时显示多个病人的输液剩余情况遇到挑战。

针对第一个和第二个问题,采取了特定指令原则。也就是说每个子系统都有特定的指令,只有指令对了,才采取动作,否则不做任何动作。只有当上位机发送特定指令时,才能让下位机的单片机工作。反之,当下位机发出的数据被其他下位机接收到,其他下位机将把这些数据当做“乱码”处理,亦即不做任何动作。

针对第三个问题,采取循环差错发送原则。每个子系统都有自己的实时数据发送周期,并且不尽相同。本设计,采用子系统1每4 s发送一次数据给上位机,子系统2每5 s发送一次数据给上位机,并且计时起点相同。为做到计时起点相同,运用广播模式,在上位机发送一个开始指令,所有下位机立即进入工作状态开始计时。

1.4 计时报警模块的输液剩余时间

红外对管测量液位,将红外对管分别放置于滴管两侧,当有液滴落下时会阻碍和折射红外光使接受管从高电平跳转到低电平,用单片机的外部中断0记录这个电平翻转,用单片机的定时器0计算20滴液体滴落的时间,即外部中断0反转20次所需的时间。

液体的滴落速度=滴20滴液体所需的时间/20,即:

v1=T1/20

(4)

根据前面输入的液体体积,输液所需时间=输入的液体体积/液体的滴落速度,即:

T=V/v1

(5)

2 程序的设计

2.1 主程序流程图

系统的主程序[6]流程图如图3所示,首先在矩阵键盘输入液体体积,按下矩阵键盘的S16确定输入体积,然后控制器自动对滴下的20滴液体进行采样[7],由定时器0计算出滴落20滴液体所需的时间,进而算出输液剩余时间,当需要改变输液的速度时,按下K1键即可重新对改变速度后的液体重新采样。按下K2键即可向上位机发送求助信号。K3、K4键可对预设温度进行实时调控。

图3 系统的主程序流程图

2.2 上位机应用程序的设计

2.2.1 预期上位机所能实现的功能

上位机[8]将实现功能如下:

(1)实时接收下位机中多个病人的输液情况数据,并在计算机上实时显示出来。

(2)当下位机发出0K指令,在上位机的应用程序会有指定信息(如病人a呼叫护士)出现在显示框,并以响铃方式提醒医护人员。

(3)当上位机接收到下位机发来的求助信息并听到响铃方式的提醒后,在上位机发送指令,控制下位机做出相应动作(如在1602显示屏上显示coming字样),以提示病人,医护人员收到求助信息并立即过来。

(4)当病人的输液剩余时间小于某个特定值时(如5 min),单片机自动发送特定指令(如“病人a输液时间小于5 min”),在下位机的蜂鸣器会自动响,并以响铃方式提醒护士,只有在上位机输入特定指令,才能消除下位机蜂鸣器的响声并以特定信号提醒病人(如在1602显示屏上显示coming字样),医护人员立即过来。

2.2.2 实现的基本过程

采用VC++的MFC[9]的基于对话框的应用程序模板,开发及运行的环境是Visual Studio 2015。

实现步骤如下:创建基于对话框的MFC应用程序[10]→在对话框添加所需要的控件以及通信控件→在控件的函数内编写代码以实现所需要的功能→编译→运行生成应用程序→调试测试。

通过测试,做出的应用程序完成了预期目标所要实现所有的功能,并在此基础上尽量简化了界面的操作,广大用户都能操作此界面。

3 系统的精确性和稳定性测试

(1)输液时间测试数据

实际时间采用秒表计时得到,没改变输液速度时所测的数据如表1所示。

表1 未改变输液速度时所测的数据

在测试中如果按了K1键亦即改变了输液速度时所测的数据如表2所示。

表2 改变输液速度时所测的数据

从以上两组数据可以算出,误差的平均值为5.02%。

(2)输液温度加热测试数据

在室温20.5℃时所测的数据如表3所示,液体真实温度由数字温度计所测得。

表3 室温20.5℃时所测的数据

在室温26.2℃时所测的数据如表4所示,液体真实温度由数字温度计所测得。

表4 室温:26.2℃时所测的数据

(3)数据分析与结论

根据上面测试数据,系统对输液剩余时间的计算还算比较准确,平均误差在5.02%,并且体积越大,误差会越小。此外,系统还能在较低的室温下稳定工作,将输液温度加热到25℃至39℃,加热负载能够稳定工作,实现平稳逐步加热,安全性得到保证。由此可以得出下列结论:

(1)由系统自动计算出的输液剩余时间已经符合要求;

(2)自动加热到预设温度,并可有按键控制设定加热温度;

(3)加热范围温度25℃至39℃,误差保持在±0.5℃;

(4)能精确地显示实时温度、预设温度和输液时间。

4 结论

目前市场上的同类设计大部分只能实现单一的通电加热功能,即只能加热到一个特定值,而带有控制装置的加热装置成本普遍较高。本设计采用了按键输入和LCD实时显示的方案,能够自动加热到设定温度值并保持恒温,通过调用PID算法可以大大增强加热系统的稳定性,恒温误差可以控制在±0.5℃之内,综合其他功能,本方案成本更加低廉高效,操作也更加人性化和智能化。 在整个系统中,采用一台上位机,通过应用程序,可以同时智能控制多台下位机。自成系统后,可以适用于广大的大中小医院诊所的连接控制。在上位机的应用程序中,按下开始键,就可以实时显示多个病人的输液情况,并在输液剩余时间小于某个特定值时,自动智能提示医护人员。在下位机上,设置了OK显示按键,当病人在输液时间还没到,又想呼叫医护人员的时候,按下此键,就会自动向上位机发送指令。此时,在单片机上的显示屏会显示“OK”字样以提示按键成功,向上位机发送的指令会在上位机电脑显示“X病人呼叫护士”字样,并以响铃方式提醒医护人员。医护人员看到此提示信息后,输入相应指令就可以相除单片机上显示屏“OK”字样,并立即在单片机显示屏显示“Coming”字样,以提示病人医护人员收到了病人的呼叫信息,并即将过来。

[1] 范立南,谢子殿.单片机原理及应用教程北京[M].北京:北京大学出版社,2006.

[2] 边春元.C51单片机典型模块设计与应用[M].北京:机械工业出版社,2008.

[3] 彭为,黄科,雷道仲.单片机典型系统设计实例精讲[M].北京:电子工业出版社,2006.

[4] 王恩义,罗先喜,王甲甲,等.基于PID算法的智能温控系统设计与实现[J],微型机与应用,2014,33(12):18-20.

[5] 黄友锐,曲立国.PID控制器参数整定与实现[M].北京:科学出版社,2010.

[6] 杨将新,李华军,刘东骏.单片机程序设计及应用从基础到实践[M].北京:电子工业出版社,2006.

[7] 范立男.单片机微型计算机控制系统设计[M].北京:人民邮电出版社,2004.

[8] 黄品梅.C++程序设计教程——化难为易地学习C++[M].北京:机械工业出版社,2012.

[9] 仇谷烽.基于Visual C++的MFC编程[M].北京:清华大学出版社,2015.

[10] 周韧研,商斌.Visual C++串口通信开发入门与编程实践.北京:电子工业出版社,2009.

Multi-function intravenous infusion controller based onzigbee and PID algorithm

Zhuo Mingfeng, Wang Xinkai, Yin Huili, Qiu Zeyuan, Dai Fen

(College of Electronic Engineering, South China Agricultural University, Guangzhou 510642, China)

The multi-function intravenous infusion controller is designed based on STC89C52 MCU to realize the infusion time of the infusion process of real-time monitoring, intelligent heating and temperature control, and uninterrupted data communication with the host computer. The temperature value of heating module could be set by the independent button and be displayed by the LCD1602. During the running process temperature is sampled by DS18B2, then it is converted into digital and displayed by LCD1602. PID algorithm is called, and PWM wave of accounting cycle and the heating power are determined until it achieves constant temperature heating under the specified temperature. The speed of liquid droplets can be obtained by sampling in the infrared tube timing module , and then the required infusion time can be calculated and displayed by the LCD1602 .The speed and the time required for infusion can be reset by the independent button . Application is written by the MFC VC++ in the Visual Studio 2015 and the wireless communication is achieved by using the ZigBee.

infusion heating; PID algorithm; infrared tube; MFC; ZigBee

TN919.72; TP273

A

10.19358/j.issn.1674- 7720.2017.14.023

卓明锋,王鑫凯,殷惠莉,等.基于ZigBee与PID算法的多功能静脉输液控制器[J].微型机与应用,2017,36(14):75-78.

2016-12-29)

卓明锋(1995-),男,本科生,主要研究方向:无线通信与软件开发。

王鑫凯(1995-),男,本科生,主要研究方向:单片机控制方面的研究。

殷惠莉(1975-),通信作者,女,硕士,讲师,主要研究方向:无线通信、机器视觉。E-mail:huiliyin@scau.edu.cn。

猜你喜欢
下位上位输液
自灸也能预防输液发热反应
发射机房监控系统之下位机
特斯拉 风云之老阿姨上位
六合丹防治输液性静脉炎的Meta分析
“三扶”齐上位 决战必打赢
输液时短细管中为什么没有药液流出
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
颈枕输液袋