引言
随着工业化技术的不断发展,疫苗、生物制剂和药品等对温度敏感的商品在加工、储存、运输、销售等过程中,需要对各个过程中的温度参数进行记录跟踪,以保证产品质量,这就是冷链体系。药品冷链由冷冻加工、冷冻贮藏、冷藏运输及配送、冷冻销售4个方面构成,而在冷藏运输及配送环节最容易出现问题。药品冷藏运输及配送需要温度保持在2~8 ℃范围内,而原有监测技术手段滞后是最大的技术瓶颈[12]。为了保证在药品冷藏运输及配送环节实现温度监控,克服实时性差、监管脱节、取证和责任界定困难的不足,本文设计了一种可实现温度数据自动存储、非接触式读出的冷链温度记录仪。
1系统总体结构及功能
1.1系统总体结构
冷链温度记录仪主要由温度传感器、微控制器和数据存储器组成,如图1所示。整个系统基本工作流程是:首先温度传感器利用内部A/D转换器将采集的温度值转换后得到相对应的数字量,接收到微控制器发出的串行时钟脉冲(SCL)和读数据指令后通过I2C总线将数据传送至微控制器,微控制器对温度传感器传送的数据进行相应处理,然后微控制器向存储器发出串行时钟脉冲(SCL)和写数据指令,通过I2C总线将数据存储于数据存储器内。
图1系统总体结构
1.2系统功能
冷链温度记录仪应用在药品冷藏运输及配送环节,需要考虑产品的耐温性能、续航时间、数据存储能力,因此器件选择需要考虑器件适用温度范围、数据传输方式和速度、功耗等多方面因素。温度记录仪应当具有以下功能:
◆ 测量温度范围2~8 ℃,测量精度±0.5 ℃。
◆ 系统功耗低,续航时间长。
◆ 数据存储空间大,数据读取方便。
◆ 体积小,便于安装。
◆ 更换电池方便,价格低,可循环使用。
2硬件电路设计
2.1器件选型
(1) 温度传感器
温度传感器选用ST(意法半导体)公司生产的STTS75数字温度传感器,它内置一个9~12位A/D转换器,温度测量范围-55~125 ℃,供电电压为2.7~5.5 V,在3.3 V电压下工作电流为75 mA。STTS75有8个引脚,A2、A1、A0三个引脚可实现8个传感器共用同一条总线而不会发生地址冲突(地址为1001A2A1A0),SCL、SDA通过I2C总线可以将传感器配置为比较模式、中断模式、关闭模式和单发模式。在单发模式下,通过对数据的间歇性采集,可以达到降低功耗的目的。首先将传感器设置为关闭模式(shutup mode,电流只有1 μA),当微控制器发送信号启动单图2冷链温度记录仪硬件电路发模式后采集一次温度数据,数据采集完成后自动进入关闭模式,即传感器处于休眠状态[3]。
(2) 微控制器
微控制器选用ST公司的8位低功耗单片机STM8L101F3,它具有16 MHz RC振荡器和38 kHz RC振荡器,8 KB Flash,3种低功耗模式,具有自动唤醒功能,供电电压1.65~3.6 V[4]。STM8L101F3具有5.1 μA低功耗工作模式、3.0 μA低功耗等待模式、1.2 μA暂停模式、350 nA停止模式4种电源管理模式。在暂停模式下可以利用自动唤醒单元(AWU)设置自动唤醒时间间隔。
(3) 数据存储器
数据存储器选用ST公司2010年新推出的M24LR64,它是一款内置标准I2C串口和ISO15693标准RF接口的EEPROM存储器,供电电压1.8~5.5 V,具有64位唯一标识符(UID),I2C传输频率为400 kHz,RF传输载波频率13.56 MHz,存储器容量64 KB,采集数据可保留40年[5]。M24LR64有8个引脚,SCL、SDA通过I2C总线实现数据的存储,E1、E0为器件选择码(b2b1位),在不接的情况下默认为0,AC0、AC1为天线线圈连接端。M24LR64提供一个ISO15693标准的 RF接口,可与RFID阅读器进行无线通信。ISO15693是一种无源RFID标准,能同时从RF系统获取电能和数据。在RF模式下,读写M24LR64不需要电源,从而节省板上电源,轻松、便捷地无线存取电子产品参数。
2.2硬件系统工作原理
冷链温度记录仪由温度传感器、微控制器和数据存储器组成,硬件电路如图2所示。温度传感器STTS75、微控制器STM8L101F3和数据存储器M24LR64都是低功耗产品,3 V纽扣电池即可实现冷链温度记录仪系统供电。系统上电后,微控制器STM8L101F3首先实现初始化操作,通过I2C总线向STTS75内部配置寄存器(Configuration Register)写入配置信息,使其工作模式为关闭模式、模/数转换为9位模式,然后STM8L101F3向配置寄存器写入数据使STTS75处于单发模式。STTS75进行一次温度数据采集,在数据转换完成后将自动进入关闭模式,等待下一次唤醒。接着STM8L101F3从温度寄存器(Temperature Register)内读取温度数据,进行数据处理,继而通过I2C总线将处理后的数据写入M24LR64内,最后进入暂停模式。经过AWU设置的延时时间后,STM8L101F3将自动唤醒,向STTS75发送配置信息使其进入单发模式,然后读取数据、处理数据,并将处理后数据存入M24LR64的下一空间内,接着进入暂停模式。周而复始即可实现温度数据在固定时间间隔内的采集、处理和存储。
图2冷链温度记录仪硬件电路
3软件设计
软件开发环境选用ST Visual Develop (STVD) IDE,软件设计采取模块化思想,主要由温度数据采集、数据处理和数据存储3个部分组成。系统上电后首先进行传感器和M24LR64的初始化,然后对传感器进行配置,数据转换结束后进行数据读取,然后将数据存储于M24LR64内,数据存储完成后进入暂停模式,AWU功能启用,延时一段时间后将自动唤醒微控制器重复以上操作,具体流程如图3所示。
图3冷链温度记录仪软件流程
冷链温度记录仪程序主要由传感器初始化函数、M24LR64初始化函数、传感器配置函数、读传感器数据函数、温度数据处理函数和写M24LR64程序组成。在程序起始的时候需要定义I2C传输速度,声明传感器和M24LR64的地址以及M24LR64写入数据的起始地址。传感器配置函数主要进行ADC输出数据位数(9,10,12)和传感器模式(shutdown,oneshot)配置。部分主要代码如下:
#define I2C_Speed 100000/*100kHz*/
#define EEPROM_BASE_ADDRESS 0x0000
uint8_t EEPROM_ADDRESS=0xA0;
uint8_t SENSOR_ADDRESS=0x90;
……
void I2C_EEInit_EEPROM(void){
I2C_DeInit();
I2C_Cmd(ENABLE);//I2C周边使能
I2C_Init(I2C_Speed, EEPROM_ADDRESS, I2C_DutyCycle_2,I2C_Ack_Enable, I2C_AcknowledgedAddress_7bit);
}
void I2C_EEInit_SENSOR(void){
I2C_Cmd(ENABLE);//I2C周边使能
I2C_Init(I2C_Speed, SENSOR_ADDRESS, I2C_DutyCycle_2,
I2C_Ack_Enable, I2C_AcknowledgedAddress_7bit);
}
ErrorStatus I2C_SS_Config(uint16_t ConfigBytes);
ErrorStatus I2C_SS_BufferRead(uint8_t* pBuffer, uint8_t Pointer_Byte, uint8_t NumByteToRead);
ErrorStatus I2C_EE_ByteWrite(uint8_t* pBuffer, uint16_t WriteAddr);
void main(){
I2C_EEInit_EEPROM();//初始化EEPROM
I2C_EEInit_SENSOR();//初始化温度传感器
I2C_SS_Config(0x0103);//ADC输出为9位,存储于16位温度寄存器,进入关闭模式
……
I2C_SS_Config(0x0183);//启动单发模式
……
I2C_SS_BufferRead(pBuffer, 0x00, 0x02);
//读取温度寄存器中数据并存于pBuffer中
……
ErrorStatus I2C_EE_ByteWrite(pBuffer, WriteAddr);
//向EEPROM写数据
……
}
结语
本文设计了一种由低功耗微控制器STM8L101F3、数字温度传感器STTS75和数据存储器M24LR64构成的冷链温度记录仪。经测试表明:记录仪测量精度为±0.5 ℃,记录时间间隔可自行设置(1 s~255 min),可以记录8192组温度数据,由3 V纽扣锂电池供电,在记录间隔设置在10 s以上的情况下,可以使用1年(室温环境)、3个月(冷藏环境)。与传统的冷链温度记录仪利用RS232、I2C、SD卡、USB方式读取数据相比[68],利用M24LR64实现的冷链温度记录仪具有电路硬件少、结构简单、低功耗、低成本、高稳定性、自行设定数据采集间隔、存储空间大、RF方式读取数据、电池更换方便、可循环利用、不需要打开包装、易于管理等诸多优点,可以广泛应用在食品、药品、鲜花等物品的冷藏运输及配送环节,并且将STTS75的工作方式稍加修改就可以用于恒温箱的温度监控系统中,具有广泛的实际应用前景。