第8组电子设计自拟题报告DOC.docx
《第8组电子设计自拟题报告DOC.docx》由会员分享,可在线阅读,更多相关《第8组电子设计自拟题报告DOC.docx(13页珍藏版)》请在冰豆网上搜索。
第8组电子设计自拟题报告DOC
多功能智能控制系统
第8组
B04040429金逸超
B04040520许扬扬
B04040702史文雯
摘要2
1.系统方案选择和论证2
1.1设计要求2
1.2系统基本方案2
1.2.1各模块方案选择和论证3
2.单元电路设计4
2.1温度传感器4
2.2湿度传感器模块5
2.3光照度传感器模块5
2.4数码显示6
2.5过限报警、智能控制模块7
3.系统的软件设计7
3.1数据处理7
3.2光照度测量程序如下:
8
3.3湿度读取程序9
3.4温度读取程序9
4.系统测试9
4.1测试仪器9
4.2指标测试10
4.3误差分析10
5.总结10
参考文献11
摘要
本系统采用温度传感器(DS18B20),湿度传感器(HS1101),光照度传感器(LX1970)分别对外界温度,湿度,光照度进行测量,由52单片机进行控制,把测得的数据进行显示,并且可以设置警限,超过限制就能发出警报。
实现了同时对多种外部参数进行采集、处理的功能。
1.系统方案选择和论证
1.1设计要求
采集外部环境的温度,湿度,光照度,并进行显示,可以设置警限,超过限度可以发出警报。
1.2系统基本方案
各子系统的功能描述如下:
子系统
描述
温度传感器
检测环境温度,并转化为电信号
湿度传感器
检测环境湿度,并转化为电信号
光照度传感器
检测环境光照度,并转化为电信号
硬件控制器
控制计算转化各传感器传来的电信号
数码显示
将三种参数在数码管上循环显示出来
过限报警
某一参数不在用户设定范围内时报警
设定限值
用户可以设定三种参数的正常范围
1.2.1各模块方案选择和论证
1.2.1.1温度传感器模块
方案一:
使用热敏电阻。
热敏电阻是一种典型的温度传感器,原理简单,使用方便,但稳定性不高,精度低。
方案二:
采用DS18B20进行温度测量。
DS18B20是一种改进型智能温度传感器。
外形与一般的三极管十分类似。
与传统的热敏电阻相比,能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
单个DS18B20温度测量精度达到±0.5℃,测温范围在-25℃到125℃之间。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。
1.2.1.2湿度传感器模块
方案一:
使用湿敏电阻。
湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空气中的水蒸气吸附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量湿度。
湿敏电阻的优点是灵敏度高,主要缺点是线性度和产品的互换性差。
方案二:
使用专用湿敏电容。
当环境湿度发生改变时,湿敏电容的介电常数发生变化,使其电容量也发生变化,其电容变化量与相对湿度成正比。
湿敏电容的主要优点是灵敏度高、产品互换性好、响应速度快。
在本系统中,我们选用了法国HUMIREL电容式湿度传感器,它的稳定性好、精度高、外带防护罩,抗静电、防灰尘、并可抵抗氯气、氨水等外界影响,具有非常低的温度依赖性。
1.2.1.3光照度传感器模块
方案一:
光电传感器(常用的如光敏电阻等)。
简单易用,价格低廉,但稳定性和精度不高。
不适用于直接测量光照度数值以及对测量精度要求较高的场合。
方案二:
集成化可见光亮度传感器LX1970,它的光电二极管阵列的光谱特性及灵敏度都与人眼十分相似,同时它的非线性误差小,重复性好。
两个互补输出端的电流不对称度仅为±0.5%,可任选一端作为输出。
外围电路简单,价格低廉,使用方便。
无须使用滤光片即可有效衰减紫外光及红外光。
此外LX1970微功耗,采用低压供电。
基于以上理由,我们在选用光照度传感器上使用了LX1970。
1.2.1.4显示模块
显示模块用来显示被测直流信号的电压值
方案一:
采用LED(数码管)显示
LED(数码管)是light-emittingdiode的缩写,具有高亮度,低能耗,低压,低损耗,防晒,防潮,防火,高刷新率,对外界环境要求低,易于维护,操作简单等优点,能提供宽达160°的视角,可以在较远的距离上看清楚,编译简单,资源占用少。
但是它的显示存在信息量少,显示不直观,不易理解的缺点。
本系统要显示的数字比较简单,因此采用led数码管进行动态显示。
方案二:
采用LCD(液晶屏)显示
LCD(液晶屏)是LiquidCrystalDisplay的缩写,它具有汉字显示的功能,信息量丰富且直观易懂,轻薄短小,耗电量低,无辐射危险,画面效果好,分辨率高,抗干扰能力强,但编程工作量大,控制器资源占用较多,成本偏高,并且在使用时不能有静电干扰,容易烧坏显示芯片,不易维护。
2.单元电路设计
2.1温度传感器
DS18B20读取时序图
2.2湿度传感器模块
由于是电容式传感器,若要转化为电信号(频率),需要使用典型的RC振荡电路,利用555定时器产生频率信号。
频率产生电路如下:
图3、HS1101典型频率产生电路
2.3光照度传感器模块
由LX1970的Datasheet可知,获取其两个互补输出端任一端的电流输出,经过相应转换,即可获取当前外界光照度信号。
考虑到要测量电流值,应先将电流通过一定值的电阻转化为电压值,然后电压值通过一个AD转换模块,转换为8位的数字信号输入到处理器。
图4、LX1970测量电路及AD转换模块
2.4数码显示
采用单片机上的一个定时中断来刷新数码管的显示,每隔大约2ms的时间,根据所要显示的数据,在预先定好的字码表中找到相应的字码,连续刷新四个数码管一次,以达到较好的视觉效果。
数码显示模块程序流程图如下:
2.5过限报警、智能控制模块
此模块需要对各个传感器传来的数值与现有相应限值进行比较,若不在当前设定的限制范围之内,则告知处理器相关信息。
并由处理器发出信号,通过继电器的动作(由于是原型模型,因此我们实验中使用相应发光二极管来代替相应继电器动作)来实现各类智能化控制。
不同继电器上接入不同的功能模块,即可实现不同的自动控制。
3.系统的软件设计
3.1数据处理
对各个传感器传来的电信号、微机传来的数据以及数码显示进行处理,并对这些功能进行整合,进行合理分配。
在程序实现中,我们AT89C52的三个定时中断我们全都使用上了,定时器0一方面作为50ms定时器,用于精确测量外部输入频率值、另一方面提示处理器读取当前传感器新值:
voidtime0()interrupt1//定时器0
{
TH0=0x4c;
TL0=0x00;//50ms定时器
if(timer==19){
fre=TempFre;//读频率
flag=1;//读取传感器新值
TempFre=0;
timer=0;
}
else
timer++;
}
定时器1同时用作AD模块的clock发生器、串口查询接收程序和显示中断程序的入口,采用不同的计数值,从而经入不同的中断程序。
voidtime1()interrupt3//定时器1
{
CLK=~CLK;//ADC0809Clock
if(RI){
RI=0;
Receive=SBUF;
ReadFlag=1;//已读串口
}
timercount++;
if(timercount==100){timercount=0;showflag=1;}//数码显示
}
定时器2用作波特率发生器。
voidinitCOM()//利用定时器2做波特率发生器
{
T2CON|=0x31;
RCAP2H=0xff;
RCAP2L=0xb8;//Baud:
4800
SCON|=0x52;
TR2=1;//启动定时器2
EA=1;//中断使能
}
此外还使用了一个外部中断来对外部输入频率进行计数,以测量出当前湿度值。
voidexternInterrupt1()interrupt0using0//外部中断1
{
TempFre++;
}
3.2光照度测量程序如下:
voidlightchange()//获取当前光照度信息
{
if(EOC==1)
{
getdata=P1;
illum=getdata*5;
ST=1;
delay
(2);
ST=0;
}
}
3.3湿度读取程序
voidhumidity()//获取当前湿度信息
{
if(fre>=7351)hum=0;
elseif(fre<7351&&fre>=7224)hum=(fre-7224)*100/127;
elseif(fre<7224&&fre>=6976)hum=100+(fre-7100)*100/124;
elseif(fre<6976&&fre>=6853)hum=300+(fre-6853)*100/123;
elseif(fre<6853&&fre>=6728)hum=400+(fre-6728)*100/125;
elseif(fre<6728&&fre>=6600)hum=500+(fre-6600)*100/128;
elseif(fre<6600&&fre>=6468)hum=600+(fre-6468)*100/132;
elseif(fre<6468&&fre>=6330)hum=700+(fre-6330)*100/138;
elseif(fre<6330&&fre>=6186)hum=800+(fre-6186)*100/144;
elseif(fre<6186&&fre>=6033)hum=900+(fre-6033)*100/153;
elsehum=999;
}
3.4温度读取程序
限于篇幅,这里只对程序的函数声明做一个简单介绍,具体函数实现不再逐一赘述。
voiddelay(unsignedinti)//延时函数
voidInit_DS18B20()//初始化DS18B20函数
unsignedcharReadOneChar(void)//向DS18B20读一个字节
voidWriteOneChar(unsignedchardat)//向DS18B20写一个字节dat
unsignedintReadTemperature()//读取温度,返回温度值
此外由DS18B20的DataSheet可知WriteOneChar(0xCC)为跳过读序号列号的操作,WriteOneChar(0x44)为启动温度转换的操作,WriteOneChar(0xBE)为读取温度寄存器的操作。
4.系统测试
4.1测试仪器
测试使用的仪器设备
序号
名称、型号、规格
数量
备注
1
VC9804A数字万用表
1
胜利仪器厂
2
DF1731SL2A直流稳压电源
1
宁波中策电子有限公司
3
RIGOL数字示波器
1
北京普源精电科技有限公司
4
水银温度计
1
5
湿度仪
1
6
照度计
1
4.2指标测试
次数
实际温度
数码管显示值
1
15.2
15.4
2
26.4
26.2
3
30.5
30.6
实际湿度
数码管显示值
1
30.6%RH
30.4RH
2
46.2%RH
46.3%RH
3
76.4%RH
76.6%RH
实际光照度
数码管显示值
1
1102..8
1102.6
2
463.4
463.2
3
745.3
745.2
4.3误差分析
温度:
组成该模块的器件少(只有一个器件),受器件性能影响大,而且该器件本身具有正负0.5V的误差。
湿度:
在由湿敏电容与555构成的RC振荡电路中的电阻与电容的取值并不是十分准确,所以输出的振动频率易送影响。
光照度:
ADC0809有正负1LSP的误差,但该相对误差较小。
5.总结
本系统以52单片机为核心部件,通过DS18B20温度传感器,HUMIREL电容式湿度传感器,LX1970光亮度传感器来获得外界环境的温度、湿度、光亮度,并在数码管上显示。
并且可以设置报警限制,一旦超过范围就可报警。
在系统设计过程中,力求硬件线路简单,充分发挥软件编程方便灵活的特点,来满足系统的设计要求。
参考文献
戴佳,戴卫恒51单片机C语言应用程序设计实例精讲电子工业出版社2006年
第五届全国大学生电子设计竞赛获奖作品选编(2001)北京理工大学出版社