智能仪器课程设计--温度测量仪-开封大学
目 录
前 言 ................................... 错误!未定义书签。 第1章 智能温度测量仪表方案设计与论证 ............. 3
1.1 功能与要求 ......................................................................................................................................... 3
1.2 方案论证与比较 ............................................................................................... 错误!未定义书签。 1.3 方案的确定 ........................................................................................................................................... 5
第2章 智能温度测量仪表的硬件设计 ....... 错误!未定义书签。
2.1 系统硬件框图如图2所示 ................................................................................................................. 6 2.2 温度采集与放大电路的设计 ............................................................................................................... 6 2.3 调零电路的设计 ................................................................................................................................... 7 2.4 A/D转换电路的设计 .......................................................................................................................... 8 2.5 单片机最小系统 ................................................................................................. 错误!未定义书签。 2.6 LED显示电路的设计 .......................................................................................... 错误!未定义书签。 2.7 系统电源的设计…………………………………………………………………………………………………………………………….13
第3章 软件设计 ......................... 错误!未定义书签。
3.1 主程序设计 ......................................................................................................... 错误!未定义书签。 3.2 ADC0809数据读取程序设计 .............................................................................................................错误!未定义书签。
3.3 数字滤波程序设计………………………………………………………………………………….16 3.4 温度设定及显示程序设计………………………………………………………………………….20
第4章 设计体会与小结 ............................ 23 参考文献 ......................................... 24 附录 ............................................. 25
前 言
。
智能型温度测量仪是基于AT89C51单片机对温度进行控制的,采用PT100温度传感器采集温度数据,通过仪用放大器将温度信号放大,然后再送入A/D转化器,将模拟信号转变成便于单片机处理的数字信号,经过单片机处理后,把温度用LED数码管以动态扫描的方式显示出来。
温度测量仪,涉及了模拟电子技术,数字电子技术,单片机接口技术,传感器检测技术等,是一个综合性比较强的课题,比较适合学生做课程设计,在做课程设计过程中,学生通过查找各种资料和书籍,巩固并加深了对专业知识的认识,提高了分析问题的能力和相对独立思考问题的能力。
第1章 智能温度测量仪表方案设计与论证
1.1功能与要求与技术指标 ⑴.功能要求
①.配合温度传感器,实现温度的测量; ②.具有开机自检、自动调零功能; ③.具有克服随机误差的数字滤波功能;
④.使用220V/50Hz交流电源,设置电源开关、电源指示灯和电源保护功能。
⑵.主要技术指标
①.测量温度范围:0~150℃ ②.测量误差:≤1%
⑥.显示方式:4位LED数码管显示被测温度值。
1.2 总体方案论证
方案一:采用DS18B20数字传感器采集温度数据,然后送入单片机进行数据处理,处理
后将温度由数码管显示电路图如图1所示: 图1-2:
DS18B20数字传感器是一个3脚的芯片,1脚为接地,2脚为数据输入输出,3脚为可选的VCC电源。通过一个单线接口发送或接收数据,因此单片机与DS18B20之间仅需一条连线(加上地线)。作为温度采集芯片,可直接将采集值进行处理得到数字量送入单片机,之后由数码管或LCD液晶显示。采用此芯片做温度采集,使得硬件电路结构简单,同时也避免了使用多级电路出现前后级阻抗不匹配的问题,不但节约了硬件部分的成本,提高了采集数据的可靠度。
方案二:采用Pt100铂热电阻温度传感器采集温度数据,Ptl00铂电阻具有抗震性
能好、测温范围广、测量精度高、机械强度高、耐压性能好等特点,且电阻率较大,其电阻R,与温度t的关系为正比例系数的单调函数,实际测量中有良好的重复性。PT100温度传感器0℃时电阻值为100Ω,电阻变化率为0.3851Ω/℃。
方案比较
PT100 铂热电阻:
优点:是一种广泛应用的测温元件,在-50℃~600℃范围内具有其他任何温度传感器无可比拟的优势,包括高精度、稳定性好、抗干扰能力强等优点,测温范围在本课程设计的要求范围之内。
缺点:测量电路比较复杂,容易出现多级电路出现前后级阻抗不匹配的问题。DS18B20数字温度传感器:
优点:具有可编程、A/D转换,温度采集电路结构简单。
缺点: -55℃~+125℃,测温范围具有一定的局限性,不适合特殊高温场合的应用,不满足本课程设计的要求(0℃~150℃),故最终选择PT100铂热电阻温度传感器采集温度数据。
1.3方案确定
经过两种方案的比较,最终选定PT100作为温度传感器。PT100温度传感器0℃ 时电阻值为100Ω,电阻变化率为0.3851Ω/℃。由于其电阻值小,灵敏度高,所以引线的阻值不能忽略不计,但可采用四线式接法可消除引线线路电阻带来的测量误差。 原理如下:如图1-3
增加一根导线用以补偿连接导线的电阻引起的测量误差。四线制要求四根导线的材质、线径、长度一致且工作温度相同,使四根导线的电阻值相同,即RL1=RL2=RL3=RL4。通过导线L1、L2给热电阻施加激励电流I,测得电势V1、V2、V3、V4。导线L3、L4接入高输入阻抗电路,IL3=IL4=0。
由此可得四线制接法可补偿连接导线的电阻引起的测量误差。
图1-3:
第2章 智能温度测量仪表的硬件设计
2.1系统硬件框图
如图2—1所示:
系统硬件框图2—1
其工作过程为:温度传感器所感应到的被测对象的表面,由温度信号转换成电信号,将传感器的测量信号经过运算放大电路进行放大,由ADC0809对模拟信号进行数字信号的转换。单片机对数字信号进行信息的处理,并通过单片机IO口把数据传递给LED数码管,由数码管对测量的温度数据进行数据显示,同时单片机与片内软件设置的告警温度阀值相比较,若高出,单片机通过IO口向翁鸣器发出响应的电平,控制蜂鸣器发音,进行告警提示。对于告警的阀值,可以编写单片机程序时进行内部软件的设定。
2.2温度采集与放大电路的设计
采用PT100三线制接法作为温度采集部分,放大器电路,选用仪表放大器AD626差分放大器。因为我们测量的范围为0℃~150℃,热电阻桥电路出来的电压为几mV,数据量比较小,采用仪表放大器可以比较精确的得到想要放大的倍数,出现较小的误差。为了满足ADC模数转换的电压需要(0~5V),需要把小信号放大。AD626的设定放大倍数为100倍。如下图即为AD626放大电路,Ui1和Ui2为桥电路输出电压,Vout1为放大后输出电压值。
如图2-2:
温度采集与放大电路的电路图
2.3调零电路的设计
为了能在ADC采样后得到的数字值是从零开始。需在放大电路后面加调零电路。采用INA2132差分大器。INA2132是一种经济型、双路、低功耗单位增益的差分电路,具有高精度光调电阻的运算放大器组成,因此可以提供高精度的增益和较高的共模抑制比。如图2-3,AD626放大电路单端输出的Vout1电压是0~5V之间。工作原理是当+IN的电压值大于-IN则输出端Vout1输出为正,反之则输出为负。Vout1是INA2132双端输入的正端,负端接一个滑动变阻器组成的电路。调节滑动电阻器阻值可以调节INA2132的-IN端的输入值,达到调零电路的作用。调零电路如图2-3所示:
在图2-3中,用一个小电阻R5接在R1的回路中,此时R3与R5分压产生的失调电压加到R1的左端,进而由R1和R2再次分压.因而失调电压调整范围由下式确定: 失调电压调整范围=±VD·(R5/R3)·(R2/(Rl+R2)) (±VD=±l5V) 依据图中的电阻值,其失调电压调整范围约为:±15mV。
2.4 A/D转换电路的设计
从Out2输出信号是0~5V间的模拟电压信号,需要经过A/D转换之后将其变成数字信号再输入到单片机内进行处理,单片机可对采集进来的温度数据与所设定的阀值进行比较,然后再控制后面的执行部件。将Out2输出的信号输入到ADC0809的port端口,电路图如图2-4所示
图2-4 A/D转换电路
2.5单片机最小系统
要使单片机工作起来,主要是给单片机增加上电复位电路和外接一个晶振。上电的瞬间,电流有一个突发的向上的尖峰脉冲,因此电流能通过C3电容到达AT89C51的复位端口RESET对AT89C51进行复位。尖峰过后之后,电流平稳,电容C3阻止电流的通过,这样可以防止对AT89C51反复进行复位。电阻R2是用于给C3放电的,并将一号管脚拉低,防止RESET端口上持续高电平。给AT89C51提供一定的时钟频率以后,AT89C51才能开始工作。如图2-5,这个振荡电路与AT89C51内部的时钟振荡器一起组成完整的时钟频率发生电路,XTAL1为AT89C51内部时钟振荡器的输入端,XTAL2为AT89C51内部时钟振荡器的输出端,XTAL为晶振,起到选择振荡频率的作用,这里使用的时钟频率为12MHz。C1、C2为振荡补偿电容,起到放宽起振频率,让时钟容易起振的作用。电路如图2-5所示:
图2-5单片机最小系统原理
2.6 LED显示电路
它主要由四位一体数码显示管、4*4 矩阵键盘和 CH451 芯片构成,用于实现系统的温度显示与温度设定功能。在显示电路的设计中,CH451 为该模块电路的核心器件,功能相对完善。CH451 不仅能有效的将采集到的温度值通过数码管进行实时显示;并且还能控制
矩阵键盘,读取通过按键获得的温度设定值,一方面可将设定值直接显示,另一方面还能传输给单片机;同时通过 CH451 芯片控制键盘输入和数码显示,还可有效的节省单片机P口的使用,方便单片机的扩展设计。其设计的原理图如图2-6所示:
图2-6 LED显示电路
该人机接口电路采用LG3641AH型四位一体共阴极数码管(如图2-6-1所示),进行显示,由于LG3641AH 为共阴极数码管, A-H管脚上若输出高电平,则相应段码被点亮。为了避免单片机输出的高电平电压过高使数码管烧坏,应分别在A-H管脚上接200 电阻分压。LG3641AH的七段LED码如下表1所示:
表1. LG3641AH共阴极断码表
图2-6-1 LG3641AH数码管
2.7系统电源的设计
本系统电源共有三组稳压电路,单组电源稳压电路和正、负对称的两组电源的稳压电路,均采用了集成三端稳压芯片,稳压芯片具有体积小、外围原件少、性能稳定可靠、使用调整方便和价廉。因此获得了广泛的应用。集成稳压器的类型有很多,按结构形式分为串联型、并联型和开关型;按输出电压类型分为固定和可调式,作为小功率的稳压电源以三端式串联型稳压器的应用最为普遍。三端式是指稳压电路仅有输入、输出、接地三个接线端子,有固定式和调节式两种类型。此外又分为正或负电压输出类型。7800
系列为三端
固定电压输出集成稳压器;7900系列为三端固定负电压输出集成稳压器,型号的最后两位数表示输出电压的稳定值。内部还具有启动电路、限流、短路和安全工作区保护及过热保护电路。该系统稳压电源中,由于5v稳压器的压差≥2V,现取3V,故输入电压=8/1.2V=6.7V为方便计算先取7V,稳压器的输入电流即为整流滤波电路的负载电流I’0= I0(max)+IQ=300+8=308mA.桥式整流二极管参数要求正向平均电流If≥1/2×308mA=154mA ,最大反向电压Um≥√2U=10V,滤波电容求取,T=1/f=1/50s=0.02s,由于单片机的输入阻抗比较低,所以电容耐压值C=1000uf,耐压值应大于输入电压的2倍,故选用1000uf/25V的电容,之后再并联一个小电容用于消除变压器电感,5V电源变压器的原副线圈匝数之比为44:1。
由于系统中使用了±15V的电源,因此,在选择变压器时使用双电源的变压器,15V的正负电压可用W7815和W7915的三端集成稳压器组成,其中的D3、D4用于保护稳压器,为了产生±15V的电压,在两个输出端中间接地,其中线圈的匝数比为7:1,整流二极管和滤波电容的参数值,可以与5V电源中的参数值选取一样。为了让电源有更高的安全系数,不至于损坏系统电路元件及芯片,在变压器的未整流之前添加不同型号的保险管。
第3章 智能温度测量仪表的软件设计
3.1主程序设计
主程序设计代码如下所示:
/* 主程序 */ /******************************************************************/ main() {
unsigned char TempH,TempL,i,j,m; relay=1;
ch451_init();//初始化451
ch451_write(0x0403); //开显示、
ch451_write(0x580); //设置BCD译码 EA=1;//开中断 while(1)
{ EX1=1; //允许键盘中断 flag=0; if(setb==1) {
Set_temp(); }
str[0]=TempH/100; //百位温度 ch451_write(CH451_DIG0|str[0]); str[1]=(TempH%100)/10; //十位温度 ch451_write(CH451_DIG1|str[1]);
str[2]=(TempH%100)%10; //个位温度,带小数点 ch451_write(CH451_DIG2|str[2]); ch451_write(CH451_DIG3|0x0c);
for(i=0;i
if(str[i]>showtemp[i])//则停止加热
{
m=1; i=i+3; }
else if(str[i]
else m=m; // } relay=m; {
temp=ReadTemperature(); //if(temp&0x8000) // {
//str[3]=0x40;//负号标志 //temp=~temp; // 取反加1 // temp +=1; // } //else str[3]=0; TempH=temp>>4; TempL=temp&0x0F;
TempL=TempL*6/10;//小数近似处理
继续比较
} } }
3.2 ADC0809数据读取程序设计
本次设计采用ADC0809芯片将从传感器输出的信号来进行A/D转换,由于ADC0809数据转换时间仅为32us,所以A/D转换得数据采样频率可以很快,从而也保证某些场合对A/D转换数据实时性的要求。ADC0809芯片接口程序的编写,程序流程图如图3.2所示:
ADC0809数据读取程序流程图
A/D转换程序代码如下:
ADCS BIT P3.5 ;使能接口 ADCLK BIT P3.4 ;时钟接口
ADDO BIT P3.3 ;数据输出接口(复用) ADDI BIT P3.3 ;数据输入接口 以下语句在调用转换程序前设定
MOV B,#00H ;装入通道功能选择数据值
以下为ADC0832读取数据子程序 ====ADC0832读取数据子程序==== ADCONV:
SETB ADDI ;初始化通道选择 NOP NOP
CLR ADCS ;清零/CS端 NOP
SETB ADCLK ;置位CLK端 ;置位CLK端 NOP NOP
CLR ADCLK ;清零CLK端,形成下;清零CLK端,形成下降沿3 降沿 SETB ADDI NOP
;确定取值通道选择 NOP MOV R7,#8 AD_1:
MOV C,ADDO ;接收数据 ;置位CLK端 MOV ACC.0,C RL A ;左移一次 SETB ADCLK
;清零CLK端,形成下 NOP 降沿2 NOP
CLR ADCLK ;形成一次时钟脉冲
;确定取值通道选择 NOP NOP
DJNZ R7,AD_1 ;循环8次
NOP NOP
SETB ADCLK NOP NOP
CLR ADCLK MOV A,B
MOV C,ACC.1 MOV ADDI,C NOP NOP
SETB ADCLK NOP NOP
CLR ADCLK MOV A,B
MOV C,ACC.0 MOV ADDI,C NOP
MOV C,ADDO ;接收数据 MOV ACC.0,C MOV B,A MOV R7,#8 AD_13:
MOV C,ADDO ;接收数据 MOV ACC.0,C
RR A ;左移一次 SETB ADCLK NOP NOP
CLR ADCLK ;形成一次时钟脉冲 NOP NOP
DJNZ R7,AD_13 ;循环8次 CJNE A,B,ADCONV ;数据校验 SETB ADCS ;清零/CS端 CLR ADCLK ;清零CLK端 SETB ADDO ;提高数据端,回到初
始状态 RET
3.3数字滤波程序设计
数字滤波方法可以有效抑制信号中的干扰成分,消除随机误差,同时对信号进行必要的平滑处理,以保证仪表及系统的正常运行。
其中中值滤波法比较适合用于去掉由偶然因素引起的波动和采集不稳定而引起的误码等造成的脉冲干扰,对温度等缓慢变化的被测参数采用此法能收到良好的效果,其对应的子程序软件流程图如图3.3所示:
图3.3 数字滤波程序流程图数字滤波程序代码如下: #include #include
#define uchar unsigned char
#define count 5 /*设置采样值个数*/ unchart data median;
unchar filtering(void) /*中位值滤波子程序*/ {
unchar idata *addr; int i,j;
unchar data buffer;
addr0x30; /*设置采样值存储单元首地址*/ for(j=0;j
if((*addr+i)>*(addr+i+1))
{buffer=*(addr+i);(*addr+i)=*(addr+i+1);*(addr+i+1)=buffer;} }
madian=*(addr+(count-1)/2); /*返回中值*/ }
3.4 温度设定及显示程序设计
该部分主要实现人机接口相互对话的功能,通过开键盘中断,键盘扫描判断有无键按下,若有,则从高位到低位依次将按键值通过对应的4位数码管显示出来,完成温度设定功能;若无,则继续键盘扫描。其程序流程图如图3.4所示。
图3.4 温度设定及显示程序流程图
温度设定及显示程序代码如下:
void Set_temp(void) //设定保温点
{
unsigned char i;
ch451_write(CH451_DIG0|showtemp[0]);//显示原来设定温度 ch451_write(CH451_DIG1|showtemp[1]);
ch451_write(CH451_DIG2|showtemp[2]);
//设定温度
ch451_write(CH451_TWINKLE|1); //闪烁
EX1=1;
while(flag==0);
EX1=0;
flag=0;
showtemp[0]=ch451_key;
ch451_write(CH451_DIG0|showtemp[0]);
ch451_write(CH451_TWINKLE);
ch451_write(CH451_TWINKLE|2);
EX1=1;
while(flag==0);
EX1=0;
flag=0;
showtemp[1]=ch451_key;
ch451_write(CH451_DIG1|showtemp[1]);
ch451_write(CH451_TWINKLE);
ch451_write(CH451_TWINKLE|4);
EX1=1;
while(flag==0);
EX1=0;
flag=0;
showtemp[2]=ch451_key;
ch451_write(CH451_DIG2|showtemp[2]);
ch451_write(CH451_TWINKLE);
setb=0;
}
参考文献
【1】华中科技大学电子技术课程组编,康华光主编. 电子技术基础(数字
部分).第五版. 北京:高等教育出版社,2006
【2】李群芳等.单片微型计算机.北京:电子工业出版社,2007
【3】李志全等.智能仪表设计原理及其应用.北京:国防工业出版社,2000
【4】赵茂泰.智能仪器原理及应用.北京:国防工业出版社,1998
【5】孙传友等.测控系统原理与设计.北京:北京航空航天大学出版社,2005