试谈电热水器自动控温系统的设计(ppt-71页)_第1页
试谈电热水器自动控温系统的设计(ppt-71页)_第2页
试谈电热水器自动控温系统的设计(ppt-71页)_第3页
试谈电热水器自动控温系统的设计(ppt-71页)_第4页
试谈电热水器自动控温系统的设计(ppt-71页)_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、电热水器自动控温系统的设计与实现 下位机 主要内容模块总述下位机模块示意图元件介绍和参数的设置各部分电路设计程序参考文献模块总述数据采集是此系统中较为重要得一个部分。它是单片机应用系统中最为普遍的应用需求。本实训采集的对象为温度,因为温度作为一个非电量的模拟量,我们需要经一个温度传感器将其转化为一个电量值。一般情况下,采集到的数据会含有一定的噪声且电压值较小,不适合A/D转换器的工作,为此在此之前需要经过滤波处理和运算放大器的放大。因为单片机的处理对象为数字量,需通过A/D转换器将模拟量转换为数字量。A/D转换器得的主要指标是分辨率和转换时间。它的转换位数与其分辨率有直接的关系。8位转换器可以

2、对满量程电压的1/256进行分辨。显示电路一般为液晶显示或数码管显示。本实训中,它既可以显示外界采集到的温度,也可以显示用户按键设置的温度档位,还可以显示由通信模块传过来的档位值。按键控制主要是为满足用户由按键来设定档位的需求。作为补充,本实训中还增加了用语音信号来控制档位。按键有一个RESET键、启/停键等(按需设置)、档位选择键(1 - 4)等。按键的响应可以采用中断方式,单片机的中断有两种方式一种是电平触发方式,一种是跳沿触发方式。如果采用的跳沿触发方式这样标志位的清零就不用外加电路。为消除键盘抖动,采用软件消抖,即通过一定的延时来实现消抖。 与通信模块之间的数据传递主要涉及到单片机的串

3、行通信接口编程问题。 综上所述,下位机包含数据采集,按键电路,晶振电路,显示电路。返回下位机模块示意图温度采集基本电路显示按键 单 片 机图1 下位机模块示意图基本电路:(1)复位:要求具有软硬件两种复位功能。清楚电路中每个电子器件的作用及取值范围。实训中采用上电外部复位。 RSTRSTVCCVCCGNDGND图1 上电复位电路图 2 上电和外部复位组合电路(2)晶振电路:清楚电路中每个电子器件的作用及取值范围。18051至内部时钟电路晶振XTAL1XTAL2图 3 内部时钟电路(3)电源电路:清楚电路中每个电子器件的作用。返回元件选择、介绍和参数设置温度传感器 选用lm35:lm35是由Na

4、tional Semiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关係,转换公式如式(1),0C时输出0V,每升高 1C,输出电压增加10mV。实际应用中,滤波是很重要的一步。滤波有软件滤波和硬件滤波之分。在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。硬件滤波即通过运放、电阻、电容组成电路图来实现的。运算放大放选择lm358:LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器。A/D转化选用0808时钟频率600khz。将引脚A、B、C均接地,选择IN0作为模拟信号电压的输入端。当向A/D转换器发出启动

5、命令后,即进行软件延时,延时时间稍大于进行一次A/D转换所需要的时间,之后打开A/D转换器的输出缓冲器读数即为转换好的数字量。下图为adc0808的内部逻辑电路图:由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。下图所示为引脚图,并对各个引脚进行介绍:IN0IN7:8条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,

6、必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。数字量输出及控制线:11条START(ST)为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE

7、为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。CLK为时钟输入信号线。因ADC0808的内部没有时钟电路,所需时钟信号必须由外界提供,使用频率的上限为640KHZ.在本系统中由于89c51的ALE无效,不能通过四分频电路获得相应的时钟,只能单独为其设置一个时钟发生器 单片机选择AT89C51:时钟频率1.0592MHZ。提供16为地址。P0口分时提供地址的低八位和数据,P2口提供高八位。P1口外接按键。P3口用于中断和发出各种控制信号。P0口发送段码,P2口发送位码。51系列硬件组成和部分资源

8、 振荡器CPU总线控制器并行接口口串行接口内ROM内RAM定时计数器中断控制器MCS51单片机的硬件组成运放电路+15V+13C-15V10k85k2Out48LM35ADC0808电压范围选择-15+15可使晕方的工作状态更加稳定滤波介绍在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。下面介绍几种常见的滤波算法:限幅滤波算法该

9、运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。#define A /允许的最大差值char data; /上一次的数据char filter()char datanew; /新数据变量datanew=get_data(); /获得新数据变量if( (datanew-data)A|(data-datanewA) ) return data;else return datanew;/A如何确定呢?中值滤波算法该运算的过程是对某一

10、参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。#define N 11 /定义获得的数据个数char filter() char value_buffN; /定义存储数据的数组char count,i,j,temp;for(count=0;countN;count+) /获取数据 value_bufcount=get_data(); delay(); /如果采集数据比较慢,那么就需要延时或中断for(j=0;jvalue_buffi+1 temp=value_buffi; value_buffi=value_b

11、uffi+1; value_buffi+1=temp; return value_buff(N-1)/2;算术平均滤波算法该算法的基本原理很简单,就是连续取N次采样值后进行算术平均。N取值一般为2的整数幂,即2,4,8,16.char filter()int sum=0;for (count=0;countN;count+) sum+=get_data(); delay():return (char)(sum/N);加权平均滤波算法由于前面所说的“算术平均滤波算法”存在平滑度和灵敏度之间的矛盾。为了协调平滑度和灵敏度之间的关系,可采用加权平均滤波。它的原理是对连续N次采样值分别乘上不同的加权系

12、数之后再求累加,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数变化趋势的认识。char code jqN=1,2,3,4,5,6,7,8,9,10,11,12; /code数组为加权系数表,存在程序存储区char code sum_jq=1+2+3+4+5+6+7+8+9+10+11+12;char filter()char count;char value_buffN;int sum=0;for(count=0;countN;count+) value_buffcount=get_data();delay();for(count=0;countN;count+)sum+=va

13、lue_buffcount*jqcount;return (char)(sum/sum_jq);以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样值必须连续进行若干次采样,当采速度慢时,系统的实时得不到保证。这里介绍的滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用。如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区。每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。采用环型队列结构可以方便地实现这种数据存放方式。char value_buffN;char i=0;char filter

14、() char count; int sum=0; value_buffi+=get_data(); if(i=N) i=0;for(count=0;countN;count+)sum=value_buffcount;return (char)(sum/N);显示器选择六位8段阳极数码管,此外还用一些晶振、电阻,独立按键等。显示格式如下所示:如果当前温度为30.5度,档位为4,则显示为: 4-30.5单片机串行通信 AT89C51的串行接口是一个可编程的全双工接口。考虑到下位机与上位机之间进行温度和档位的传递,采用全双工通信。可以通过设置串行接口的控制寄存器的值来获得相应的工作方式。下面简要介

15、绍它的发送数据和接受数据的过程。 接收数据时,SCON的REN置1即可,外界数据通过引脚RXD串行输入,书局的低位首先进入移位寄存器,一帧数据接受完毕之后在并行存入数据缓冲寄存器SBUF中,同时中断标志位置1,向CPU发出请求。CPU相应中断后读SBUF取数据,且软件请0,这样一次串行通信完成。发送数据时,先将数据并行写入发送数据缓冲寄存器SBUF中,之后数据有引脚TXD串行发送出去。当发送结束之后,缓冲器空,由硬件发送中断标志,向CPU发出请求。CPU相应中断后,应由软件清0。返回各部分电路设计温度采集电路运放电路模数转换电路单片机电路显示电路按键电路复位电路晶振电路做电路图的一些经验方法总

16、结利用总线;利用结点命名法;并列的多个电阻可使用电阻包;高版本的protues比低版本的可支持更多的仿真模型;可以使用电压探测笔对lm35和放大器的输出电压值进行测量,以修正放大倍数。实现连调的方法把keil安装目录c51bin的vdm51.dll文件复制到proteusmodels目录下;修改keil安装目录下tools.ini文件,在c51字段加入“TDRV9=BINVDM51.DLL(PROTUES)”并保存。打开protues,在protues的debug菜单中选中“use remote debug moitor”;在keil的project菜单中进入“options for targ

17、et工程名”,在debug选项中选择“protues driver”,单击确定即可。返回程序程序流程图主程序流程图主程序流程图开始初始化数据指针初始化A/D转化器和8255初始化INT0和T0允许INT0和T0中断启动A/D转换,调用A/D子程序等待INT0和T0中断转化结束否是调用中断子程序开始送字形代码到段码口输出位控制信息到位码口显示缓冲单元加1,显示位右移4位显示完否返回显示位数初始化4为5指针指向显示缓冲单元取显示缓冲单元的字形代码显示程序流程图存放转化后的数据转化数字量为温度值存放温度值到显示缓冲区开始A/D转化的结果调用显示程序显示温度返回采集温度流程图按键流程图开始调用显示子程

18、序显示当前档位返回等待档位按键中断是否程序按键中断程序:void key()interrupt 2 unsigned char i; for(i=0;i30;i+);/*消抖*/ if(int_1)return; if(!key1)level=1; if(!key2)level=2; if(!key3)level=3; if(!key4)level=4; levelflag=1; EX1=1;/*允许INT1中断*/注:在书写中断子程序时,要注意在主程序的任何位置不能调用它。显示程序 void show()unsigned int i; for(i=0;i6;i+) P2=locationi;

19、/*取位码*/ P0=ledtablevideo_buffi;/*送段吗*/ delay(); 采集数据程序unsigned char gettemper()/*adc转换一次 */ unsigned char dat;EA=0; ALE=1; _nop_();_nop_();ALE=0;adcstart=1;_nop_();_nop_();adcstart=0;P0=0XFF;while(!EOC);OE=1;dat=P0;OE=0;if(temper!=dat)temperflag=1; EA=1; return dat;void fiter() /均值滤波/对四次采样进行求平均,考虑到实

20、际中温度的变化是一个比较缓慢的过程,/相邻的几次采样变化幅度不大,且为计算简便,N取值为4 int sum=0,count; for (count=0;countN;count+) temper=gettemper();if(temperflag) processdata(); sum+=video_buff2*100+video_buff3*10+video_buff5; delay(); sum=sum/N; video_buff2=sum/100; video_buff3=sum%100/10; video_buff5=sum%10;与串口的通信程序void senddata() if(

21、!TI) if(temperflag)SBUF=t;while(!TI);SBUF=video_buff2+0 x30; /发送temperaturewhile(!TI);SBUF=video_buff3+0 x30;while(!TI);SBUF=.;while(!TI); SBUF=video_buff5+0 x30;while(!TI);temperflag=0;if(levelflag)SBUF=c; /发送command标识while(!TI);SBUF=video_buff0+0 x30;while(!TI); levelflag=0;/按键状态清除 /一定是软件清0 串口初始化程

22、序 void inituart() SCON=0X50; TMOD=0X20; TH1=0XFD; TL1=0XFD; TR1=1; ES=1; 延时子程序void delay()unsigned char i,j;for(i=0;i10;i+)for(j=0;j90;j+);对采集到的数据处理程序void processdata() unsigned int tmp;tmp=temper*1.9646;video_buff0=level;video_buff1=10;video_buff4=11;video_buff2=tmp/100;tmp=tmp%100;video_buff3=tmp/

23、10;tmp=tmp%10;video_buff5=tmp;返回参考文献模拟电子技术基础 高等教育出版社 华成英 童诗白单片机原理与应用及C51程序设计 清华大学出版社 谢维成 杨加国单片机原理及应用-C51编程技术 西南交通大学出版社 靳桅例说51单片机(C语言版) 人民邮电出版社 张义和单片机原理与应用实例仿真 北京航空航天大学出版社 李泉溪返回谢谢!(第14讲)考场作文开拓文路能力分解层次(网友来稿)江苏省镇江中学 陈乃香说明:本系列稿共24讲,20XX年1月6日开始在资源上连载【要义解说】文章主旨确立以后,就应该恰当地分解层次,使几个层次构成一个有机的整体,形成一篇完整的文章。如何分解

24、层次主要取决于表现主旨的需要。【策略解读】一般说来,记人叙事的文章常按时间顺序分解层次,写景状物的文章常按时间顺序、空间顺序分解层次;说明文根据说明对象的特点,可按时间顺序、空间顺序或逻辑顺序分解层次;议论文主要根据“提出问题分析问题解决问题”顺序来分解层次。当然,分解层次不是一层不变的固定模式,而应该富于变化。文章的层次,也常常有些外在的形式:1小标题式。即围绕话题把一篇文章划分为几个相对独立的部分,再给它们加上一个简洁、恰当的小标题。如世界改变了模样四个小标题:寿命变“长”了、世界变“小”了、劳动变“轻”了、文明变“绿”了。 2序号式。序号式作文与小标题作文有相同的特点。序号可以是“一、二

25、、三”,可以是“A、B、C”,也可以是“甲、乙、丙”从全文看,序号式干净、明快;但从题目上看,却看不出文章内容,只是标明了层次与部分。有时序号式作文,也适用于叙述性文章,为故事情节的展开,提供了明晰的层次。 3总分式。如高考佳作人生也是一张答卷。开头:“人生就是一张答卷。它上面有选择题、填空题、判断题和问答题,但它又不同于一般的答卷。一般的答卷用手来书写,人生的答卷却要用行动来书写。”主体部分每段首句分别为:选择题是对人生进行正确的取舍,填空题是充实自己的人生,判断题是表明自己的人生态度,问答题是考验自己解决问题的能力。这份“试卷”设计得合理而且实在,每个人的人生都是不同的,这就意味着这份人生

26、试卷的“答案是丰富多彩的”。分解层次,应追求作文美学的三个价值取向:一要匀称美。什么材料在前,什么材料在后,要合理安排;什么材料详写,什么材料略写,要通盘考虑。自然段是构成文章的基本单位,恰当划分自然段,自然就成为分解层次的基本要求。该分段处就分段,不要老是开头、正文、结尾“三段式”,这种老套的层次显得呆板。二要波澜美。文章内容应该有张有弛,有起有伏,如波如澜。只有这样才能使文章起伏错落,一波三折,吸引读者。三要圆合美。文章的开头与结尾要遥相照应,把开头描写的事物或提出的问题,在结尾处用各种方式加以深化或回答,给人首尾圆合的感觉。【例文解剖】 话题:忙忙,不亦乐乎 忙,是人生中一个个步骤,每个

27、人所忙的事务不同,但是不能是碌碌无为地白忙,要忙就忙得精彩,忙得不亦乐乎。 忙是问号。忙看似简单,但其中却大有学问。忙是人生中不可缺少的一部分,但是怎么才能忙出精彩,忙得不亦乐乎,却并不简单。人生如同一张地图,我们一直在自己的地图上行走,时不时我们眼前就出现一个十字路口,我们该向哪儿,面对那纵轴横轴相交的十字路口,我们该怎样选择?不急,静下心来分析一下,选择适合自己的坐标轴才是最重要的。忙就是如此,选择自己该忙的才能忙得有意义。忙是问号,这个问号一直提醒我们要忙得有意义,忙得不亦乐乎。 忙是省略号。四季在有规律地进行着冷暖交替,大自然就一直按照这样的规律不停地忙,人们亦如此。为自己找一个目标,

28、为目标而不停地忙,让这种忙一直忙下去。当目标已达成,那么再找一个目标,继续这样忙,就像省略号一样,毫无休止地忙下去,翻开历史的长卷,我们看到牛顿在忙着他的实验;爱迪生在忙着思考;徐霞客在忙着记载游玩;李时珍在忙着编写本草纲目。再看那位以笔为刀枪的充满着朝气与力量的文学泰斗鲁迅,他正忙着用他独有的刀和枪在不停地奋斗。忙是省略号,确定了一个目标那么就一直忙下去吧!这样的忙一定会忙出生命灵动的色彩。 忙是惊叹号。世界上的人都在忙着自己的事,大自然亦如此,小蜜蜂在忙,以蜂蜜为回报。那么人呢?居里夫人的忙,以放射性元素的发现而得到了圆满的休止符;爱因斯坦在忙,以相对论的问世而画上了惊叹号;李白的忙,以那豪放的诗歌而有了很大的成功;张衡的忙,因为那地动仪的问世而让世人仰慕。每个人都应该有效率的忙,而不是整天碌碌无为地白忙。人生是有限的、短暂的,因此,每个人都应该在有限的

温馨提示

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

最新文档

评论

0/150

提交评论