电子系统设计实验报告.docx
《电子系统设计实验报告.docx》由会员分享,可在线阅读,更多相关《电子系统设计实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
电子系统设计实验报告
电子系统设计实践
设计报告
学院:
班级:
2012级
学生:
学号:
学生:
学号:
学生:
学号:
指导老师:
时间:
2013年9月
摘要
在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
其中,温度控制也越来越重要。
在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。
采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
因此,单片机对温度的控制问题是一个工业生产中经常会遇到的控制问题。
单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等部分于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。
因此,单片机广泛用于现代工业控制中。
本论文侧重介绍“单片机温度控制系统”的软件设计及相关内容。
论文的主要内容包括:
采样、滤波、键盘、LED显示和报警系统,加热控制系统等。
作为控制系统中的一个典型实验设计,单片机温度控制系统综合运用了微机原理、自动控制原理、模拟电子技术、数字控制技术、键盘显示技术等诸多方面的知识,是对所学知识的一次综合测试。
温度控制系统在国内各行各业的应用虽然己经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比,仍然有着较大的差距。
成熟的温控产品主要以“点位”控制及常规的PID控制器为主,它们只能适应一般温度系统控制,而用于较高控制场合的智能化、自适应控制仪表,国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少.随着我国经济的发展及加入WTO,我国政府及企业对此都非常重视,对相关企业资源进行了重组,相继建立了一些国家,企业的研发中心,开展创新性研究,使我国仪表工业得到了迅速的发展。
目前,温度控制器产品从模拟、集成温度控制器发展到智能数码温度控制器。
智能温控器(数字温控器)是微电子技术、计算机技术和自动测试技术的结合,特点是能输出温度数据及相关的温度控制量,适配各种控制器,并且它是在硬件的基础上通过软件来实现控制功能的,其智能化程度也取决于软件的开发水平,现阶段正朝着高精度高质量的方向发展,相信以我国的实力,温控技术在不久的将来一定会为于世界前列。
一、设计要求:
1.(温度控制系统模块)基本要求
(1)测量温度范围-55℃~120℃
(2)精度0.1℃
(3)显示测量温度
(4)自动控制温度
2.(红外防盗报警器模块)基本要求
(1)该设计包括硬件和软件设计两个部分。
模块划分为信号检测、报警等模块子函数。
(2)本红外线防盗报警系统由红外传感器、单片机最小系统、报警器组成。
(3)系统可实现功能。
当人员外出进,可把报警系统设置在外出布防状态,探测器工作起来,当有人闯入时,红外传感器将检测出信号,并将检测到的信号送入到单片机内部,并由单片控制报警器发出报警信号,以提示人们有非法人员闯入,
(4)红外线具有隐蔽性,在露天防护的地方设计一束红外线可以方便地检测到是否有人出入。
二、理论设计:
温湿度与生产及生活密切相关。
像仓库、农田、生产过程,温度变化会影响品质;精密仪器、半导体器件,过温而导致性能降低,另外,人们的生活质量提高,对室内环境的高要求也需要对温度的适时监控,可见,温度传感器的应用范围是很广的。
而在日常生活中,温度,尤其是水温的测控尤为重要,婴儿奶瓶,热水壶等等一系列产品对温度测控的需求相当的迫切。
虽然市面上已经有许多成品测温仪器,但我们希望,通过自己的努力,能够作出一款功能齐全,制作简单的温度测控仪器。
希望能在在精进学识的同时培养我们的动手能力。
2.1.1芯片介绍
AT89C52是一种低电压、高性能CMOS8位微处理器,它自带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory),俗称单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪存存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器。
AT89C系列单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
它的部分引脚功能介绍如下。
AT89C52单片机的外形及引脚排列如上图:
2.1.2DS18B20简介
DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20、DS1822“一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS1822的精度较差为±2°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
DS18B20、DS1822的特性DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!
性能价格比也非常出色!
DS1822与DS18B20软件兼容,是DS18B20的简化版本。
省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20中的温度传感器对温度的测量
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
DS18B20的内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如下:
DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
1)64位的ROM
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
2)DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。
第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。
第六、七、八个字节用于内部计算。
第九个字节是冗余检验字节。
DS18B20的时序
由于DS18B20采用的是单总线协议方式,即在一根数据线实现数据的双向传输,而对89C51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20的复位时序
DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
DS1820使用中注意事项
DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。
2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。
当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
3)连接DS1820的总线电缆是有长度限制的。
试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。
当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。
这种情况主要是由总线分布电容使信号波形产生畸变造成的。
因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。
这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。
红外报警系统设计结构:
红外传感感器、报警电路、单片机、复位电路及相关的控制管理软件组成;它们之间的构成框图如图1总体设计框图所示
图1电路的总体设计院框图
(1)
2.2设计方案
方案一:
选用光电耦合器,双向可控硅和功率电阻组成可以与单片机端口和市电连接大功率工作的设备,以供风扇与加热器的正常工作。
此电路可控制大功率设备,但是在制作和调试的过程中要注意安全。
方案二:
选用小功率演示器件,用不同颜色的发光二极管或小功率风扇来代替风扇和加热器,能直观的反应单片机控制哪路电路的工作,这样不仅表达出来的效果比较好,而且在调试和使用的时候比较的安全,并且在单片机下载版数码管上显示当前的温度范围。
该设计方案虽然安全,但该设计不能在现实生活中实现自动控制。
从上面两个方案比较,要想实现该系统的自动控制选择方案一比较好。
2.2.1LED显示模块
本课题的LED显示模块是由一个四联共阳七段数码管组成。
七段数码管是由若干发光二极管组合而成的,一般的“8”字形显示块由“a、b、c、d、e、f、g、h”8发光二极管组成。
四个七段数码管分别与P0口相连,通过对单片机输入程序达到控制显示输出的目的(如图)。
四个七段数码管由单片机的P2.0~P2.3控制亮灭,P2.0~P2.3分别对应Q2~Q5,当P2.0~P2.3其中之一置高电平,对应的三级管导通,段码管亮,置低电平,对应的三级管截止,段码管灭。
2.2.2系统框架设计如下图所示:
温度测量模块我们采用DS18B20
1.下图为温度测量的原理图:
图1温度测量原理图
图2红外传感器的原理图
2.2.3温度测量控制器模块
本课题的控制器模块式采用89C51单片机作为MCU,如图89C51。
89C51的P0.0~P0.7作为四联七段数码管总线;P2.4作为连接DS18B20的I/O口;P1.7作为升温电路的控制端;P2.0~P2.3控制四个七段数码管的亮灭。
2.2.4温度测量电源电路
给系统电路输入一个稳定的+5V的电源(如图)。
2.3.1红外报警器时钟电路
图3时钟电路图
2.3.2红外报警复位电路
图4复位电路图
2.3.3红外传感器电路的设计
D1为红外发射管,其负极端直接地,D1发红外光。
D4为红外接收管,当接收到红外光时导通,5V电源通过D4加到反相器74LS14的输入端,经反相为低电平,这时P1。
1为低电平。
发射管和接收管分别安装在门和窗口的适当位置,当有人闯入时遮挡了红外线,接收管截止,反相器输入端为低电平,这时U1的P1。
1为高电平。
当在一定时间内检测到有光束被遮挡时,则由P3.7口输出报警信号。
驱动声报警电路,进行声报警,当报警时间延迟14S钟后,电路自动消除报警,也可以人员手动解除报警。
由于红外收发管之间没有遮挡时为正常,有遮挡时为异常,则当P1。
1口输出0时,P3。
7口的正常状态数据为0。
电路图如图5所示
图5红外传感器电路
2.3.4报警电路的设计
该报警电路的发出的声音是模拟警车的声音,当单片机发出报警信号时,该报警电路将发出洪亮的似警车声音报警声音,由于该电路输出信号通过两个三极管组成的复合管放大,通将输出放大一百倍,从而由扬声器发出洪亮的声音,由软件设计输出信号高低电平时间间隔的不同,从而可发出警车似的声音。
电路图如图6所示
图6报警电路的原理图
2.3.5稳压电源电路的设计
稳压电路由变压器、桥式整流堆、电容与芯片78L05组成,使输入220V的交流电经过变压为输出5V的直流电。
其电路图如
7所示
图75V稳压电路
电源是系统中最重要的模块之一,输入电源经稳压块后输出稳定的+5V电源,用以驱动整个系统。
2.3.6系统硬件电路的选择及说明
硬件电路的设计见附图示,从以上的分析可知在本设计中要用到如下器件:
ST89C52、红外发射/接收管、反相器74LS14、扬声器等,以及一些单片机外围就用电路,其中D2为电源工作指示灯,R4为扬声器起报警作用,当P3.7f输出高低电平时报警器开始报警
三软件的程序实现
3.1红外报警模块设计编程程序
主程序清单如下:
ORG00H
LOOP3:
MOVP1,#0FFH
CLRP1.2
movA,P1
JNBACC.1,STAR
SJMPLOOP3
STAR:
MOVR2,#2
LOOP2:
MOVR1,#4
LOOP1:
MOVR6,#126
MOVR5,#193
ACALLSOUND
MOVR6,#95
MOVR5,#255
ACALLSOUND
DJNZR1,LOOP1
DJNZR2,LOOP2
SETBP3.7
AJMPLOOP3
SOUND:
CLRP3.7
ACALLDELAY
SETBP3.7
ACALLDELAY
DJNZR5,SOUND
RET
DELAY:
MOVB,R6
DL:
MOVR7,#6
DJNZR7,$
DJNZR6,DL
MOVR6,B
RET
END
3.2温度测量模块系统的调试
DS18B20数据的部分程序代码为:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^7;
uinttemp;
ucharcodeditab[16]=
{0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
//
ucharcodedis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
//共阴LED段码表"0""1""2""3""4""5""6""7""8""9""不亮""-"
ucharcodescan_con[4]={0xef,0xdf,0xbf,0x7f};//列扫描控制字
uchardatatemp_data[2]={0x00,0x00};//读出温度暂放
uchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据和一个运算暂用
voiddelay(uintt){
for(;t>0;t--);
}
/***********18B20复位函数**********/
ow_reset(void)
{
charpresence=1;
while(presence){
while(presence){
DQ=1;
_nop_();_nop_();
DQ=0;//
delay(50);//550us
DQ=1;//
delay(6);//66us
DQ=presence;//presence=0继续下一步
}
delay(45);//延时500us
presence=~DQ;
}
DQ=1;
delay
(1);
}
//向1-WIRE总线上写一个字节
voidwrite_byte(ucharval){
uchari;
for(i=8;i>0;i--){
DQ=1;
_nop_();_nop_();
DQ=0;
_nop_();_nop_();
_nop_();_nop_();
_nop_();//5us
DQ=val&0x01;//最低位移出
delay(6);//66us
val=val/2;//右移一位
}
DQ=1;
delay
(1);
}
//从总线上读取一个字节
ucharread_byte(void){
uchari;
ucharvalue=0;
for(i=8;i>0;i--){
DQ=1;
_nop_();_nop_();
value>>=1;
DQ=0;
_nop_();_nop_();
_nop_();_nop_();//4us
DQ=1;
_nop_();_nop_();
_nop_();_nop_();//4us
if(DQ)value|=0x80;
delay(6);//66us
}
DQ=1;
return(value);
}
read_temp(){
ow_reset();
delay(200);
write_byte(0xCC);//SkipROM
write_byte(0x44);//发转换命令
ow_reset();//总线复位
delay
(1);
write_byte(0xCC);//发SkipROM命令
write_byte(0xBE);//发读命令
temp_data[0]=read_byte();//温度低8位
temp_data[1]=read_byte();//温度高8位
temp=temp_data[1];
temp<<=8;
temp|=temp_data[0];
//return(temp);
}
work_temp(){//数据处理函数
ucharn=0,j,tem;
tem=temp;
if(tem>6348){
tem=65536-tem;
n=1;
}//负温度求补码,标志位置1
display[4]=tem&0x0f;//取小数部分的值
display[0]=ditab[display[4]];//存入小数部分显示值
display[4]=tem>>4;
display[3]=display[4]/100;
display[2]=display[4]%100/10;//存入十位
display[1]=display[4]%100%10;//存入个位
if(!
display[3]){
display[3]=0x10;
if(!
display[2])
display[2]=10;
}
if(n==1){
display[3]=11;
}
}
voidscan(){//显示函数
}
main()
{
ow_reset();//开机先转换一次
write_byte(0xCC);//SkipROM
write_byte(0x44);//发转换命令
while
(1){
read_temp();//读出18B20温度数据
work_temp();//处理温度数据
scan();
}
}
四、实验步骤
1.使用专业软件进行电路图的绘制
2.在绘图完成后,根据绘制的电路图进行软件的设计和开发
3.在专业软件中进行软件的仿真测试
4.测试成功后开始设计并焊接电路板
5.在完成的电路板上进行上电仿真操作,并针对不完善的地方进行修改和微调。
五、测量方法
首先我们在基本大气下,测得系统所在的环境的温度,并计入下来。
接着我们把DS18B20放入热水里面,看看后级驱动电路会不会驱动风扇使温度传感器散热。
当温度传感器恢复到室温时,我们在吧温度传感器放入冷水中,看看温度传感器会不会驱动加热管使温度传感器加热。
功能实现分析
该硬件电路在最后测试中实现