液体点滴速度监控装置的设计.doc

上传人:仙人指路1688 文档编号:3987303 上传时间:2023-03-30 格式:DOC 页数:18 大小:3.49MB
返回 下载 相关 举报
液体点滴速度监控装置的设计.doc_第1页
第1页 / 共18页
液体点滴速度监控装置的设计.doc_第2页
第2页 / 共18页
液体点滴速度监控装置的设计.doc_第3页
第3页 / 共18页
液体点滴速度监控装置的设计.doc_第4页
第4页 / 共18页
液体点滴速度监控装置的设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《液体点滴速度监控装置的设计.doc》由会员分享,可在线阅读,更多相关《液体点滴速度监控装置的设计.doc(18页珍藏版)》请在三一办公上搜索。

1、液体点滴速度监控装置摘要 该装置实时地监测液体点滴速度,通过单片机对信息的分析和处理,由主机发出相应的指令,调整系统的工作平稳,构成了一个高性能的闭环控制系统。实现了对点滴输液速度的直观监测,同时对一些异常情况的出现可实施报警。利用该装置还能通过主控平台对各个分立系统信息实施自动化、智能化的集中处理。能方便、简易的操作和使用,对医疗具有很强的实用性。 关键词 实时监控 红外传感 闭环控制 步进电机一、 方案设计与论证根据题目要求和原输液装置的特点,提出以下三种方案:1、 方案一 直接在滴斗处用两电极棒的方法。待测和控制 量传感器信号处理人机对话界面 电机驱动速度控制 图1此方案的传感器采用简单

2、的液体导电原理,在滴斗处安装两个电极。当水滴落下时,电极导通,从而使待测量的变化转化为高低电平电信号。采用伺服电机改变系统装置中液瓶与受液瓶的高度,达到改变点滴速度,从而进行控制。2、方案二把通过电机改变系统装置高度的方法,改为控制步进电机对输液管进行压缩或缓松,从而实现对点滴速度的改变。采用交流电动机控制H2的高度。即采用红外传感器测量滴斗滴液,送至单片机接口计数,通过数字模拟转换,将其转换为420MA标准电流值,同时通过键盘输入给定每分钟的滴数,再将此滴数将其转换为420MA标准电流值,将此两个信息同时进入数字PID调节器。通过偏差计算再输出一组420MA标准电流值,通过变频调速器控制电动

3、机调节H2的高度,来控制滴斗滴数。此方案的优点是,完全按目前电气工程标准化运作,可以在很短时间完成。2、 方案三根据点滴装置的特点,通过对装置的某一位置进行监测和控制,达到对整个系统液体点滴速度的监控。 (如图1)。通过控制输液软管夹头的松紧来控制点滴速度,采用红外传感器测量滴斗滴数,送至单片机接口计数并显示,首先标定两个脉冲(两滴间)间的时间间隔(以10MS为时基单位)。然后计算给定滴斗滴数(通过键盘)的时间间隔(以10MS为时基单位)。将此两个时间间隔进行比较,以决定步进电机运行的方向。该步进电机通过丝杠控制输液软管夹头的松紧,来控制滴斗滴数4、方案比较方案一的特点是:实现比较简单容易,原

4、理上也是可行的,但由于本装置用于医疗,电弧的产生,可能对不同的药物有影响,同时传感器(电极)不能重复使用,以防止传染。方案二通过改用红外传感器,弥补了方案一的不足。但是还存在问题,利用改变高度的方法虽然容易实现,但可控性不好。由此,我们采用了第三种方案,通过挤压输液管的办法来实现对点滴速度的控制。二、 系统原理框图 如图2所示。显示与键盘控制滴斗AT89C51基本系统红外传感器及信号处理输液管步进电机驱动 图2 本系统最主要的是充分利用单片机编程的灵活性和其强大的功能,使一些小的系统实现自动化和智能化成为了现实。其中的器件都比较简单,尽大可能的利用各集成芯片的功能,如系统的键盘和显示原理电路。

5、通过红外传感器对水滴滴落的动态信息的感应 ,单片机对数据的采集分析和处理,同时使用小功率的步进电机进行机械调整,使装置能机智、即时的响应操作者的使用。三、 主要电路原理与设计1、 AT89C51单片机基本系统 控制与数值信号处理的核心采用AT89C51单片机,采用串口工作方式。电路如图3。图32、 显示与键盘 如图4利用74LS164进行串行动态9位数码管显示,74LS164的主要功能是8bits的串入并出数据处理。电路结构简单,功能强大。采用中断和查询的方法,设计的4键键盘的形式,利用单片机的灵活编程,扩展其键入功能。图43、红外传感和信号处理 采用红外线的发射和接收装置,它可用来检测包括液

6、体在内的各种透明体、半透明体、不透明体,从而可以灵敏地反应水滴滴下。利用光电耦合器对电信号进行处理,减少干扰。4、 步进电机驱动和控制 如图5图55、声光报警 当检测到液面低于3cm时由单片机采集到报警信号,由报警芯片发出声光报警。5、 主控制平台 可以组建一个小型的网络系统,由主机控制和监视各个从机的工作状态和各个装置的信息。 如图 61号从站主控站模拟从 站 图 6 四、系统软件工作流程 如图7 到 图121、软件设计: 软件部分参考流程图,这里主要讲述一下软件编写过程中的几个细节部分。如前所述,我们计算滴水速度的原理是通过求出2个水滴之间的时间差,通过分析,我们通过定时器建立一个基准时钟

7、,该基准时钟有2个字节单元,分别秒单位和10毫秒单位的数值。在每次传感器送来中断的时候调用“传感测量”子程序,在该子程序中,我们在取当前触发时间时,先把上一个脉冲发生的时间保存在“历史寄存器”中,然后再更新“当前寄存器”的值,即取当前脉冲的发生时间。这样我们就记录下了2个时间(连续)值。历史寄存器 当前寄存器 基准时钟nn-1中断前: (n+1)(n-1)中断时:注:箭头方向为中断时的赋值方向 图7由于基准时钟是以10毫秒为最小单位的,而对于频率范围在20Hz150Hz的脉冲而言,因为我们在后边的求滴速中要用到10毫秒单位值,而水滴的下落并不能保证绝对的规则,经测试发现,每一次求差后的值总有几

8、个单位毫秒的变动,这个变动就导致了最终运算出来的滴速值的大幅度变化,后来惊观察发现这种误差可以归为周期性误差,所以为了消除这个误差,我们不是简单地只取一个差值,相反,我们是取了10个差值,然后再求平均值,这样处理的最大一个好处是可以使周期性误差的正、负偏差互相抵消,在很大程度上消除上述误差。前面的处理虽然可以提供一个比较接近真值,对于最终显示出来的影响不大,但当要用这个值去控制滴速夹时,很明显这样处理的结果降低了控制的响应度;而另一方面,对于滴速夹的控制,因为我们采用的是步进电机,而且我们对步进电机的转轴又进行了改造,加了一个螺纹栓,可以保持滴速夹控制端的位置,所以我们在每采集一个脉冲间隔时就

9、进行滴速的更改控制,这样可以提高控制设备的响应速度。所以在本系统中对于建立一个科学合理的系统模型是很有必要的。在对滴速进行控制时,我们借鉴了PID算法,建立了一个闭环控制状态,利用类似于锁相环的模型:即把设定的滴速和当前的滴速进行比较,输出一个差值,利用这个差值的极性来决定电机的正反转,并拉小这个差值直至最小。因为每检测到一个传感信号,我们就把设定值和当前值进行比较,这样不仅提高了设备的响应速度,而且由于我们这个系统的基准时钟是以10毫秒为单位了,因为我们能分辨到10毫秒的数量级,可以使当前值非常接近我们所设定的设定值。这一点可以参照电机控制的流程图。(图12)1、 运算过程:因为我们系统的基

10、准时钟是以10毫秒为单位了,虽然加大了系统的精度,但是却给系统的数值运算带来了麻烦,直接用四则运算(特别是乘除的运算)很容易带来无法避免的运算误差,即在运算是因为运算位数的限制而带来的数据尾数的丢失。前面说过这种误差将对我们对信号的处理和显示产生很大了影响,甚至会得到一个误差很大的最终输出,为避免这种情况,我们在保证精度的基础上采用了查表法,并且在建立表格时对数据进行一定的折中处理,使得最终得到了结果的误差能尽量小,实践证明我们这种方法还是有一定的实用性的。而且查表法的结果便于以后系统误差的自我校正,因为它保存了一个恒值。2、 对数据表格的处理:前面说过我们这个系统的基准时钟有两个字节单元,而

11、即使采用题目要求的滴速(20150分/滴)也将需要260个字节,这已经超过了8位单片机的查表范围,所以怎样建立一个合理的查表算法是很有必要的。通过对数据的观察,我们发现虽然每个时间量有两个字节,但是在秒字节的单元里,总共只能出现4种取值,即1、2和3以及0 ,所以我们可以以这4个值为标量对表格的数据进行划分,由于有了秒字节单元来做区分,我们只要在表格中写入10毫秒字节单元的值就行了,通过综合处理,在保证精度的基础上,我们所建立的表格的字节数为100多个,这样不仅满足了8位单片机的查表范围,而且大大了节省了内存,有利于系统资源的优化分配。 3、 通信的建立:在选择方案时,考虑到通信线的多少,我们

12、采用了串行通信,直接利用单片机本身的串行通信口,在软件上我们考虑用串行通信的方式0来进行通信。通信协议如下:先发送握手信号,然后发送被呼叫的从机号,每个从机在接收到地址时跟自身的地址进行比较,如果不是被呼叫机,则关闭通信链路;如果是则发送响应信号。当确定了通信的链路后,就按照预定的数据包格式进行通信。数据包格式如下:操作码操作数 2、程序流程图图8传感测量: 时钟: 图9 图10键盘: 步进电机控制: 图11 图123、源程序:时间基准缓冲区:秒55h 0.01秒56h 键盘设置缓冲区:秒57h 0.01秒58h传感测量缓冲区:前次秒51h 0.01秒52h 当前秒53h 0.01秒54h 差

13、值秒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 m

14、ov 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

15、;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,#0ff

16、hmov 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

17、 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

18、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

19、,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 ret0x

20、2: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,

21、#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 ;因指令而修改ret0

22、1: ;对整数进行修正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,5d

23、h ;求时间段程序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

24、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差值寄存区

25、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

26、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

27、 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

28、 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,#3ch

29、jc 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,aexi

30、t: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,

31、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:d

32、b 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

33、 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 61

34、H 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 53H dB 53H dB 52H dB 52H dB 51H dB 51H dB 50H dB 50H dB 50H dB 49H dB 49H dB 48H dB 48H dB 48H dB 47H dB 47H dB 47H dB 46H dB 46H dB 45H dB 45H dB 45H dB 44H dB 44H dB 44HdB 43H dB 43H dB 43H dB 43H dB 42

35、H dB 42H dB 42H dB 41H dB 41HdB 41HdB 41H dB 40HdB 40H table2:db 29hdb 28hdb 27hdb 26hdb 25hdb 24hdb 23hdb 22hdb 21htable3:db 57hdb 52hdb 49hdb 45h db 42hdb 39hdb 37hdb 35hdb 33hdb 31htable4:db 99hdb 98hdb 97hdb 95hdb 94hdb 93hdb 91hdb 89hdb 88hdb 87hdb 86hdb 84hdb 83hdb 82hdb 81hdb 80h db 79hdb 78h

36、db 77hdb 76hdb 75hdb 74hdb 73hdb 72hdb 72hdb 71hdb 70hdb 69hdb 68hdb 68hdb 67hdb 66hdb 65hdb 65hdb 64hdb 63hdb 63hdb 62hdb 61htable5:db 00hdb 02hdb 04hdb 06hdb 08hdb 10hdb 12hdb 14hdb 16hdb 18hdb 20hdb 22hdb 25hdb 28hdb 30hdb 33hdb 36hdb 39hdb 43hdb 46hdb 49hend四、 系统测试1、 仪器1) 数字示波器2) 信号发生器3) 数字计数器2、

37、 波形测试利用示波器观察红外传感电信号是否规则。若不规则,说明传感器转化的电信号需要进一步处理,或者是传感器本身有问题,需要检查。直到有规则的方波输出为止。用数字计数器对液滴计数。在系统电路工作时,用数字计数器的表笔从传感器转化的电信号输出端相接,对点滴数计数与系统显示做比较,从而进一步校正电路测量的准确度。3、 测量数据单机测量: 与计数器比较: 预设值(每分)实测值(每分)绝对误差(每分)计数器(每分)系统(每分)偏差(每分)20200 56 59 320222 103 109 61441484 22 26 41441395 77 73 478753 142 147 5 7883 5 123 118 5

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号