基于单片机噪音检测系统的设计说明Word格式.docx
《基于单片机噪音检测系统的设计说明Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机噪音检测系统的设计说明Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
4.3.2设计原理17
4.3.3转换电路17
4.3.4信号处理电路18
4.3.5主电路19
4.4光电隔离电路20
4.5过零检测电路20
4.6PID控制算法21
4.6.1PID控制作用21
4.6.2PID算法的微机实现21
4.6.3PID算法的程序设计22
第五章软件设计23
5.1设计步骤24
5.1.1画出系统的程序框图24
5.1.2存分配25
第六章系统调试27
6.1硬件调试方法27
6.1.1常见的硬件故障27
6.1.2联机调试28
6.1.3脱机调试29
6.2软件调试方法29
6.3误差分析30
第七章结论30
参考文献31
致32
附录33
第一章绪论
单片机具有体积小、功能强、可靠性好以及价格低等优势,在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。
为此在本文中作者设计了基于Atmel公司的AT89C2051单片机的温度控制系统。
利用MCS-51单片机来对温度进行控制,具有控制方便、设计简单、灵活性强等优点,可以大幅度提高产品的质量和数量。
并且设计的系统还可以根据实际的应用加以扩展实现更多的功能。
温度是生产过程中最常见的物理量,许多生产过程是以温度作为其被控参数的。
因此,因此,单片机对温度的控制问题是一个工业生产包括许多电力工程中经常会遇到的问题。
本文介绍一种功能简化后的温度控制系统的设计过程。
假设某一烘干道采用过热蒸汽为热源,蒸汽管道经热交换器加热空气并通过风机向烘箱提供热风以实现对胶布(带)的循环加热,烘箱中的温度变化围为0~120℃。
要现如下功能和指标:
①温度给定值在85℃左右且现场可调;
②温度控制误差≤±
2℃;
③实时显示温度值,保留1位小数;
④温度超过给定值±
10℃时声光报警;
⑤控制参数可在线修改。
第二章设计方案
2.1系统结构
该系统以89C51单片机为核心,由温度测量变换、测量放大、大功率运放、A/D与D/A转换器、输入光电隔离、驱动电路、键盘显示、存储器共同组成。
在系统中,温度和时间的设置、温度值及误差显示、控制参数得设置、运行、暂停及复位等功能由键盘及显示电路完成。
图2-1单片机温度控制系统方案原理示意图
传感器把测量的温度信号转换成弱电压信号,经过信号放大电路,送入低通滤波电路,以消除噪音和干扰,滤波后的信号输入到A/D转换器转换成数字信号输入单片机。
2.2设计思路
1、设计测量的温度围为0~120℃,控制精度也不高,可选用8路8位ADC0809作A/D转换器,分辨率可达0.5℃;
为了方便操作,系统可不扩展专用键盘,温度给定输入可用2位BCD码拨盘开关置数;
温度显示可用4位LED;
为了实现通过调节蒸汽流量控温,可扩展8位DAC0832作D/A转换器。
于是,单片机基本系统应为:
8031+2764+8255+ADC0809+DAC0832+4位LED。
2、温度测量可以选用半导体集成温度传感器AD590,它的响应速度快,与单片机接口简单。
其测温围为-55~+150℃,工作电压4~30V,输出电流与绝对温度成正比,即为1µ
A/K。
执行机构可选用ZKZP-Ⅱ型线性电动单座调节阀,用它来调节通入烘箱的蒸汽流量。
调节阀用D/A转换器输出的可调电流控制,0mA对应阀门完全关闭,10mA对应阀门全打开。
3、可采用带死区的比例积分(PI)控制算法实现对温度的控制。
温度与给定值的偏差小时,调节阀不动作,以减少阀的机械磨损;
偏差较大时,经PI算法运算后,单片机通过D/A输出控制信号控制阀门的开度,为了使控制参数现场可调,可用3个电位器产生3路可调电压经过A/D转换实现对A/D转换,实现对PI算法的3个参数(比例系数Kp、积分系数KI、控制周期Tc)在线整定。
这种方法不仅可使参数调整方便,而且具有掉电保护功能。
4、为了提高系统的抗干扰能力,D/A转换器与单片机之间进行光电隔离。
使电动阀和单片机之间不共地。
第三章主要元器件介绍
3.1AT89C51单片机
3.1.1概述
AT89C51是一个低电压,高性能CMOS8位单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。
片含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),可以按照常规方法进行编程,也可以在线编程。
器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
3.1.2主要特性
AT89C51的主要特性如下:
•三级程序存储器锁定
•寿命达1000写/擦循环
•全静态工作:
0Hz-24MHz
•128×
8位部RAM
•低功耗闲置和掉电模式
•32可编程I/O线
•2个16位定时器/计数器
•6个中断源
•可编程串行通道
•片振荡器和时钟电路
3.1.3引脚功能
AT89C51引脚排列如图3-1所示:
图3-1AT89C51的引脚排列
引脚功能如下:
VCC(40):
+5V
GND(20):
接地
P0口(39-32):
P0口为8位漏极开路双向I/O口,每个引脚可吸收8个TTL门电流。
P1口(1-8):
P1口是从部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流。
P2口(21-28):
P2口为部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流。
P3口(10-17):
P3口是8个带有部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口。
RST(9):
复位输入。
当振荡器复位时,要保持RST引脚2个机器周期的高电平时间。
ALE/PROG(30):
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲。
PSEN(29):
外部程序存储器的选通信号。
在由外部程序存储器取值期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现。
EA/VPP(31):
当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有部程序存储器。
FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1(19):
反向振荡器放大器的输入及部时钟工作电路的输入。
XTAL2(18):
来自反向振荡器的输出。
3.2AD590温度传感器
3.2.1概述
AD590是AD公司利用PN结正向电流与温度的关系制成的电流输出型两端温度传感器。
这种器件在被测温度一定时,相当于一个恒流源。
该器件具有良好的线性和互换性,测量精度高,并具有消除电源波动的特性。
即使电源在5-15V之间变化,其电流只是在1µ
A以下作微小变化。
AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。
根据特性分档,AD590后缀以I、J、K、L、M表示。
AD590L、AD590M一般用于精密温度测量电路。
它采用金属壳3脚封装,其中1脚为电源正端V+,2脚为电流输出端I0,3脚为管壳,一般不用。
图3-2AD590实物图及电路符号
3.2.2主要特性
AD590的主要特性参数如下:
•工作电压:
4~30V
•工作温度:
-55~+150℃
•保存温度:
-65~+175℃
•正向电压:
+44V
•反向电压:
-20V
•焊接温度(10秒):
300℃
•灵敏度:
1µ
A/K
3.2.3工作原理
在被测温度一定时,AD590相当于一个恒流源,把它和5-30V的直流电源相连,并在输出端串接一个1KΩ的恒值电阻,此电阻上流过的电流与被测温度成正比,此时电阻两端将会有1mV/K的电压信号。
其基本电路如图3-3所示。
图3-3感温部分的核心电路
图3是利用ΔURE特性的集成PN结传感器的感温部分核心电路。
其中T1、T2起恒流作用,可用于使左右两支路的集电极电流I1和I2相等;
T3、T4是感温用的晶体管,两个管的材质和工艺完全相同,但T3实质上是由n个晶体管并联而成,因而其结面积是T4的n倍。
T3和T4的发射结电压URE3和URE4经反极性串联后加在电阻R上,所以R上端电压为ΔURE。
因此,电流II为:
II=ΔURE/R=(KT/q)(Inn)/R
对于AD590,n=8,这样,电路的总电流将与热力学温度T成正比,将此电流引至负载电阻RL上便可得到与T成正比的输出电压。
由于利用了恒流特性,所以输出信号不受电源电压和导线电阻的影响。
图3中的电阻R是在硅板上形成的薄膜电阻,该电阻已用激光修正了其电阻值,因而在基准温度下可得到1µ
A/K的I值。
AD590的部结构电路如图3-4所示。
图3-4AD590的部结构
3.3ADC0809模数转换器
3.3.1主要特性
•ADC0809的主要特性指标:
•分辨率:
n=8
•时钟频率:
小于640KHZ
•转换时间:
大于等于100微秒
•不可调误差:
1LSB
•电源:
单电源正5V
•模拟输入量:
8路
•模拟输入围:
0~5V
•参考电压:
Uref(+)—Uref(-)=5V
3.3.2工作原理
ADC0809为逐次逼近式A/D转换器,具有8个模拟量输入通道。
它能与微型计算机的大部分总线兼容,可在程序的控制下选择8个模入通道之一进行A/D转换,然后把得到的8位二进制数据送到微机的数据总线,供CPU处理。
转换器是ADC0809的核心部分,它由D/A转换、逐次逼近寄存器(SAR)、比较器等组成。
其中,D/A转换电路采用了256RT型电阻网络(即2n个电阻分压器,此处n=8),它在启动脉冲的上升沿来到时被复位,在启动脉冲的下降沿A/D开始转换。
如果在转换过程中接收到新的启动转换脉冲,则终止转换。
转换结束信号EOC在A/D转换完成时为“1”。
ADC0809的管脚图如图3-5所示:
图3-5ADC0809的管脚图
ADC0809的部结构如图3-6所示:
图3-6ADC0809的部结构
第四章硬件设计
4.1外围接口选择
根据方案,采用8031外扩2764作程序存储器;
8255外扩4位LED用于显示温度、声光报警和扩展光电隔型DAC产生0~10mA可调电流控制电动阀;
外扩8路8位ADC0809作温度测量和通过3个电位器产生3个可调控制参数;
2位BCD码给定拨盘则和8031的P1口相连。
完整的硬件电路组成如图4-1所示:
图4-1硬件电路原理图
图4-1中,通过8255的PA口和PC0~PC3口扩展4位LED;
通过PB口和PC5扩展光电隔型D/A,DAC0832设置为单缓冲方式,VREF=-5V,于是经运算放大器A1后产生0~5V可调直流电压,再经运算放大器A2在复合三极管T的集电极和+12V电源之间产生0~10mA可调电流,以便控制电动阀的动作(图4-1中,RW1于调整满量程值,D1用于保护三极管T);
通过总线直接扩展ADC0809,由于仅使用4路,故选择通道的C端直接接地,由于温度传感器是输出电流信号且与绝对温度成正比,故采用电平移动电路及放大电路使运算放大器A3输出电压值与摄氏温度成正比(图4-1中RW2,RW3分别用语温度测量电路的零点调节和满量程调节);
声音报警电路中,蜂鸣器采用长鸣形式,由门电路构成1s振荡器产生的响音;
2位BCD码给定拨盘则和8031的P1口直接接口,各位又通过2kΩ电阻接地。
由于各扩展芯片用线选发产生片选信号,故他们的接口地址分别为:
2764:
0000H~1FFFH
8255:
7000H~7003H
ADC0809:
B000H~B003H
4.2温度控制电路
8031对温度的控制是通过双向可控硅实现的。
如单片机温度控制系统电路原理图所示,双向可控硅管和加热丝串接在交流220V、50Hz是电回路。
在给定周期T,8031只要改变可控硅管的接通时间即可改变加热丝的功率,以达到调节温度的目的。
可控硅接通时间可以通过可控硅控制极上触发脉冲控制。
该触发脉冲由8031用软件在P3.1引脚上产生,在过零同步脉冲同步后经光电耦合管和驱动器输出送到可控硅的控制极上。
4.3温度检测电路设计
4.3.1设计目标
用单片机对温度进行实时检测和控制,以解决工业及日常生活中对温度的及时自动控制问题;
用十进制数码显示实际温度值,方便人工监视;
用键盘输入温度控制围值,便于在不同应用场所设置不同温度围值。
当实际温度值不在该围时,系统能自动调节温度,以保持设定的温度基本不变,达到自动控制的目的。
系统的温度最小区分度为1℃。
在环境温度变化时,温度控制的静态误差小于等于0.5℃。
4.3.2设计原理
因为89C51单片机片含4KB的EEPROM,不需外扩展存储器,可使系统整体结构简单。
利用89C51串行口输出工作方式,使外部电路得以简化。
89C51可直接对键盘进行扫描读数,可直接用串/并转换模块驱动LED显示温度值。
因其利用率高,负载重,后相电路需加一块同相驱动器。
在串行传输数据时,频率可达到1MHz,对温度的显示完全达到测控精度要求。
4.3.3转换电路
在设计测温电路时,首先应将电流转换成电压。
由于AD590为电流输出元件,它的温度每升高1K,电流就增加1µ
A。
当AD590的电流通过一个10K的电阻时,这个电阻上的压降为10mV即转换成10mV/K,为了使此电阻精确(0.1%),可用一个9.6K的电阻与一个1K电位器串联,然后通过调节电位器来获得精确的10KΩ。
下图所示是一个电流/电压和绝对/摄氏温标的转换电路,其中运算放大器A1被接成电压跟随器形式,以增加信号的输入阻抗。
而运放A2的作用是把绝对温标转换成摄氏温标,给A2的同相输入端输入一个恒定的电压(如1.235V),然后将此电压放大到2.73V。
这样,A1与A2输出端之间的电压即为转换成的摄氏温标。
将AD590放入0℃的冰水混合溶液中,A1同相输入端的电压应为2.73V,同样使A2的输出电压也为2.73V,因此A1与A2两输出端之间的电压:
2.73-2.73=0℃即对应于0℃
图4-2电流/电压和绝对/摄氏温标的转换电路
4.3.4信号处理电路
温度检测的小信号放大与绝对/摄氏温度转换采用图电路,其中RW用来完成绝对/摄氏温度转换及调零功能,运放要求采用一片集成普通四运放LM324来完成图的信号处理功能,其工作电源取单电源VCC=9V。
设计中电阻元件可参考下列取值:
R1=R2=10K、R3=R4=20K、R5=R6=20K、RG=5K、RW=10K;
高频滤波电容可取C=0.01µ
F。
图4-3信号处理电路
4.3.5主电路
主电路如图4-4所示,温度检测信号输入ADC0809的IN3引脚,经过模数转换结果输入AT89C51,结果从P1口输出驱动2个LED实现数据显示功能。
图4-4温度检测主电路
4.4光电隔离电路
这部分电路是单片机与电阻丝加热器的接口。
由于电阻丝的加热电压大于单片机的工作电压,为了避免烧坏单片机系统,采用光电隔离电路如图4-5所示。
图4-5光电隔离及放大电路
4.5过零检测电路
过零检测电路在每一个电源周期开始时产生一个脉冲,作为触发器的同步信号,计数器T0对其进行计数。
其电路如图4-6所示。
220V交流电压经电阻限流后直接加到2个反相并联的光电偶器的输入端。
在交流电源的正负半周,分别导通,输出低电平,在交流电源正弦波过零的瞬间,两个光电耦合器均不导通,输出高电平。
该脉冲信号经非门整形后作为单片机的中断请求信号和可控硅的过零同步信号。
图4-6过零检测电路
4.6PID控制算法
前面提到,大多数的温度控制系统可以看作一阶纯滞后环节,由于本系统纯滞后时间较小,故可采用PID(比例、积分、微分)控制算法实施控制。
4.6.1PID控制作用
PID是比例(P)、积分(I)和微分(D)3个控制作用的组合。
连续系统PID控制器的微分方程为:
y(t)=KPP[e(t)+
](4-1)
式中y(t)为控制器的输出;
e(t)为控制器的输入;
KP比例放大系数;
TI为控制器的积分时间常数;
TD为控制器的微分时间常数。
显然,KP越大,控制器的控制作用越强;
只要e(t)不为0,积分项会因积分而使控制器的输出变化;
只要e(t)有变化的趋势,控制器就会在微分作用下,在偏差出现且偏差不大时提前给输出一个较强的控制作用。
4.6.2PID算法的微机实现
由于微机控制系统是一种时间离散控制系统,故必须把微分方程离散化为差分方程,最终写出递推公式才能直接应用。
显然:
(4-2)
(4-3)
于是,
KP{e(n)+
+
[e(n)-e(n-1)]}(4-4)
式中Δt=T,为采样周期;
e(t)为第n次采样的偏差值;
e(n-1)为第(n-1)次采样时的偏差值;
n为采样序列,n=0,1,2,…。
由式(4-4)可以看出:
计算一次Y(n),不仅需要的存储器空间大,而且计算量也很大,于是进一步写出递推公式:
由Y(n-1)=KP{e(n-1)+
[e(n-1)-e(n-2)]}(4-5)
由式(4)减去式(5)得:
ΔY(n)=Y(n)-Y(n-1)
=KP{[e(n)-e(n-1)]+
[e(n)-2e(n-1)+e(n-2)]}
=KP[e(n)-e(n-1)]+KIe(n)+KD[e(n)-2e(n-1)+e(n-2)](4-6)
或Y(n)=Y(n-1)+KP[e(n)-e(n-1)]+KIe(n)+KD[e(n)-2e(n-1)+e(n-2)](4-7)
式中KI=KP
,称为积分常数;
KD=KP
,称为微分常数。
4.6.3PID算法的程序设计
在本控制系统中,烘箱温度与给定值的偏差经过单片机PI算法运算后从DAC0832输出0~10mA控制电流去控制电动阀的开度,所以应采用式(7)的位置式算法(且KD=0即为PI),即:
YPI(n)=Y(n-1)+KP[e(n)-e(n-1)]+KIe(n)(4-8)
如果设KP,KI为纯小数,KP,KI,e(n),e(n-1)分别放在8031片RAM的25H,26H,29H,2AH中,PI结果YPI(n)放在R3R4中,则PI控制程序如下:
PI:
MOVA,29H;
e(n)
CLRC
SUBBA,2AH;
e(n)-e(n-1)
MOVB,25H;
KP
LCALLMULTS;
KP[e(n)-e(n-1)]
MOVR4,A
MOVR3,B;
暂存于R3R4
MOVA,29H;
MOVA,26H;
KI
KIe(n)
ADDA,R4
MOVA,B
ADDCA,R3
MOVR3,A;
R3R4=KP[e(n)-e(n-1)]+KIe(n)
RET
MULTS:
CLRF0;
置e(n)符号标志位为正
JNBACC.7,MUL1
SETBF0;
置e(n)符号标志位为负
CPLA
INCA;
取绝对值
MUL1:
MULAB
JNBF0,MUL2
CPLA
ADDA,#1
MOVR2,A
ADDCA,#0
MOVB,A
MOVA,R2;
还原为补码
MUL2:
RET
第五章软件设计
本系统的控制软件可设计为一个主程序和一个T0通道中断服务程序。
主程序的功能是完成系统初始化及温度和设定参数的显示,由于只有4位LED,而温度BCD码设定值正常工作时应在85左右,不可能太小,故可以用它设定为小值时来选择显示参数;
T0通道可定时100ms,其中,定时1s完成数据的采集、报警和显示处理,定时Tc秒完成控制算法的运算和控制输出。
5.1设计步骤
5.1.1画出系统的程序框图
如图5-1所示,为主程序框图,为T0通道中断服务程序框图。
T0中断服务程序是温度控制系统的主体程序,用于启动A/D转换,读入采样数据,数字滤波,越限温度报警和越限处理,PID计算和输出可控硅的同步触发脉冲等。
P1.3引脚上输出的该同步触发脉冲宽度由T1计数器的溢出中断控制,8031利用等待T1溢出中断空隙时间完成把本次采样值转换成显示值而放入显示缓冲区和调用温度显示程序。
8031从T1中断服务程序返回后便可恢复现场和返回主程序,以等待下次T0中断。
图5-1温度控制系统程序框图
5.1.2存分配
为了编程方便,可以把8031的部128BRAM先进行分配;
也可在程序中用标号代替,最后用EQU或DATA定义。
如果先对存进行分配,本系统可分配为:
00H~07H,R0~R7 供主程序使用
08H~0FH,R′0~R′7 供T0中断服务程序使用
20H定时1s时间常数(初值为10)
21H8255A口数据暂存(显示器段码)
22H8255B口数据暂存(D/A数据)
23H8255C口数据暂存
24H8031P1口的T给定BCD值暂存。
当T给定=01H时,显示的数据为KP参数,格式为P-×
×
;
当T给定=