炉温测控李代新.docx
《炉温测控李代新.docx》由会员分享,可在线阅读,更多相关《炉温测控李代新.docx(32页珍藏版)》请在冰豆网上搜索。
炉温测控李代新
.炉温测控的基本原理及其实现过程
实验前由学长们提供了三块板子,包括单片机的主板,连接热电偶的信号采集放大板,以及一块DA板,现在先介绍下实验所需的元件:
电加热炉(1个),热电偶(E型,1只),LM324放大器(1只),AD620仪表放大器(2只),AD0804转换器(1只),DA0832转换器(1只),串口套件1套,周波控制器(1只),固态继电器(1只)
热电偶:
热电偶(thermocouple)是温度测量仪表中常用的测温元件,它直接测量温度,并把温度信号转换成热电动势信号,通过电气仪表(二次仪表)转换成被测介质的温度。
各种热电偶的外形常因需要而极不相同,但是它们的基本结构却大致相同,通常由热电极、绝缘套保护管和接线盒等主要部分组成,通常和显示仪表、记录仪表及电子调节器配套使用。
热
热电偶的工作原理
•运算放大器
•运算放大器(简称“运放”)是具有很高放大倍数的电路单元。
由于早期应用于模拟计算机中,用以实现数学运算,故得名“运算放大器”。
•
•运放如图有两个输入端a(反相输入端),b(同相输入端)和一个输出端o。
也分别被称为倒向输入端非倒向输入端和输出端。
当电压U-加在a端和公共端(公共端是电压为零的点,它相当于电路中的参考结点。
)之间,且其实际方向从a端高于公共端时,输出电压U实际方向则自公共端指向o端,即两者的方向正好相反。
当输入电压U+加在b端和公共端之间,U与U+两者的实际方向相对公共端恰好相同。
•运放的供电方式分双电源供电与单电源供电两种。
对于双电源供电运放,其输出可在零电压两侧变化,在差动输入电压为零时输出也可置零。
采用单电源供电的运放,输出在电源与地之间的某一范围变化。
实验中采用单电源供电。
AD620:
AD620是一个低成本,高精度的仪表放大器,使用方便,仅需使用一个外部电阻即可设置增益。
其放大倍数为1-1000,为精度考虑,在放大500的时候最为准确
LM324:
LM324DR2G是单电源四路运算放大器。
LM324系列是低成本的四路运算放大器,具有真正的差分输入。
在单电源应用中,它们与标准运算放大器类型相比具有几个明显的优势。
该四路放大器可以工作于低至3.0V或高达32V的电源电压,静态电流是MC1741的五分之一左右(每个放大器)。
共模输入范围包括负电源,因此在众多应用中无需外部偏置元器件。
输出电压范围也包括负电源电压
•热电偶在测量范围内的输出电压范围为毫伏级,远远不能满足单片机对数据的采集要求,所以在这里必须在信号处理电路中增加一个放大电路,以达到可检测电压在0~5V区间内变化。
实验中我们使用AD620和LM324组成两级放大电路。
对应热电偶最大输出电压约为8mV,实验中故选择使用AD620放大17倍,即AD620的调节电阻阻值为3.1kΩ,LM324放大35.23倍。
(35.23*17*8mV=4.791V)
•一个运算放大器可以具有极大的放大倍数,理论上可以达到数千到上万倍。
可是人们在真正运用时一般取值在几十倍的样子,需要放大更多时可以选择多级放大,这样的目的是防止其发生自激振荡。
(记住即可)
这一部分的功能,首先由热电偶将温度信号转化为电信号,由于电信号很微弱,所以要经过放大才能被单片机所识别,试验中采用了LM324,AD620的两级放大
对单片机的简介
•I/O口:
四个8位并行I/O口P0-P4,既可用作输入,也可用作输出。
•管脚9(RST/VPD):
复位管脚,2个机器周期高电平有效,即24个振荡时钟周期即可,
•管脚18,和管脚19(XTAL1,XTAL2):
外部晶振的输入端;
•管脚20(VSS):
接地端
•管脚40(电源):
+5V
•管脚31(EA/Vpp):
访问片内允许端(片内ROM),接VCC;
•管脚29(PSEN):
扩展外部ROM
•管脚30(ALE/PROG):
扩展外部RAM
•单片机工作的几个条件:
•1、电源,供给单片机的电源一定要稳定和正常,就是给40引脚接上5V,20引脚接上GND;
•2、振荡信号,在18、19脚上接上晶振和电容,如果起振正常的话,18、19脚电压约为2.5V左右;
•3、复位信号,利用RC形成的上电复位电路,对单片机进行初始化,10uF的电容正极接VCC,负极接9脚,再在9脚对地接一个10K的电阻,就可以每次上电后对单片机进行复位,单片机9脚在复位后为低电平;
•4、EA脚,31脚EA必须接高电平,选择内部的ROM(STC单片机可以不用接)。
ROM:
程序存储器,很明显,该存储器是存储单片机运行的程序的。
你写的程序就是存放在这部分空间里面,但是程序中的数据表等一些不需要改变的数据也可以放在里面。
这里面的数据掉电后部会丢失。
就相当于电脑的硬盘,一般单片机在运行程序的时候,只能读里面的数据,而不能改里面的数据。
要改变里面的数据需要一些特殊的手段,像用下载器向里面下载程序。
•RAM:
数据存储器,存储单片机在执行程序的时候产生的一些临时数据。
像C语言中定义的一些变量就是放在这个空间里面的。
在汇编里面经常把这个寄存器中的数据移到那个寄存器里面,这里所谓的寄存器就是指的RAM。
它掉电后里面的数据就会丢失,所以要用到这部分寄存器的时候要初始化,要不然里面的数据就是个随机数。
相当于电脑的内存。
•单片机执行指令的过程是顺序的从ROM(程序存储器)里面取出指令一条条的顺序执行,再通过一些操作控制,来完成各种制定的动作。
它在执行程序的时候,各种动作必须有一定的顺序,简单来说就是控制信号在时间上有一个严格的先后顺序,这种次序就是单片机的时序。
•振荡周期:
振荡周期=1/晶振频率
•时钟周期:
=2*振荡周期
•机器周期:
=6*时钟周期=12*振荡周期
•指令周期:
=一条指令完成所需要的机器周期
•单片机在每访问一次存储器的时间成为一个机器周期,机器周期是一个时间基准,就像我们生活中的秒一样,单片机一个机器周期包括12个振荡周期,振荡周期就是振荡源一个高低电平的转换时间,如果我们用12MHz的晶振,那么振荡周期为(T=1/F),也就1/12微妙,那我们用的是12MHz的晶振,一个机器周期就等于12*1/12=1微秒。
•单片机执行指令的过程是顺序的从ROM(程序存储器)里面取出指令一条条的顺序执行,再通过一些操作控制,来完成各种制定的动作。
它在执行程序的时候,各种动作必须有一定的顺序,简单来说就是控制信号在时间上有一个严格的先后顺序,这种次序就是单片机的时序。
•振荡周期:
振荡周期=1/晶振频率
•时钟周期:
=2*振荡周期
•机器周期:
=6*时钟周期=12*振荡周期
•指令周期:
=一条指令完成所需要的机器周期
•单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”;
•单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”。
•一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
首先尝试用单片机灌电流驱动共阳数码管
•假使单个发光二极管的驱动电流为5MA,单片机IO口电平为低时,灌电流最大为10MA,符合要求。
•而单片机全部的四个接口所允许的灌电流之和最大为71mA。
如果一个数码管中的八个发光二极管同时亮起来,也不会超过71MA。
用单片机直接驱动一个共阳数码管看来是可行的。
•如果同时驱动四个呢,假使四个数码管同时工作,输入单片机的电流总共是:
5*8*4=160MA,远远超过71MA。
看来想直接驱动四位数码管是不可行的。
•而实验中使用的是四位共阴极数码管,用单片机的拉电流驱动显然是不可行的。
如果加上拉电阻驱动,当数码管电平为低时,又会有相当的电流流入单片机,显然不符合要求。
•三极管,全称应为半导体三极管,也称双极型晶体管,晶体三极管,是一种电流控制电流的半导体器件·其作用是把微弱信号放大成辐值较大的电信号,也用作无触点开关。
晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。
•三极管我们常用的是80,90系列
•90系列是小功率管,应用在小电流低电压场合,放大倍数比较高,80系列的功率大一点,电压也高一点,但相应的放大倍数要小点。
A/D0804转换器简介
ADC0804的管脚图如下所示
图1ADC0804架构图
它的主要电气特性如下:
●工作电压:
+5V,即VCC=+5V。
●模拟输入电压范围:
0~+5V,即0≤Vin≤+5V。
●分辨率:
8位,即分辨率为1/28=1/256,转换值介于0~255之间。
●转换时间:
100us(fCK=640KHz时)。
●转换误差:
±1LSB。
●参考电压:
2.5V,即Vref=2.5V。
1.ADC0804的转换原理
ADC0804是属于连续渐进式(SuccessiveApproximationMethod)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百us)、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。
以输出8位的ADC0804动作来说明“连续渐进式A/D转换器”的转换原理,动作步骤如下表示(原则上先从左侧最高位寻找起)。
第一次寻找结果:
10000000(若假设值≤输入值,则寻找位=假设位=1)
第二次寻找结果:
11000000(若假设值≤输入值,则寻找位=假设位=1)
第三次寻找结果:
11000000(若假设值>输入值,则寻找位=该假设位=0)
第四次寻找结果:
11010000(若假设值≤输入值,则寻找位=假设位=1)
第五次寻找结果:
11010000(若假设值>输入值,则寻找位=该假设位=0)
第六次寻找结果:
11010100(若假设值≤输入值,则寻找位=假设位=1)
第七次寻找结果:
11010110(若假设值≤输入值,则寻找位=假设位=1)
第八次寻找结果:
11010110(若假设值>输入值,则寻找位=该假设位=0)
这样使用二分法的寻找方式,8位的A/D转换器只要8次寻找,12位的A/D转换器只要12次寻找,就能完成转换的动作,其中的输入值代表图1的模拟输入电压Vin。
2.分辨率与内部转换频率的计算
对8位ADC0804而言,它的输出准位共有28=256种,即它的分辨率是1/256,假设输入信号Vin为0~5V电压范围,则它最小输出电压是5V/256=0.01953V,这代表ADC0804所能转换的最小电压值。
表1列出的是8~12位A/D转换器的分辨率和最小电压转换值。
表1A/D转换器的分辨率和最小电压值
位数目
分辨率
最小电压转换值
8
1/256
0.01953V
10
1/1024
0.00488V
12
1/4096
0.00122V
至于内部的转换频率fCK,是由图2的CLKR(19脚)、CLKIN(4脚)所连接的R()、C(150PF)来决定。
图2ADC0804与CPLD&FPGA、8051单片机等典型连接图
频率计算方式是:
fCK=1/(1.1×R×C)
若以图2的R=10KΩ、C=150PF为例,则内部的转换频率是
fCK=1/(1.1×10KΩ×150PF)=606KHz
更换不同的R、C值,会有不同的转换频率,而且频率愈高代表速度愈快。
但是需要注意R、C的组合,务必使频率范围是在100KHz~1460KHz之间。
3.ADC0804的控制方法
要求ADC0804进行模拟/数字的转换,其实可以直接由下面的时序图及图2信号的流向来配合了解。
图3ADC0804控制信号时序图
以图2、图3信号流向而言,控制ADC0804动作的信号应该只有CS、WR、RD。
其中INTR由高电位转为低电位后,代表ADC0804完成这次的模拟/数字转换,而DB0~DB7代表是转换后的数字资料。
图3的动作大概可分成4个步骤区间——S0、S1、S2、S3,每个步骤区间的动作方式如下:
●步骤S0:
CS=0、WR=0、RD=1(由CPLD发出信号要求ADC0804开始进行模拟/数字信号的转换)。
●步骤S1:
CS=1、WR=1、RD=1(ADC0804进行转换动作,转换完毕后INTR将高电位降至低电位,而转换时间>100us)。
●步骤S2:
CS=0、WR=1、RD=0(由CPLD发出信号以读取ADC0804的转换资料)。
●步骤S3:
CS=1、WR=1、RD=1(由CPLD读取DB0~DB7上的数字转换资料)。
由上述步骤说明,可以归纳出所要设计的CPLD动作功能有:
●负责在每个步骤送出所需的CS、WR、RD控制信号。
●在步骤S1时,监控INTR信号是否由低电位变高电位,如此以便了解ADC0804的转换动作结束与否。
●在步骤S3,读取转换的数字资料DB0~DB7。
下面是利用状态机控制ADC0804的程序代码:
--********************************************
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
--*********************************************
ENTITYCh9_2_1is
PORT(
Din:
INSTD_LOGIC_VECTOR(7Downto0);--A/DDataIn
Dout:
OUTSTD_LOGIC_VECTOR(7Downto0);--A/DDataOut
CP:
INSTD_LOGIC;--CLOCK
RST:
INSTD_LOGIC;--SystemReset
nCS,nWR,nRD:
OUTSTD_LOGIC;--O/PSignal
nINTR:
INSTD_LOGIC--I/PSignal
);
ENDCh9_2_1;
--*********************************************
ARCHITECTUREaOFCh9_2_1IS
TYPESTATE_TYPEIS(S0,S1,S2,S3);--StateTypeDeclare
SIGNALState:
STATE_TYPE;--
(1)StateSignalDeclare
SIGNALEC,nIN:
STD_LOGIC;--SynchronousControl&A/DnINTR
SIGNALD:
STD_LOGIC_VECTOR(7Downto0);--ReadA/DData
BEGIN
SystemConnection:
Block
Begin
nIn<=nINTR;
Dout<=D;--A/DDataOut
EndBlockSystemConnection;
StateChange:
Block
Begin
PROCESS(CP,RST)
BEGIN
IFRST='1'Then--ResetState
nCS<='1';
nWR<='1';
nRD<='1';
EC<='0';
State<=S0;
ElsIFCP'EventAndCP='1'Then
CASEStateIS
WHENS0=>--
(2)STATES0&WriteState
nCS<='0';
nWR<='0';
nRD<='1';
EC<='0';
State<=S1;
WHENS1=>--(3)STATES1&A/DConversionState
nCS<='1';
nWR<='1';
nRD<='1';
EC<='0';
IfnIN='0'Then--nINTR='0'?
State<=S2;--(7)
Endif;
WHENS2=>--(4)STATES2&ReadState
nCS<='0';
nWR<='1';
nRD<='0';
EC<='1';--(9)
State<=S3;
WHENS3=>--(5)STATES3
nCS<='1';
nWR<='1';
nRD<='1';
EC<='0';
State<=S0;
WHENOTHERS=>--(6)InitialState
State<=S0;
ENDCASE;
ENdIf;
ENDPROCESS;
EndBlockStateChange;
ReadData:
Block
Begin
PROCESS(CP)
BEGIN
IFCP'EventANDCP='1'THEN
IFEC='1'THEN--(8)ReadState-->EC='1'
D<=Din;--ReadA/DConvertorData
ENDIF;
ENDIF;
ENDPROCESS;
EndBlockReadData;
ENDa;
程序说明:
(1)首先上述程序
(1)处,我们先定义共有S0~S3,4个状态。
(2)程序
(2)~(6)是一个Case-when语句所构成的状态机功能结构。
(3)在状态S1时,它是必须到ADC0804的INTR信号转为低电位时,才会通过程序(7)将状态由S1切换至下个状态S2。
(4)接着在状态S2的程序(9)处,将信号EC设定为高电位,这样下个脉冲信号CP正沿时,即程序(8)处,才开始读取ADC0804的DB0~DB7管脚沙国内的数字转换信号。
AD转化
•在A/D转换中,因为输入的模拟量在时间上是连续的,而输出的数字信号是离散量,所以进行转换时只能在一系列选定的瞬间对模拟信号进行采样然后再把这些采样值转换为输出的数字量。
•A/D转换过程应包括:
采样、量化、编码三个步骤
•数字信号不仅在时间上是离散的,而且数值大小的变化也是不连续的。
这就是说,任何一个数字量的大小只能是某个规定的最小数量单位的整数倍。
在进行A/D转换时也必须把采样电压化为这个最小单位的整数倍。
这个过程就叫量化。
•把量化的结果用代码(二进制或二-十进制)表示出来,称为“编码”。
•分辨率:
以输出二进制代码的位数表示分辨率。
位数越多,量化误差越小,转换精度越高。
•分辨率常用来表示分辨输出最小电压的能力。
定义为最小输出电压(对应的输入数字量只有最低有效位为1)与最大输出电压(对应的输入数字量所有有效位都为1)之比。
•n位ADC分辨率为
•实验中使用的ADC0804,分辨率为8位,即分辨率为1/255,转换值介于0~255之间
Dac832
•引脚和逻辑结构20个引脚、双列直插式
IOUT1模拟电流输出端1
当输入数字为全”1”时,输出电流最大,约为:
全”0”时,输出电流为0
IOUT2模拟电流输出端2
IOUT1+IOUT2=常数
串口通讯
•计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。
可以分为两大类:
并行通信与串行通信。
并行通信通常是将数据字节的各位用多条数据线同时进行传送
•并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。
•串行通信:
字节分成一位一位的形式在一条传输线上
•逐个地传送。
•
•串行通信的特点:
传输线少,长距离传送时成本低,且可以
•利用电话网等现成的设备,但数据的传送控制比并行通信复
•杂。
•异步通信:
通信的发送与接收设备使用各自的时钟控制数据
•的发送和接收过程。
为使双方的收发协调,要求发送和接收
•设备的时钟尽可能一致。
•异步通信的数据格式:
•异步通信的特点:
不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。
同步通信时要建立发送方时钟对接收方时钟的直接控制。
使
双方达到完全同步。
此时,传输数据的位之间的距离均为
“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位
同步关系,也保持字符同步关系。
发送方对接收方的同步可
以通过两种
、单工
单工是指数据传输仅能沿一个方向,不能实现反向传输。
2、半双工
半双工是指数据传输可以沿两个方向,但需要分时进行。
3、全双工
全双工是指数据可以同时进行双向传输。
•单片机为TTL电平:
高+5V,低0V。
•计算机的串口为RS232电平:
高-12V,低+12V。
因此,计算机与单片机之间通讯时需要加电平转换芯片max232,连接图如图4所示,实验中我们使用232电平转TTL电平串口通讯模块来实现。
SCON是一个特殊功能寄存器,用以设定串行口的工作方式、
接收/发送控制以及设置状态标志:
SM0和SM1为工作方式选择位,可选择四种工作方式:
SM2:
多机通信控制位,主要用于方式2和方式3。
当接收机
的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=
0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读
走)。
当SM2=0时,不论收到的RB8为0和1,均可以使收到
的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激
活的功能)。
通过控制SM2,可以实现多机通信。
在方式0
时,SM2必须是0。
在方式1时,若SM2=1,则只有接收到有
效停止位时,RI才置1。
REN:
允许串行接收位。
由软件置REN=1,则启动串行口接
收数据;若软件置REN=0,则禁止接收。
TB8:
在方式2或方式3中,是发送数据的第九位,可以用软
件规定其作用。
可以用作数据的奇偶校验位,或在多机通信
中,作为地址帧/数据帧的标志位。
在方式0和方式1中,该位未用。
RB8:
在方式2或方式3中,是接收到数据的第九位,作为奇
偶校验位或地址帧/数据帧的标志位。
在方式1时,若SM2=0,