电热水器实训
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 因为单片机的处理对象为数字量,需通 过A/D转换器将模拟量转换为数字量。 A/D转换器得的主要指标是分辨率和转换 时间。它的转换位数与其分辨率有直接 的关系。8位转换器可以对满量程电压的 1/256进行分辨。
• 显示电路一般为液晶显示或数码管 显示。本实训中,它既可以显示外 界采集到的温度,也可以显示用户 按键设置的温度档位,还可以显示 由通信模块传过来的档位值。
• 实际应用中,滤波是很重要的一步。滤 波有软件滤波和硬件滤波之分。在单片 机系统中常用的滤波算法有限幅滤波法 、中值滤波法、算术平均滤波法、加权 平均滤波法、滑动平均滤波等。硬件滤 波即通过运放、电阻、电容组成电路图 来实现的。
运算放大放
选择lm358: LM358内部 包括有两个 独立的、高 增益、内部 频率补偿的 双运算放大 器。
}
• 以上介绍和各种平均滤波算法有一个共同点,即每获 取一个有效采样值必须连续进行若干次采样,当采速 度慢时,系统的实时得不到保证。这里介绍的滑动平 均滤波算法只采样一次,将一次采样值和过去的若干 次采样值一起求平均,得到的有效采样值即可投入使 用。如果取N个采样值求平均,存储区中必须开辟N个 数据的暂存区。每新采集一个数据便存入暂存区中, 同时去掉一个最老数据,保存这N个数据始终是最新更 新的数据。采用环型队列结构可以方便地实现这种数 据存放方式。
• 与通信模块之间的数据传递主要涉及到 单片机的串行通信接口编程问题。 • 综上所述,下位机包含数据采集 ,按键电路,晶振电路,显示电路。
返回
下位机模块示意图
基本电路 按键
单 片
温度采集
机
显示
图1 下位机模块示意图
基本电路:(1)复位:要求具有软硬件两种复位功能。清楚电 路中每个电子器件的作用及取值范围。实训中采用上电外部复 位。
• IN0-IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压范围 是0-5V,若信号太小,必须进行放大;输入的模拟量在 转换过程中应该保持不变,如若模拟量变化太快,则需在 输入前增加采样保持电路。 地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为 高电平时,地址锁存与译码器将A,B,C三条地址线的地 址信号进行锁存,经译码后被选中的通道的模拟量进转换 器进行转换。A,B和C为地址输入线,用于选通IN0-IN7 上的一路模拟量输入。 • 数字量输出及控制线:11条
for(j=0;j<N-1;j++) //用冒泡法对数据进行排 序,当然最好用其他排序方法 { for(value_buff[i]>value_buff[i+1] { temp=value_buff[i]; value_buff[i]=value_buff[i+1]; value_buff[i+1]=temp; } } return value_buff[(N-1)/2]; }
• 由上图可知,ADC0809由一个8路模拟开关、一 个地址锁存与译码器、一个A/D转换器和一个 三态输出锁存器组成。多路开关可选通8个模 拟通道,允许8路模拟量分时输入,共用A/D转 换器进行转换。三态输出锁器用于锁存A/D转 换完的数字量,当OE端为高电平时,才可以从 三态输出锁存器取走转换完的数据。下图所示 为引脚图,并对各个引脚进行介绍:
char value_buff[N]; char i=0; char filter() { char count; int sum=0; value_buff[i++]=get_data(); if(i==N) i=0; for(count=0;count<N;count++) sum=value_buff[count]; return (char)(sum/N); }
• START(ST)为转换启动信号。当ST上跳沿时,所有内部寄存器清零 ;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。 EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则, 表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁 存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据 ;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。 • CLK为时钟输入信号线。因ADC0808的内部没有时钟电路,所需时 钟信号必须由外界提供,使用频率的上限为640KHZ.在本系统中由 于89c51的ALE无效,不能通过四分频电路获得相应的时钟,只能 单独为其设置一个时钟发生器
加权平均滤波算法
• 由于前面所说的“算术平均滤波算法” 存在平滑度和灵敏度之间的矛盾。为了 协调平滑度和灵敏度之间的关系,可采 用加权平均滤波。它的原理是对连续N次 采样值分别乘上不同的加权系数之后再 求累加,加权系数一般先小后大,以突 出后面若干采样的效果,加强系统对参 数变化趋势的认识。
char code jq[N]={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_buff[N]; int sum=0; for(count=0;count<N;count++) { value_buff[count]=get_data(); delay(); } for(count=0;count<N;count++) sum+=value_buff[count]*jq[count]; return (char)(sum/sum_jq);
电热水器自动控温系统的设计 与实现
———下位机
主要内容
• • • • • • 模块总述 下位机模块示意图 元件介绍和参数的设置 各部分电路设计 程序 参考文献
模块总述
• 数据采集是此系统中较为重要得一个部分。它 是单片机应用系统中最为普遍的应用需求。本 实训采集的对象为温度,因为温度作为一个非 电量的模拟量,我们需要经一个温度传感器将 其转化为一个电量值。一般情况下,采集到的 数据会含有一定的噪声且电压值较小,不适合 A/D转换器的工作,为此在此之前需要经过滤 波处理和运算放大器的放大。
返回
温度采集电路
运放电路
模数转换电路
单片机电路
显示电路
按键电路
复位电路
晶振电路
做电路图的一些经验方法总结
• • • • 利用总线; 利用结点命名法; 并列的多个电阻可使用电阻包; 高版本的protues比低版本的可支持更多的仿 真模型; 可以使用电压探测笔对lm35和放大器的输出 电压值进行测量,以修正放大倍数。
算术平均滤波算法
• 该算法的基本原理很简单,就是连续取N 次采样值后进行算术平均。N取值一般为 2的整数幂,即2,4,8,16.
char filter() { int sum=0; for (count=0;count<N;count++) { sum+=get_data(); delay(): } return (char)(sum/N); }
并成
运放电路
8
LM35
+15V
3
+
1 Out ADC0808
2
— —
4 -15V
C
85k 10k
电压范围选择-15~+15可使晕方的工作状态更加稳定
滤波介绍
• 在单片机进行数据采集时,会遇到数据的随机 误差,随机误差是由随机干扰引起的,其特点 是在相同条件下测量同一量时,其大小和符号 会现无规则的变化而无法预测,但多次测量的 结果符合统计规律。为克服随机干扰引起的误 差,硬件上可采用滤波技术,软件上可采用软 件算法实现数字滤波。滤波算法往往是系统测 控算法的一个重要组成部分,实时性很强。下 面介绍几种常见的滤波算法:
显示器
• 选择六位8段阳极数码管,此外还用一些 晶振、电阻,独立按键等。 • 显示格式如下所示:
如果当前温度为30.5度,档位为4,则显示为:
4-30.5
单片机串行通信
• AT89C51的串行接口是一个可编程的全 双工接口。考虑到下位机与上位机之间 进行温度和档位的传递,采用全双工通 信。可以通过设置串行接口的控制寄存 器的值来获得相应的工作方式。下面简 要介绍它的发送数据和接受数据的过程 。
中值滤波算法
• 该运算的过程是对某一参数连续采样N次 (N一般为奇数),然后把N次采样的值 按从小到大排列,再取中间值作为本次 采样值,整个过程实际上是一个序列排 序的过程。
#define N 11 //定义获得的数据个数 char filter() { char value_buff[N]; //定义存储 数据的数组 char count,i,j,temp; for(count=0;count<N;count++) //获取数据 { value_buf[count]=get_data(); delay(); //如果采集数据比较 慢,那么就需要延时或中断 }
A/D转化
• 选用0808时钟频率600khz。将引脚A、B 、C均接地,选择IN0作为模拟信号电压 的输入端。当向A/D转换器发出启动命令 后,即进行软件延时,延时时间稍大于进 行一次A/D转换所需要的时间,之后打开 A/D转换器的输出缓冲器读数即为转换好 的数字量。下图为adc0808的内部逻辑电 路图:
限幅滤波算法
• 该运算的过程中将两次相邻的采样相减 ,求出其增量,然后将增量的绝对值, 与两次采样允许的最大差值A进行比较。 A的大小由被测对象的具体情况而定,如 果小于或等于允许的最大差值,则本次 采样有效;否则取上次采样值作为本次 数据的样本。
#define A //允许的最大差值 char data; //上一次的数据 char filter() { char datanew; //新数据变量 datanew=get_data(); //获得新数据变量 if( (datanew-data)>A||(data-datanew>A) ) return data; else return datanew; }//A如何确定呢?
• 按键控制主要是为满足用户由按键来设定档位 的需求。作为补充,本实训中还增加了用语音 信号来控制档位。按键有一个RESET键、启/停 键等(按需设置)、档位选择键(1 - 4)等 。按键的响应可以采用中断方式,单片机的中 断有两种方式一种是电平触发方式,一种是跳 沿触发方式。如果采用的跳沿触发方式这样标 志位的清零就不用外加电路。为消除键盘抖动 ,采用软件消抖,即通过一定的延时来实现消 抖。
• 接收数据时,SCON的REN置1即可,外界 数据通过引脚RXD串行输入,书局的低位 首先进入移位寄存器,一帧数据接受完 毕之后在并行存入数据缓冲寄存器SBUF 中,同时中断标志位置1,向CPU发出请 求。CPU相应中断后读SBUF取数据,且软 件请0,这样一次串行通信完成。
• 发送数据时,先将数据并行写入发送数 据缓冲寄存器SBUF中,之后数据有引脚 TXD串行发送出去。当发送结束之后,缓 冲器空,由硬件发送中断标志,向CPU发 出请求。CPU相应中断后,应由软件清0 。
单片机
• 选择AT89C51:时钟频率1.0592MHZ。提 供16为地址。P0口分时提供地址的低八 位和数据,P2口提供高八位。P1口外接 按键。P3口用于中断和发出各种控制信 号。P0口发送段码,P2口发送位码。
51系列硬件组成和部分资源
振荡器
内ROM
内RAM
定时计数器
CPU
中断控制器
总线控制器
VCC
VCC
RST
RST
GND
GND
图1 上电复位电路
图 2
上电和外部复位组合电路
(2)晶振电路:清楚电路中每个电子器件的作用 及取值范围。
8051 XTAL1
晶振
1
XTAL2 至内部时钟电路
图 3 内部时钟电路
(3)电源电路:清楚电路中每个电子器件的 作用。
返回
温度传感器
• 选用lm35:lm35是由National Semiconductor所生产的温度感测器,其 输出电压与摄氏温标呈线性关係,转换 公式如式(1),0°C时输出0V,每升高 1°C,输出电压增加10mV。