本文介绍了一种温度传感器选用lm35、单片机选用at89c52的温度测量系统。该系统的温度测量范围为0~99℃,可以精确到一位小数,可适用于工业场合及日常生活中。
1 系统结构
本测温系统由温度传感器电路、信号放大电路、a/d转换电路、单片机系统、温度显示系统构成。其基本工作原理:温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经放大后输出至a/d转换电路,把电压信号转换成数字量送给单片机系统,单片机系统根据显示需要对数字量进行处理,再送温度显示系统进行显示。
2 硬件电路设计
2.1 温度传感器电路
温度传感器采用的是ns公司生产的lm35,他具有很高的工作精度和较宽的线性工作范围,他的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供±1/4℃的常用的室温精度。
lm35的输出电压与摄氏温度的线形关系可用下面公式表示,0℃时输出为0 v,每升高1℃,输出电压增加10 mv。其电源供应模式有单电源与正负双电源两种,其接法如图3与图4所示。正负双电源的供电模式可提供负温度的测量,单电源模式在25℃下电流约为50 ma,非常省电。本系统采用的是单电源模式。
2.2 信号放大电路
由于温度传感器lm35输出的电压范围为0~0.99 v,虽然该电压范围在a/d转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行a/d转换则会导致转换成的数字量太小、精度低。系统中选用通用型放大器μa741对lm35输出的电压信号进行幅度放大,还可对其进行阻抗匹配、波形变换、噪声抑制等处理。系统采取同相输入,电压放大倍数为5倍,电路图如图5所示。
2.3 a/d转换电路
a/d转换电路选用8位ad转换器adc0809。adc0809是cmos单片型逐次逼近式a/d转换器,可处理8路模拟量输入,且有三态输出能力。图5中运算放大器的输出电压v,送入adc0809的模拟通道in0。单片机at89c52控制adc0809的开始转换、延时等待a/d转换结束以及读出转换好的8位数字量至单片机进行处理。
2.4 单片机系统
单片机选用的是atmel公司的at89c52,主要完成对a/d转换电路的控制、对转换后的数字量的处理以及对显示模块的控制,并且为adc0809提供工作时钟。同时at89c52外接锁存器74ls373,对at89c52的p0口的地址信号进行锁存。74ls373的q2,q1,q0接adc0809的c,b,a,实现对模拟通道的选择。at89c52的晶振选择3 mhz,则其ale引脚的输出频率为0.5 mhz,小于adc0809的时钟频率最高值640 khz,正好为其提供工作时钟。其具体连接电路如图2所示,单片机的晶振电路及复位电路较简单,图中未给出。
2.5 温度显示系统
该温度显示系统较为简单,由可编程并行输入输出芯片8255a的a,b,c端口外接3个8段led显示器来实现。at89c52的p2.6为8255提供片选信号,74ls373的q7,q6接8255的a1,a0,可得到8255的a,b,c及控制口的地址为bf3fh,bf7fh,bfbfh,bfffh。at89c52处理好的温度数据输出至8255,并由at89c52对8255编程控制其a,b,c端口输出高电平或低电平,以便从8段led显示器显示实际温度。8段led显示器选用共阳极,8255的a,b,c端口与8段led显示器之间接限流电阻,图2中只画出了pa口,pb,pc口的接法类似。
3 系统软件设计
系统的软件部分用51汇编语言编程,采用模块化结构,主要由a/d转换模块、单片机内部数据处理模块、温度显示模块等3部分构成,便于修改和维护。
3.1 a/d转换模块
根据测量系统要求不同以及单片机的忙闲程度,通常可采用3种软件编程方式:程序查询方式,延时方式和中断方式。本系统采用延时方式。延时程序实际上是无条件传送i/o方式,当向a/d转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次a/d转换所需要的时间,之后打开a/d转换器的输出缓冲器读数即为转换好的数字量。a/d转换时间为64个时钟周期,因为系统中adc0809的工作时钟为500 khz,故a/d转换时间为128 μs,延时时间可大致选择160μs。程序段如下:
为了使采样数据更稳定可靠,系统还采用了8次采样平均值的方法以消除干扰。
3.2 单片机内部数据处理模块
系统通过adc0809转换的数字量是与实际温度成正比的数字量,但系统最后显示的是实际温度值,因此需要对数据进行处理再通过8255输出到led显示。
设所测温度值为t,a/d转换后的数字量为x,则有:
vout=0.01 v/℃×t℃
vout为lm35的输出电压,即运放μa741的输入电压,μa741的输出电压用v1表示。因为μa741的放大倍数为5,则有:
v1=5×vout=0.05×t
根据系统设置,温度传感器输出电压0~5 v对应于转换后的数字量0~255,则有: 0.05t/5=x/