基于AD590的温度自动控制系统设计.docx
《基于AD590的温度自动控制系统设计.docx》由会员分享,可在线阅读,更多相关《基于AD590的温度自动控制系统设计.docx(16页珍藏版)》请在冰豆网上搜索。
基于AD590的温度自动控制系统设计
课程设计报告书
课程名称:
《传感器原理及应用》课程设计
题目:
基于AD590与单片机的温度计的系统
的设计
系(院):
电子工程学院测控系
学期:
2014-2015-1
评语:
成绩:
签名:
日期:
一.设计目的
1.能较全面的巩固和应用传感器及检测技术课程中所学的基本理论和方法,并初步掌握小型数字系统设计的基本方法
2.通过“传感器及检测技术”的课程设计,掌握传感器及检测系统设计的方法和设计原则及相应的硬件调试的方法,进一步了解传感器及检测系统的设计和应用
3,培养独立思考,独立准备资料,独立设计及规定功能的数字系统的能力
4培养书写综合设计报告的能力
二.实验设计具体要求:
基于集成传感器AD590和单片机的数字温度计设计
三.总体实现原理,方案设计
该数字温度计的设计要求为:
1)三位数码管显示,2)温度显示范围:
-10℃~100℃。
电路由温度传感器(AD590),电压-电流转换电路,AD转换,CPU,显示模块组成。
AD590属于电流输出型传感器,其输出的电流经电压-电流转换电路变为模拟电压信号,通过AD转换变为数字量。
此数字量输入CPU,CPU直接控制显示。
显示模块由三个LED数码管,总线驱动器和若干阻排组成。
硬件连接如下图:
【AD590】
【电流-电压转换电路】
电压-电流转换电路
图中,AD590输出端输出电流,经过10K的电阻,转换为电压值。
OP07为一射极跟随器,A=1,用于提高输入阻抗。
两个二极管用于隔离干扰。
电流-电压转换公式如下:
AD590的灵敏度:
经过10K电阻后:
具体温度-电压值对应如下表
摄氏温度/℃
AD590电流/μA
经10KΩ电压/V
-10
263.2
2.632
0
273.2
2.732
10
283.2
2.832
20
293.2
2.932
30
303.2
3.032
40
313.2
3.132
50
323.2
3.232
60
333.2
3.332
100
373.2
3.732
【AD转换电路】
AD转换电路采用模数转换器AD0832,ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,芯片的模拟电压输入在0~5V之间。
其引脚图及说明如下:
引脚功能说明:
◆CS_片选使能,低电平芯片使能。
◆CH0模拟输入通道0,或作为IN+/-使用。
◆CH1模拟输入通道1,或作为IN+/-使用。
◆GND芯片参考0电位(地)。
◆DI数据信号输入,选择通道控制。
◆DO数据信号输出,转换数据输出。
◆CLK芯片时钟输入。
◆Vcc/REF电源输入及参考电压输入(复用)
输入格式
配置位
选择通道号
CH0
CH1
CH0
CH1
差分
L
L
+
-
L
H
-
+
单端
H
L
+
H
H
+
ADC0832时序:
当CS由高变低时,选中ADC0832。
在时钟的上升沿,DI端的数据移入ADC0832内部的多路地址移位寄存器。
在第一个时钟期间,DI为高,表示启动位,紧接着输入两位配置位。
当输入启动位和配置位后,选通输入模拟通道,转换开始。
转换开始后,经过一个时钟周期延迟,以使选定的通道稳定。
ADC0832接着在第4个时钟下降沿输出转换数据。
数据输出时先输出最高位(D7~D0);输出完转换结果后,又以最低位开始重新输出一遍数据(D7~D0),两次发送的最低位共用。
当片选CS为高时,内部所有寄存器清0,输出变为高阻态。
实验中我们由CH0输入模拟量,DO输出数字量。
我们把AD0832的CS、CLK、D0、DI端分别连接在P3.3、P3.2,P3.1,P3.0端,所以AD0832的片选、时钟信号、启动位和配置位均通过置位端口实现。
由于是CH0输入模拟信号,所以配置位为10。
AD0832为单端输出模式。
由于AD是串行输入输出,故前3个脉冲上升沿完成设置,第4—11个脉冲下降沿后取1位AD转换的结果,在第11—18个脉冲下降沿后第二次取AD转换结果,将两次结果进行比对,如果一致,则完成转换,关ADC0832;如果不一致,则重新开始转换。
经AD转换后,数字量D与温度值的转换如下所示:
【CPU和显示】
本次实验采用三位LED数码管进行显示。
本实验由于要采集确切温度值,所以选用带小数点的七段LED显示器动态显,数码管为共阴极连接。
采用74HC245作为总线驱动器,P0口控制字形,P1.5~P1.7口控制三位字位。
软件设计:
系统程序包括主程序、AD子程序、BCD子程序和显示子程序。
(程序见附件)
否
输入通道控制字
将值送入指定寄存器
产生时钟脉冲,输出两字节数据
使能芯片
开始
调用显示子程序
调用AD子程序
调用BCD子程序
初始化
否
开始
关显示
显示缓存区内容送A,查字形表
字型码送P0口,字位码送P1口
四、传感器选用
型号:
AD590集成温度传感器
本实验采用的AD590,它只需要一种电源(2.5—4V)即可实现温度到电流的线性变换,然后在终端使用一只取用电阻,即可实现电流到电压的转换,AD590使用方便,电流型比电压型使用精度更高。
AD590的主要特性:
AD590是美国模拟器件公司生产的单片集成两端感温电流传感器,是一种已经IC化的温度感测器,它会将温度转换为电流。
其规格如下:
a、度每增加1℃,它会增加1μA输出电流
b、可测量范围-55℃至150℃
c、供电电压范围+4V至+30V
AD590的管脚图及元件符号如下图所示:
AD590相当于一个温度控制的恒流源,输出电流大小只与温度有关,且与温度成正比。
只需一个精密电阻,就可以将电流(温度)信号转化为电压信号,总的灵敏度系数通过该电阻设定。
AD590的温度系数是1μA/K,即温度每增加1K,它会增加1μA输出电流。
其输出电流是以绝对温度零度-273℃为基准,每增加1℃,它会增加1μA输出电流,因此-10℃到100℃时AD590输出电流为263μA到373μA。
ADC0809的输入电压为0-5V,所以需要电流-电压转换电路。
工作电路设计
电路分析:
1、AD590的输出电流I=(273+T)μA(T为摄氏温度),因此测量的电压V为(273+T)μA×10K=(2.73+T/100)V。
为了将电压测量出来又务须使输出电流I不分流出来,我们使用电压跟随器其输出电压V2等于输入电压V。
2、由于一般电源供应教多器件之后,电源是带杂波的,因此我们使用齐纳二极管作为稳压元件,再利用可变电阻分压,其输出电压V1需调整至2.73V
3、接下来我们使用差动放大器其输出Vo为(100K/10K)×(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2.8V,输出电压接AD转换器,那么AD转换输出的数字量就和摄氏温度成线形比例关系。
五,其他各部分单元电路设计
六,系统总电路原理图
七,心得体会
总结:
传感器的应用范围很广,它不仅广泛应用于日常生活中,而且也大量应用于自动化和过程检测控制系统。
温度传感器的种类很多,根据现场使用条件,选择恰当的传感器类型才能保证测量的准确可靠,并同时达到增加使用寿命和降低成本的目的。
AD590温度传感器不但实现了温度转换为线性化电量测量,而且精确度高、互换性好、应用简单方便,因此,可把输出的电信号经AD卡转换为数字信号,由计算机采集Vi-t的数据,以发挥其实时和准确的特点。
把AD590用于改进一部分物理实验,如空气比热容比的测量、金属比热容的测量及液氮汽化热的测量等,都取得了良好的效果。
总之,与水银温度计、铜-康热电偶温度计及半导体热敏电阻温度计相比,AD590具有线性好、测温不需参考点及消除电源波动等优点,因此在常温范围内可以取代它们,广泛的应用于科技和工业领域中。
心得体会:
有了设计的总体思路后,我们开始着手查找程序,接着进行了实验仿真,和室友一起在宿舍模拟的。
仿真出结果后,我们将程序输入单片机。
但是在实践过程中遇到的困难是仿真能够出结果,而将程序输入CPU后却得不到结果。
事实证明软件仿真和硬件出实际结果之间还有很大的差距,即使程序无逻辑错误,在仿真程序上也能运行,一到硬件实现就出问题。
在微机原理课程和实验课上,我们所有的注意力都集中在软件上,对电路板硬件实在了解不多,导致最后发现每一个组的问题都很共性,但是找不出错误所在。
最麻烦的事是我们将每一个子程序块分别编译输入单片机,结果都很好,但总体结合起来就出问题
再后来,得知各端口电压不合理,AD转换程序的一个端口定义与硬件连接不同都可能是显示错误的原因。
单片机系统的正常工作是众方协调的结果,仅仅是程序无逻辑错误是远远不能达到预期的,每一个端口的定义,甚至是语句之间的延时长短都可能是系统无法工作的原因。
在本次课程设计中,我们掌握的知识还很少,钻研精神还不够,只想着能够早点得出结果所以,不能沉下心一点点设计。
在本次试验中,我们的独立思考能力,独立准备资料能力得到了大幅度的提高,独立设计设计数字系统功能的能力也大大提升了,这次试验让我的各方面能力都大大提高了,我们以后一定要多多实践,把课本上的知识融会贯通。
单片机源程序:
程序说明:
程序中的NOP可使硬件有反应间隙;
;/====================
;主程序
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVR4,#100
LOOP:
LCALLADCONV
LCALLBCDCON
LOOP1:
LCALLDISPLAY
DJNZR4,LOOP1
MOVR4,#100
SJMPLOOP
;/========================
;AD子程序
;/========================
ADCONV:
ADCSBITP3.3;使能CS
ADCLKBITP3.2;时钟CLK
ADDOBITP3.1;数据输出接口
ADDIBITP3.0;数据输入接口
SETBADDI;初始化通道选择(CH0=10)
SETBADDO
SETBADCLK
CLRADCS;拉低/CS端,开始AD转换
NOP
NOP
SETBADDI
NOP
NOP
SETBADCLK;拉高CLK端
NOP
NOP
CLRADCLK;:
拉低CLK端,形成下降沿1
SETBADDI
SETBADCLK;:
拉高CLK端,形成上升沿1
NOP
NOP
CLRADCLK;:
拉低CLK端,形成下降沿1
SETBADDI
SETBADCLK;拉高CLK端,形成上升沿2
NOP
CLRADCLK;拉低CLK端,形成下降沿2
NOP
NOP
CLRADDI
NOP
NOP
NOP
SETBADCLK;拉高CLK,形成上升沿3
NOP
NOP
CLRADCLK;拉低CLK,形成下降沿3
SETBADDI
SETBADCLK
MOVR5,#8
CLRA
AD1:
CLRADCLK;拉低CLK端,形成下降沿4,5,6,7,8,9,10,11
NOP
NOP
MOVC,ADDO
NOP
RLCA
SETBADCLK;第一组AD转换数据
NOP
NOP
DJNZR5,AD1
MOVR3,A
NOP
CLRA
CLRC
MOVR5,#8
AD2:
MOVC,ADDO;第二组AD转换数据
RRCA
SETBADCLK
NOP
CLRADCLK;形成下降沿12,13,14,15,16,17,18,19
NOP
DJNZR5,AD2
NOP
MOVR4,A
MOVB,R3
CJNEA,B,ADCONV;判断两组数据是否一致?
否,则重新转换
SETBADCS;关片选
CLRADCLK;时钟清零
SETBADDI;初始化通道选择
RET
;//////ADCONV子程序结束//////
;/========================
;数据处理子程序
;/========================
BCDCON:
MOVA,R3
MOVB,#137
SUBBA,B
JCXIAOYU
MOVB,#2
MULAB
MOVB,#100
DIVAB
MOV70H,A;百位数在A
XCHA,B;余数存A
MOVB,#10
DIVAB;十位数与个位数分开
MOV71H,A
MOV72H,B
RET
XIAOYU:
MOV70H,#10
MOVA,#137
MOVB,R3
SUBBA,B
MOVB,#2
MULAB
MOVB,#10
DIVAB
MOV71H,A
MOV72H,B
RET
;//////////数据处理子程序结束///////////
;/============================
;显示子程序
;/============================
DISPLAY:
MOVA,#0FFH
MOVP1,A
MOVR0,#70H
MOVA,@R0
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP0,A
MOVP1,#11011111B
ACALLDELAY
MOVA,#0FFH
MOVP1,A
INCR0
MOVA,@R0
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP0,A
MOVP1,#10111111B
ACALLDELAY
MOVA,#0FFH
MOVP1,A
INCR0
MOVA,@R0
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP0,A
MOVP1,#01111111B
ACALLDELAY
RET
TAB1:
DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,02H
DELAY:
MOVR7,#02H
DELAY1:
MOVR6,#0FFH
DELAY2:
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
END
;///////程序结束////////