温度测控仪设计毕业设计文档格式.docx
- 文档编号:17289077
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:34
- 大小:403.18KB
温度测控仪设计毕业设计文档格式.docx
《温度测控仪设计毕业设计文档格式.docx》由会员分享,可在线阅读,更多相关《温度测控仪设计毕业设计文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
发展新型产品
利用以前的检测技术生产处适应于不同场合、不同工况要求的新型产品,以满足用户需要。
同时利用新的检测技术制造出新的产品。
对许多场合中的温度检测器有特殊要求,入防硫、防爆、耐磨等性能要求;
又如移动物体和高速旋转物体的测温、钢水的连续测温、火焰温度检测等。
因此,本设计方向就是在温度测量远距离传送和保存方面进行有效的探索。
1总体硬件方案设计
本系统分为两大部分,一部分为温度采集模块、51单片机及发送模块,另一部分为远距离数据的接收模块与51单片机。
温度采集及发送部分:
本设计利用AD590进行温度的测量,在经过电压跟随器,放大电路放大、调整之后通过A/D转换器TLC549将模拟电压信号转化为数字信号,A/D转换之后的数据送到单片机1进行处理,单片机1控制液晶显示器,将温度值在液晶显示器上进行显示,在通过PT2262进行无线发送。
接收及显示部分:
用SC2272进行无线接收,接收后的数据送到单片机2,单片机2控制液晶显示器进行显示。
图1-1发送模块框架图
图1-2接收模块框架图
1.1温度传感器的放大电路设计
AD590是美国模拟器件公司生产的单片集成两端感温电流源,它会将温度转换为电流,在8051的各种课本中经常看到。
其规格如下:
◆度每增加1℃,它会增加1μA输出电流
◆可测量范围-55℃至150℃
◆供电电压范围+4V至+30V
AD590的管脚图及元件符号如下图所示:
图1.1-1AD590管脚图
AD590的输出电流值说明如下:
◆其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Iout=(273+25)=298μA。
AD590基本应用电路:
图1.1-2基本应用电路
◆AD590的输出电流I=(273+T)uA(T为摄氏温度),因此测量的电压为(273+T)μA×
10K=(2.73+T/100)V。
为了将电压测量出来又务须使输出电流I不分流出来,我们使用电压跟随器其输出电压V2等于输入电压V。
◆由于一般电源供应教多器件之后,电源是带杂波的,因此我们使用齐纳二极管作为稳压元件,再利用可变电阻分压,其输出电压V1需调整至2.73V。
◆接下来我们使用差动放大器其输出Vo1为(100K/10K)×
(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2.8V,输出电压接AD转换器,那么AD转换输出的数字量就和摄氏温度成线形比例关系。
◆通过R9和R12进行分压,V0=T/20,因为测试温度不大于100℃,使得最终输出最大Vo为(1/2)×
10=5V;
能在A/D转换器TCL549的输入电压范围输入0.3V~VCC+0.3V之内。
温度采集电路图采用智能化间歇数据采集,即首先把温度变化值分为报警温度、预警温度、准预警温度、正常温度四个档次。
当温度处于正常情况下时,温度采集周期为30min,若某一点的温度有变化,当接近准预警点时,采集周期变化为10min,若温度仍有提高达到预警温度,则采集周期为3min,一旦出现报警温度,系统进入实时采集状态,并发出报警。
图1-3温度采集电路
1.2TLC549模数转化电路设计
TLC549是8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、DATAOUT三条口线进行串行接口。
具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549为40000次/s。
总失调误差最大为±
0.5LSB,典型功耗值为6mW。
采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。
其工作原理为:
TLC549均有片内系统时钟,该时钟与I/OCLOCK是独立工作的,无须特殊的速度或相位匹配。
其工作时序如图2所示。
当CS为高时,数据输出(DATAOUT)端处于高阻状态,此时I/OCLOCK不起作用。
这种CS控制作用允许在同时使用多片TLC549时,共用I/OCLOCK,以减少多路(片)A/D并用时的I/O控制端口。
将V0的电压值输入TLC549进行AD转换,从芯片的DO脚输出,然后由单片机读取。
两个4148二极管是进行电源稳压的,R7,R8进行参考电压设置,基本上等于5V。
图1.2-1模数转换电路
1.3显示电路设计
1602液晶已经包括在单片机学习板内了,在这里只稍微介绍它的引脚功能。
D0~D7是命令/数据口,接单片机的P1口,由单片机读(写)命令(数据),RS是命令/数据的选择端口,RW是读/写的选择端口,E是1602的使能端。
1602有它自己的字库,用户只需写入相应的代码并控制好1602给出的时序就可以在液晶屏上显示希望得到的字符或图像了。
图1.3-1液晶显示屏
1.4无线发送与接收模块的选择与设计
PT2262、SC2272是一种CMOS工艺制造的编码电路。
采集的温度信号可以通过PT2262编码,通过17脚输出到射频发射模块的数据输入端发射出去,与此同时射频接收模块接收后将数据送到解码芯片SC2272,其地址经过核对与SC2272的地址匹配后,SC2272的VT脚才输出高电平,与此同时PT2262相应的数据脚也输出高电平。
图1.4-1PT2262引脚图
图1.4-2PT2262时序图
1.5键盘设计
独立键盘也包括在单片机学习板内,P3.2接单片机的外部中断。
图1.5-1独立键盘引脚图
2总体的软件程序的设计
2.1温度数据采集和数据处理子程序的设计
经AD590采集的温度转化为了电压值,然后经放大电路处理后,使输出电压V=T/20,这样才能保证TLC549的输入电压不大于基准电压。
在硬件调试时,基准电压设置成5V,所以在程序处理时要将从TLC549得到的数字值乘以5/255才能得到电压V,然后再乘以20才能得到温度(此时的温度是双精度型的)。
中值滤波是为了得到很短时间的温度平均值,有稳定数值的作用。
图2.1-1温度采集和处理流程图
2.2温度显示、保存处理的子程序设计
图2.2-1温度显示和保存流程图
因为采集到的每个温度值都是0~100摄氏度之间的任意值,为了使精度达到0.1℃,我们只保留一位小数(在二进制表示中只占低4位)。
将温度分解成整数部分和小数部分,是为了方便存储和发送。
本设计只保存10组温度。
2.3无线发送与接受的子程序的设计
因为选用的发送模块是集成PT2262无线射频芯片PC-T2A,所以只能利用其6位数据口中的4位,将温度分解发送。
经计算每编码发送都需要发送3~4次接收端才能接收到有效数据,所以在程序中适当对发送使能端置高进行延时。
发送完4位数据后也需要延时,给接收端处理数据时间,防止乱码。
图2.3-1无线发送流程图
选用的接收模块是与集成SC2272的PCR1B-2芯片。
当接收到的编码地址与之相匹配的时候,SC2272的VT端从低电平变为高电平,然后马上恢复低电平。
所以利用其下降沿可以触发单片机2的外部中断0进行温度接受处理。
SC2272需要接收三次才能得到一个完整的温度值。
123
图2.3-2无线接收处理流程图
2.4十组温度查询的子程序设计
因为独立键盘接的是单片机1的外部中断0,所以当它按下去时的产生的下降沿触发外部中断,在中断处理程序中根据中断次数读取储存的温度。
在中断处理程序中关中断是为了消除按键抖动触发另一次中断。
图2.4-1温度查询流程
3调试与结果分析
3.1调试仪器及方法
测试仪器:
数字万用表,示波器,函数信号发生器
测试方法:
硬件调试时,利用函数信号发生器,与示波器根据原理调相应的线路的电压值,达到与AD590采到的温度,及TLC549转化进行相对应。
根据理论原理的分析,输入一信号,利用示波器去跟踪观察PT2262,SC2272各引脚的高低电平是否合理正确,即意味着在无线传输中两芯片的地址是否匹配?
达到正确的发送与接受。
3.3软、硬件调试与故障原因分析
调试过程:
一开始测试的温度误差很大,经检查发现是采温部分的TLC549的参考电压与程序处理中的参考电压不匹配,经调试硬件和程序,得出误差较小的温度值。
发送后,发现接受模块无法显示,经检查发现接收模块的SC-2272的VT端驱动能力较差,不能与单片机的TTL电平匹配,于是我们就用C9018三极管增强它的驱动能力,使得接受模块有温度显示,但是发现接受显示乱码,经示波器检查发现在发送温度时由于PT2262芯片的发送使能端默认接地,导致不受单片机控制,接受模块无法正确接收温度数据。
所以我们将PT2262的发送使能端与默认的地剪断,让其受单片机控制。
最终实现了温度的无线传送。
4结束语
本次课程设计完成的是基于集成温度传感器AD590的温度测量及其无线传送的设计,并通过LCD1602显示温度值,通过半个月的不断努力、克服各种困难,最终实现了任务目标。
本次设计主要是对在温度测量的智能化、集成化方面的探索,这也是温度测试发展的趋势。
同时,也是测控技术未来发展的趋势。
设计是理论知识与实践的完美结合,对于现代大学生的实践能力是个很好的培养。
短短的半个月的设计虽然短暂,但是它给我们的收获确实难忘,不仅仅在智能仪器方面有了很大的进步,而且在传感器,单片机等方面也学到了不少在上课学不到的知识。
这段时间我们查阅到很多关于课程设计的书籍,对我们帮助也很大。
以前很盲目的东西,现在明白了很多。
也对我们专业动手实践的兴趣提高了很多。
有了这些经历对于我们日后工作一定会有很大帮助。
令我们终身受益。
在课程设计的过程中也可以看到我们的不足,如原理知识掌握不实,曾经学过的知识如今却不会应用,软件的应用也不熟练,希望日后提供给我们更多的锻炼机会来培养我们的实践能力。
本设计是在XX老师的悉心指导下完成的。
孙活老师作为一名优秀的、经验丰富的教师,具有丰富的知识和经验,在整个论文实验和论文写作过程中,对我进行了耐心的指导和帮助,提出严格要求,引导我不断开阔思路,为我答疑解惑,鼓励我大胆创新,使我在这一段宝贵的时光中,既增长了知识、开阔了视野、锻炼了心态,又培养了良好的实验习惯和科研精神。
在此,我向我的指导老师表示最诚挚的谢意!
附录1:
硬件原理图及PCB板
附录2:
软件程序代码
发送模块代码:
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
/*TLC549引脚设置*/
sbitSCLK=P2^0;
sbitDO=P2^1;
sbitCS=P2^2;
/*1602引脚设置*/
sbitRS=P2^5;
sbitRW=P2^6;
sbitE=P2^7;
/*PT2262引脚设置*/
sbitD1=P1^0;
sbitD2=P1^1;
sbitD3=P1^2;
sbitD4=P1^3;
sbitTE=P2^3;
/*AT24C02引脚设置*/
sbitscl=P1^5;
sbitsda=P3^6;
/*按键设置*/
sbitfront=P3^2;
ucharcodelie1[]="
NOWT:
"
;
ucharcodelie2[]="
10PreT:
ucharxdataxiaoshu,zhengshu,cishu,xuhao;
//定义两个变量,分别存放温度的整数部分和小数部分
/********************************************************************
温度采集模块子函数
**********************************************************************/
*名称:
delay(uintz)
*功能:
延时,延时时间大概为z毫秒。
*输入:
无
*输出:
voiddelay(uintz)
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
ad549(void)
将AD590采集的温度电压化为8位的数字量。
温度电压
对应TLC549中参考电压的数字量
*
uintTLC549(void)//把模拟量转换成数字量,参考的是REF。
仅仅是数字量,不是真实电压值。
uchartemp,i;
//定义存放数据和变量
CS=1;
SCLK=0;
//初始化
CS=0;
//DO输出最高位
_nop_();
//两个机器周期满足了1.4微秒
for(i=0;
i<
8;
i++)//串行数据移位输入
{
temp<
<
=1;
temp|=DO;
SCLK=1;
//时序控制看芯片资料
}
CS=1;
17;
i++)
return(temp);
average(void)
将TLC549转换完成的数字量换成电压值,并通过一定的关系,化为温度值,精度为0.1℃。
温度电压对应average(void)
AD590采集的温度值
doubleaverage(void)//定义一个数组,存放25个AD采样的数据,然后取平均值,这种方法叫做中值滤波,作用是使输出稳定,并把数据换成电压。
uchari;
uinttemp;
doubletemp1,j,average1[25];
25;
temp=TLC549();
j=((double)temp)*20*5/255;
//根据电路图可知REF=5V,AD输出时8位的数据,所以要分成255份。
average1[i]=j;
delay
(1);
//采样间隔随要求定。
temp1+=average1[i];
temp1=temp1/25;
//一定要注意不同类型间的赋值和计算必须用强制转换。
还有一个特别重要的C51FPS.LIB文件必须要在安装目录下的LIB文件夹内。
return(temp1);
液晶显示模块子函数
convert(ucharinput)
实验板上把D0~D7的位置弄反了!
需要转过来
需在液晶屏上显示的值,或是1602的命令值
对应实验板上的"
正常值"
ucharconvert(ucharinput)//实验板上把D0~D7的位置弄反了!
uchari,temp,output;
temp=input&
0x01;
input>
>
output|=temp;
if(i<
7)
output<
return(output);
order(ucharo)
控制1602液晶显示功能
1602液晶的命令值或数据指针地址
voidorder(ucharo)
RS=0;
RW=0;
P0=convert(o);
E=0;
delay(5);
E=1;
RS=1;
shuju(uchars)
将需显示的数值显示在1602液晶上
字符
voidshuju(uchars)
P0=convert(s);
//一定要放在en=0前面否则会出现乱码。
。
init()
液晶屏初始化
voidinit(void)
order(0x38);
//设置16*2显示,5*7点阵,8位数据接口
order(0x06);
//当读写一个字符后地址指针加1,光标向后移1
order(0x0c);
//开显示屏,不显示光标
order(0x01);
//数据指针清零,显示屏清空
/*在液晶屏上显示的上行为"
°
C"
下行为"
10PreT:
*/
order(0x80);
6;
shuju(lie1[i]);
order(0x80+0x40);
7;
shuju(lie2[i]);
order(0x80+0x0c);
shuju(0xdf);
//
shuju(0x43);
//C
order(0x80+0x40+0x0e);
fasongzhengshu(uch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 测控 设计 毕业设计
![提示](https://static.bdocx.com/images/bang_tan.gif)