课 程 设 计 报 告
题目 基于单片机控制的输液安全报警系统
2014-2015 第二学期
专业班级 12级电气6班 姓 名 王永超
学 号 201295014230
指导教师 某 某 某
教学单位 电子电气工程学院 2015年 7 月 1 日
目录
1.1课题背景
1.2本课题的研究内容和预期目标
2.1总体方案的设计
1
2.2设计的总体框架
2.3方案论证
2.3.1控制方案的选择
2.3.2电机方案的选择
2.3.3液滴检测方案
3 硬件设计
3.1 主控系统89c51
3.1.1 89c51单片机的内部结构3.1.2 89c51各管脚功能
3.1.3 最小系统
3.2 滴速检测模块
3.3 滴速控制模块
3.4 报警模块
3.5 键盘模块
2
4 程序设计流程
4.1 滴速检测流程
4.2滴速控制流程
1.1课题背景
很多人在输液时觉得药滴得太慢,想尽快打完针走人,就自行调快速度。还有的人觉得有点不舒服,就调慢了滴速。其实,这样做都是很危险的。滴注速度必须根据患者年龄、病情、药物性质、输液总量和输液目的等多方面因素确定,而不能单靠患者的感受随意调节。
对成年人来说,普通药物(如消炎药、胃药、)的速度一般在60~80滴/分钟;纠正脱水的药物(如甘露醇)应该把滴速开到最大;刺激血管的药物和血液制品,相对要滴慢一点。对于老年人和儿童,由于器官发育不完全或功能降低,补液速度一般控制在30~40滴/分钟;补液过快,就会加重心脏负担。人的血管是有一定容量的,如果体内短期忽然增加太多液体,心脏排血量就会加大,负担就会加重,心脏不好的患者就可能出现心衰和心律失常。另一方面,补充药物太快可能引起血管炎性病变,甚至影响血管功能
一般的输液管15滴=1毫升,每小时输入毫升数=每分钟滴数÷15×60
1.2本课题的研究内容和预期目标
病人输液过程中,输液瓶的高度与液体滴速有一定关系,利用光电二极管检测滴液速度,通过数据采集传送至单片机,单片机发出相应的脉冲信号,控制步进电机的转动,从而对输液桶的高低实现控制,进一步实现对滴速的控制。此系统可自动控制滴速,也可以通过病人的具体情况自行手动加减滴速控制,当液位低于一定值时,通过声光报警提示医护人员施行具体操作,输液
3
过程中若病人有需要,也可以按键通知医护人员。
课题的研究目标是要研制出一种输液监控系统。以单片机为核心,设计出一个监测与控制液体点滴速度的装置,能检测点滴速度,控制点滴速度,并能发出报警信号。它主要包括:键盘模块、滴速检测模块、滴速控制模块,报警模块。键盘模块具有加速滴液,减速滴液 和紧急呼叫的功能。而滴速检测模块能够检测出当前的滴液速度。滴速控制模块能够通过控制步进电机来加速和减速滴速。报警模块能够在检测出当前滴速后和预期设置的滴速做一对比如果超出范围能能够自动报警。
2.1总体方案的设计
如图1所示,由于输液瓶的高度与液体滴速有一定关系,利用光电二极管检测滴液速度,通过数据采集传送至单片机,单片机发出相应的脉冲信号,控制步进电机的转动,从而对输液桶的高低实现控制,进一步实现对滴速的控制。
图1 输液安全报警系统示意图
2.2设计的总体框架
4
2.3
方案论证
2.3.1控制方案的选择
我们选择89c51单片机来作为系统主控部分,它有以下优点:
(1)重量轻、耗电少、价格低、电源单一。
(2)抗干扰能力强、可靠性高。芯片本身是按工业测控环境设计的,其抗工业噪声干扰优于一般的通用CPU;程序指令及常数、表格固化在ROM中,不易被破坏;许多信号通道均在一块芯片内。
(3)集成度限制,片内存储器容量较小。一般ROM小于8KB,RAM小于256个字节,但可在外部扩展,通常ROM、RAM可分别扩展至64KB。
(4)面向控制,控制功能强,运行速度快。其结构组成与指令系统都着重满足工控要求。指令系统中均有极其丰富的条件转移指令,I/O口的逻辑操作及位处理功能。一般来说,单片机
5
的逻辑控制功能及运行速度均高于同一档次的其它微处理器。
(5)开发应用方便,研制周期短。片内具有计算机正常运行所必须的部件,芯片外部有许多供扩展用的三总线以及并行、串行输入/输出管脚,很容易构成各规模的计算机应用系统。
2.3.2电机方案的选择
方案一:伺服电机。
伺服电机可以接收电信号,然后转换成转动轴上的角速度与角位移。其转速要比电机在负载时的转速高很多。但是就伺服电机的使用情况来说,多数是在低的转动惯量、高的启动转矩和大转矩的系统里。并且伺服电机的价格较高,很少使用。
方案二:直流电机。
直流电机上电后立马转动,掉电后惯性较大,停机时还要转动一定角度后才可停下来。转矩小、没有抱死功能,如果要求准确地停在一个位置,其闭环算法太复杂。
方案三:步进电机。
步进电机主要是把电脉冲信号转换成输出轴的转角或转速,容易开启停止、正反转及变速,动态响应快。价格适中,控制精度较高,适用于较为精确的测量中,还可以有效提高输液速度的控制精度。步进电机每输入一个脉冲信号,转子就会转过一个角度,步进电机会输出特定的角位移或者线位移,其与输入脉冲数成正比例,步进电机的转速也与脉冲频率成正比例关系。本文以单片机为核心,控制了步进电机的工作,其控制信号是数字信号,也就不需要数/模转换了。其具有了快速的启/停能力,可以在一刹那实现启停动作,并且其步距角的降低较小,延时短,定位准确,精度高,可操作性较强。
6
因此选择方案三。
2.3.3液滴检测方案
红外对管测量点滴速度。该方案的基本原理是在点滴地下的时候,液滴阻挡了信号的接收,产生高电平的脉冲信号,单片机在定时时间内检测脉冲数,再根据公式计算滴速。为了提高抗干扰能力,对管设置为一个接收,一个发出。红外对管尺寸小,价格便宜。电路也非常的简单,性能也很稳定,而且红外传感器已经在各行各业有了很多的应用,可靠性大大增加。所以此方案比较容易实现,而且简单,价格适当,性能稳定。以下为详细说明:
红外线穿过对管间的间隙,由接收管接收。当没有水滴通过对管间隙时,红外接收管会处于完全导通状态,输出的为低电平;当有水滴通过对管间隙的时候,红外接收管的导通能力会有不同程度地下降,其输出的不规则是正向脉冲;每一个水滴的通过都会产生一个这样的不规则的正向脉冲,脉冲数目是与水滴数目一一对应。这样由红外对管传感器所产生的正向脉冲会经过LM339比较器后,输入端是输入的不规则正向脉冲,就会整形为规则的正向脉冲,然后将该脉冲输出到单片机的中断口 INT0。
3 硬件设计
3.1 主控系统89c51
7
3.1.1 89c51单片机的内部结构
在一块小芯片上集成了一个微型计算机的各个部分,其核心部分是中央处理器CPU,它由运算器和控制器两大部分组成。运算器用来完成算术运算、逻辑运算和进行位操作,由算术逻辑单元(ALU)、位处理器、累加器ACC、寄存器B、暂存器TMP1和TMP2等组成。 控制器是用来统一指挥和控制计算机进行工作的部件,它由控制逻辑、内部振荡电路OSC、指令寄存器及其译码器、程序计数器PC及其增量器、程序地址寄存器、程序状态字寄存器PSW、RAM地址寄存器、数据指针DPTR、堆栈指针SP等组成。
3.1.2 89c51各管脚功能
89c51如图2所示,各管脚功能说明如下:
⑴ 电源管脚 VCC(40脚):接+5V;VSS(20脚):接地。
⑵ 时钟信号脚 XTAL1(19脚),XTAL2(18脚):外部时钟信号脚。
(3)RST/Vpd(9脚): 当作RST使用时,为复位输入端;当作为Vpd使用时,当VCC掉电下,可作备用电源。
(4)Vpp(31脚):为访问内部或外部程序储存器的选择号。对片内RPROM编程时,Vpp接入21V编程电压。
(5)ALE:(30脚):当访问外部储存器时,ALE信号的负跳变将P0口上的低8位送入地址锁存器,不访问外部储存器时,ALE端仍以固定的振荡频率的1/6速率输出正脉冲信号。当对片内EPROM编程时,该管脚PROG用于输入编程脉冲。
8
(6)(29脚):外部程序存储器读选通信号。
(7) 输入/输出口线
a.P0口(32~39脚):双向I/O口,既可接地址锁存器作低8位地址I/O口使用也可以作数据I/O口使用。能驱动8个LSTTL负载。
b.P1口(1~8脚):具有内部上位电阻的8位准双向I/O口,可驱动4个LSTTL负载。
c.P2口(21~28脚):8位具有内部上位电阻的准双向I/O口,在接收外部存储器时,P2口作为地址高8位。能驱动4个LSTTL负载。
d.P3口(10~17脚):8位具有内部上位电阻的准双向I/O口,其每一位又有如下特殊功能P3.0(RXD):串行口输入端。 P3.1(TXD):串行口输出端。 P3.2():外部中断0输入端,低电平有效。 P3.3():外部中断1输入端,低电平有效。 P3.4(T0):定时/计数器0外部事件计数输入端。 P3.5(T1):定时/计数器1外部事件计数输入端。 P3.6():外部数据存储器写选通信号,低电平有效。 P3.7():外部数据存储器读选通信号,低电平有效。
图2 89c51管脚图
9
3.1.3 最小系统
晶振电路:振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振.由于晶体自身的特性致使这两个频率的间隔相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路.这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化.
晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率.
一般的晶振振荡电路都是在一个反相放大器(留意是放大器不是反相器)的两端接进晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该即是负载电容,请留意一般IC的引脚都有等效输进电容,这个不能忽略.
一般的晶振的负载电容为15p或12.5p ,假如再考虑元件引脚的等效输进电容,则两个22p的电容构成晶振的振荡电路就是比较好的选择。
复位电路:单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。
如图3所示为单片机的最小系统。
10
图3 最小系统
3.2 滴速检测模块
红外对管测量点滴速度。该方案的基本原理是在点滴地下的时候,液滴阻挡了信号的接收,产生高电平的脉冲信号,单片机在定时时间内检测脉冲数,再根据公式计算滴速。为了提高抗干扰能力,对管设置为一个接收,一个发出。红外对管尺寸小,价格便宜。电路也非常的简单,性能也很稳定,而且红外传感器已经在各行各业有了很多的应用,可靠性大大增加。所以此方案比较容易实现,而且简单,价格适当,性能稳定。以下为详细说明:
红外线穿过对管间的间隙,由接收管接收。当没有水滴通过对管间隙时,红外接收管会处于完全导通状态,输出的为低电平;当有水滴通过对管间隙的时候,红外接收管的导通能力会有不同程度地下降,其输出的不规则是正向脉冲;每一个水滴的通过都会产生一个这样的不规则的正向脉冲,脉冲数目是与水滴数目一一对应。这样由红外对管传感器所产生的正向脉冲会经过LM339比较器后,输入端是输入的不规则正向脉冲,就会整形为规则的正向脉冲,然后将该脉冲
11
输出到单片机的中断口 INT0。如图4为滴速测量模块硬件图。
图4 滴速测量模块硬件图
3.3 滴速控制模块
由于主要是利用步进电机来改变液瓶的高度从而实现滴速的改变,步进电机主要是把电脉冲信号转换成输出轴的转角或转速,容易开启停止、正反转及变速,动态响应快。价格适中,控制精度较高,适用于较为精确的测量中,还可以有效提高输液速度的控制精度。步进电机每输入一个脉冲信号,转子就会转过一个角度,步进电机会输出特定的角位移或者线位移,其与输入脉冲数成正比例,步进电机的转速也与脉冲频率成正比例关系。我们选择的是三相步进电机。由于51单片机的管脚出入不足以带载步进电机,所以我设计了一个驱动电路实现小电流控制大电流。如图5所示。
12
图5 步进电机驱动电路
3.4 报警模块
报警电路的驱动端接于单片机P1.0脚,在输液前,根据病人的情况设定输液速度,当点滴的速度低于10滴/分或高于70滴/分的情况下,单片机会发出信号使P1.0输出高电平,将触发蜂鸣器报警装置,蜂鸣器会发出响声。如有人按报警按钮,P1.0也会输出高电平,触发蜂鸣器报警,以提醒医生和病人进行相关的应急措施,避免危险事故发生。如在10秒后仍然无人处理,则关闭输液器以保证病人安全。当液面低于一定值时也会使单片机产生中断触发报警。如图6为报警模块。
13
图6 报警模块
3.5 键盘模块
共有3个按键,分别为加速滴速,减速滴速,紧急呼叫。当按下按键时对应的单片机p1.1,p1.2,p1.3会被拉低为低电平。如图7为按键模块。
图7 按键模块
4 程序设计流程
4.1 滴速检测流程
首先利用T0定时器,设置1000us的中断和中断函数,当检测到液滴滴落是打开定时器,每1000us进一次中断函数,而中断函数中我设置了一个变量num,让num自加一次。当再次检测到液滴是关闭定时器。然后根据 次数= 60000/num 算出速度。
14
4.2滴速控制流程
先通过上面的测速然后在判断与目标速度的大小,在控制步进电机的正反转来达到加速和减速的目的。流程图如下:
15
附录一:
1、三相步进电机
16
步进电机控制程序:
void moter_zheng()
{
uint i
for(i=0;i<=100;i++)
{ A=1;B=0;C=0;
A=0;B=1;C=0;
A=0;B=0;C=1;
}
}
void moter_fan()
{
uint i
for(i=0;i<=100;i++)
17
{ A=0;B=0;C=1;
A=0;B=1;C=0;
A=1;B=0;C=0
}
}
2.键盘检测程序
void anjian()
{
if(jiasu==0)
{ moter_zheng();
}
if(jiansu == 0)
{ moter_fan();
}
18
if(hujiao == 0)
{ speaker =0;
}
}
3.主程序
#include #include #define uchar unsigned char #define uint unsigned int sbit speaker=P1^0; sbit jiasu=P1^1; sbit jiansu=P1^2; sbit hujiao = P1^3; sbit A=P1^4; 19 sbit B=P1^5; sbit C=P1^6; sbit temp=P1^7; uchar num; uint sum,a=50; void anjian(); void moter_zheng(); void moter_fan(); void main() { TMOD=0x01; //开启定时器0为工作模式1 TH0=(65536-64536)/256; // TL1=(65536-64536)%256; // EA=1; //开启总中断 20 ET0=1; //开启定时器0中断 while(1) { if(temp==1) { TR0=1; //开启定时器0计时 if(temp==1) { TR0=0; } } sum=60000/num; num =0 ; if(sum<10&&sum>a) { speaker=0;} 21 } anjian(); } void T0_time()interrupt 1 //定时为1000us { TH0=(65536-64536)/256; TL0=(65536-64536)%256; num++; } 22 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务