比赛报告.docx
《比赛报告.docx》由会员分享,可在线阅读,更多相关《比赛报告.docx(35页珍藏版)》请在冰豆网上搜索。
比赛报告
序号:
A011
第三届电子设计竞赛设计报告
参赛题目智能排气扇
队员名称许驹吴松江梁旭良
2010年5月29日
1、前言…………………………………………………..………………………….……………-3-
摘要
摘要:
本智能排气扇采用8位的51单片机为主控制器,通过温湿传感器采集室内的温度、湿度等数据,并将显示在1602液晶显示器。
由火焰传感器来检测热水开停,从而控制排气扇的运转。
同时采用煤气传感器检测室内是否出现有害气体,在出现有害气体时报警提示并强制排气。
可以通过红外遥控器控制排气扇运转,具备故障自我检测功能。
关键词:
排气扇、单片机、传感器、液晶
Abstract:
theintelligentexhaustfanisbasedona8-bit51-seriesMCU,throughthewetsensorstocollectindoortemperatureandhumiditydata,andwillshowin1602LCD.Byfiredetectionsensorandcontrol,waterdriveexhaustfanoperation.Usinggassensordetectionindoorharmfulgases,whetherinappearwhentheharmfulgasalarmpromptandforcedtheexhaust.Throughcontrollingtheexhaustfaninfrared,hasfunction.
Keywords:
exhaustfan,MCU,sensor、LCD
广东工业大学电子设计竞赛在学校与外面的企事业和同学的共同倡导和大力支持下,自2008年以来已经成功举办了二届(每年一届),得到了全校的大多数设有电子信息类专业的重视和积极响应,规模和影响越来越大,已经成为目前实践中非常成功和被社会中许多企业认可的大学生学科竞赛之一。
前
言
在此基础上,广东工业大学2010电子设计大赛和闻泰集团公司策划了自行车计程器手机、突发心脏病患者自动呼救手机、软件件命题专题竞赛。
该想法得到了全校竞赛组委会及全校学生的大力支持。
本次竞赛由广东工业大学电子设计竞赛筹委会主办。
同时,邀请我校著名教授及往届经验丰富的师兄师姐进行题目讲解,提供实现实成作品的方法与技巧。
本次专题竞赛的参赛对象为有正式学籍的在校本科生,一至三人一队,一名队长。
其中有信息工程学院、自动化学院、物理学院等十多个学院参加。
各参赛队经过一个多月的努力,完成了各自的竞赛作品,参赛作品既有硬件内容,又有软件内容,非常广泛,展示了无线通信、智能控制、多媒体演示等各个领域的发展前景。
电子设计竞赛的开展对电子信息类专业基础课教学内容的更新、整合、改革以及课程建设起到促进作用。
本次竞赛能够成功举行,得到了广东工业大学电子设计竞赛筹委会和闻泰集团公司的大力支持与同学们的共同参与合作。
在此一并表示感谢。
2、总体方案设计
2.1方案一
说明:
通过单片机STC89C52来实现各功能处理。
温湿传感器——DHT11和OTP-538红外测温传感器采纳信息经过程序处理在NOKIA3510i上显示各种所须的室内温湿数值和热水温度值。
通过单片机编写程序PWM通过光耦区分弱电与强电来控制电机风速随着温度的高低变化快慢的功能。
红外线检测热水器工作的正常与否。
MQ-5传感器用来检测CO或煤气等有毒气体,如果有则进行强排气。
用电流互感来检测风扇电路中是否堵转或故障,如果有出现问题则检测到电流远远大于风扇正常工作的电流,从而发送命给单片机来实现切断风扇电源与语音报警,保护电路与风扇。
2.2方案二
说明:
通过单片机STC89C58来实现各功能处理。
温湿传感器——DHT11和DS18B20测温传感器采集信息经过程序处理在LCD1062上显示各种所需的室内温湿数值和热水温度值。
通过单片机编写程序通过5V的继电器区分弱电与强电来控制风扇的风速随着温度的高低实行强排气与弱排气档位。
利用高灵敏度火焰传感器检测热水器工作的正常与否。
MQ-2传感器用来检测CO或煤气等有毒气体,如果有则进行强档位排气。
用红外对管来检测风扇电路中是否堵转或故障,如果有出现风扇不正常的情况下,从而发送命给单片机来实现切断继电器与风扇间的电源并实施锋鸣器响声报警,最终实现保护电路与风扇。
2.3方案比较
2.3.1处理器的比较
型号
Flash程序存储器
RAM数据存储器
EEPROM
串口
中断源
向下兼容winbond
向下兼容philips
向下兼容Atmel
STC89C52
8K
512
1K
1ch+
8
W78E52
P89C52
无
STC89C58
32K
1280
8K
1ch+
8
W78E58
P89C58
AT89C51RC
从上图可明确得知选择方案二的STC89C58处理器最佳。
无论内存flash上与RAM都是比STC89C52优越很多。
虽然STC89C58的价格比STC89C52贵十元左右,但从性能上与速度上,为了减少到最少误差都是选择STC89C58.
2.3.2NOKIA3510i与LCD1602的比较
作为一个普通显示,方案一的NOKIA3510i安装上比较困难,占的空间相对方案二的LCD1602要大,而且LCD1602是直插式所以安装与拆下非常方便,而且NOKIA3510i的成本比LCD1602的要高。
所以方案二的LCD1602较好。
2.3.3红外线与火焰传感器
方案一的检测热水器是相对方案二的火焰安装方便性都差不多,但红外线检测的相对火焰误差太大,当热水器关火时,由于热水器上还留一定的高温,所以红外线传感器依然检测到高温,所以误以为热水还开着,但火焰只检测火焰,所以当火焰一熄时就会明显知道是关热水器了。
所以方案二的LCD1602较好。
2.3.44X4键盘与揺控
一般的4X4键盘是比较低价格,但它的安装上就不是太理想,要固定在一个地方,不太方便移动。
而选择摇控非常方便,就像空调那样,用个摇控器可以控制风扇变化情况,而且价格上非常便宜,安装非常方便,移动性强、实用。
2.4方案选择
综上所述,第二个方案是最佳的。
第二个方案成本上比第一个低,性能上比第一个高,误差上比第一个少,实用性比第一个强。
3、单元模块设计
3.1各单元模块功能介绍及电路设计
3.1.1、51单片机作为主控制芯片
采用51单片机作为主控制芯片单片机,其具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
复位电路电阻/电容复位的值为电阻10K,电容=10uF。
如为用外部专芯片复位,RESET管脚(复位脚)不要加任何上拉/下拉电阻。
3.1.2、电源系统
电源系统采用L7806CV将12V输入电压转换为6V电压,为单片机提供稳定的电源。
L7806CV特性:
LM7806是常用的三端稳压器,一般使用的是TO-220封装,能提供DC5.8V的输出电压,应用范围广,内含过流和过载保护电路。
带散热片时能持续提供1A的电流,如果使用外围器件,它还能提供不通的电压和电流。
3.1.3、蜂鸣器电路模块
蜂鸣器电路,提供报警声音。
原理:
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。
有两种方法控制锋鸣器,1.PWM输出口驱动蜂鸣器的方法,2.I/O口驱动蜂鸣器的方法。
使用I/O口定时翻转电平驱动蜂鸣器方式的设置比较简单,只需要对波形分析一下。
由于驱动的信号刚好为周期500μs,占空比为1/2duty的方波,只需要每250μs进行一次电平翻转,就可以得到驱动蜂鸣器的方波信号。
在程序上,可以使用TIMER0来定时,将TIMER0的预分频设置为/1,选择TIMER0的始终为系统时钟(主振荡器时钟/4),在TIMER0的载入/计数寄存器的高4位和低4位分别写入00H和06H,就能将TIMER0的中断设置为250μs。
当需要I/O口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0中断的时候对该I/O口的电平进行翻转一次,直到蜂鸣器不需要鸣叫的时候,将I/O口的电平设置为低电平即可。
不鸣叫时将I/O口的输出电平设置为低电平是为了防止漏电。
3.1.4、1602液晶显示器模块
1602液晶显示器模块、显示温度、湿度等数据。
3.1.5、温湿传感器和火焰传感器
温湿传感器和火焰传感器,采集外部环境数据,并及时反映到单片机供其处理。
DHT11概述
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
火焰传感器概述
火焰传感器:
工作对对象:
flametransducer火焰是由各种燃烧生成物、中间物、高温气体、碳氢物质以及无机物质为主体的高温固体微粒构成的。
远红外火焰传感器能够探测到波长在760纳米~1100纳米范围内的红外光,探测角度为60,其中红外光波长在940纳米附近时,其灵敏度达到最大。
远红外火焰探头的工作温度为-25摄氏度~85摄氏度,在使用过程中应注意火焰探头离火焰的距离不能太近,以免造成损坏。
火焰传感器模组(JNHB2004)是组合好的模组,能将探测到的火焰信号转为0-5V的电压信号可直接输入IC。
3.1.6、红外对管检测电路
红外对管检测电路,检测风扇是否转动。
红外线通讯是一种廉价、近距离、无连线、低功耗和保密性较强的通讯方案,在PC机中主要应用在无线数据传输方面,但目前已经逐渐开始在无线网络接入和近距离遥控家电方面得到应用,因此选择这种方法。
红外管系统的组成参数:
1.红外发射管:
红外发射管实际上是一个特殊的二极管,用万用表电阻档测量,发射管的反向电阻通常为无穷大,正向电阻一般为500K左右。
2.红外接收管:
红外接收管也是一个二极管,测量时,它的正向电阻大于500K,而且不受光照的影响,反向电阻在没有光线直射时,一般大于300K,强光照射时应小于10欧,有时会为负数,这是因为在强光照射时,二极管的PN结将获得的光能转化为电能,形成了0.7V的结电压。
由于红外收发器的电路相对简单,所以调试也很方便。
发射部分基本上不用调试,注意检查发射管的极性连接是否正确。
接收部分同样要注意接收管的极性是否连接正确。
在通讯时,红外传输和GND之间应该有0.7V左右的电压波动,如果没有就是红外接口有问题,或者是红外接口没有打开;红外传输和GND之间同样有0.7V的电压波动,如果波动范围较小,可以调整取样电阻,加大它的阻值,但不要太大,否则会降低接收的抗干扰能力。
在联机正常的情况下,再调整取样电阻,使通讯距离尽量大些。
3.1.7、煤气传感器MQ-2
MQ-2煤气传感器结构特性与接法。
检测外部是否有煤气存在。
标准工作条件
灵敏度特性
3.1.8、红外IC接收电路
红外IC接收电路,接收遥控器的控制信号。
遥控器是一种用来远控机械的装置。
红外遥控器,主要是由集成电路电板和用来产生不同讯息的按
钮所组成。
该工功能所用遥控器:
采用最NEC编码解码。
人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。
其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。
比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。
红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。
3.1.9、继电器电路
单片机控制继电器电路,实现排气扇的停转控制
继电器接排气扇电路。
电磁继电器的工作原理和特性,电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。
这样吸合、释放,从而达到了在电路中的导通、切断的目的。
对于继电器的“常开、常闭”触点,可以这样来区分:
继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。
3.2电路参数的计算及元器件的选择
在主控制器上,我们采用了51系列单片机,由于程序比较大,所以选择了RAM为1280,FLASH为32K的STC89C58RD+单片机。
在显示方面,由于只需显示温度、湿度等数据,我们选择了性价比较高的LCD1602,在不影响功能的情况下把费用降到最低。
我们采用继电器来控制排气扇,相对容易控制。
特殊器件的介绍;
煤气传感器:
对液化气,天然气,城市煤气有较好的灵敏度
对乙醇,烟雾几乎不响应
快速的响应恢复特性
长期的使用寿命和可靠的稳定性
简单的测试电路
火焰传感器:
火焰的热辐射具有离散光谱的气体辐射和连续光谱的固体辐射。
对应火焰温度的760纳米~1100纳米近红外波长域具有最大的辐射强度。
而火焰传感器通过检测红外线来判断火焰的存在与否。
红外对管:
利用红外对管在排气扇转动下产生脉冲电压信号,通过单片机来判断风扇的停转情况。
4系统调试
4.1调试内容(一些模块功能主程序)
4.1.1、火焰传感器
工作与IC的特性参数
voidhuoyan()
{
if((hy==0)&&(flag==0))
{
hj=0x01;//标志位
fengshan();//该函数实现排气扇调速
}
if((hy==1)&&(hj==0x01))
{
hj=0;
delay2(3000);//检测到停时,排气扇延时3秒,之后关闭排气扇
fs1=1;
fs2=1;
}
}
4.1.2、红外遥控器
红外函数,P33引脚,红外线接收IC数据脚,该模块主要是读取遥控器按键数值,以进行相应的控制
voidhongwai(unsignedchar*lp,unsignedcharlc)
{
unsignedchari,num1;//定义变量
P2=0;//端口2为输出
for(i=0;i{
if(i==7)//检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到P13数据
break;
P1++;
num0=table[lp[6]];
num1=table[lp[7]];
if(num0==0x3f)
{
switch(num1)
{
case0x4f:
fs1=0;
fs2=1;
break;
case0x07:
fs1=1;
fs2=0;
break;
case0x7c:
fs1=1;
fs2=1;
break;
}
}
}
}
/***********外中断1入口函数,P33引脚,红外线接收IC数据脚**************************/
voidhongwai(void)interrupt2
{
unsignedchari,tmp;
i=0;//接收数组变量的元素号
/**************开始判断是否为NEC波形******************************/
TL1=0;
TH1=0;//定时/计数器1初始值
TR1=1;//定时器以12M晶振12分频计数,即1us计数
while(!
hwx)
{//判断引脚信号是否翻转
delay4(10);//廷时,避免频繁读取计数器值的作用,可不用。
if(TH1>40)//这是为了信号错误码而设,即大于40的计数值就要退出,因为NEC引导码最大为9MS,计数约9000,TH1约等于35
return;
}
TR1=0;//信号翻转停止计数
if(TH1<25)//还要判断小于25为非NEC制编码退出,否则继续接收数据
return;
l_lhj[i]=TH1;//得到计数值
i++;
/***********开始接收33个数据时间量**************************************/
//上面已接收了引导码的前9MS,以下是从引导码的后4。
5MS开始接收,高低电平的时间量都保存,因此总共是66个变量
while
(1)
{
TL1=0;
TH1=0;//定时计数器1初始值
TR1=1;//启动计数
while(hwx){//判断引脚信号是否翻转,接收高电平时间量
delay4(10);
if(TH1>40)//这是为了信号发生错误码而设,即大于40的计数就要退出,因为NEC引导码最大约35,
break;
}
TR1=0;//信号发生翻转,停止计数
l_lhj[i]=TH1;
i++;
if(i==66)//接收完一组编号信号就退出,32位数据,加引导码1位,总33位,每位都有高低电平,即66个时间量
break;
TL1=0;
TH1=0;//定时计数器1初始值
TR1=1;//启动计数
while(!
hwx)
{//判断引脚信号是否翻转。
接收低电平时间量
delay4(10);
if(TH1>40)
break;
}
TR1=0;
l_lhj[i]=TH1;
i++;
}
4.1.3、DHT11温湿传感器
DHT11温湿传感器,该功能主要实现对环境温度、湿度的读取,然后通过液晶显示出来。
通信过徎:
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。
DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。
voidRH(void)
{
//主机拉低18ms
P2_0=0;
Delay1(180);
P2_0=1;
//总线由上拉电阻拉高主机延时20us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主机设为输入判断从机响应信号
P2_0=1;
//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行
if(!
P2_0)//T!
{
U8FLAG=2;////////////////////////////////////////////////////
//判断从机是否发出80us的低电平响应信号是否结束
while((!
P2_0)&&U8FLAG++);
U8FLAG=2;
//判断从机是否发出80us的高电平,如发出则进入数据接收状态
while((P2_0)&&U8FLAG++);
//数据接收状态
COM();
U8RH_data_H_temp=U8comdata;
COM();
U8RH_data_L_temp=U8comdata;
COM();
U8T_data_H_temp=U8comdata;
COM();
U8T_data_L_temp=U8comdata;
COM();
U8checkdata_temp=U8comdata;
P2_0=1;
//数据校验
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
{
U8RH_data_H=U8RH_data_H_temp;
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
}
}
}
//烟雾传感器,该模块主要功能是检测一氧化碳
voidyw()
{
if(yanwu==0)
{
beep=0;
delay(10);
beep=1;
fs1=1;
fs2=0;
}
}
4.1.4、DHT11在LCD1602上显示原理
刚发始运用DS18B20在LCD上显示的原理,但出来的效果不够理想。
出现反应过慢,经过多次调试最终放弃这个参考原理,最后在网上找到DHT90在lcd1602上显示的原理,但其有一定的深度,我们为了能够有更好的显示效果,所以我们花了一些时间去查资料,把它弄明白,最终我们成功把它显示在lcd上。
以下是一些调试程序。
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitrs=P1^0;
sbitrw=P1^1;
s