毕业设计无人监守点滴自动监控系统的设计范本_第1页
毕业设计无人监守点滴自动监控系统的设计范本_第2页
毕业设计无人监守点滴自动监控系统的设计范本_第3页
毕业设计无人监守点滴自动监控系统的设计范本_第4页
毕业设计无人监守点滴自动监控系统的设计范本_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

②通信接口电路。3系统从站硬件设计3.1从站硬件系统框图根据从站系统所要实现的功能,为从站系统设计出硬件系统框图[4],如图2所示: AT89S53AT89S53键盘控制电路单元点滴信号检测单元液体检测单元单元通信电路单元报警电路单元电源电路单元点滴信号整形单元 图2从站硬件系统框图3.2从站系统各单元设计有上面的框图能够知道,从站系统所包含的子模块较多,因此下面进行逐一介绍。3.2.1点滴信号检测单元此单元模块是经过固定在输液瓶外侧的红外传感器来检测是否有点滴滴下,电路图如图3所示。图3点滴信号检测电路红外传感器是有发射管和受光管二者构成,其主要功能是实现光和电之间的转换。红外系统具有尺寸小、重量轻、易于安装等优点,且红外光波长长与可见光,受后者的影响较小,因此选用红外传感器来检测液体点滴滴速。增强信噪比以减少环境光源的干扰,并采用脉冲调制的方式。发射、接受的简化原理电路如图4所示。图4脉冲产生电路74HC14是具有施密特功能的六反相器,图5是74HC14所构成的多谐振荡电路。施密特触发器具有上限阈值电压V2、下限阈值V1的特性,且受芯片电源VDD的限制。多谐振荡器电路产生信号的周期频率满足f=1/{RCln[V2(VDD-V1)/V1(VDD-V2)]},令ln[V2(VDD-V1)/V1(VDD-V2)]为k,则f=1/kRC,即T=kRC。对于74HC14而言,当VDD=5V时,下限闽值电压V1=1.4V,上限闽值电压V2=3.6V,因此有k=1.89。考虑到脉宽可调的状况进而能够得出1.89(R1//R2+R2)C=T,T表示方形脉冲的一个周期大小,(R1//R2):(R1//R2+R2)=1:5。图5多谐振荡电路3.2.2点滴信号整形单元在实际操作中,当点滴落下时,接收到的信号会产生相距很近的双脉冲,这极大的干扰了计数。为了消除这种干扰,减小虚假信息的影响,提高采样的可靠性,用软件滤波的方式滤去两个脉冲中的一个,这样就确保了计数的精确性。图6是信号整形原理电路图,同过原理图,能够对整形有简单的了解。图6点滴信号整形电路3.2.3液位检测单元按照医用卫生标准,吊瓶中应尽可能避免异物进入,因此在红外有损探测和无损探测中我们选择后者。液位检测电路是利用安装在输液瓶颈部的红外对射管对瓶内无液空间与有液空间光的折射差异来判断输液是否结束。光电转换原理类似以滴速检测,但红外接收管输出的电信号是电平信号,而不是脉冲信号。电平信号经放大后输入到比较器与门限电路比较,输出后送至单片机外部中断接口INT1。因考虑到储液瓶壁较厚,可利用红外无损探测方式,增大红外发射功率来加强接收信号以保证对液位进行精确检测,储液瓶有液空间和无液空间信号差异电压比较差能够达到40mV左右,说明该电路在液位下降到红外对射管以下时系统即能发出警越限报。该电路接收到的信号只需对其放大不需滤波处理,因此本电路结构单间,安装简易。其系统框图及电路图如下图7和图8所示。放大放大比较红外发射门限信号红外接收输液瓶至单片机 图7液位检测框图 图8液位检测电路3.2.4键盘控制电路本设计中所采用的键盘为非编码机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。触点式开关按键在最常见,且寿命长。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成,因此既经济又实用。在机械键盘按键按下或释放时,由于机械弹性作用的影响,一般伴随一定时间的触点机械抖动,然后才稳定下来。其抖动过程如图9所示,抖动时间的长短与开关的机械特性有关,一般为5~l0ms。按键抖动会导致错误判断按键通或断的状态,这种情况是绝对不允许出现的。因此在设计中必须采取去抖动措施,由于按键数较多,故采用软件去抖。软件去抖采取的措施是:在检测到有按键按下时,执行一个l0ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。一个完善的键盘控制程序应具备以下功能:(1)检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。(2)有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。(3)准确输出按键值(或键号),以满足跳转指令要求。图9按键抖动过程由于本系统按键数较多,故采用4×4行、列结构的16位矩阵键盘,如图10所示。矩阵式键盘中,行、列线分别连接到按键开关的两端,行线经过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。图10矩阵键盘电路3.2.5声光报警单元本设计采用蜂鸣器与发光二极管实现声光报警。当传感器检测到液位低于预设值或传感器检测不到有液滴下落时,从站单片机控制蜂鸣器和报警灯工作,在发出声光报警的同时向主站发出报警信息。在实际应用中,如果设定的滴速过高,输液瓶上升到支架顶部时,仍达不到设定的滴速,输液瓶继续上升有可能会拉倒支架,造成危险。因此在支架的顶部安装一个红外探测器,如检测到输液瓶上升到支架顶部,则发出信号,通知单片机控制电机停转,同时发出声光报警并向主站发送报警信号。下图11为声光报警电路。图11声光报警电路3.2.6电源电路单元任何电气设备的使用都离不开供电系统,在整个单片机系统设计中,电源的设计是必须要考虑的。电源的设计取决于系统所要求的供电方式,如是采用单电源方案,还是多电源方案,系统的功耗有无特殊规定等等。本系统所选用的单片机是AT89S53,其标准工作电压为+5V,且发光二极管和光敏三极管以及通讯所用的CAN总线适配器等电路的工作电压都是+5V,因此在本设计中采用单电源方案。单电源方案的优点是系统简单、工作可靠。另外还涉及到对步进电机的控制,步进电机及驱动电路由L297和L298N组成,L297的工作电压为+5V,L298N除逻辑电路工作电压+5V外,因此还需加入一个较高的电源电压来增强电机的驱动能力。根据L298N的相关资料,这个电源电压的范围在+2.5V~+46V之间,考虑到用电安全及设计方便等因素,将其设定在+15V。因此我们的目标是设计出一个能够提供+5V与+15V的电源,其电路如图12所示。图12电源电路由上图能够知,此电源电路能够将220V的交流市电转换为+5V和+15V直流电输出。从原理上看,首先将经过变压器的220V交流市电转换为24V交流电,然后经过二极管桥式整流电路和滤波电容C3对其进行整流,获得略低于24V的直流电输出,经过C4滤除纹波电压后进入集成稳压源L7815产生+15V直流电压供L298N使用,同时此电压又作为MC7805的输入电压,经过MC7805产生+5V电压供系统逻辑电路和各模块使用。这种做法的好处是只使用一个变压器,降低了成本的同时还减小了+5V直流电源的纹波电压。3.3通信电路单元本系统所采用的是CAN总线作为通信总线,以下就对CAN总线的适配芯片以及通信接口连接做简要介绍。3.3.1CAN总线适配芯片连接电路系统主控制器系统主控制器MPC2510CAN收发器CAN收发器CAN收发器CAN收发器CAN收发器MPC2510MPC2510MPC2510MPC2510节点控制器节点控制器节点控制器节点控制器图13CAN总线通信原理图以CAN总线作为通信系统的典型实现方法如图13所示。由系统框图中的CAN接口部分能够得知,CAN接口由两个部分组成:CAN控制器和CAN收发器。其中前者主要用于实现物理信令子层和数据链路层,而后者则是CAN控制器与物理传输媒体之间连接的子层接口。在本设计中,采用MCP2510作为CAN控制器,CAN收发器采用TJA1050。MCP2510是MicrochipTechnologyInc.(美国微芯科技有限公司)生产的一款控制器局域网络协议控制器,完全支持CAN总线V2.0A/B技术规范。该器件支持CAN1.2、CAN2.0A、主动和被动CAN2.0B等版本的协议,能够发送和接收标准和扩展报文。同时它还具备验收过滤以及报文管理功能。该器件包含三个发送缓冲器和两个接收缓冲器,减少了单片机的管理负担。TJA1050是控制器区域网络协议控制器和物理总线之间的接口,是一种标准的高速CAN收发器。TJA1050能够为总线提供差动发送性能,为CAN控制器提供差动接收性能,是PCA82C250和PCA82C251高速CAN收发器的后继产品。3.3.2通信接口电路通信接口电路即适配芯片连接电路其连接方法如图14所示:图14通信接口电路适配芯片各引脚连接情况如下:(1)CAN收发器TJA1050引脚连接情况:CANL为低电平CAN总线,CANH为高电平CAN总线,TXD为发送数据输入引脚,RXD为接收数据输入引脚。(2)CAN协议控制器MCP2510各引脚的连接情况:TX0RS为通用数字输入或发送缓冲器(TXB0)请求发送引脚,TX1BF为接收缓冲器,RXB1的通用数字输出或中断引脚TXCAN引脚与CAN总线的发送输出引脚(TXD)连接,RXCAN引脚与CAN总线的接收输入引脚(RXD)连接。TJA1050具有高速模式和静音模式两种工作模式,经过引脚“8”的得取来选择模式。若引脚“8”接地则进入高速模式;若引脚“8”没有接地则进入静音模式;若引脚“8”不连接,则默认高速模式。4系统软件设计系统软件设计是基于单片机硬件进行的。软件设计是系统的主要组成部分,软件的好坏将直接影响到系统的性能指标。无人坚守点滴自动监控系统的设计采用模块化结构的方式,模块化编程是分别对各模块程序进行编写、编译,最后经过主程序将各模片相互调用的软件设计方法。本系统包含从站软件设计和主站软件设计,主站程序主要是对从从站各程序模块的协调管理。4.1从站软件系统总体设计从站软件设计是对从站各模块进行嵌入式程序编译,本系统中需要进行程序编译的模块主要有:(1)主控模块即初始化模块;(2)键盘控制模块;(3)点滴速控制模块;(4)电机控制模块;(5)报警模块;(6)主从通信模块。4.2从站各模块软件设计从站系统程序由一个主控程序模块和若干个子程序模块组成,其中主控程序模块为软件系统的核心,其作用是管理协调各子模块,使之按照总体设计流程工作。4.2.1主控模块主控模块是从站软件系统的核心,其主要负责调度各子模块程序。工作时,首先对串口部分和数据缓冲区进行初始化,然后调用各子模块程序来协调各子模块工作。系统初始化有两方面的工作内容:(1)串口初始化,即让串口工作处方式“1”。经过定时器T1来设定波特率的溢出率值为1200bit/s,串口处于接收的状态。此时把定时器T1的初始值设定为248(0E8),MUC外围电路使用的晶振频率为11.0592MHz。(2)外部中断“0”的设置,串口数据通信经过中断来进行实现数据的发送与接收,因此初始化程序还需设定串口的中断方式。在从站系统中,当有液滴滴下时,液滴检测电路就会捕捉到一个电信号,将捕捉的电信号送到A/D转换电路中对其整形,最后产生一个数字脉冲信号,将脉冲信号送至单片机内部处理使之产生一个外部中断“0”。系统进行中断计数时,必须开启外部中断“0”和R4寄存器。同时,还需将外部中断“0”设置为电平触发模式。串口初始化程序部分源码如下:#include<reg53.h>#include<stdlib.h>#include“tdp.h”#ifdefevalboard//采用硬件目标板时需要使用以下外部函数externvoidDNPUT(unsignedcharaa,unsignedcharbb);externvoidDISPLY(unsignedchardata*cc);staticunsignedchardatadg[]={0,0,10,0,0,10,0,0};#endifvoidmain(void){unsignedi;for(i=0;i<1000;i++);//延时,等待系统上电稳定timer0_initialize();//定时器0初始化com_initialize();//串行口初始化#ifdefevalboard//采用硬件目标板时DINPUT(0X0A,0X07);//需要对板上MAX7219初始化DNPUT(0X0B,0X07);DINPUT(0X09,0X0FF);DINPUT(0X0c,0X01);DISPLY(dg);//板上LCD显示00-00-00#endiftimer0_wait(TIMER0_TICKS_PER_SEC/10);clock_init();com_puts(“TDPVl.0\r\n”);while(1){constchar*cmd;cmdb_init();cmdb_prompt();for(cmd=NULL;cmd==NULL;cmd=cmdb_scan()){clock_update();}cmd_proc(cmd);}}4.2.2键盘控制模块键盘扫描采用行列式矩阵接口,子程序采用中断方式进行行列扫描,以获得键值输入。由于键盘抖动会对结果造成影响,因此必须消除。程序流程图如图15所示,键盘扫描程序和防抖子程序如下:(1)键盘扫描程序:bytekey_scan(void){bytektrnp,key;key=0;key_4x4_line_output();key_4x4_row_input();key_4x4_get_row(ktmp);while((ktrnp&0x0f)==0x0f)key_4x4_get_row(ktmp);delay_ms(10);key_4x4_get_row(ktmp);if((ktmp&0x0f)!=0x0f){key=(ktmp&0x0)key_4x4_row_okey_4x4_line_indelay_ms(10);key_4x4_get_linif((ktmp&0xf0)!{while((ktmpkey_4x4_linkey_4x4_rokey+=(ktmfor(ktmp=0;{if(key==kreturn(0xff)}elsereturn(0xff)}elsereturn(0xff);}(2)防抖子程序:#include<reg51.h>#include<intrins.h>sbitP34=0xB4;sbitP35=0xB5;unsignedcharget_char(void);//函数说明voiddelay(void);main(){unsignedcharkeybuf[16],count;//键盘缓冲区和读键计数变量SCON=0;//将串行口设置成工作方式0ES=0;//禁止串口中断EA=0;count=0;while(count<16)keybuf[count++]=get_char();//读入16个按键的键值}unsignedcharget_char(void){//定义表示列号、键序号和待发送数据的变量column,key_code和maskunsignedcharkey_code,column=0,mask=0x00;//下列语句从串行口向74LS164移位输出8个0T1=0;SBUF=mask;while(TI==0);//等待发送完毕//下列语句经过检测P3.4和P3.5是否为0来判断是否有键按下,若有则延时l0ms消除按键抖动。然后再次检测P3.4和P3.5是否为0,若不为0则表明有干扰信号并继续等待按键,否则表示有键被按下并退出循环while(1){while((P3.4&P3.5)!=0);delay();if((P3.4&P3.5)!=0)continue;elsebreak;}//下面语句分析被按下键所在的列号mask=0xfe;while(1){TI=0;SBUF=mask;while(TI==0);if((P3.4&P3.5)!=0){mask=_crol_(mask,1);//将mask的值循环左移一位column++;if(column>=8)column=0;continue;{elsebreak://下面语句分析被按下键所在行号并计算键序号if(P34==0)key_code=column;else key_code=8+column;return(key_code);}voiddelay(void){unsignedinti=10;//延时10mswhile(i--);}开始开始参数初始化调用key_scan扫描函数是否为功能键?进入中断调用key_scan扫描函数调用防抖子程序退出中断N结束?YYN图15键盘扫描流程图4.2.3点滴速度监测模块中断计数中断计数中断计数中断计数 图16速度计算原理系统用的定时器T0定时时间为200us。当系统检测到第一个脉冲信号时,程序立即进行中断处理,读出此时计数器存储的内容,然后清零,记脉冲信号的初始值为COUNT=0。当定时器定时到达200us时,程序中断检测输入信号是否有脉冲信号到来,把计数器加1为COUNT=1。由计数器COUNT=1检测到的脉冲信号个数而设定计数器COUNT=1的存储单元是10,经过循环存储脉冲个数。在定时器COUNT=1中取5个相临的脉冲信号点,设起始脉冲点对应的计数器COUNT值是n1,最后一个脉冲点对应的值是n2。从而计算出5个脉冲点所需时间为:t=(n2-n1)×200us,那么两相临脉冲信号时间间隔的平均值为T=t/5。由此可得到点滴速度:V=60s/T,即V=1500/(n2-n1)[5]。根据上面的理论分析和计算,得到点滴速度测量流程图,如图17所示。NN开始定时200us设置计算器COUNT=0退出中断COUNT加1设置计算器COUNT1=0定时结束?检测到脉冲信号?COUNT加1NYY 图17点滴速度测量流程图点滴速度检测程序如下:#include<reg53.h>#include<stdio.h>#defineulongunsignedlongunsignedintT0_ISR_count=0;//定义T0中断次数voidT0_ISR(void)interrupt1{TO_ISR_count++;//每次T0中断时,中断次数加1TF0=0;}voidmain(void){SCON=0x50;//串行口初始化TMOD|=0x20;//利用定时器Tl作为波特率发生器THl=0xFA;//晶振为11.0592MHz时波特率为9600TRl=1;TI=1;PCON|=0x80;printf(“\nPulseWidthExampleProgram\n\n”);//输出标题信息ET0=1;EA=l;//开中断TMOD=(TMOD&0xF0)|0x09;//设置T0为16位定时器方式while(1){T0_ISR_count=0;TH0=0;TL0=0;TR0=1;printf("\nStartapulse.\n");//输出提示信息while(!INTO);//等待脉冲上升沿,开始测量while(INTO);//等待脉冲下降沿,停止测量//以每个T0计数值为200us计算脉冲宽度并输出printf("Thewidthpulseis:%1duSec\n",(ulong)((TH0<<8)|TL0|((ulong)T0_ISR_count<<16)));}}4.2.4电机控制模块本系统采用了工业上较为流行的PID控制算法,实现了步进电机的精确控制,其算法公式为:ΔP=Pout(k)-Pout(k-1)=Kp×[e(k)-e(k-1)]+Ki×e(k)+Kd×[e(k)-2e(k-1)+e(k-1)],Kp=5,Ki=5,Kd=2步进电机的正、反转靠正向、反向驱动两个函数来实现,当函数中变量direction=1时,步进电机正转;direction=0时,步进电机反转。步进电机正、反驱动程序如下:voidmoto_one_step(bytedirection,wordpulse){if(direction){if(moto_state==moto_state_a)moto_state=moto_state_da;elsemoto_state--;}else{if(moto_state==moto_state_da)moto_state=moto_state_a;elsemoto_state++;}PORTC=(PORTC&0xC3)|moto_tab[moto_state];DelayMs(pulse);}4.2.5报警模块开始初始化调用外部函数滴速是否有异常?报警程序驱动报警NY在输液中时常有输液过慢或过快等故障,此时报警系统发出报警。检测输液异常是经过4s定时中断来实现的。分析滴速数据,若滴速大于设定滴速,则输液过快,单片机的P0.7端输出高电平,并把单片机的P0.7脚置“1”和P3.0脚置“0”,驱动蜂鸣器和发光二极管发出声光报警;反之,则输液过缓。若在4s内无点滴落下,则为输液中断或输液结束,单片机的P0.7端输出高电平,并把单片机的P0.7脚置“1”和P3.0脚置“开始初始化调用外部函数滴速是否有异常?报警程序驱动报警NY 图18报警程序流程图报警程序如下:#include<iom53v.h>#include<macros.h>voiddelay_nus(unsignedintn)voiddelay_nms(unsignedintn);voidmain(void)//主函数{unsignedinti;unsignedcharn;OSCCAL=0X9E;//系统时钟校准TCCRO=BIT(CS01);//T/C0时钟8分频TIMSK=BIT(TOIE0);//允许定时器T/C0溢出中断SEI();//开中断DDRD-=BIT(0)-BIT(7);DDRC&=~BIT(5);//设置PC5为输入口DDIZB-=BIT(1)-BIT(0);//定义B口的PB0,PB1为输出口PORTB-=BIT(1);//PB1口输出高电平,绿灯亮4.2.6主从通信模块对于主、从通信模块的程序设计,主要有三个部分内容组成:1、串行通信接口的参数设置,如通信线路上的逻辑状态、波特率等的设置;2、通信协议的约定,如通信的基本参数,数据的传输格式以及数据流的控制方式等;3、CAN总线节点的程序设计,包括CAN节点初始化、报文发送、报文接收;根据以上设计内容,本模块能够应用MSComm控件经过串行端口发送和接收数据来实现串行通信,其方法只需要对串口进行简单配置,以下给出了实现串口通信的方案。与上位机通信程序流程图,如图19所示。MSComm控件的程序如下:串口初始化并打开串口:m-Com.SetCommPort(2);//选择COM2m-Com.SetInBufferSize(1024);//设置输入缓冲区的大小m-Com.SetOutBufferSize(512);//设置输出缓冲区的大小if(!m-Com.GetPortOpen());m-Com.SetPortOpen(TRUE);//打开串口m-Com.SetlnputMode(0);//设置输入模式m-Com.SetSettings("9600,n,8,1");//设置数据传输速率等参数m-Com.SetRThreshold(1);//为1表示有一个字符引发一个事件发送数据:m-Com.SetOutput(C0leVariant(outstring));//发送outstring字符串接收数据:m-Com.SetInputLen(1);//每次读取一个字符VARIANTVI=m-Com.GetInput()://读取字符YYYNY延时NNN发送数据接收数据下位机回应?查询完否?地址码返回开始串口初始化送下位机地址下位机应答?应答正确?发送?地址加码1下位机复位NYYN图19通信流程图5结束语本文是基于AT89S53单片机设计的无人监守点滴自动监控系统,其主要目的是在无人看护的情况下,实现输液异常、输液结束报警提示以及液速自动调节等功能。本文所研究与设计的内容如下:(1)分析了课题的背景及意义。(2)介绍了点滴监控的发展和研究现状。(3)比较几种方案从中选择合适的方案。(4)分析系统硬件组成,完成系统从站硬件各模块的设计。(5)根据系统硬件设计相应的软件程序。由于个人知识,精力,能力有限,本设计中还有许多不完美之处。监控系统功能的实现不够完整,主、从站之间的通信连接认识不够全面,主站的设计方面还有很多欠缺。这些都需要在

温馨提示

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

评论

0/150

提交评论