APP下载

恒温箱温度检测仪的设计

2016-07-23杨瑞俊

山西电子技术 2016年2期

杨瑞俊

(山西职业技术学院电子工程系,山西 太原 030006)



恒温箱温度检测仪的设计

杨瑞俊

(山西职业技术学院电子工程系,山西 太原 030006)

摘要:为了满足电子设备恒温箱对温度实时监测的要求,设计了一个功能丰富的温度检测仪。选取了MSP430F449作为CPU。对微型的温度传感器TMP102以及Flash存储器SST25VF032B做了详细的分析,并根据实际需求对芯片的功能进行了适当的取舍。将采集回的温度数据进行分析处理,提出了创新的温度值存储机制,形成合理的文件系统,可以快速检索历史数据,实现了多样化的数据查找方式。

关键词:温度检测仪;TMP102;Flash存储器

现代电子设备越来越趋向于精密化与复杂化,对工作环境提出了苛刻的要求,温度的过高或过低都会导致其中元器件的性能降低、寿命缩短。因此恒温箱的应用越来越广泛。恒温箱控制系统中温度检测仪的性能直接影响后端控制的准确性。此项目所设计的温度检测仪具有体积小、数据存储容量大、功耗低等特点。论文主要专注于解决温度采集以及数据存储与查询问题。通过选用MSP430芯片作为主控制器,进行合理的软硬件设计,满足了市场对功能的需求,具有良好的前景。

1系统设计

本设计的微处理器采用TI公司的MSP430F449。MSP系列单片机是目前市场化最成功的专用于低功耗设计的处理器,在有关节能环保、智能家居以及手持设备等领域应用广泛。MSP430F449是一款性能卓越的16位单片机,具有超低的静态电流,灵活多变的时钟配置方式,多达5种的低功耗模式,最快可达6 us的唤醒时间以及丰富的外设等众多优异性能[1]。该型号单片机完全能够满足本设计对性能的要求,且具有较高的性价比。

温度传感器选用的是一款低功耗数字温度传感器,同样来自TI公司的TMP102。在温度为-25 ℃~+85 ℃的范围之内时,精度为0.5 ℃,由于环境温度是个缓变量,并且温度在0.5 ℃之内变化时电子设备质量不会发生变化,因此精度也满足要求。输出的温度值是数字信号,简化了与CPU之间的电路,同时其封装为SOT563,包含引脚在内的厚度仅为0.6 mm,缩小了产品的体积。

在温度采集过程中会产生大量的数据,需要有专门的外部存储器进行保存。SST25VF032B是微芯公司推出的Flash存储器,具有4 MByte存储容量、SPI串行通信接口、灵活的擦除策略以及快速的擦除与访问能力。

此外,还有程序仿真下载接口、按键输入部分、射频通信部分、电源部分。系统框图如图1。

图1 系统设计框图

2温度采集设计

2.1温度值的采集

TMP102采用的是Two-Wire通信方式。内部含有五个寄存器,分别为Pointer寄存器、温度寄存器、配置寄存器、TLOW寄存器和THIGH寄存器。通过对Pointer寄存器的设置来决定下一步CPU访问其他四个寄存器的哪一个。该传感器具有两种温度数据格式,13 bit与12 bit,两种格式的分辨率一样,只是13 bit的高温范围为150 ℃,高于12 bit的128 ℃。当环境温度到达100 ℃的高温时,早已超过了设备正常运行的范围,所以12 bit的数据格式已能满足需求。TMP102具有四种不同的转换速率,由控制寄存器中的CR1、CR0两位来决定,本设计将其设置成最快的8 Hz,利于提高采样速度。完备的警告功能是该芯片的一个特色,可以通过修改TLOW寄存器和THIGH寄存器的值,设置正常温度范围的上下限,当超出这一范围时,外围管脚ALERT电平会发生变化。此外,TMP102作为Two-Wire通信中的从设备,根据A0管脚的接法不同,具有四种从设备地址[2]。本设计中将A0管脚与V+管脚连接,因此从设备地址为二进制数1001001。

在读取温度值的过程中,首先需要发送0x93,前七位表示从设备地址,最后一位设置接下来的操作是读还是写,‘1’表示为读。当成功接收到TMP102的握手信号后,CPU需要准备接收两个字节的温度值。

如果需要修改某个寄存器的值,主机首先需要发送0x92,最后一位‘0’表示要写。随后的一个字节发送的是Pointer寄存器的值,最后两位P1、P0的值决定了要修改的寄存器。紧接着就需要发送要修改的值。因此读取温度之前如果有修改寄存器的操作,需要首先将P1、P0的值改为默认的00,表示之后操作的是温度寄存器。

2.2温度值的数据处理

TMP102分辨率可达0.062 5 ℃。当温度值数据格式为12 bit时,采集的范围为-55 ℃~128 ℃。温度寄存器分为两个字节,12位的数据分别存放于高字节与低字节的前4位。Two-wire协议接收的时候是单个字节接收的,所以首先需要通过高字节左移8位与低字节相加的方法,将两个字节的数据存入一个16位的变量中。此时温度值占据的是变量的高12位,将其右移4位便于数据处理。通过实测发现,环境实际温度与传感器检测的数据有一个极其微小的差距,所以需要在最后的数据上添加上这个微小的偏差。

TMP102温度值采用的是补码形式,为了满足显示的需要,此处将补码转化成BCD码,并须有正负的信息。需要五个字节来存放最后的数据,一个字节存放正负信息,0表示正数,1表示负数,两个存放整数部分的BCD码,一个存放小数部分的BCD码。程序处理过程中,通过12位中的最高位来判断正负,负数需要将补码转为原码。无论正负,将原码乘以分辨率0.062 5 ℃,结果转化为BCD码。程序流程如图2。

图2 温度数据处理流程图

3温度值的存取设计

3.1SST25VF032B的访问

SST25VF032B的通信方式为SPI,具有多达17种命令,功能丰富。

SST25VF032B的读命令有两个,Read与High-Speed-Read。Read的读取速度为25 MHz,而High-Speed-Read可达80 MHz,远远超过一般单片机的访问速度。还有一个特点,读命令是可以连续读的,地址为自动增加,一直到片选信号CE#变为高电平截止,大大增强了访问的速度。当读取完整个Flash最后一个地址的字节后,Flash会自动返回输出第一个地址的数据。进行读操作时,首先主机向设备发送0x0B,随后发送三个字节的起始地址,以及紧跟一个无效的字节。之后便可以依序接收数据。

SST25VF032B具有灵活的写保护功能。管脚WP#与状态寄存器里面的BPL、BP3、BP2、BP1与BP0五个位共同实现写保护功能。当WP#输入为高,处于写保护状态,同时禁止任何对BPL、BP3、BP2、BP1与BP0的修改。当WP#输入为低,可以修改BPL位。BPL位决定了主机是否可以修改BP3、BP2、BP1、BP0,BPL位为1时候,禁止修改。BP3、BP2、BP1、BP0四位决定了写保护的范围。当为十进制0时,整个Flash没有写保护,此时可以对其进行擦除与写操作。为十进制数1时,只保护Flash的1/64,即地址3F0000H~3FFFFFH。为十进制2~7时候,分别保护Flash的1/32、1/16……直到全部[3]。当进行写与擦除操作之前,需要断开WP#硬件保护及取消状态寄存器的软件保护。

擦除是SST25VF032B的一个特色。具有四种擦除机制。可以分别以整块、4 KByte扇区、32 KByte块、64 KByte块为单位进行擦除。经过对本设计要求的分析,主要采取4 KByte扇区擦除的方式。这样整个Flash就被分成了4M/4K=1 024个扇区,每个扇区中有4 096个字节。整个Flash共有4M个字节,地址需要占用24位,字节地址的高12位表示扇区地址。在擦除过程中,状态寄存器的BUSY位为1,当成为0时表示擦除操作完成。

进行擦除操作之前,需置WP#管脚为低,同时发送读取状态寄存器命令RDSR,确认BUSY为0以及WEL(写使能位)为1。当不满足要求时,发送EWSR(使能状态寄存器修改)命令,允许修改状态寄存器。通过WRSR命令写入0x00,BPL、BP3、BP2、BP1、BP0为0,解开软硬件的写保护。接着需要发送WREN(写使能)命令,设备会将WEL位置1。最后读取状态寄存器的值,看值是否为0x02,如果不是,重复上述操作,直到修改成功。此时可以发送扇区擦除命令0x20,其后跟着三个字节的地址,设备只取前12位为扇区地址。之后不断检测BUSY位,当变为0时,整个擦除过程结束。

写命令有Byte-Program与AAI两种,第一种每次可以写入一个字节,AAI为地址自动增加写命令。AAI每次可写入两个字节,当Flash存入这两个数之后,主机可以连续发送下两个字节,而不需重新输入地址,加快了速度。但这两个字节存放的地址是对齐的,即第一个字节存放的地址最后一位为0,第二个字节存放的地址最后一位为1。与擦除命令之前的准备工作一样,写操作也需要完成对状态寄存器同样的设置。

3.2创新的温度值的存取机制

为了满足多样化的设置需求,本检测仪可以通过上位机来设置采集启动时间、采集间隔。要求存储多种数据,同时为了以后历史数据查询的方便,需要设计合理的数据存储策略。

每次上位机传下来新的采集时间间隔,检测仪需要按照新的配置重新启动一次新的任务。此时,数据存储从新的一个扇区开始。首先需用Sector-Erase命令将这一扇区擦除。每个任务的开头需要存放的信息有任务起始时间(年、月、日、时、分、秒)、温度采集间隔(时、分、秒),分别占用16个字节、6个字节、3个字节。每个温度值需占用2个字节。温度值为从温度传感器TMP102读取回来,右移四位,并加上偏差值的数据。温度值采用AAI命令写入,其他数据采用Byte-Program命令。

我们搜索某次任务的温度值时,只需要检测每个扇区开头的任务起始时间就可以检索到相应的历史数据。但一次任务所占空间可能会超出一个扇区。占据多个扇区的任务只有它所占据的第一个扇区的开头是任务起始时间,而其他扇区是温度值。这就给检索造成了障碍。我们定义在每次任务的开头首先存入0xAA,表示一次任务的开头。在整个任务的结尾存入0x55,表示一次任务的结束。通过这样的设置,可以支持上位机多种的搜索需求。可以查找某次任务的温度数据,也可以查找某次任务某一时刻的温度数据,还可以查找异常值等等。数据存储的流程图如图3所示,查找某次任务的温度数据程序流程图如图4所示。

图3 温度值存储流程图

图4 数据搜索流程图

4测试结果

以一次时间较短的、间隔较长的任务为例来对本系统进

行测试。假设启动时间设置为2015年1月1日15点整,每隔3秒采集一次数据,采集1分钟,即一共采集20个数据。在这一分钟之内,采用改变温度传感器周围的环境温度的办法来检测温度检测仪是否能正常工作。先迅速加热,之后降温。采集的温度值首先存入到Flash中,再从Flash中读取出来。图5所示为IAR开发工具的一个截图,所示为内部RAM的数据,黑色部分为采集回的数据,共51个字节。

图5 采集回的某次任务的所有数据

将温度值提取出来,乘以分辨率0.062 5 ℃,保留小数点后1位,四舍五入,整理成波形如图6所示。可以明显的看出温度变化趋势,首先是18.3 ℃的室温,之后先升后降,由于时间较短,最后温度没有降到室温。

图6 温度变化曲线

5结论与展望

本设计中采用MSP430F449作为系统的CPU,利于以后的低功耗设计。对温度传感器TMP102以及Flash SST25VF032B做了详细的研究,根据本项目实际要求,充分利用了这两者的功能。对温度传感器采集回来的数据进行了科学有效的处理,并设计了合理的存储机制,充分利用了FLASH的存储空间,满足了上位机对数据搜索快速、多样灵活的要求。

参考文献

[1]沈建华,杨艳琴.MSP430系列16位超低功耗单片机原理与实践[M].北京:北京航空航天大学出版社,2008:26-30.

[2]Low Power Digital Temperature Sensor With SMBus?/Two-Wire Serial Interface in SOT563[EB/OL].Texas Instruments,2007.

[3]32 Mbit SPI Serial Flash SST25VF032B Data Sheet[EB/OL].Silicon Storage Technology,Inc,2011.

收稿日期:2015-11-27

作者简介:杨瑞俊(1984- ),男,山西晋中人,助讲,硕士研究生,研究方向:信号与信息处理。

文章编号:1674- 4578(2016)02- 0005- 03

中图分类号:TP273.5

文献标识码:A

Design of the Temperature Detector for Thermostat

Yang Ruijun

(ElectronicEngineeringDepartment,ShanxiPolytechnicCollege,TaiyuanShanxi030006,China)

Abstract:In order to meet the requirements for real-time detection of temperature in the thermostat, a feature-rich temperature detector is designed based on MSP430F449 MCU. This paper analyzes in detail the micro TMP102 temperature sensor as well as Flash memory SST25VF032B and the chip functions are chosen according to the actual demand. The temperature data captured is analyzes and processed. This design presents an innovative temperature storage mechanism, forms a reasonable file system. With it, the historical data can be retrieved quickly and realize the diversified data-searching method.

Key words:temperature detector; TMP102; Flash memory