基于MSC1210的多路高精度温度采集系统模块
摘要:介绍了一种以MSC1210作为核心器件的多通道、高精度、快速温度采集系统的设计思路。着重介绍了以MSC1210构成的高精度测温模块。
关键词:MSC1210 高精度测温 模块化 多路测量
在许多传统行业中,多路高精度温度采集系统是不可或缺的。电厂、石化行业、钢铁厂以及制药厂等企业使用了大量的各类测温器件,如热电阻、热电偶等,这些器件需要定期校准;在严格执行GMP规范的制药厂等企业,高温灭菌需要定期进行灭菌率的验证;在某些要求进行严格的温度控制的场合,也需要进行多点高精度温度测量。这些工作往往需要一多路高精度测温系统来完成。
在被测温度变化缓慢的情况下,可以使用多路扫描开关配以一个高精度测温表进行多路温度测量以及数据采集。但在温度测量点数目较多、被测温度变化较快的场合,如大量热电阻、热电偶的自动计量检定系统以及高温灭菌箱自动验证系统中,传统的扫描式多路温度测量系统不无法满足要求了。近年来,随着高精度A/D转换器件价格的不断下降以及A/D转换器件功能的不断完善,研制廉价的多路、快速、高精度温度采集系统成为可能。
美国德州仪器公司(TEXAS INSTRUMENTS)新近推出了一种功能很强的带24位A/D转换器的微处理器MSC1210。MSC1210具有一些增强特性,特别适合测量高精度温度、压力传感器等输出的微弱信号。
本文介绍以MSC1210作为测量、信号处理以及通讯核心的多路高精度温度采集系统模块。该系统测量通道易于扩充,温度测量精度高,可以快速地进行多路高精度温度测量。
图1 多路高精度测温系统框架
1 多路高精度测温系统框架
系统由主机与多个智能测温模块组成。模块与主机之间通过光电隔离的SPI接口进行通讯,使用带有CRC纠错的自定义指令集控制数据传输,主机带有计算机接口(RS232串口以及USB接口)。系统框架参见图1。
智能测温模块由MSC1210微转换器构成,模块本身具有完整的信号调理、A/D转换、数据修正计算及变换内部标准等功能。为了避免外部干扰对A/D转换的影响,SPI接口使用高速光电耦合电路,并采用模块自带的稳压电路供电。由于一个模块只能处理1~4路温度,因此可以同步进行多组模块的温度测量,大大加快了多点温度测量的速度。主机用来控制测温模块,从测温模块中读取温度数据并处理,同时完成人机接口以及其它功能。视应用场合的不同,主机可以使用多路类型的单片机,这里选用ATMEL公司的ATmega128。该款CPU采用Harvard流水线结构以及RISC指令,并具有较大程序容量(128KB)的FLASH,在16MHz主频下可以达到16MIPS的处理速度。
2 MSC1210的增强功能及使用注意事项
作为智能高精度测温模块的核心,MSC1210完成了微弱信号的多路切换、信号缓冲、PGA编程放大、24位∑-ΔA/D转换、数字滤波、数据处理、信号校准以及SPI通讯等功能。
MSC1210集成了一个8通道24位∑-ΔA/D转换器,采用8051兼容内核。与笔者之前使用的ADuC824相比,其有如下增强的功能:
(1)CPU工作频率可达33MHz,每条指令只需4个时钟周期,运算速度较快。
(2)采用非常灵活的FLASH与SRAM存储器配置,,可以对片上FLASH进行分区,根据需要设定程序FLASH与数据SRAM所占的比例。该写次数可达一百万次,数据可保存100年。
(3)片上RAM为1280B,有34个高电流驱动I/O,可以设外部存储器的存取时间,使用双数据指针提高存取速度,具有完善的节电功能,还用双数据指针提高存取速度,具有完善的节电功能,还有电压监视器、21个中断源、3个16位定时器计数器以及内部时间间隔计数器(TIC)。
(4)自带BOOT ROM,可以调试使用或在程序中调用内置固化程序,完成在线调试、数据采集、UART通讯以及读写FLASH等工作,方便了编程以及调试。
图2 标准热电阻测温模块硬件框图
(5)片上24位∑-ΔADC具有一些增强特性:8位输入通道可以任意配置为单端或差分输入;有快速、Sinc2、Sinc3三种数字滤波,同时有自动数字滤波功能,可以加快A/D转换输出;带PGA偏置DAC,可以不引入额外误差而扩大测量范围;自带一个32位累加器,可以对ADC输出数据作快速平均处理。
(6)自带高精度电压标准,精度为0.2%,漂移为5ppm/℃,可以节省空间以及器件成本,也可输出该电压标准或外接电压标准。
(7)片上16位PWM,可以作为DAC输出来源。
(8)增强的SPI接口可以使用DMA方式传输数据,在DMA方式下,可以间接寻址RAM,设定多达128B的发送接收FIFO;具有完整的端口驱动以及发送接收中断设定,适合大批量的数据传输,同时点用CPU资源较少。
MSC1210功能较强且易于使用,但因为是新器件,参考资料较少。笔者在使用过程中发现需要注意如下问题:
(1)MSC1210片内FLASH分区只能通过对HCR0以及HCR1这两个硬件配置寄存器事先编程来进行,在程序运行过程中无法设定或更改分区比例。在程序运行中读写FLASH时,要注意读写地址与调试时的地址不同,具体应参考存储器分配表;用户程序无法直接读写FLASH,调用BOOT ROM中的读写函数来进行;与AVR等芯片的EEPROM不同,写入FLASH之前必须先进行擦除操作,BOOT ROM中有可调和场擦除子程序,可以在汇编或C程序中调用。
(2)在做A/D转换时,每次更改PGA放大倍数需要重新校准,在需要频繁切换输入通道的场合,建议设定特殊寄存器ADCON1的SM1~0位为00,即进入自动模式数字滤波。这样当通道切换后,随着A/D采样次数的增强,数据滤波依次为快速转换、Sinc2、Sinc3数字滤波,可以最大限度地提高转换速度和转换精度。
(3)BOOT ROM中固化的程序对于MSC1210的编程和调试非常关键,其中部分可以在用户程序中直接调用,完成数据采集、UART输入输出等重要功能。可以通过串口或并口进行编程。
(4)使用TI提供的下载工具及调试终端,可以对MSC1210实现在线调试。这种调试会占用UARTO资源,同时辅助中断的入口地址也有变化,这在编程时需要注意。也可以利用Windows自带的超级终端进行调试。与TI终端不同,Windows超级终端不能自动初始化MSC1210使之进入调试状态,需要人工进行调试复位。
图3 标准热电阻测量以及信号调理电路
3 高精度测温模块的硬件描述
MSC1210最多可以配置4组差分输入通道:对于标准四线热电阻的测量,需要两组通道来分别测量驱动电流及电压;对于标准热电偶的测量,如果采用冰点作为冷端补偿,需要一组差分通道;如果采用自带冷端测量,则往往需要另外两组通道测量冷端热电阻的温度。因此,对于标准热电阻测量,同一个模块最多有两路测温通道;对于标准热电偶测量,如果用统一的冷端补偿,最多可以有4路测温通道。同一模块的不测温通道的切换需要时间稳定信号以及重新建立ADC测量输出,在有速度要求或需要进行多值平均的情况下,为了得到较快的测温速度,每个模块的测温路数会相应减少。这里介绍单通道标准热电阻测温模块,其硬件框图如图2所示。
模块采用独立的模拟供电(5V)和数字供电(3V)。在印制板设计上,数字地与模拟地分离,在MSC1210芯片下相连,同样,为了进一步减少外界和数字电路对模拟电路部分的干扰,SPI接口与外部之间采用高速光电耦合连接。所有的电源以及信号接口采用统一的两边插针形式,便于直接插入主机母板。这里将比较有特色的标准热电阻测量以及信号调理电路绘出,如图3所示。
在图3中,分压电阻R12与R13为运算放大器U2提供一个参考电压,在R10上产生一个恒定的电流,经Q1输出。为了减少高精度低温漂电阻的使用数量,R10、R12、R13均采用普通电阻。使用高精度低温漂电阻Rr作为电流检测电阻,将输出电压信号经R2、R3送往MSC1210的一组差分输入端,恒定电流通过四线标准铂电阻Rs,将产生电压经R4、R5送入MSC1210的另一组差分输入端,经MSC1210进行四线法测量电阻的计算,以消除铂电阻温度计引线的影响。R2、R3、R4、R5是限流电阻,防止输入电压过高损坏MSC1210;D1、R6、C12提供一个参考电压,使MSC1210有合适的差分电压输入。由于使用MSC1210的内置电压标准输出,电容C9、C10、C11是不可缺少的。MSC1210具有内置PGA(1~128),因此无需放大电路即可直接测量微弱信号。
4 高精度测温模块软件的描述
在多路高精度测温系统中,测温模块能独立进行数据采集、拟合修正、分度转换、与下位机的数据通讯,并通过SPI接口向上位机(主机)发送测量到的温度数据,接收上位机发来控制指令,进行参数设置及校准操作。与上位机通讯的指令采用不定长的ASC代码指令,用不同的信令头(SOT)代表不同的控制,并有CRC纠错以保证数据正确传输,信令有统一的结束码(EOT)。
在测温模块的MSC1210的程序功能中,分度转换是重要的组成部分,也是耗时较多的计算过程,这里简要说明一下。
对于高精度温度测量,需要考虑的一个重要问题是温度传感器的选择。对于热电阻与热电偶,有标准传感器与工业传感器之分,这里选择精度较高的标准传感器,并根据ITS-90国际温标以及中国相关计量检定规程进行分度转换。
与工业热电阻、热电偶不同,标准热电阻或热电偶的分度计算是一个比较复杂的问题,简单的查表计算或曲线拟合一般很难达到分度转换的精度要求。以标准铂电阻温度计为例,它使用一组规定的定义固定点和参考函数以及相应的差值函数内插,在0~419.527℃温区内,温度t由下列公式确定:
javascript:window.open(this.src);" style="cursor:pointer;"/>
其中,Wr(t)为参考函数,Ci与Di为系统,ΔW8(t)为差值函数,W(t)为电阻比,a8与b8为具体标准铂电阻温度计的分度系数,可以通过具体温度计校准结果Wzn、Wsn、W100等参数计算得到。在选择了相应的热电阻之后,将该参数通过SPI接口的通讯控制指令输入测温模块。
可以看到,MCU只有具有较快的运算速度,才能在每次ADC输出数据后及时将电阻值转换为温度值,分度计算、误差修正、数值处理以及通讯控制等均由MSC1210完成。修正到上位机的是测量得到的温度值,这样上位机即使在配置多个测温模块的情况下也能从容完成处理工作。
MSC1210是较有特色、功能较强的一种新器件,特别适合于智能变送器、高精度测量仪器仪表等应用领域。这套多路高精度温度采集系统充分利用了MSC1210的新功能、新特性,采用智能测温模块与主机通讯的设计方式,以较多的成本完成了多点快速温度测量。笔者使用这套多路高精度温度采集系统作基础硬件,配以PC机的控制软件,完成了套应用于不同场合的自动温度测量及控制系统,实际应用情况良好。