采用单片机的温度控制器电路设计.docx
《采用单片机的温度控制器电路设计.docx》由会员分享,可在线阅读,更多相关《采用单片机的温度控制器电路设计.docx(30页珍藏版)》请在冰豆网上搜索。
采用单片机的温度控制器电路设计
采用单片机的温度控制器电路设计
摘 要
温度是工业生产和社会生活中常见的被控参数,温度的测量与控制在自动化生产过程中占有很大比重。
本文介绍的是一种基于单片机AT89C51和温度传感器AD590的温度控制器。
为了实现对温度的检测及控制的功能,本系统电路由以下几个部分构成:
温度检测、信号处理、模数转换、数据显示、设定值输入和温度控制。
本文具体研究内容包括:
通过4*3键盘设定控制温度并由数码管显示;利用温度传感器AD590对温度进行检测;采集的信号经过调零、放大处理后送给A/D转换器ADC0809;将转换后得到的数字信号送给单片机并由数码管显示,单片机AT89C51将检测值与设定值进行比较,根据比较结果发出不同的控制信号。
本温度控制器的设计达到了设计要求,能够实现对00C~1000C范围内温度的检测和控制功能。
关键词:
温度测量;传感器;模数转换器;键盘输入
TemperatureControllerUsingMicrocontroller
ABSTRACT
Inindustrialproductionandsociallife,thetemperatureparameterisacommoncontrolparameter,themeasurementandcontrolofthetemperatureisoneofthemostimportantmissionsoftheautomatedproduction.Thispaperintroducesatemperature-controllerbasedonAT89C51singlechipmicrocomputerandAD590temperaturesensor.Inordertoachievethefunctionoftemperaturemeasurementandcontrol,thesystemisconsistoftheseparts:
temperaturemeasurement,signalprocess,A/Dconversion,datadisplay,theinputofthegivenvalueandtemperaturecontrol.Thespecificcontentsofthepaperinclude:
Thegivenvalueisinputby4*3keyboardsanddisplayedbydigitallights;ByusingAD590temperaturesensor,wecanmeasurethetemperature;GatheredsignalisdelayedtoA/Dconverterafterrectifiedandamplified,thenthesignalisdelayedtoAT89C51singlechipmicrocomputeranddisplayedbydigitallights.AT89C51singlechipmicrocomputercancomparethemeasurementvaluewiththegivenvalueandthencreatethedifferentcontrolsignalsaccordingtothecomparisonresult.
Intheendthisintelligenttemperature-controllercanmeetthedesignrequirementsandrealizethefunctionoftemperaturemeasurementandcontrolfrom00Cto1000C.
Keywords:
Temperaturemeasurement;Sensors;Adc;Keyboardinput
目 录
1 前言1
1.1 课题设计背景和意义1
1.2 国内外研究状况和发展趋势1
1.3 课题设计的主要内容1
2 系统硬件设计2
2.1 总体设计思路2
2.2 温度检测及调零放大电路2
2.2.1 AD590简介2
2.2.2 温度检测电路3
2.2.3 调零放大电路4
2.3 A/D转换电路4
2.3.1 ADC0809简介4
2.3.2 ADC0809与单片机的接口电路6
2.4 LED显示电路7
2.5 键盘接口和控制电路8
2.6 单片机外围电路及控制9
3 系统软件设计12
3.1 程序设计总体思路12
3.2 模数转换模块12
3.3 温度显示模块14
3.4 温度设定模块16
3.5 控制模块17
4 结论21
参考文献23
致谢22
附录24
1 前言
1.1 课题设计背景和意义
随着科学技术的发展、社会的进步,在控制系统以及仪器、仪表的发展中,以单片机取代传统的模拟电路已经成为仪器、仪表智能化、先进化的标志。
基于单片机的智能温度控制系统以其体积小、自动化程度高,使用方便等特点在工业领域得到广泛的应用。
单片机具有体积小,重量轻,价格便宜,可靠性高等特点,所以深受广大设计人员的喜爱。
这使得单片机控制技术取代传统的模拟控制技术,从而提高产品的控制精度,使高产低耗变成为现实。
因此,温度检测与控制成为一个重要的课题,设计采用单片机的温度控制器具有较强的现实意义。
1.2 国内外研究状况和发展趋势
采用单片机的温度控制器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。
它的出现,极大的扩充了传统仪器的应用范围。
智能温度控制器凭借其体积小、功能强、功耗低等优势,迅速在家用电器、科研单位和工业中得到了广泛的应用。
伴随着网络技术的飞速的发展,Internet技术正在逐渐向工业控制和智能仪器仪表设计领域渗透,实现智能仪器仪表系统基于Internet的通讯能力以及对设计好的仪表进行远程升级、功能重置和系统维护,因此温度控制器有着无限的发展前景。
1.3 课题设计的主要内容
本课题研究的目标是完成基于单片机的智能温度控制器的设计。
根据设计要求本温度控制器可以实现对温度信号的检测处理、数据显示、设定温度输入以及对温度的控制。
本温度控制器的具体功能主要由下面几个部分实现:
温度检测以及调零放大部分、模数转换部分、数据显示部分、设定值输入部分和温度控制部分。
本文将重点解决以下问题:
利用集成温度传感器AD590对被控温度进行检测,将采集到与热力学温度成线性关系的电流信号经过调零、放大处理电路转换成与摄氏温度成线性关系的电压信号;将该电压信号后送给模数转换器ADC0809,再将模数转换后得到的数字信号送给单片机;单片机AT89C51将检测值与设定值进行比较,根据控制要求发出不同的控制信号;温度显示部分采用数码管动态显示方式显示温度值;设定温度输入部分是通过4*3键盘与74C922配合实现。
本文将具体阐述上述问题的解决方案和实现过程,最终完成满足设计要求的温度控制器。
2 系统硬件设计
2.1 总体设计思路
根据设计目标和要求,本系统硬件电路总体设计思路如下:
首先用AD590作为温度传感器,将其采集到的温度量转换为模拟电流量,然后经过模拟放大电路,使其变为ADC0809可以接受的电压量,然后再输入到模数转换器ADC0809中,经过模数转换后的数字量再输入到AT89C51单片机进行处理并显示温度值,单片机根据检测值与设定值的比较结果发出控制信号驱动外部设备(控制装置)工作,进而进一步调节控制温度,最后本系统可通过键盘输入温度上限和下限两个设定值,将控制温度控制在一个范围内。
当检测温度高于设定的上限温度值时,单片机发出驱动信号使红色二极管点亮;当检测温度低于设定的下限温度值时,单片机发出驱动信号使绿色二极管点亮。
系统硬件组成框图如图2-1所示。
图2-1 系统硬件组成框图
2.2 温度检测及调零放大电路
本系统温度采集选用电流输出型集成温度传感器AD590。
本单元电路所解决的问题是将温度传感器AD590输出的电流信号转换成与温度呈线性关系的电压信号。
2.2.1 AD590简介
集成温度传感器AD590是一种电流型温度传感器,它是由美国模拟器件公司生产的,所需的温度值通过测量电流值即可得到,然后在输出端串联一个电阻便可转换为电压信号。
它只需直流电源就能工作,而且无需进行线性校正[1]。
作为直流输出型传感器的一个特点是,和电压输出型相比,它具有很强的抗外界干扰能力。
它的主要特性有:
·测量温度范围:
-550C~+1500C。
·工作电压范围:
+4V~+30V。
·线性电流输出:
流过器件的电流等于器件所处环境的热力学温度度数,即电流变化1μA,相当于温度变化1K。
·稳定性好:
在5V~15V之间变化,其电流波动在1μA以下。
·输出阻抗高:
710MΩ。
·精度高:
AD590分为五个等级,以后缀I、J、K、L、M(由精度低到精度高)加以区分。
低档的AD590误差较大,对精密要求较高的测温电路中一般选用灵敏度高的L或M型。
其中M档精度最高,在-550C~+1500C范围内,非线性误差为±0.30C[2]。
AD590的外形如图2-2(a)所示,它采用金属壳3脚封装,其中1脚接电源端V+;2脚为电流输出端IO;3脚为管壳,一般将其接地,起到屏蔽作用。
AD590在电路设计时所用的电路符号为图2-2(b)所示。
(a)外形(b)符号
图2-2 AD590电路符号
2.2.2 温度检测电路
以摄氏零度(对应绝对温度273.2K)为基准,温度每升高1K,AD590的输出电流就增加1μA。
因为AD590输出电流比较小,且模数转换器要求输入是电压信号,所以将AD590的输出接一个精密的10kΩ电阻,当AD590输出1μA电流时,电阻上的压降要增加10mV,即温度每变化1K电压就会随着变化10mV。
但是由于电阻本身存在误差,在实际应用电路中用一个阻值可调的5kΩ和一个阻值为6.8kΩ的电阻串联替代10kΩ电阻进行补偿,以消除电阻误差。
电路如图2-3所示。
图2-3 实际应用电路
2.2.3 调零放大电路
由于温度传感器采集到的温度信号转变成的电信号一般非常微弱,不能直接传输给A/D转换器,因此需要进行调零放大处理。
本电路实现的功能即为将输出的电压信号处理成适合于ADC0809的输入信号。
电路如图2-4所示。
图2-4 调零放大电路
AD590输出电流经10KΩ电阻转换成电压,该电压经过电压跟随器得到测量电压U2,
U2=(273.2+T)μA*10kΩ(T为摄氏温度值),此处电压跟随器的作用为利用其高输入阻抗使电流不分流。
本设计想要实现当被测温度为00C时,输出的测量电压为0V即U2=0V,所以电路需要加调零环节。
电路中使用齐纳二极管作为稳压元件,作用是消除电源杂讯。
通过调节可变电阻R1来得到调零电压。
调试时调节的阻值并测量调零电压使U1=2.732V。
U1和U2经差分比例运算电路运算放大后得到输出电压U0=Rf(U2-U1)/R=T/20(V)。
经运算可知,当检测温度T=1000C时,U0=5V;T=00C时,U0=0V。
这样就实现了AD590检测输出的电流信号转换为0~5V电压信号的设计目标。
2.3 A/D转换电路
由于单片机只能处理数字信号,因此要将调零放大后的模拟信号转换为数字信号再送单片机进行处理。
本电路采用ADC0809作为A/D转换器。
2.3.1 ADC0809简介
ADC0809含8位A/D转换器,8路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型。
在A/D转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关数组的256电阻分压器,以及一个逐次逼近型寄存器。
8路的模拟开关的通/断由地址锁存器和译码器控制,可以在8个通道中任意访问一个单边的模拟信号。
本系统只用到一个0通道。
输出具有TTL三态锁存缓冲器,可直接连到单片机数据总线上[3]。
(1)ADC0809芯片技术指标
·单一电源,+5V供电,模拟量输入范围是0~5V。
·可锁存三态输出,输出与TTL兼容。
·分辨率为8位。
·不需经行零位及满量程调整。
·温度范围为:
-400C~+850C。
·功耗为15mW。
(2)ADC0809芯片引脚功能介绍
ADC0809为28引脚双列直插式器件,其引脚图如图2-5所示。
图2-5 ADC0809引脚图
·START:
启动信号输入端。
正脉冲信号有效,脉冲上升沿复位A/D转换器,将所有内部寄存器清零,下降沿启动A/D转换。
START可与ALE共用一个脉冲信号。
·ALE:
地址锁存允许,高电平有效。
当ALE为高电平时,允许C、B、A所示的通道被选中,并把该通道的模拟量接入A/D转换器。
·EOC:
转换结束信号。
高电平有效,转换期间为低电平,转换结束为高电平,可用作查询或中断信号。
·OE:
数据输出允许端。
当此信号有效时,允许从A/D转换器的锁存器中读出数字量。
此信号可作为ADC0809的片选信号,高电平有效。
·IN0-IN7:
8路模拟量输入端。
输入电压0~5V(5V供电)8通道多路开关能直接存取8个单端模拟信号中的一个,是用地址译码器来选择某一个特定的通道。
·CLK:
时钟信号,允许频率范围为10~1280KHz,超出此范围ADC0809将不能正常工作。
·ADDA,ADDB,ADDC:
8路模拟开关的地址选通信号输入端。
·D7-D0:
数字量输出端。
·Vref(+),Vref(-):
参考电压端子。
一般情况下,Vref(+)=+5V,Vref(-)=0V。
·Vcc:
电源端子,接+5V。
·GND:
接地端。
2.3.2 ADC0809与单片机的接口电路
ADC0809与单片机AT89C51的接口电路图如图2-6所示。
图2-6 ADC0809与单片机接口电路
A/D转换电路的功能是将调零放大电路得到的模拟量转换成数字量供单片机处理,需要解决ADC0809与单片机的接口问题。
(1)根据设计要求,本系统只扩展了一块ADC0809,使单片机的经反相器连接到ADC0809的START和ALE端口,经反相器连接到ENABLE端口,不用连接P2的端口[4]。
(2)本系统中只有一路检测信号,所以ADC0809只需一个输入端口,这里采用IN0作为输入端口(IN1-IN7置零),所以通道号选择端子CBA=000(即将C,B,A三个端子置零)。
(3)单片机P0.0-P0.7口接到ADC0809的数字量输出端D0-D7,此处需注意的是:
由于AT89C51的P0口没有上拉电阻,故其在此应加外部上拉电阻。
(4)ADC0809没有内部时钟电路,CLOCK需由AT89C51来提供。
本系统中,单片机AT89C51用12MHz晶振,ALE端为fosc的六分频2MHz,这个频率对于ADC0809来说频率太高,于是ALE信号经过两个D触发器四分频得到500KHz时钟信号,接入ADC0809的CLOCK端。
本电路D触发器采用74LS74。
在74LS74中集成了两个触发器单元,它们都是CP上升沿触发的边沿D触发器。
本电路中异步输入端D,D置为高电平。
74LS74特性表如表2-1所示。
表2-1 74LS74特性表(部分)
输入
输出
备注
CP
D
D
D
Qn+1
上升沿
0
1
1
0
同步置0
上升沿
1
1
1
1
同步置1
下升沿
×
1
1
Qn
保持
工作过程:
本电路单片机检查判断A/D转换结束采用查询方式。
AT89C51向ADC0809发送任意数据,即有效,其经过反向器产生的信号使START和ALE有效,这样就启动了ADC0809进行A/D转换。
然后通过AT89C51单片机的P2.0端口查询转换结束信号EOC(高电平有效)。
转换结束后,向相应的口地址发出读命令,则有效,经过一非门使OE有效,从而打开ADC0809内部的三态门,AT89C51便可以接收到数据。
2.4 LED显示电路
由于发光二极管价廉,配置灵活,与单片机接口方便,所以系统的显示采用发光二极管作为显示器件。
LED显示的方法有两种:
一种为静态显示;一种为动态显示。
其中动态显示,是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的7个显示笔划"a,b,c,d,e,f,g"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮[5]。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示能够节省大量的I/O端口,而且功耗更低[6]。
本系统采用动态显示,使用3个7端共阳极的数码管显示温度的检测值和设定值,精确到10C。
由单片机P1口输出显示码,P3.3、P3.4、P3.5口输出位选码。
数码管正常显示时,为防止管子烧坏,需要接限流电阻。
本设计使用红色显示的数码管,它工作时的压降约为1.9V,电流视所选的扫描方法而定,动态扫描显示时段电流约为4mA,由此可以计算出数码管与单片机P1口串接的电阻值为:
(5-1.9)/4=0.775KΩ,为了保护数码管这里选择阻值为1KΩ的限流电阻。
因为单片机I/O口的驱动能力很低,一般只有10mA,而驱动7端共阳极的数码管需要30mA左右的电流,因此要用驱动电路来驱动数码管的各个段码。
本电路中采用高压输出反相驱动器7406,其输出电路为40mA,故满足上述要求。
7406是集电极开路门,为了使其可靠饱和导通所以需接1K上拉电阻。
7406为反向驱动器,而此处为共阳极的数码管,所以P1口输出共阳极的七段显示码。
AT89C51与LED的接口电路图如图2-7所示,图中三个数码管从左至右分别为温度值百位、温度值的十位和温度值的个位。
图2-7 AT89C51与LED接口电路
2.5 键盘接口和控制电路
在单片机应用系统中,用键盘来实现输入数据、传送命令的功能。
键盘分两大类:
编码键盘和非编码键盘。
编码键盘采用硬件线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能,这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种;非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘数较少,硬件简单,一般在单片机应用系统中广泛用,本设计虽然是单片机系统但设计由SET键、“0~9”数字键、“KP”“KI”“KP”、确定键,按键数目较多,所以仍对键盘进行了编码,属于编码键盘[7]。
按键盘与CPU的连接方式可以分为独立式按键和矩阵式键盘。
本设计中选用的是矩阵式键盘,又称行列式键盘。
它的I/O端线分为行线和列线,按键跨接在行线和列线上。
按键按下时,行线与列线连通[8]。
本部分电路采用键盘专用芯片74C922与4*3键盘实现设定值输入功能。
74C922芯片采用CMOS工艺技术制造。
内部带有键盘编码器,还有去抖动的功能,工作电压+3~+15V,“二键锁定”功能,编码输出为三态输出,可直接与微处理器数据总线相连,内部振荡器能完成4*4矩阵键盘扫描,亦可用外部振荡器使键盘操作与其他处理同步,通过外接电容避免开关发生前、后沿跳变所用的延时。
有按键按下时数据有效线变高,同时封锁其他键,片内锁存器将保持键盘矩阵的4位键盘编码,可由微处理器读出[7]。
74C922引脚如图2-8所示。
图2-8 74C922引脚图
·OSC:
接振荡电容0.01μF,以便扫描矩阵键盘。
·KBM:
用来消除键盘抖动,接一个电容是OSC电容的10倍。
·DA:
数据有效端。
检测到DA脚由0-1(按)到1-0(放)信号变换时,将ABCD值读入单片机。
·OE:
数据输出使能端。
·X1-X4:
列输入端。
本电路中只用到3列输入,故将X4置零。
·Y1-Y4:
行输入端。
·A、B、C、D:
74C922数据输出端。
本电路键盘输入采用中断方式。
利用单片机外部中断0,将74C922的DA端经反向器与单片机P3.2口相连,当DA=1即=0立即向单片机申请中断,转向键盘输入程序,将74C922的D、C、B、A口数据送给单片机AT89C51。
这样节省了CPU的时间,提高了效率。
键盘与单片机接口电路如图2-9所示。
图2-9 键盘与单片机接口电路
2.6 单片机外围电路及控制
本系统采用AT89C51单片机作为控制核心。
它是一种低能耗、低电压、高性能的8位单片机,片内带有一个4k字节的Flash可编程、可擦除只读存储器(EPROM),它采用了CMOS工艺和AIMEL公司的高密度非易失性存储器(NURAM)技术,而且其输出引脚和指令系统都与MCS-51相兼容,片内的Flash存储器允许在系统内编程序或用常规的非易失性存储器编程器来编程。
单片机时钟产生方式有两种:
一是内部时钟方式;二是外部时钟方式。
本系统采用的是内部时钟方式,在51单片机内部有一振荡电路,XTAL1为振荡反相放大器的输入端,XTAL2为振荡反相放大器的输出端,本系统中12MHz的石英谐振器与电容值均为33pF的C1、C2构成了并联谐振电路,这样就能在单片机内部产生时钟脉冲信号,连接如图2-10所示。
单片机复位有两种基本形式:
一是上电复位:
二是按键复位。
这里采用按键复位方式,当振荡器复位单片机时,要保持RST脚两个机器周期的高电平时间,复位按键被按下,电容C1通过电阻R1迅速放电,使RST端迅速变为高电平,复位按键松开后,电容通过R2和内部下拉电阻充电,逐渐使RST端恢复低电平[9]。
在本系统中为了实现对智能温度控制系统的简单模拟,将实际工作中制冷或加热设备换成发光二极管作为控制设备的信号指示,P2.1口和P2.2口分别接红色发光和绿色发光二极管。
当检测温度高于设定的上限温度值时,单片机发出驱动信号使红色二极管点亮;当检测温度低于设定的下限温度值时,单片机发出驱动信号使绿色二极管点亮。
电路如图2-10所示。
图2-10 单片机外围电路
3 系统软件设计
3.1 程序设计总体思路
本次单片机温控系统的功能是由硬件电路配合软件来实现的,软件的设计采用模块化设计,主要包括A/D转换模块、显示模块、控制温度模块和模块等,其程序设计思路如下:
温度传感器AD590采集的数据进行调零、放大处理后送给A/D转换模块进行转换,然后将处理好的数字信号送入单片机并由数码管显示,单片机AT89C51将检测值与设定值进行比较,若检测值高于设定上限值或低于设定下限值10C以上时,单片机发出控制信号。
3.2 模数转换模块
本模块工作主要由ADC0809完成,该芯片的输入量为0-5V的电压量。
具体