基于TSIC506的高精度温度检测系统的设计

时间:2022-09-02 04:46:09

基于TSIC506的高精度温度检测系统的设计

摘 要: 以ATmega16单片机为控制核心, 利用数字化温度传感器TSIC506实现高精度温度检测系统。论述了该系统的硬件组成和软件设计, 给出了系统总体结构及相应的ATmega16单片机温度测量程序。实际应用表明, 该温度检测系统具有结构简单、成本低、稳定实用等特点, 可根据不同需要应用于多种工农业温度检测领域。

关键词: 温度测量; TSIC506; ATmega16; 串行通信

中图分类号: TN911?34; TP216+.1 文献标识码: A 文章编号: 1004?373X(2013)13?0134?04

Design of high?precision temperature detecting system based on TSIC506

DUAN Ying?hong1, LIU Xiu?hong1, TANG Shao?jie2, GAO Ming?hui3

(1. Tianjin University of Science and Technology, Tianjin 300222, China; 2. Tianjin CRT New Sources of Energy Co., Ltd., Tianjin 300402, China;

3. Changchun Institute of Optics, Fine Mechanics and Physics, CAS, Changchun 130033, China)

Abstract: A high precision temperature detecting system was designed by using the digital temperature sensor TSIC506 by taking ATmega16 as its control core. The hardware composition and software design of the system are discussed. The system overall structure and corresponding temperature measuring program of ATmega16 are provided. The practical application indicate that the temperature detecting system has strong characteristics of simple structure, low cost high reliability, stable performance and practicality, it could be applied in various industrial and agricultural temperature measuring area in accordance with different requirements.

Keywords: temperature measurement; TSIC506; ATmega16; serial communication

0 引 言

温度是反映物体冷热状态的物理参数[1],在工农业生产、国防、科研等领域常常需要对温度进行检测和控制[2]。特别是在工农业生产中,为保证产品的质量,往往对温度检测的精确度和可靠性要求更高[3]。而常用的温度传感器如热电阻、热电偶、热敏电阻等传感器则很难达到高精度这一要求[4]。针对这种情况,本文利用单总线式数字温度传感器TSIC506设计了一个高精度温度检测系统。实验结果表明,该检测系统可以达到0.1 ℃检测精度。

1 硬件设计

1.1 系统结构原理

系统的基本组成如图1所示,由系统参数输入模块、LCD显示模块和温度测量模块、报警模块、串行通信等部分组成。其中,系统参数输入模块主要用来接收用户设定温度阈值,测量方式选择,测量时间间隔等参数的设计,主要由键盘电路组成[5]。主控单元由AVR单片机中的ATmega16及电路组成,主要用来接收系统参数的设定,并对设定的参数并进行处理[6]。ATmega16向温度测量网络发送控制指令并接收温度测量网络的数据,同时根据用户要求,将处理结果发送到LCD显示器件或者报警器件,一旦系统出现工作异常,出现预置值与输出值偏差过大,用户可以根据该信息予以处理。采集数据还可以通过RS 232接口传到上位计算机。系统采用单片机作为主要控制部件,使用的芯片较少,这样可以减低成本,也便于系统功能的扩展,易于实现智能化控制[7]。

图1 温度检测系统基本结构

1.2 温度测量电路

温度测量网络由TSIC506组成, TSIC506是德国ZMD公司生产的一款高分辨率、高精度、实现温度信号采集的芯片,具有不同的精度等级,在不同测量范围内对应的精度见表1 [8]。

为了使温度读取更加灵活,在本系统中,由ATmega16单片机主动控制TSIC506的工作状态以及启动温度读取。由于TSIC506的功耗极低,因此采用单片机的一个普通I/O口做为TSIC506电源端。当需要读取温度时,该I/O口输出高电平,启动TSIC506工作,65~85 ms后ATmega16单片机就可以得到温度值。单片机还可以拉低该引脚,关闭TSIC506的温度读取。同时为保证TSIC506的测量精度和工作稳定性,避免引入单片机的电源噪声,TSIC506电源引脚采用了RC滤波电路。本系统可以实现单点温度检测或者多点温度检测。当进行多点温度检测时,启动多个温度传感器组成的网络。

表1 TSIC506的温度测量范围及对应的精度

[测量范围 /℃\&精度 /℃\&5~45\&

>-0.1\&-10~60\&

>-0.1\&]

TSIC506引脚功能见表2。

表2 TSIC506引脚功能

[引脚\&名称\&说明\&1\&V+\&电源电压\&2\&Signal\&温度输出信号\&4\&GND\&地\&]

TSIC506 与单片机的连接电路如图2所示。

图2 TSIC506接线方法

1.3 主控模块电路图

主控电路如图3所示。系统采用ATmega16作为核心处理器件, 把经过TSIC506现场实时采集到的温度数据,存入ATmega16的内部数据存储器,送到液晶屏显示,同时将实时温度值与预先设定的初始值进行比较,通过比较结果确定单片机的输出信号。当系统发生突发故障时,系统报警电路驱动报警灯闪亮、蜂鸣器长鸣。

1.4 串行通信模块电路[9]

为将温度检测的数据传往上位机,采用了串行通信模块电路。由于电脑串口RS 232电平是-10 V、+10 V,而一般的单片机应用系统的信号电压是TTL电平0~+5 V,因此串行通信模块由MAX232芯片及电路组成。MAX232包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA?232?F电平。该器件符合TIA/EIA?232?F标准,每一个接收器将TIA/EIA?232?F电平转换成5 V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA?232?F电平,其电路图如图4所示。

图4 串行通信模块电路

1.5 参数输入模块

参数输入模块电路如图5所示,主要通过按键输入温度的初始值,也可以对读取温度进行控制。本系统配有16个按键,可根据需要设定每一按键具体功能。

1.6 显示模块及报警模块

系统配有LCD显示模块,采用LCD1602进行显示。LCD1602具有微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,使用该芯片可以缩小本系统体积。芯片的工作电压为4.5~5.5 V,能显示两行,每行显示16个字符,字符的大小[10]为2.95 mm×4.35 mm。LCD1602接线方法如图6所示。

图5 参数输入模块电路

图6 LCD显示模块电路

报警电路如图7所示。

图7 报警电路

2 软件设计

2.1 系统流程

软件设计程序主要有:主程序、初始值设定子程序、温度读取子程序、液晶显示子程序和输出控制子程序等。初始值设定子程序完成对温度初值进行设定并将温度数据保存,温度读取子程序完成对温度传感器TSIC506数据的读取,液晶显示子程序将从TSIC506中读取的数据通过液晶显示器LCD1602显示三位温度值[11?12];输出控制子程序则根据实时检测的温度数值完成向上位机传送。

系统软件采用ICC AVR编制,具体软件程序流程图如图8所示。

图8 系统程序流程图

2.2 TSIC506的通信协议

TSIC506采用ZAC线通信协议,ZAC总线是一种单总线双向通信协议。位编码类似于时钟信号嵌入信号中的曼彻斯特编码(发生标准时钟信号下降沿)。TSIC506提供11位温度数据方案,一次完整的温度数据传输包括2 B包。第一个字节包为高3位温度信息,第二个字节包为低8位温度信息。每一个字节包都包含1个起始位、8个数据位和1个奇偶位。在结束第一个字节包的传输,开始第二个字节包的传输时,有一个单位宽的常高,即结束位。11位二进制温度数据与十进制温度(单位:℃)的转换公式为:

温度=数字量/2 047×70 -10

TSIC506 的位编码格式采用的占空比如图9所示。

图9 TSIC506编码格式

2.3 温度检测子程序

TSIC506温度检测子程序中TSIC506电源引脚接在PA0,信号输出接在PA1,程序中所用的晶振波频率为8 MHz,源程序如下:

/***************TSIC506初始化程序*****************/

void TSIC_INIT()

{

DDRA|=BIT(0); //将PA0口设置为输出

PORTA&=~BIT(0); //设置PA0口为0

DDRA&=~BIT(1); //输入

}

#define TSIC_ON() PORTA|=BIT(0)

#define TSIC_OFF() PORTA&=~BIT(0)

#define TSIC_SIGNAL()(PINA & 0X02)

/**************************************************

* FUNCTION MACROS

**************************************************/

unsigned long int getTSicTemp (temp_value16)

{

temp_value1 = 0;

temp_value2 = 0;

TSIC_ON();

while (TSIC_SIGNAL()); //wait until start bit starts

while (TSIC_SIGNAL() == 0x00); //first data byte

for (i1 = 0; i1 < 9; i1++) //read 8 data bits and 1 parity bit

{

while (TSIC_SIGNAL()); //wait for falling edge

delay_nus(22.96876); //call delay

if (TSIC_SIGNAL())

temp_value1 |= 1

else

while (TSIC_SIGNAL() == 0x00);

//wait until line comes high again

}

//second byte

while (TSIC_SIGNAL()); //wait, TStrobe

while (TSIC_SIGNAL() == 0x00);

//read 8 data bits and 1 parity bit

for (ii=0;ii

{

while (TSIC_SIGNAL()); //wait for falling edge

delay_nus(22.96876);

if (TSIC_SIGNAL())

temp_value2 |= 1

else

while (TSIC_SIGNAL() == 0x00);

//wait until line comes high again

}

TSIC_OFF();

3 结 论

测温系统采用了集成度高、功耗低的ATmega16作为核心微处理器,通过传感器TSIC506实现对温度测量,并进行存储和显示。本检测系统已成功应用于水果保鲜库环境温度的检测,实际应用表明:当外界温度试验的范围设定在-5~50 ℃,可确保测量误差不超过0.1 ℃,另外,在该系统的基础上也可以扩展其他信号,如湿度、压力等。

参考文献

[1] 赵勇,伍先达.高精度温度快速测量系统设计[J].自动化与仪器,2008(6):21?23.

[2] 彭远芳,赵又新.高精度温度采集系统[J].仪表技术与传感器,2007(5):45?46.

[3] 吉同根.高精度宽范围温度传感器的特点和使用[J].无线电,2009(8):8?9.

[4] 张修太,胡雪惠,翟亚芳,等.基于PT100的高精度温度采集系统设计与实验研究[J].传感技术学报,2010(6):812?815.

[5] 宋永东,白宗文,周美丽,等.一种高精度温度测量系统的设计[J].嵌入式系统应用,2009(14):61?63.

[6] 周兴华.AVR单片机C语言高级程序设计[M].北京:中国电力出版社,2008.

[7] 沈慧娟.一款高精度温度控制器的设计与制作[J].福建电脑,2010(6):142?143.

[8] 梁丹华,赵世华,王福增,等.高精度数字型温度传感器tsic506的原理及应用[J].装备制造技术,2010(12):26?28.

[9] 马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.

[10] 王心水.一种基于单片机的多功能温度控制器的设计[J].电子技术,2010(1):45?47.

[11] 于志赣,刘国平,张旭斌.液显LCD1602模块的应用[J].计算机技术应用,2009(3):21?23.

[12] 朱华光.浅议LCD1602的编程技巧[J].电脑知识与技术,2010(6):4980?4982.

上一篇:基于共模扼流圈的高速CCD驱动电路 下一篇:基于ADPCM的数字语音存储与回放系统