液体点滴速度监控装置的设计.doc_第1页
液体点滴速度监控装置的设计.doc_第2页
液体点滴速度监控装置的设计.doc_第3页
液体点滴速度监控装置的设计.doc_第4页
液体点滴速度监控装置的设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

液体点滴速度监控装置摘要 该装置实时地监测液体点滴速度,通过单片机对信息的分析和处理,由主机发出相应的指令,调整系统的工作平稳,构成了一个高性能的闭环控制系统。实现了对点滴输液速度的直观监测,同时对一些异常情况的出现可实施报警。利用该装置还能通过主控平台对各个分立系统信息实施自动化、智能化的集中处理。能方便、简易的操作和使用,对医疗具有很强的实用性。 关键词 实时监控 红外传感 闭环控制 步进电机一、 方案设计与论证根据题目要求和原输液装置的特点,提出以下三种方案:1、 方案一 直接在滴斗处用两电极棒的方法。待测和控制 量传感器信号处理人机对话界面 电机驱动速度控制 图1此方案的传感器采用简单的液体导电原理,在滴斗处安装两个电极。当水滴落下时,电极导通,从而使待测量的变化转化为高低电平电信号。采用伺服电机改变系统装置中液瓶与受液瓶的高度,达到改变点滴速度,从而进行控制。2、方案二把通过电机改变系统装置高度的方法,改为控制步进电机对输液管进行压缩或缓松,从而实现对点滴速度的改变。采用交流电动机控制H2的高度。即采用红外传感器测量滴斗滴液,送至单片机接口计数,通过数字模拟转换,将其转换为420MA标准电流值,同时通过键盘输入给定每分钟的滴数,再将此滴数将其转换为420MA标准电流值,将此两个信息同时进入数字PID调节器。通过偏差计算再输出一组420MA标准电流值,通过变频调速器控制电动机调节H2的高度,来控制滴斗滴数。此方案的优点是,完全按目前电气工程标准化运作,可以在很短时间完成。2、 方案三根据点滴装置的特点,通过对装置的某一位置进行监测和控制,达到对整个系统液体点滴速度的监控。 (如图1)。通过控制输液软管夹头的松紧来控制点滴速度,采用红外传感器测量滴斗滴数,送至单片机接口计数并显示,首先标定两个脉冲(两滴间)间的时间间隔(以10MS为时基单位)。然后计算给定滴斗滴数(通过键盘)的时间间隔(以10MS为时基单位)。将此两个时间间隔进行比较,以决定步进电机运行的方向。该步进电机通过丝杠控制输液软管夹头的松紧,来控制滴斗滴数4、方案比较方案一的特点是:实现比较简单容易,原理上也是可行的,但由于本装置用于医疗,电弧的产生,可能对不同的药物有影响,同时传感器(电极)不能重复使用,以防止传染。方案二通过改用红外传感器,弥补了方案一的不足。但是还存在问题,利用改变高度的方法虽然容易实现,但可控性不好。由此,我们采用了第三种方案,通过挤压输液管的办法来实现对点滴速度的控制。二、 系统原理框图 如图2所示。显示与键盘控制滴斗AT89C51基本系统红外传感器及信号处理输液管步进电机驱动 图2 本系统最主要的是充分利用单片机编程的灵活性和其强大的功能,使一些小的系统实现自动化和智能化成为了现实。其中的器件都比较简单,尽大可能的利用各集成芯片的功能,如系统的键盘和显示原理电路。通过红外传感器对水滴滴落的动态信息的感应 ,单片机对数据的采集分析和处理,同时使用小功率的步进电机进行机械调整,使装置能机智、即时的响应操作者的使用。三、 主要电路原理与设计1、 AT89C51单片机基本系统 控制与数值信号处理的核心采用AT89C51单片机,采用串口工作方式。电路如图3。图32、 显示与键盘 如图4利用74LS164进行串行动态9位数码管显示,74LS164的主要功能是8bits的串入并出数据处理。电路结构简单,功能强大。采用中断和查询的方法,设计的4键键盘的形式,利用单片机的灵活编程,扩展其键入功能。图43、红外传感和信号处理 采用红外线的发射和接收装置,它可用来检测包括液体在内的各种透明体、半透明体、不透明体,从而可以灵敏地反应水滴滴下。利用光电耦合器对电信号进行处理,减少干扰。4、 步进电机驱动和控制 如图5图55、声光报警 当检测到液面低于3cm时由单片机采集到报警信号,由报警芯片发出声光报警。5、 主控制平台 可以组建一个小型的网络系统,由主机控制和监视各个从机的工作状态和各个装置的信息。 如图 61号从站主控站模拟从 站 图 6 四、系统软件工作流程 如图7 到 图121、软件设计: 软件部分参考流程图,这里主要讲述一下软件编写过程中的几个细节部分。如前所述,我们计算滴水速度的原理是通过求出2个水滴之间的时间差,通过分析,我们通过定时器建立一个基准时钟,该基准时钟有2个字节单元,分别秒单位和10毫秒单位的数值。在每次传感器送来中断的时候调用“传感测量”子程序,在该子程序中,我们在取当前触发时间时,先把上一个脉冲发生的时间保存在“历史寄存器”中,然后再更新“当前寄存器”的值,即取当前脉冲的发生时间。这样我们就记录下了2个时间(连续)值。历史寄存器 当前寄存器 基准时钟nn-1中断前: (n+1)(n-1)中断时:注:箭头方向为中断时的赋值方向 图7由于基准时钟是以10毫秒为最小单位的,而对于频率范围在20Hz150Hz的脉冲而言,因为我们在后边的求滴速中要用到10毫秒单位值,而水滴的下落并不能保证绝对的规则,经测试发现,每一次求差后的值总有几个单位毫秒的变动,这个变动就导致了最终运算出来的滴速值的大幅度变化,后来惊观察发现这种误差可以归为周期性误差,所以为了消除这个误差,我们不是简单地只取一个差值,相反,我们是取了10个差值,然后再求平均值,这样处理的最大一个好处是可以使周期性误差的正、负偏差互相抵消,在很大程度上消除上述误差。前面的处理虽然可以提供一个比较接近真值,对于最终显示出来的影响不大,但当要用这个值去控制滴速夹时,很明显这样处理的结果降低了控制的响应度;而另一方面,对于滴速夹的控制,因为我们采用的是步进电机,而且我们对步进电机的转轴又进行了改造,加了一个螺纹栓,可以保持滴速夹控制端的位置,所以我们在每采集一个脉冲间隔时就进行滴速的更改控制,这样可以提高控制设备的响应速度。所以在本系统中对于建立一个科学合理的系统模型是很有必要的。在对滴速进行控制时,我们借鉴了PID算法,建立了一个闭环控制状态,利用类似于锁相环的模型:即把设定的滴速和当前的滴速进行比较,输出一个差值,利用这个差值的极性来决定电机的正反转,并拉小这个差值直至最小。因为每检测到一个传感信号,我们就把设定值和当前值进行比较,这样不仅提高了设备的响应速度,而且由于我们这个系统的基准时钟是以10毫秒为单位了,因为我们能分辨到10毫秒的数量级,可以使当前值非常接近我们所设定的设定值。这一点可以参照电机控制的流程图。(图12)1、 运算过程:因为我们系统的基准时钟是以10毫秒为单位了,虽然加大了系统的精度,但是却给系统的数值运算带来了麻烦,直接用四则运算(特别是乘除的运算)很容易带来无法避免的运算误差,即在运算是因为运算位数的限制而带来的数据尾数的丢失。前面说过这种误差将对我们对信号的处理和显示产生很大了影响,甚至会得到一个误差很大的最终输出,为避免这种情况,我们在保证精度的基础上采用了查表法,并且在建立表格时对数据进行一定的折中处理,使得最终得到了结果的误差能尽量小,实践证明我们这种方法还是有一定的实用性的。而且查表法的结果便于以后系统误差的自我校正,因为它保存了一个恒值。2、 对数据表格的处理:前面说过我们这个系统的基准时钟有两个字节单元,而即使采用题目要求的滴速(20150分/滴)也将需要260个字节,这已经超过了8位单片机的查表范围,所以怎样建立一个合理的查表算法是很有必要的。通过对数据的观察,我们发现虽然每个时间量有两个字节,但是在秒字节的单元里,总共只能出现4种取值,即1、2和3以及0 ,所以我们可以以这4个值为标量对表格的数据进行划分,由于有了秒字节单元来做区分,我们只要在表格中写入10毫秒字节单元的值就行了,通过综合处理,在保证精度的基础上,我们所建立的表格的字节数为100多个,这样不仅满足了8位单片机的查表范围,而且大大了节省了内存,有利于系统资源的优化分配。 3、 通信的建立:在选择方案时,考虑到通信线的多少,我们采用了串行通信,直接利用单片机本身的串行通信口,在软件上我们考虑用串行通信的方式0来进行通信。通信协议如下:先发送握手信号,然后发送被呼叫的从机号,每个从机在接收到地址时跟自身的地址进行比较,如果不是被呼叫机,则关闭通信链路;如果是则发送响应信号。当确定了通信的链路后,就按照预定的数据包格式进行通信。数据包格式如下:操作码操作数 2、程序流程图图8传感测量: 时钟: 图9 图10键盘: 步进电机控制: 图11 图123、源程序:时间基准缓冲区:秒55h 0.01秒56h 键盘设置缓冲区:秒57h 0.01秒58h传感测量缓冲区:前次秒51h 0.01秒52h 当前秒53h 0.01秒54h 差值秒4fh 0.01秒50h最终显示缓冲区:选择值:54h测定值5ah 5bh 5ch 设置值 5dh 5eh 5fhR4用于步进电机的步进记忆org 0000hajmp mainorg 0003hajmp jpint ;int0org 000bhajmp times ;t0org 0013hajmp cgint ;int1org 0040hmain:mov sp,#60h ;设置堆栈 mov 41h,#00h mov 42h,#00h mov 43h,#00h mov 44h,#00h mov 45h,#00h mov 46h,#00h mov 47h,#00h mov 48h,#00h mov 4fh,#00h mov 50h,#00h mov 51h,#00h mov 52h,#00h mov 53h,#00h mov 54h,#00h ;初值设置 mov 55h,#00h mov 56h,#00h ;以上为时间初值 mov 54h,#00h mov 57h,#00h ;初值显示为00 mov 58h,#00h mov 59h,#00h mov 5ah,#00h mov 5bh,#00h mov 5ch,#00h mov 5dh,#00h mov 5eh,#00h mov 5fh,#00h mov r7,#00h setb f0 clr p2.1 mov tmod,#01h ;T0为工作方式0 mov tl0,#0f0h ;计数器初值 mov th0,#0d8h mov ie,#87h ;中断设置,除T1,ES外全开中断 mov ip,#02h ;中断优先级 setb it0 setb it1 ;脉冲触发方式 setb tr0 ;启动定时 setb p1.4disp:acall disp0 ;调用显示子程序 ajmp disp disp0:push accmov dptr,#tablejnb f0,disp1mov a,54h ;选择值显示cjne a,#01h,zzz1movc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0ffhmov sbuf,ajnb ti,$clr tiacall dealyajmp disp1zzz1:cjne a,#02h,zzz2movc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0ffhmov sbuf,ajnb ti,$clr tiacall dealyajmp disp1zzz2:cjne a,#03h,zzz3movc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0ffhmov sbuf,ajnb ti,$clr tiacall dealyajmp disp1zzz3:mov 54h,#00hdisp1:mov a,5ah ;测定值显示cjne a,#00h,disp2ajmp disp3disp2:cjne a,#01h,disp4disp3:movc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0fehmov sbuf,ajnb ti,$clr tiacall dealydisp4:mov a,5bhmovc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0fdhmov sbuf,ajnb ti,$clr tiacall dealymov a,5chmovc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0fbhmov sbuf,ajnb ti,$clr ti acall dealymov a,5dh ;设置值显示movc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0dfhmov sbuf,ajnb ti,$clr ti acall dealymov a,5ehmovc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#0bfhmov sbuf,ajnb ti,$clr ti acall dealymov a,5fhmovc a,a+dptrmov sbuf,ajnb ti,$clr timov a,#7fhmov sbuf,ajnb ti,$clr tiacall dealypop accretdealy:mov r0,#0fahlll:nopnopdjnz r0,lllrettable:db 03hdb 9fhdb 25hdb 0dhdb 99hdb 49hdb 41hdb 1fhdb 01hdb 09hjpint: ;键盘控制子程序push accpush 07hmov r2,#0ahzzz:acall dealydjnz r2,zzzjb p1.0,x2 ;选择键子程序inc 54hclr ex1setb f0mov a,54hcjne a,#04h,x1mov 54h,#01hx1:ajmp ret0x2:jb p1.1,x3 ;加1键子程序mov a,54hcjne a,#00h,lll1ajmp ret0lll1:cjne a,#01h,lll2inc 5fhmov a,5fhcjne a,#0ah,zhongjumov 5fh,#00hajmp ret0lll2:cjne a,#02h,lll3inc 5ehmov a,5ehcjne a,#0ah,ret0mov 5eh,#00hajmp ret0lll3:inc 5dhmov a,5dhcjne a,#0ah,ret0mov 5dh,#00hajmp ret0x3:jb p1.2,x4 ;减1键子程序mov a,54hcjne a,#00h,llll1ajmp ret0llll1:cjne a,#01h,llll2dec 5fhmov a,5fhcjne a,#0ffh,ret0mov 5fh,#09hajmp ret0zhongju:ajmp ret0llll2:cjne a,#02h,llll3dec 5ehmov a,5ehcjne a,#0ffh,ret0mov 5eh,#09hajmp ret0llll3:dec 5dhmov a,5dhcjne a,#0ffh,ret0mov 5dh,#09hajmp ret0x4:jb p1.3,x5 ;确定键子程序clr f0acall enter ;因指令而修改ret01: ;对整数进行修正mov a,r7 cjne a,#14,ccc1mov 57h,#03h ;为20置3setb ex1ajmp ret0ccc1:cjne a,#1eh,ccc2mov 57h,#02h ;为30置2setb ex1ajmp ret0ccc2:cjne a,#3ch,ret02mov 57h,#01h ;为60置1setb ex1ajmp ret0x5:jb p2.0,ret0 ;报警监测setb p2.1 ;送报警声音ajmp ret0ret02:setb ex1ret0:pop accpop 07hretienter:mov 54h,#00hclr cmov a,5dh ;求时间段程序mov b,#64h ;百位数mul abmov r7,amov a,5ehmov b,#0ah ;十位数mul abadd a,r7mov r7,amov a,5fhadd a,r7 mov r7,a ;此时r7中为设定值clr csubb a,#14h ;查表前减20mov dptr,#table1 ;由数值查时间段表movc a,a+dptrmov 58h,arettimes: ;时间设置push accmov tl0,#0f0h mov th0,#0d8hsetb tr0inc 56hmov a,56hcjne a,#64h,quit0mov 56h,#00hinc 55hquit0:pop accreticgint: ;传感测量mov r2,#0ahzzzz:acall dealydjnz r2,zzzzjnb p3.3,cgint1reticgint1:push accpush 03hpush 04hpush 05hpush 06hinc r7cjne r7,#0ah,zhongju1mov r7,#00hmov a,53h ;数值转移mov 51h,amov a,54hmov 52h,amov a,55h ;读取当前时间mov 53h,amov a,56hmov 54h,aclr c ;求10个脉冲差值子程序mov 47h,#00h ;10差值寄存区mov 48h,#00hmov a,53h subb a,51hmov 47h,aclr cmov a,54hsubb a,52hjnc zero ;如果当前值大就跳转dec 47hclr cmov a,#00hmov a,54hadd a,#64hsubb a,52hzero:mov 48h,a mov a,47h ;平均差值mov b,#0ah div abmov 4fh,amov a,bmov r3,a ;秒余数暂存 mov a,48hmov b,#0ahdiv abmov 50h,amov a,bmov r4,a ;0.01秒暂存mov a,r3mov b,#0ahmul abadd a,50hmov 50h,azhongju1:mov a,44hmov 42h,amov a,43hmov 41h,amov a,55hmov 43h,amov a,56hmov 44h,aclr c ;求差值子程序,供电机使用mov 45h,#00hmov 46h,#00hmov a,43h subb a,41hmov 45h,aclr cmov a,44hsubb a,42hjnc zero1 ;如果当前值大就跳转dec 45hclr cmov a,#00hmov a,44hadd a,#64hsubb a,42hzero1:mov 46h,a mov a,45hmov a,4fhcjne a,#03,ddd1 ;送动态显示缓冲区mov 5ah,#00h ;整值判断mov 5bh,#02hmov 5ch,#00hajmp exitddd1:cjne a,#02h,ddd2mov a,50hjnz ddd01mov 5ah,#00h mov 5bh,#03hmov 5ch,#00hajmp exitddd01:mov b,#0ahdiv abmov dptr,#table2 ;秒值为2的表movc a,a+dptrmov r5,aanl a,#0fhmov 5ch,amov 5bh,#02hmov 5ah,#00hajmp exitddd2:cjne a,#01h,ddd3mov a,50hjnz ddd02mov 5ah,#00h mov 5bh,#06hmov 5ch,#00hajmp exitddd02:mov b,#0ahdiv abmov dptr,#table3 ;秒值为1的表movc a,a+dptrmov r5,aanl a,#0fhmov 5ch,amov a,r5swap aanl a,#0fhmov 5bh,amov 5ah,#00hajmp exitddd3: mov a,50hcjne a,#3ch,ddd03mov 5ah,#01hmov 5bh,#00hmov 5ch,#00hajmp exitddd03:clr csubb a,#3chjc lar100 ;大于100跳转mov 5ah,#00h ;小于100mov dptr,#table4 ;60到99的表movc a,a+dptrmov r5,aanl a,#0fhmov 5ch,amov a,r5swap aanl a,#0fhmov 5bh,aajmp exitlar100:mov 5ah,#01hclr cmov r5,50hmov a,#3chsubb a,r5mov dptr,#table5 ;100到150的表movc a,a+dptrmov r5,aanl a,#0fhmov 5ch,amov a,r5swap aanl a,#0fhmov 5bh,aexit:jb f0,exit1 ;F0为1时电机不工作acall dianjic ;送步进电机子程序exit1:pop 05hpop 03hpop 04hpop accpop 06hretidianjic: ;电机控制子程序.zhengzh为前进,fanzh为后退push accclr cmov a,57hsubb a,45hjz lowdc ;如果高位相等则进行低位比较jc jcc1 ;当前滴速小于设定滴速,须反转放松acall zhengzh ;当前滴速大于设定滴速,须正转挤压ajmp outjcc1:acall fanzhajmp outlowdc:clr cmov a,58hsubb a,46hjz outjc jcc2acall zhengzh ajmp outjcc2:acall fanzh out:pop accretzhengzh: ;前进挤压mov dptr,#table0inc r4mov a,r4cjne a,#06h,zhengzmov r4,#00hmov a,#00hzhengz:movc a,a+dptrmov p1,aretfanzh: ;反转放松mov dptr,#table0dec r4mov a,r4cjne a,#0ffh,fanzmov r4,#05hmov a,#05hfanz:movc a,a+dptrmov p1,arettable0:db 80hdb 0c0hdb 40hdb 60hdb 20hdb 0a0htable1:dB 00HdB 86H dB 73HdB 61H dB 50H dB 40H dB 31H dB 22H dB 14H dB 07H dB 00H dB 94H dB 88H dB 82H dB 76H dB 71H dB 67H dB 62H dB 58H dB 54H dB 50H dB 46H dB 43H dB 40H dB 36H dB 33H dB 30H dB 28H dB 25H dB 22H dB 20H dB 18H dB 15H dB 13H dB 11H dB 09H dB 07H dB 05H dB 03H dB 02H dB 00H dB 98H dB 97H dB 95H dB 94H dB 92H dB 91H dB 90H dB 88H dB 87H dB 86H dB 85H dB 83H dB 82H dB 81H dB 80H dB 79H dB 78H dB 77H dB 76H dB 75H dB 74H dB 73H dB 72H dB 71H dB 71H dB 70H dB 69H dB 68H dB 67H dB 67H dB 66H dB 65H dB 65H dB 64H dB 63H dB 63H dB 62H dB 61H dB 61H dB 60H dB 59H dB 59H dB 58H dB 58H dB 57H dB 57H dB 56H dB 56H dB 55H dB 55H dB 54H dB 54H dB 5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论