智能仪表设计原理.docx

上传人:b****8 文档编号:9352451 上传时间:2023-02-04 格式:DOCX 页数:16 大小:178.33KB
下载 相关 举报
智能仪表设计原理.docx_第1页
第1页 / 共16页
智能仪表设计原理.docx_第2页
第2页 / 共16页
智能仪表设计原理.docx_第3页
第3页 / 共16页
智能仪表设计原理.docx_第4页
第4页 / 共16页
智能仪表设计原理.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

智能仪表设计原理.docx

《智能仪表设计原理.docx》由会员分享,可在线阅读,更多相关《智能仪表设计原理.docx(16页珍藏版)》请在冰豆网上搜索。

智能仪表设计原理.docx

智能仪表设计原理

多点温度测控仪系统的设计

1.多路温度测量系统概述

在工农业生产和日常生活中,对温度的监测始终占据着极其重要的地位。

当前使用广泛硬件电路直接采集温度的系统,虽然可以满足大部分的需求,但是随着科学技术的不断发展,对温度监测的要求不断提高,比如在精度、实时性、和功能扩展性等。

此时,硬件电路系统的性能局限性问题就比较突出。

基于以上原因,设计并实现了基于51系列单片机位控制核心的温度监测系统。

在温度测量上,使用高精度的LM35CA温度传感器,具有精度高、系统扩展性强、可靠性高、实时性能好、体积小、功耗低等特点。

2.多路温度测量仪总体设计方案

2.1系统的硬件结构设计

根据设备的控制需求,CPU控制电路选用性能优良的8位单片机(ATMEL公司生产的,型号:

AT89C52)为控制核心。

2.1.1微控制器AT89C52主要特性和功能框图

AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

 

2.1.2主要功能特性

·兼容MCS51指令系统

·8k可反复擦写(>1000次)FlashROM

·32个双向I/O口,256x8bit内部RAM

·3个16位可编程定时/计数器中断,时钟频率0-24MHz

·2个串行中断,可编程UART串行通道

·2个外部中断源

·共8个中断源

·2个读写中断口线,3级加密位

·低功耗空闲和掉电模式

·软件设置睡眠和唤醒功能

图1-微控制器AT89C52接口电路

2.1.3温度传感器选型

温度传感器采用LM35CA(可测温度范围为-40-+110℃),LM35是由国半公司所生产的温度传感器,其输出电压与摄氏温标呈线性关系,转换公式如式,0时输出为0V,每升高1℃,输出电压增加10mV。

LM35有多种不同封装型式,在常温下,LM35不需要额外的校准处理即可达到±1/4℃的准确率。

其电源供应模式有单电源与正负双电源两种,正负双电源的供电模式可提供负温度的量测;两种接法的静止电流-温度关系,在静止温度中自热效应低(0.08℃),单电源模式在25℃下静止电流约50μA,工作电压较宽,可在4—20V的供电电压范围内正常工作非常省电。

 

图2-LM35的接口电路

 

2.1.4温度采样电路设计

本装置采用4个单8通道数字控制模拟电子开关(CD4051),做多可采集32路温度信号。

检测电路原理图如下:

 

图3-检测电路原理图

2.1.5AD转换和DA转换电路设计

本装置AD转换采用10位的AD芯片TCL1549,DA转换采用10位的TLC5615,确保了测量的精度。

具体电路如下:

图4-AD转换电路

图5-DA转换电路

2.1.6人机界面电路设计

本装置面板上采用1个四位LED数码显示,显示各路温度,同时面板上还有三个轻触按键,按键的功能分别是:

上升键、下降键、确认键。

通过按键和显示电路,可以单独设定每路温度的过/欠温值。

具体电路如下图:

图6-人机界面电路图

 

2.1.7通信电路设计

本装置在背板上配有一个RS485通信端口,用户通过该通讯端口,可以在后台读取温度信息,并可以设定每路温度的过/欠温值。

具体电路如下图:

 

图7-RS485通信电路

 

2.2系统的软件设计

在软件系统设计方面,整个温度测控制的软件设计可分为以下几个内容:

1、初始化(采集系统参数设置和参数的存储)

2、AD转换的控制和数据读取

3、显示采集数据

4、后台通信

软件的内容只有通过合理的分配,才能确保整个装置运行的稳定性。

软件的主程序的流程图如下:

 

图8-温度监控系统的软件流程图

 

2.2.1采集系统参数设置和参数的存储的程序设计

根据实际工况的需求可以单独设定每路测量温度的过/欠温值,并将设置好的参数存到CPU内部自带的EEPROM内。

#include

#include

sfrISP_DATA=0xc2;

sfrISP_ADDRH=0xc3;

sfrISP_ADDRL=0xc4;

sfrISP_CMD=0xc5;

sfrISP_TRIG=0xc6;

sfrISP_CONTR=0xc7;

externvoidDelay(unsignedinty);

#defineREAD_AP_and_Data_Memory_Command0x01/*字节读应用程序区和数据存储区*/

#definePROGRAM_AP_and_Data_Memory_Command0x02/*字节编程应用程序区和数据存储区*/

#defineSECTOR_ERASE_AP_and_Data_Memory_Command0x03/*扇区擦除应用程序区和数据存储区*/

/*定义Flash操作等待时间*/

#defineWAIT_TIME0x02voidISP_IAP_enable(void)

{

EA=0;/*closeintermit*/

ISP_CONTR=ISP_CONTR&0x18;/*0001,1000*/

ISP_CONTR=ISP_CONTR|WAIT_TIME;

ISP_CONTR=ISP_CONTR|0x80;/*1000,0000*/

}

voidISP_IAP_disable(void)

{

ISP_CONTR=ISP_CONTR&0x7f;/*0111,1111*/

ISP_TRIG=0x00;

EA=1;

}

/*读字节*/

unsignedintbyte_read(unsignedintbyte_addr)

{

unsignedintm;

ISP_ADDRH=(unsignedchar)(byte_addr>>8);

ISP_ADDRL=(unsignedchar)(byte_addr&0x00ff);

ISP_CMD=ISP_CMD&0xf8;/*1111,1000*/

ISP_CMD=ISP_CMD|READ_AP_and_Data_Memory_Command;/*0000,0001read*/

ISP_IAP_enable();

ISP_TRIG=0x5a;

ISP_TRIG=0xa5;

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

ISP_IAP_disable();

m=ISP_DATA;

byte_addr++;

ISP_ADDRH=(unsignedchar)(byte_addr>>8);

ISP_ADDRL=(unsignedchar)(byte_addr&0x00ff);

ISP_CMD=ISP_CMD&0xf8;/*1111,1000*/

ISP_CMD=ISP_CMD|READ_AP_and_Data_Memory_Command;/*0000,0001read*/

ISP_IAP_enable();

ISP_TRIG=0x5a;

ISP_TRIG=0xa5;

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

ISP_IAP_disable();

m=m<<8|ISP_DATA;

return(m);

}

/*写数据进数据Flash存储器,只在同一个扇区内写,不保留原有数据*/

/*begin_addr,被写数据Flash开始地址;counter,连续写多少个字节;array[],数据来源*/

voidsequential_write_flash_in_one_sector(unsignedintbegin_addr,unsignedcharcounter,unsignedintarray[])

{

unsignedchari=0;

unsignedintin_sector_begin_addr=0;

unsignedintsector_addr=0;

/*擦除要修改/写入的扇区*/

sector_addr=(begin_addr&0xfe00);/*1111,1110,0000,0000;取扇区地址*/

ISP_ADDRH=(unsignedchar)(sector_addr>>8);

ISP_ADDRL=0x00;

ISP_CMD=ISP_CMD&0xf8;/*1111,1000*/

ISP_CMD=ISP_CMD|SECTOR_ERASE_AP_and_Data_Memory_Command;/*0000,0011*/

ISP_IAP_enable();

ISP_TRIG=0x5a;/*触发ISP_IAP命令*/

ISP_TRIG=0xa5;/*触发ISP_IAP命令*/

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

for(i=0;i

{

/*写一个字节*/

ISP_ADDRH=(unsignedchar)(begin_addr>>8);

ISP_ADDRL=(unsignedchar)(begin_addr&0x00ff);

ISP_DATA=(unsignedchar)(array[i]>>8);

ISP_CMD=ISP_CMD&0xf8;/*1111,1000*/

ISP_CMD=ISP_CMD|PROGRAM_AP_and_Data_Memory_Command;/*0000,0010*/

ISP_TRIG=0x5a;/*触发ISP_IAP命令*/

ISP_TRIG=0xa5;/*触发ISP_IAP命令*/

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

begin_addr++;

/*写一个字节*/

ISP_ADDRH=(unsignedchar)(begin_addr>>8);

ISP_ADDRL=(unsignedchar)(begin_addr&0x00ff);

ISP_DATA=(unsignedchar)(array[i]&0x00ff);

ISP_CMD=ISP_CMD&0xf8;/*1111,1000*/

ISP_CMD=ISP_CMD|PROGRAM_AP_and_Data_Memory_Command;/*0000,0010*/

ISP_TRIG=0x5a;/*触发ISP_IAP命令*/

ISP_TRIG=0xa5;/*触发ISP_IAP命令*/

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

begin_addr++;

}

ISP_IAP_disable();

}

2.2.2温度信号经AD转换的程序设计

A/D转换程序是将温度信号的模拟值转换成数字值送给CPU。

unsignedintAD_transition(void)

{

unsignedchari;

unsignedintadtemp;

AD_CS=1;//屏蔽I/OCLOCK

Delay

(2);

AD_CS=0;//使能I/OCLOCK,DATA

Delay

(2);

adtemp=0;//变量清零

for(i=0;i<10;i++)//循环采集10次

{

AD_CLOCK=0;

Delay

(2);

adtemp<<=1;

if(AD_DATA){adtemp++;}

Delay

(2);

AD_CLOCK=1;

Delay

(2);

}

Delay(10);

AD_CS=1;

Delay(100);

return(adtemp);

}

2.2.3后台通信

本装置可以通过RS485口,读取温度信息,并可以设定每路温度的过/欠温值。

oidtransmit_data(void)

{

unsignedinti,j,k;

unsignedchar*pointer,n,m;

if(r_full==1)//判读数据是否接收完成

{

r_full=0;r_counter=0;

i=CRCcheck(buffer_r,6);//CRC校验

j=CHARtoHEX(buffer_r+6);

if(i!

=j)return;

pointer=buffer_t;

if(add1_flag==1)

{

*pointer++=(0x6e+communicate_add1);

if(buffer_r[1]==3)

{

*pointer++=3;

k=CHARtoHEX(buffer_r+4);//字节数是字符型数据,读取数据个数

*pointer++=(unsignedchar)k<<1;

n=CHARtoHEX(buffer_r+2);

if(n<25)//发送24路温度数据

{

for(i=0;i

{

m=n+i;j=i<<1;

HEXtoCHAR(sys_data1[m],buffer_t+(3+j));

}

}

if((n>=108)&&(n<111))

{

for(i=0;i

{

m=n+i-108;j=i<<1;

HEXtoCHAR(tvi_data1[m],buffer_t+(3+j));

}

}

k<<=1;

j=CRCcheck(buffer_t,k+3);

HEXtoCHAR(j,buffer_t+k+3);

t_number=k+5;

}

t_flag;

t_counter=0;

Delaynms

(2);

TI=1;

}

 

3.装置内部线路板布局方案

装置内部电路主要由CPU控制电路、温度信号采集电路、按键和显示电路、通信电路组成,具体的分布情况如下图所示:

4.系统设计总结

本系统设计一种基于基于51系列单片机位控制核心的温度监测系统。

在温度测量上,使用了高精度的LM35CA温度传感器,具有精度高、系统扩展性强、可靠性高、实时性能好、体积小、功耗低等特点,为中范围温度监测应用提供了一个良好的通用型解决方案,具有良好的前景和推广价值。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1