摘要:介绍了一种以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使之进入调试状态,需要人工进行调试复位。
