基于单片机与CAN总线的输液控制系统
2014-12-23王发智
王发智
(齐齐哈尔大学,黑龙江 齐齐哈尔161006)
0 引言
静脉输液是一种最常用的临床治疗方法,临床上应根据药物和患者情况不同配以不同的输液速度;有些药输液速度过快,可能会导致中毒,更严重时会导致水肿和心力衰竭;输液速度过慢则可能发生药量不够或者无谓地延长输液时间,使治疗受影响,并给患者和护理工作增加不必要的负担[1]。 常规临床输液,普遍采用挂瓶输液,用眼睛观察,依靠手动夹子来控制液滴速度,不易精确控制输液速度,而且护士工作量大。
智能型医用输液泵可满足多种功能的需求。 归纳起来,它能实现以下功能:
(1)可精确测量和控制输液速度;
(2)可精确测定和控制输液量;
(3)液流线性度好,不产生脉动;
(4)能对气泡、空液、漏液和输液管阻塞等异常情况进行报警,并自动切断输液通路;
(5)实现智能控制输液[2]。
1 系统设计方案
1.1 系统硬件设计
红外振荡装置产生红外脉冲,红外信号通过液滴池后形成不同的脉冲峰值,经过放大装置放大,使高、低峰值之间的反差加大,脉冲经过施密特整形后,低峰值脉冲被削减,高峰值脉冲通过,对于可重复触发单稳电路,当有脉冲来时其处于暂稳态,没有脉冲时处于稳态。因为有液滴通过时,红外信号被吸收,产生一次低电平,在单片机中设置下降沿触发,计算下降沿数目可以得到液滴数目(20 滴=1ml)。 单片机与CAN 总线控制器连接,彼此通讯,从单片机送来的数据,进而控制步进电机,步进电机带动蠕动泵转动。 根据上述设计思想设计的系统总体原理框图如图1 所示。
图1 系统原理框图
系统的硬件和系统要实现的功能紧密相关, 因此先要从系统要达到的功能入手,然后再用硬件实现这些功能。 系统需要显示“滴速”和“瓶量”两种[3],平时主要是显示“滴速”,并可以用“ml/min”和“滴/min”两种方法显示,当然这两种方法可以通过键盘输入切换功能来实现。 红外调制发射电路可由555 电路实现,红外接收放大采用红外接收放大一体的管子, 后级只需要把信号整形并变成液滴频率的信号即可,这里用555, 74LS122 或74HC123 实现。 具体原理如下:红外脉冲接收管接收并放大红外信号, 在经过施密特触发器滤除干扰后送给液滴变换电路。 接下来是如何去测量滴速。 本文利用8253 的定时器产生一个固定定时,同时利用8253 对液滴计数,当定时器溢出的时候,用单片机把定时器8253 计的滴数读出,再把这个数据转化为每分钟的滴速,这样就完成液滴测量。 液滴速度测量的原理实际上是测量在规定时间单稳产生的脉冲数,在GATE0 脚加上控制电平来控制规定时间,OUT0 输出产生速度上限控制报警, 速度下限则由软件完成。
系统接口电路设计中包括键盘显示单元设计及报警单元设计,在键盘显示部分采用目前最常用的8279 器件, 报警电路利用单片机的P1.1 和P1.2 口控制两个LED,进行报警显示。
在键盘中设定了如下功能键:数字输入+、数字输入-、左移、右移、瓶量/速度选择、清零确认、显示选择(ml/min 和滴/min)、报警消除、暂停、确认。
键盘显示部分采用8279 专用键盘显示接口电路。 按照需要的功能,规划并设计硬件电路,P2.0 为片选地址线,/INT0 作为中断。复位端和单片机的复位端相连。 设置10 个按键,驱动6 个LED。 单片机系统的晶振为12MHz。考虑到8279 直接驱动数码管的能力不够,设置了驱动缓冲器74LS244/241。
使用L297+L298 做成的两相双极性步进电机马达驱动,采用定电流截波方式驱动,每相电流可达2A,L297 是步进马达控制器,用来产生两相双极性驱动信号与马达截波电流设定,L298 是用来驱动步进电机电力输出,是双全桥接方式驱动,由于采用双极性驱动,因此马达线圈完全利用,使步进电机可以达到最佳的驱动[4]。
由ALE、/WR、/RD 组合产生稳定的2MHz 脉冲,供给8253。 8253三个计数器把它分频供给L297,L297 产生脉冲分配给L298,L298 驱动两相步进电机。 步进电机驱动部分电路原理图如图2 所示。
本设计用硬件产生脉冲分配码驱动, 程序中控制8253 的脉冲频率就可以控制步进电机的转速,设定好工作速度后,根据这一数值查表对应某一值,利用这一数值在这基础上系统进行加速或减速,当测量数值和设定小于规定的数时记录这个脉冲率并停止调速,这就是软件流程的主要思想。采用AT89C52 单片机产生控制信号。单片机内部的RAM 和ROM 即可满足要求。 在以后的实际运用中,如需扩展较多的外部RAM 和ROM 时,可加上数据缓冲器。
图2 步进电机驱动部分电路原理图
步 进 电 机 控 制 信 号 通 过AT89C52 单 片 机P1 口 的P1.0、P1.1、P1.2、P1.3 四个口输出的具有时序的方波经74HC04 芯片(为方便输出,起非门的作用)作为步进电机的控制信号。 为了增加步进电机工作的灵活性,在起动步进电机工作之后,当有键按下,设置产生外部中断,达到灵活控制步进电机的目的[5]。
单片机对CAN 总线控制芯片SJA1000 进行正确初始化后, 将要发送的数据通过PC82C250 输出至CAN 总线。 在硬件电路的设计过程中,为了增强抗干扰能力,SJA1000 的TX0 和RX0 引脚并没有直接和PCA82C250(CAN 总线收发器)的TXD,RXD 相连接,而是通过高速光耦6N137 后与PCA82C250 相连,这样可以实现总线上各CAN 节点之间的电气隔离。 在光耦的使用过程中,一定要注意光耦6N137 的两侧必须使用完全独立的两组电源Vcc 和+5V, 否则光耦将起不到任何作用。 图3 给出了基于SJA1000 的CAN 总线接口模块电路。 在PCA82C250 与CAN 总线的连接部分,可以将CANH 和CANL 两个引脚各自通过1 个5Ω 的电阻与CAN 总线相连, 这样可以起到限流的作用,以保护PC82C250 免受过流的冲击。
图3 基于SJA1000 的CAN 总线接口电路
驱动器PCA82C250 是控制器与物理总线之间的接口,从CAN 控制器SJA1000 出来的数据流需经过驱动器PCA82C250 才可由总线相连,驱动器PCA82C250 除加强总线的差动发送和接收功能外,还有如下特点:具有抗瞬间干扰,保护总线传输能力,采用斜率控制,降低射频干扰,过热保护及总线与电源之间的短路保护,低电流待机模式,未上电节点不会干扰总线, 总线可连接110个节点。
1.2 系统软件设计
软件采用功能模块的设计思想方法进行编写,可增加系统整体可移植性。 系统软件需要的功能模块主要有:键盘模块、显示模块、测量信号模块、步进电机驱动控制模块、通讯模块、报警模块。 这样分类也和硬件的设置相对应。 软件各模块的相互连接需要主控模块对它们进行控制。 按照主控模块的执行顺序来工作。 这就是整个系统的软件构建方案。
在系统中要考虑抗干扰设计问题,在硬件方案上已有体现, 例如施密特触发器就是滤除干扰。 软件抗干扰主要是在没有利用的程序段中加入长跳转到0000H,使程序出错后能自动重新归位。 设置自定义的标志寄存器,用来连接各程序模块相互之间传送信息。软件模块的相互关系如图4 所示。
图4 软件模块分配图
2 结论
现代医疗技术的飞速发展和人民重视身体健康程度,要求相应配套的医疗设施和服务提高,输液作为最为常用的医学手段,对输液控制和治疗关系也变得越来越密切。
本文的创新点是探讨和实现了一种智能型的支持网络运行的医用输液泵系统,采用红外线间接测量液滴速度,同时利用液滴速度快慢与空瓶、阻塞、漏液、速度失控之间的关系,省去了目前同类输液设备中采用压力传感器测量阻塞和漏液的方法,降低了成本,但是这一功能仍然还存在。
[1]陆仲达,何鹏,徐凤霞.基于电力线载波技术的输液远程监测系统[J].微计算机信息,2008,6-2:112-113.
[2]王国辉,等.智能型医用输液泵及其应用.物理治疗与手术治疗[J].2002,3:56-58.
[3]Intel.Interfacing.a MCS-51 Microcontroller to an 82527 CAN Controller[J].2007:103-108.
[4]田建君.单片机控制输液泵系统设计[J].中小型机电,2004,1(31):53-55.
[5]孟武胜,李亮.基于AT89C52 单片机的步进控制系统设计[J].微电机,2007:64-66.