当前位置:巨优公文网>范文大全 > 公文范文 > 基于视频识别的地面干燥系统

基于视频识别的地面干燥系统

时间:2022-11-12 15:40:11 公文范文 来源:网友投稿

【摘要】为了解决雨天公共大厅及走廊的地面湿滑问题,本文提出一种基于视频识别的地面干燥技术。该技术利用摄像头获取地面湿滑情况,利用matlab监控软件进行识别计算,利用单片机控制干燥风扇的启停与转速,监控软件与单片机之间通过串口连接。文中介绍了技术原理与所开发的原型验证系统,系统运行情况表明了该技术的可行性。

【关键词】视频识别;地面干燥; Matlab;单片机

1.引言

公共大厅及走廊平时人来熙攘川流不息,但下雨天由于鞋底沾带雨水,使得地面湿滑难行,安全事故易发,老人与孩子更是令人担心。由于地面湿滑引发的安全事故与法律纠纷也屡见报端。为了解决雨天室内地面湿滑问题,我们可以采用地面防滑溶剂或者推杆式地面烘干器,但是这两种方法都需要专人维护或者操作,自动化程度不高。有鉴于此,本文提出一种基于视频识别的地面干燥系统设计方案,该系统无需专人值守,可自动运行。本文围绕原型验证系统,介绍该技术的各个细节。

2.系统总体方案

本系统利用摄像头监视地面,通过地面色差识别潮湿区域。潮湿面积与潮湿下限设定进行比较后,确定是否需要鼓风干燥。干燥风扇采用开环比例控制,风扇转速正比于当前潮湿面积与下限设定值之差。系统每0.5秒钟采集一次图像,进行一次识别与控制计算,开启后可持续自动运行。系统由两部分组成:视频监控软件和干燥风扇单片机控制系统。监控软件利用Matlab开发,负责摄像头的驱动、潮湿面积识别、参数设定和实时信息显示,风扇控制系统是一个单片机系统,利用串行口与监控软件通讯,负责风扇的调速控制与测速。监控软件与单片机之间的通讯协议非常简单,每0.5秒互发一个字节的数据。监控软件下发数据给定风扇转速,取值范围在0~100之间,表示占最高转速的百分比。0表示停止干燥,100表示全速转动。单片机上传值表示测速值,单位为“转数/0.5秒”。

3.干燥风扇单片机控制系统

3.1 硬件设计

图1 风扇控制电路原理图

硬件主要解决风扇的驱动、调速与测速问题。原型验证系统采用CPU四线风扇,四条线分别是驱动电源(黄色)、驱动地(黑色)、调速(蓝色)与测速(绿色)。调速线接受PWM波输入,波形占空比对应最高转速百分比,测速线输出脉冲信号,风扇内部封装有霍尔传感器,每转一圈输出一个高电平脉冲,记录单位时间内的脉冲数,即可获得风扇的转速[1]。硬件电路原理图如图1所示。风扇利用12V稳压电源独立供电,通过继电器控制电源通断,从而控制风扇的启停,继电器利用P3.7口控制。调速PWM波形由P1.1口输出,测速脉冲信号引到P3.3外部中断INT1口,利用中断捕获脉冲信号。

3.2 单片机软件设计

单片机系统的任务主要有串行通讯、根据给定风扇转速启停风扇、生成调速PWM波和响应外部中断进行测速,程序架构采用基于中断的轮转结构[2]。主程序在完成初始化工作之后进入无限循环,先根据串口的最新数据启停继电器并确定PWM调速信号占空比,再判断0.5秒定时是否到达,如果到达则发送测速值。外部中断服务程序仅对测速脉冲进行计数,定时器0中断服务程序用于生成调速PWM波高低电平,并实现0.5秒计时。

3.3 基于继电器与定时器的风扇调速

对风扇我们采用继电器控电,PWM波调速和脉冲测速的控制方法。P1^1作为PWM波输出引脚,T0用作PWM波波形生成定时器。对定时器的初始化采用总线方式,TMOD=0x21,T0作为16位定时器用来控制中断。测控速由两个中断TF0与INT1(ET0=1.EX=1)实现,初始化时便打开总中断(EA=1)。风扇的12V供电电源接入继电器的常开触点,软件初始化时将继电器断开,此后根据PC机传输的信号更改状态值relaystat从而让单片机来处理继电器的开关。PWM是通过改变周期矩形波的占空比从而达到要求电压的一种调压方法。设风扇电机始终接通电源时的最大速度为Vmax,占空比为D,则平均转速为V=Vmax×D。在软件中,我们设定的PWM波周期为1000us,初始占空比为50%。设定定时器T0每1us溢出中断一次,计数变量click随中断每1us自增一次(click++)。设变量hightime为高电平持续时间,PWM波高低电平的生成程序为if(click>1000) click=0;if(click<=hightime)p11=1;else p11=0;。

3.4 基于外部中断的风扇测速

风扇的测速脉冲信号连接到P3^3口,通过响应外部中断可以记录脉冲数,测速定时利用定时器T0实现。由于计数器计数值被定义为字符型变量,最大值为255,不能满足0.5秒的定时需要,我们定义了三个计数器count1,count2和count3,通过循环嵌套实现0.5秒定时计数。在INT1中断服务程序中通过++pulsnum使脉冲次数加1,在主循环中通过以下代码使count3清零并获得测速值cesu:If(count3>=4){count3=0;cesu=pulsnum; pulsnum=0;}。

3.5 基于串行口的通讯

原型系统采用通用异步收发器(UART)RS-232作为监控软件与单片机的通讯链路。数据接收方式采用查询法,发送采用0.5秒定时方式。T1用为可自动重装的8位定时器, 作为波特率发生器。SCON=0x50将串行口初始化为10位异步收发方式并且允许PC机向软件发送数据。波特率选定为9600bps,根据公式:

[2n-]

计算出的初值0xFD赋值给TH1和TL1。SMOD取值为0, PCON=0x00定义波特率不倍增。查询读取缓冲寄存器的代码为:if(RI==1) {EA=0;RI=0;tmpdata=SBUF;},给定风扇转速被读取到tmpdata中。发送测速值cesu的代码为:SBUF=cesu; while(!TI); TI = 0;。

4.基于视频识别的Matlab的监控软件

4.1 监控软件概述

监控软件是系统的人机接口,向用户显示地面及设备的状态信息,获取用户的参数设定。软件基于Matlab的GUIDE开发,完成的软件界面如图2所示。界面的右下方是监控区域的实时画面,以黑白二值图象显示干湿区域,白色表示干燥区域,黑色表示潮湿区域。界面左部是监控参数显示设定区,其中下限设定可通过鼠标操作修改。点击“启动干燥”按钮后,风扇会根据当前潮湿面积与下限设定值的大小自动运转,点击“停止干燥”按钮后,系统只监控地面状态,风扇停止运转。

图2 监控软件界面

4.2 基于定时器的定时监控操作实现

监控软件每0.5秒钟采集一次图像,进行识别与计算处理,还要随时响应用户的按钮操作,与单片机进行通讯,所以处理好软件的实时性和定时任务,是软件开发的基本工作。我们采用了Matlab的timer定时器实现定时任务,实时任务由相关控件的Callback函数处理[3]。在figure控件的OpeningFcn函数中,用代码handles.timer=timer(‘TimerFcn’, {@timerCallback, handles}, ‘ExecutionMode’, ‘fixedSpacing’,‘Period’, 0.5); 初始化定时器,用代码start(handles.timer);启动定时器。然后定义了timer的响应函数function timerCallback(hObject, eventdata, handles),在timerCallback中进行图像获取、潮湿面积识别、二值化图像显示、当前潮湿面积和风扇状态转速更新,同时根据按钮的点击情况确定是否向单片机发送转速指令。在figure控件的DeleteFcn函数中利用代码stop(handles.timer); 对定时器进行关闭操作。

4.3 基于USB摄像头的潮湿面积识别技术

这部分内容主要包括两部分:Matlab环境下摄像头对象的操作和潮湿面积的识别。我们首先在figure控件的OpeningFcn函数中,用代码handles.obj=videoinput("winvideo",1,"YUY2_640x480");定义了摄像头对象,然后用start(handles.obj);开启摄像头,随后在timerCallback中进行图像数据获取。与定时器对象类似,在figure控件的DeleteFcn函数中利用代码stop(handles.obj);对摄像头进行关闭操作。潮湿面积的获取采用先对图像二值化后计算面积的方法[4]。通过framenow=getsnapshot(handles.obj);获取图像,通过graynow=rgb2gray(framenow);[level EM]=graythresh(graynow);Bnow=im2bw(graynow,level);获取二值化图像Bnow,通过imshow(Bnow);显示二值化图像,通过arearatio=round(100-100*bwarea(Bnow)/bwarea(graynow));计算潮湿面积百分比arearatio,再通过set(handles.text2,"string", num2str(area ratio));显示当前潮湿面积百分比。

图3 原型验证系统

4.4 基于串行通讯的风扇干燥控制

监控软件的最终功用是根据潮湿面积与设定值之差控制风扇,而风扇控制指令通过串行口发送给单片机。Matlab支持对串行口的访问,首先我们在figure控件的OpeningFcn函数中用代码handles.scom=serial ("COM1");定义了串行口对象,在设定相关参数handles.scom.Terminator="";handles.scom.InputBuffer Size=20;handles.scom.OutputBufferSize=20;handles.scom.Timeout=0.1;之后通过fopen(handles.Sco m);打开串口。风扇给定转速fanspeed的发送采用fwrite(handles.scom,fanspeed);,风扇测速值通过fancesu=fread(handles.scom);读取。当然,串行口对象也要在figure控件的DeleteFcn函数中利用代码fclose(handles.scom);进行关闭。风扇给定转速正比于当前潮湿面积与下限设定之差,相当于比例控制。下限设定值限于5%到90%之间,非法输入用程序进行纠正。

图4 运行试验测试曲线

5.原型验证系统及运行试验

5.1 原型验证系统概况

我们开发成功的原型验证系统见图3,型材框架的底部用水写纸模拟地面,水写纸的顶端装有风扇,框架顶部安装摄像头,单片机系统固定在框架上,监控计算机与摄像头和单片机相连。用水将纸打湿,启动监控软件,可以看到当前采集画面的二值化图像。当前潮湿面积为56%,潮湿面积下限设定为20%,干燥吹风状态为“停止”,转速为0转/分钟。点击“启动干燥”按钮后,干燥吹风状态变为“运行”,转速变为3800转/分钟。运行大概2分钟后,当前潮湿面积变为18%,干燥吹风状态再次变为“停止”,转速也变回0转/分钟。把潮湿面积下限设定更改为5%,风扇再次启动吹风,直至当前潮湿面积减小到4%停止。

5.2 调速与测速运行试验

为了验证整个系统的调速与测速效果,我们做了一个试验。利用串口大师模拟监控软件,按一定的规律下发转速给定值,然后与单片机上传的测速值进行比较,观察风扇的控制情况。运行试验测试曲线如图4所示。从图中可以看出,风扇很好地按照给定转速旋转,且具有一定的惯性和超调,说明风扇调速与测速环节的设计是成功的。

6.总结

本文围绕原型验证系统,介绍了一种基于视频识别的潮湿地面干燥技术。该系统可以识别地面潮湿情况,根据参数设定自动启动鼓风干燥,使地面保持干燥。系统自动化程度高,无需专人值守,可以弥补现有技术方案的不足,能广泛应用于宾馆、商场、餐厅、地下通道等室内公共场所,解决雨天鞋底沾水地面湿滑带来的安全问题,值得推广。

参考文献

[1]百度文库.4针CPU风扇原理[DB/OL].http://wenku.baidu.com/view/7a76a2fb0242a8956bece45b. html.2014-8-7.

[2]杨欣.51单片机应用从零开始[M].北京:清华大学出版社,2013.

[3]张志涌.精通 MATLAB6.5版[M].北京:北京航空航天大学出版社,2003.

[4]周品.Matlab图像处理与图形用户界面设计[M].北京:清华大学出版社,2013.

项目来源:上海理工大学2014年度校级大学生创新创业训练计划项目(项目编号:XJ2014069);项目组成员:许云霄、万航、郁凯、杨敬元、马怡楠、胡琦、缪吴霞、吕伟臻;项目指导老师:刘歌群。

推荐访问:干燥 识别 地面 系统 视频

版权所有:巨优公文网 2018-2024 未经授权禁止复制或建立镜像[巨优公文网]所有资源完全免费共享

Powered by 巨优公文网 © All Rights Reserved.。备案号:沪ICP备18054162号-1