




免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能输液检测器的设计组员:廖晨歌 刘利 郭祯 李想 王莞舒摘要:本文设计的是一种将光电传感技术和单片机智能控制技术相结合的智能输液监测控制系统。该系统是以C8051F020单片机为核心,利用红外对管实现监测输液瓶液面高度和点滴速度的监测,液面高度和点滴速度通过八位数码管显示,在液面低于警戒值时自动报警,在点滴速度与预设速度不符时实现流速调节。速度调节部分利用步进电机和遥控器实现,可以实现手动控制。关键词:C8051F020单片机;红外对管;液面监测;自动报警;遥控调控1.项目研究意义和研究现状:静脉药物注射是临床医学中的主要治疗手段之一,在输液过程中,由于种种需要护士需要及时为病人停止输液或更换药品,为减少护士的巡回工作量,同时提升对每个病人尤其是加强对老人、儿童、重病患等病人的看护条件,避免因换药、拔针不及时造成的危险情况,降低医疗事故的发生率,出现了利用单片机和光电传感技术实现的智能检测装置。我们基于实际情况对该装置进行了研究和改进,在实现了输液液面的即时监控和点滴速度的监测显示和阈值报警的同时,改进了监测程序设计思路,并设计添加了遥控器控制的电机模块,实现对输液速度更加方便有效的调控,从而更加方便了行动不便者的使用。2.研究内容与预期目标2.1研究内容本项目是围绕C8051F020单片机为核心展开设计的,红外对管作为探测装置在整个系统中起到了重要的作用。该系统包含单片机控制部分、红外监测部分、数码管显示部分、自动报警部分、电机机械调控部分以及红外遥控器和按键控制部分等。将红外监测的硬件部分安装在输液瓶上,可以实现对输液实时情况的监测;将电机带动的机械调控部分安装在调液装置上,可以实现自动/手动并行的输液速度调整功能。该系统工作时,红外检测模块对液面高度以及点滴速度进行探测,并将检测到的信息以电平信号的形式体现于监测电路,通过适当的编程设计,由软件实现对于检测结果的处理和判断,并且在数码管显示部分对液面高度和点滴速度予以显示。当液面高度低于警戒高度时控制蜂鸣器和LED灯实现声光报警;当判断出点滴速度与预设速度不符时,进行反馈式的自动控制调节。红外遥控器和按键部分可以实现点滴速度预设,也可以实现电机模块的手动控制从而对点滴速度在自动调控以外亦能实现手动调控。2.2预期目标基本目标:(1)监测模块可以监测到液面的变化,以及点滴速度的快慢;(2)显示模块可以实现液面高度、点滴速度的实时显示,报警装置可实现在液面过低时的报警;(3)电机模块可以实现对输液速度的机械反馈调控;(4)控制模块可以实现对信号的采集、计算以及判断,整合各个模块的功能实现自动控制;拓展目标:(1)在原控制模块的基础上添加按键,实现更方便精确的控制;(2)添加门铃报警装置,利用类似无线门铃的发射和接收装置实现通知值班人员的作用;3.总体结构设计智能输液监测器由单片机构成主控部分进行主要的信息处理,接收外部操作时令形成的各种控制信号,并完成对于各种信息的计算判断,实现反馈控制。总体电路设计框图如图一所示。图一智能输液监测器主要由单片机系统、电源、遥控器按键控制模块、液面高度检测模块、点滴速度监测模块、点滴速度机械调控模块(步进电机+ULN2003AG芯片)、数码管显示模块和自动报警模块等部分组成。C8051F020单片机作为核心部件完成对外部检测信号的处理、判断以及对各模块的控制。4.硬件设计本设计使用了几个部分的硬件电路来完成各个模块功能的实现,在实现的过程中也尽力提高硬件电路的可靠性和稳定性,以确保整个电路达比较高的稳定性。主要的电路包括红外监测电路、单片机控制电路、硬件驱动电路、数码管显示电路以及电机控制电路等。4.1液面高度检测模块本系统采用红外对管来完成,将接收管和发射管正对安装在输液瓶预定的警戒线位置,未到警戒液面时,由于液体对红外线有较强的吸收作用,接收管接收到的红外光信号较弱,红外接收管截止,输出低电平;到警戒液面时,接收管接收到的光强度变大,红外接收管导通,输出高电平,由此产生电平的跳变。利用循环编程的方法对电平进行检测,监测到跳变后控制产生报警。图二4.2点滴速度监测模块此部分采用红外光电开关来完成。将接收管与发射管正对,固定在液滴下落处,无液滴落下时,接收管接收到的光线较强,输出电平为高电平,当有液滴落下时,下落的液滴对红外线有较强的漫反射、吸收和一定的散射作用,接收到的强度有较大的改变,导致输出电平为低电平。依据产生的电平跳变可以检测到液体的滴落,利用循环编程对点滴速度进行检测。图三4.3数码管显示模块点滴速度的设定与显示都是由数码管显示模块作为主要的交互界面来辅助来完成的。本设计中直接利用了开发板上的数码管显示模块。4.4自动报警模块声光报警部分利用了开发板上的蜂鸣器和LED模块。未到达警戒液面时,LED绿灯亮;到达警戒液面高度时,LED红灯亮,同时产生报警信号使得蜂鸣器报警。实验设计后期我们添加了远程报警部分,利用了无线音乐门铃与继电器的配合,使得在产生声光报警的同时控制无线音乐门铃进行远程报警,拓展了盖自动报警模块的性能。4.5点滴速度机械调控模块机械调控模块利用了步进电机的转动实现对液滴速度的调控,由于单片机无法直接带动功率较大的步进电机,所以添加了uln2003驱动芯片。其电路接线如下图所示:图四通过步进电机与调液滚轮的连接,当步进电机旋转时,调液滚轮的位置跟着改变,从而代替手动操作实现了液滴速度的调控。4.6遥控器按键控制模块利用遥控器上的按键实现对输液瓶规格以及点滴速度的设定,有按键按下时触发中断并判断键值,与显示模块相配合完成调控。5.软件设计5.1主程序编程设计 在整个系统的实现过程中,软件编程作为使得整个系统正常运行的重要保障起到了至关重要的作用。为提高控制系统的可靠性、维护和编程效率,软件采用模块化结构,用模块化结构,用 C语言编写,简洁明了。在硬件的基础上,智能检测仪器的所有功能都是由软件控制实现的,通过软件编程可以实现系统的初始化、各部分实时监控以及报警、按键中断等功能。根据系统的功能要求和硬件电路,设计出软件主流程图如下:图五 软件设计主流程框图5.2中断程序编程设计在软件编程中,同样考虑到电路中中断的使用。在最初的设计思路中,对液面的检测以及点滴速度检测都是利用红外对管产生电平跳变引起外部中断触发的方式实现预期功能的,然而由于液滴持续时间较长,变化较为缓慢,使用中断方式会产生不断进入中断的现象导致程序卡死,不能完成预期的目标。所以改用循环检测的方式进行检测,当完成循环检测后根据情况判断是否调用对应的处理程序,实现报警和反馈调节的目标功能。外部中断被用来进行对遥控器按键的控制响应。中断1和中断0的流程框图如下。中断1辅助完成红外遥控器操作控制,当遥控器上进行按键操作时,单片机上产生外部中断,进入键值判断流程,并根据所判出的键值控制显示模块的显示内容。中断0辅助完成键盘操作控制,当有按键输入时,同样先进入键值判断程序,然后根据判出键值,并根据设定值转换统一数据,调控整个系统。图六 中断1图七 中断05.3整体调试1.调试设备根据调试系统功能的需要,准备输液瓶等调试设备进行实际调试。2.硬件调试先对各个模块部分进行分部调试,使每个部件都能正常工作。然后对整体进行调试,但是在调试过程中出现了一些问题,系统整体工作存在一些偏差。之后通过对各部分的微调协调各个部件之间的功能得以解决,最终系统可以进行正常工作。5.4软件的调试程序清单如下:(1)主程序,程序主循环体main#include /库文件定义(定义单片机为8952系列)#include #include /*/主循环体:/*/void main (void) /主函数unsigned int i;/WDTRST=0x1E;/WDTRST=0xE1;/ 喂狗初始化LEDG;WDTCN = 0XDE;/ 禁止看门狗定时器 WDTCN = 0XAD; Display_Int();Check_Init();/IRC_Init();LEDG;LEDY;while (1)/WDTRST=0x1E;/WDTRST=0xE1;/喂狗指令Display();Check_End();for(i=0;i50;i+)Display();Check_Drop();Motor_Move();Display();/*/(2)检测模块程序设计 check/*/* 红外对管检测 */* 液面高度、液滴速度 */* C语言 */*/#include #include #include void Check_Init(void) /系统初始化/sec = 0;t_250us= 0;t_20ms= 0; TMOD &= 0xF0;/防止定时器工作方式设定冲突 TMOD |= 0x02; /定时器0工作在方式2TH0= 0x06;/对TH0 TL0 赋值TL0= 0x06;ET0 = 1; /使能定时器1 ET0=1; IT0 = 0; /INT0低电平触发EX0 = 1; /使能INT0 EX0=1; EA = 1; void Time1S(void) interrupt 1/定时中断服务函数t_250us+;/每过250ust t_250ms 加一if(t_250us = 80)/计满 80 次(80*250微秒 = 0.02毫秒)时t_250us = 0;t_20ms +;/*if(t_20ms&!(t_20ms % 50)sec +;if(sec = TMAX) /定时TMAX秒,超过时认为计时溢出t_20ms = 0;sec = 0;TR0 = 0; /结束定时TR0 = 1;*/void ChangeDisSpeed(void)/将disspeed转换成可显示的数组unsigned char i,numn;for(i=0,numn = DISSPEED;i4;i+)disnumi = numn%10;numn = numn/10;void ChangeTime(void)/将time转换成可显示的数组unsigned char min,hour;min = TIME%60;/转换为可显示的数组disnum4 = min%10;disnum5 = min/10;hour = TIME/60;disnum6 = hour%10;disnum7 = hour/10;void Check_Drop(void)if(DROP=0)/如果DROP为1则证明有液滴经过 Display();/等待50毫秒躲过不稳定的状态if(DROP=0)/再看LOW是否改变 TR0 = 0;/终止计时LEDG;DISSPEED = MIN/t_20ms;/转换成液滴速度disspeed,以“滴/分钟”为单位t_20ms = 0;/sec = 0;TR0 = 1;/重新开始计时TIME = 15*VOL/DISSPEED;/通常15滴液滴为1ml,以分钟为单位ChangeDisSpeed();/当前液滴disspeed转换为显示数组ChangeTime();/当前剩余time转换为显示数组Display();while(DROP=0)Display();/等待液滴落下LEDG;void Check_End(void) if(LOW = 0)/如果LOW为0则证明液面过低Display();/等待50毫秒躲过检测不稳定的状态if(LOW = 0)/再看LOW是否改变BUZ= 0;LEDR;Display();BUZ= 1;LEDR;(3)数码管显示模块程序设计 Display/*/* 数码管显示 */* 键盘扫描 */* C语言 */*/#include #include #include void SYSCLK_Init (void) int i;/ 延时计数器 OSCXCN = 0x67;/ 开启外部振荡器11.0592MHz晶体 for (i=0; i 256; i+) ;/ 等待振荡器启振 while (!(OSCXCN & 0x80) ;/ 等待晶体振荡器稳定 OSCICN = 0x88;/ 选择外部振荡器为系统时钟源并允许丢失时钟检测/ 器void PORT_Init (void) XBR0 = 0xaf; XBR1 = 0x1f; XBR2 = 0xc4;/使能交叉开关和弱上拉 P74OUT = 0x00; /使能P4,P5,P6,P7为漏极开路 P3MDOUT |= 0x08;/使能P3.3(蜂鸣器)推挽输出P2MDOUT |= 0x00;void Display_Int(void)/ WDTRST=0x1E;/WDTRST=0xE1;/喂狗指令SYSCLK_Init (); PORT_Init (); IT0=1; EA =1; EX0=1;INT0=1;P5=0xff; P6=num0; P7=dbit0;changbit=1;Display();Display();void Display(void)/显示 unsigned char i,j;/ WDTRST=0x1E;/WDTRST=0xE1;/喂狗指令 for(i=0;i10;i+) for(j=0;j0;i-)/因为是无符号数,如果i=0判断会出现恒成/立的死循环SETSPEED = numn + setnumi;numn = SETSPEED*10;void ChangeReVol(void)/将显示的数组转换为VOL值unsigned char i;unsigned int numn = 0;for(i=7,VOL=setnum7;i3;i-)VOL = numn + setnumi;numn = VOL*10;void Int0_ISR(void) interrupt 0Display();if(P5&0x01)!=0x01)Display();if(changbit)setbit+;if(setbit=8) setbit=0;P7=dbitsetbit;if(P5&0x02)!=0x02)Display();if(changbit)if(setbit=0) setbit=8;setbit-;P7=dbitsetbit;if(P5&0x04)!=0x04)Display();if(changbit)setnumsetbit+;if(setnumsetbit=10) setnumsetbit=0;P6=numsetnumsetbit;if(P5&0x08)!=0x08)Display();if(changbit)if(setnumsetbit=0) setnumsetbit=10;setnumsetbit-;P6=numsetnumsetbit;if(P5&0x10)!=0x10)BUZ = 0;Display();BUZ = 1;LEDY;changbit=changbit;if(!changbit) /如果切换回显示状态,则将设定值转换为 /setspeed和volChangeReSetspeed();Display();ChangeReVol();Display();Display();(4)红外遥控器控制模块程序设计 IRC/*/* */* 红外遥控器 C语言程序 */* */*/#include #include #include void IRC_Init(void) /系统初始化IT1 = 1; /INT1负跳变触发EA= 1;EX1= 1; /使能INT1 EX1=1; IRIN = 1; void Delay_840us(void) TL1= -774; TH1= (-774)8); TR1= 1; while(!TF1); TF1= 0; TR1= 0;void Delay_2400us(void) TL1= -2212; TH1=(-2212)8); TR1=1; while(!TF1); TF1= 0; TR1= 0;unsigned char GetCode()/读码 unsigned char n; static temp=0; for(n=0;n1); while(IRIN); else temp=(0x00|(temp1); /1 return temp;void ChangeSetspeed(void)/将设定值转换为可显示的数组unsigned char i,numn;for(i=0,numn = SETSPEED;i4&numn;i+)setnumi = numn%10;numn /= 10;void ChangeVol(void)/将设定值转换为可显示的数组unsigned char i,numn;for(i=4,numn = VOL;i0;n-) /检测9ms开始码 Delay_840us(); if(IRIN) Count+;break; if(Count) EA=1; return; while(!IRIN); Delay_2400us(); /4.5ms结果码if(!IRIN) EA=1;return;Delay_2400us(); addrl=GetCode(); /地址addrh=GetCode(); num1=GetCode(); /数据num2=GetCode(); if(num1!=num2) /错码; KeyValue=14; EA=1; return; KeyValue=num2; MaValue=addrh; Display();Display();Display();Display();switch(KeyValue)case 0xff:changbit = changbit;break;default: if(changbit)switch(KeyValue)case 0xf3:SETSPEED = 20;ChangeSetspeed();break;case 0xf2:SETSPEED = 60;ChangeSetspeed();break;case 0xf1:SETSPEED = 100;ChangeSetspeed();break;case 0xf0:SETSPEED = 140;ChangeSetspeed();break;case 0xef:SETSPEED = 180;ChangeSetspeed();break;case 0xee:VOL = 100;ChangeVol();break;case 0xed:VOL = 200;ChangeVol();break;case 0xec:VOL = 250;ChangeVol();break;case 0xeb:VOL = 500;ChangeVol();break;case 0xf9:setbit+;if(setbit=8) setbit=0;break;case 0xfa:setbit-;if(setbit=0) setbit=8;break;case 0xf5:setnumsetbit+;if(setnumsetbit=10) disnumsetbit=0;break;case 0x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中实验仪器课件
- 员工劳动争议调解办法
- 高一课文《劝学》课件
- 高一政治备课经验课件
- 离婚协议必知:赡养费支付方式及调整标准解读
- 高端服务业人才派遣与劳动权益双重保障合同
- 住宅小区物业合同到期延期及绿化养护协议
- 知识产权密集型厂房租赁及研发成果转化合同
- 广告效果归因分析代理合同
- 骨髓细胞进修汇报课件
- 建筑工人的安全文明着装与防护用品
- 《五环旗下一家人》课件
- 《教育诊断与幼儿心理健康指导》课程标准
- 循环经济 实现低碳目标
- 喷涂分析改善报告
- 医院检验科培训课件:《微生物检验相关介绍》
- 资源与资源系统
- 《一轮复习-函数的零点》
- 九一八知识竞赛题
- 产品报价单(5篇)
- 河南省毕业年困难毕业生求职创业补贴申请表(人工审核用)
评论
0/150
提交评论