1 引言
随着现代控制技术的发展,在工业控制领域需要对现场数据进行实时采集,在一些重要场合对数据采集的要求更高,例如在电厂、钢铁厂、化工领域的生产中都需要对大量数据进行现场采集,而温度采集又是其中极为重要的部分,因此,需要一种高精度、低成本的数据采集与控制系统。
为了方便地实现温度采集与控制系统,笔者选用MSC1201作为系统的MCU。MSC1201是的德州仪器(TI)新推出的一款低噪声、低成本数据采集微处理器,它具有的增强型8051内核,执行速度比标准8051内核快3倍,而功耗却更低,MSC1201中的ADC的防噪性能为75nV,比市场上大多数独立式ADC都好,此外,MSC1201的ADC还可在功耗仅为3mV时达到1ks/s的采样速率,因此,搭配合适的信号拾取元件就能组成一种性能优异的数据采集控制系统。
笔者设计的恒温箱温度控制系统的结构框图如图1所示。该恒温箱主要用于电子设备的高温实验。通过小键盘设定实验温度和时间,达到定时后并能发出警告,箱体打开后启动风扇散热,为了使温度控制更加准确,在箱体内采用多点测温,同时为了保证电子设备的均匀受热,设计中采用步进电机带动托盘使待测物在箱内转动,并在定时结束时停止转动。在恒温箱工业时,箱内温度通过数码管显示。定时剩余时间也通过数码管显示。
2 MSC1201型微处理器
本设计采用TI的MSC1201型微处理器作为主处理器,MSC1201的封装形式为QFN-36,在3V供电时功耗为3mW。具有工业级的工业温度范围即-40℃-+125℃。
模拟特性包括数据采集精度达到24位无损采集,工业频率为10Hz时有效分辨达到22位;片内可编程增益控制,最高可将信号放大128倍;工作噪声为75nV,片内提供精确的参考电压,具有偏差校正功能,片上温度传感器可以快速方便地组成检测系统,极小的偏差漂移(0.02ppm/℃),放大漂移(0.5ppm/℃)使得系统具有较强的温度适应能力。
数字功能包括具有与8051兼容的增强型处理器内核;拥有1KB自举ROM、256字节数据SRAM、4KB闪存具有安全保护措施;存储器读/写循环可达100万次,保存100年。
外部特征包括有16个通用I/O引脚、1个32位累加器、2个16位定时/计数器、可编程看门狗定时器、全双工USART、SPI、I2C接口;空闲状态下消耗电流小于200μA,停止状态下电流小于100nA;中断源多达20个,可以满足一般工业现场的控制要求。MSC201的结构框图如图2所示。
3 温度采集系统的硬件组成
通常,为了组成一种温度控制系统,采用如图3所示的模块化设计。
由图3可见,从传感器到CPU还有许多环节需要系统设计者来设计。但是采用MSC1201型微处理器后许多环节就可以省略。如图中虚线包含的部分,处理器自身已经包含这些中间处理过程,只要设置相关寄存器就可以调整它们的参数。
3.1 温度传感器
在许多温度采集系统中用热敏电阻器作为测温器件,然后通过查表或附加电路得到输出电压与温度的关系,查表需要一段存储空间来保存表格数据且会增加代码长度,因此使用热敏电阻器的成本较高。另一方面,由于热敏电阻器输出的非线性使其高温段和低温段的测量误差变化较大,而在多点测量时对每一种器件都要单独调零,因而在应用时有许多局限。
在笔者设计的温度检测系统中,采用ADI公司的AD590型温度传感器作为温度测量元件,AD590是电流型传感器,当电源电压为4V-30V使流经器件的电流随温度的变化而变化。其温度变化规律为1μA/K,表示以K氏温度衡量温度,温度变化1℃电流变化1μA,这种线性变化的规律给应用带来很大方便,应用AD590时电源电压的变化也会影响电流输出,但电源电压高时影响会小一些,因此电源电压适当调高,图4示出AD590与MSC1201的连接,其中,
从(1)式可以看出,AD590输出电压与温度的关系,如果选择(R1+VR1)=10KΩ,那么可得下式:
图4中R1与VR1串联,通过调节VR1的阻值来获得10kΩ的电阻值。没有直接使用10kΩ的电阻器是为了提高系统测量精度。
由于温度检测的后级接收差分信号输入,因此只需要在差分输入的负端引入2.732V参考电压即可得到随摄氏温度线性变化的输出电压。如图4所示,调节VR3阻值使在AIN1、AIN3引脚上具有2.732V电压即可生成随摄氏温度线性变化的输入信号。若设计的后级是单端输入,则只需在校正单元减去2.732V即可。
3.2 多路选择开关
输入多路选择开关属于MSC1201的内置功能模块,可以接收差分输入。如图2所示,如果AIN0选作差分输入的正端输入,则其他任意通道可以作为差分信号的负端输入,并可通过交换差分输入的正负端来消除误差,在本系统中选用AIN0输入AD590的输出电压V(T),将2.732V作为差分信号负端输入到AIN1,MSC1201可以自动检测这些信号输入引脚是否开路或短路。
另外,该电路还可以检测自身温度,当输入多路选择开关的配置寄存器全部设为1时,电路内的测温二极管就连接到ADC的输入端,此时其余输入通道开路,这有利于器件自身的保护,当芯片温度过高时,可以通过强制电路进入空闲模式使系统降温。
通道可以通过寄存器ADMUX来选择,如下所示:
其中,高4位决定差分正端输入通道,而低4位决定负端输入通道。
3.3 放大器
通常情况下检测到的信号很微弱,需要进行放大。而MSC1201内置可编程增益放大器(PGA)的增益可以设为1、2、4、8、32、64、128。通过使用PGA可以提高ADC的有效分辨率。例如在信号电压范围为±2.5V时,若PGA增益设为1,则ADC最小分辨率为1.5μV;当PGA增益设为128、信号电压范围为±19mV时,ADC的分辨率为75nV,改变PGA增益会使放大器输入阻抗变化,但通常放大器的输入阻抗很高,一般不会对输入信号产生影响。放大器的放大倍数由寄存器ADCON0的低3位确定。
3.4 信号调理
在温度检测中,输入环节会不可避免的引入某些误差,使输入信号产生不同程度的畸变。为了消除这些误差对系统的影响,需要对输入信号进行调理。
3.4.1 ADC补偿
通过使用寄存器ODAC,PGA的模拟输出可以获得最高能够达到测量电压范围一半的偏移补偿。寄存器ODAC是8位,最高位为符号位,表示补偿的正负,其余7位表示补偿的大小。由于ODAC引入的只是对PGA的模拟补偿,因此并不影响ADC的测量范围。
3.4.2 ADC校准
基于MSC1201/02的数据采集系统的偏移和增益误差可以通过校准来减小。寄存器ADCON1的CAL2:CAL0可控制校准。每次校准需要7个Tdata(数据采集时间)周期来完成。
完成校准必须在输入端施加信号,再由器件计算出偏移量以补偿系统偏差。在进行系统偏移校正时,需要输入0V或很小的电压信号,并读取输出结果,如果结果为正,说明转换中存在正偏移误差,应在结果中减去该偏移量。反之,如果结果为负,就要加上该偏移量。
系统增益校准需要输出满量程信号,并测量输出结果来实现增益校准。增益校准实际上就是调整放大器的输出信号斜率以补偿实际输出与理想输出的误差。
系统上电后就要进行校准,而在电源电压、参考电压或PGA增益发生变化时要重新进行校准。当校准完成时,ADC的中断标志位变为高电平,在程序中可通过检查该位来判断校准是否完成,若校准完成,此时输入数据才有效。
3.5 A/D转换
在A/D转换中的调制器是二阶系统,调制器工作频率为fMOD,该频率与fACLK有关,而fACLK可以在模拟时钟寄存器(ACLK)中设置,其关系式如下:
fMOD=fCLK/[(ACLK+1)64]=fACLK/64 (3)
整个A/D转换的数据输出率为:
fDATA=fMOD/数据抽取率 (4)
数据抽取率从A/D转换结果中取得数据的比率,如抽取率为10中取1,其含义就是调制器最近输出的10个数据进行处理(如取平均值),其结果就作为本次A/D转换的结果。这里的处理工作是由数字滤波器完成的。
A/D转换在缺省条件下使用内部2.5V作为参考电压,此时AGND引脚必须连接REFIN-引脚。而REFOUT/REFIN+引脚应该通过1只0.1μF的电容器接地,同时电容器应尽量靠近引脚,MSC1201也可以使用外部参考电压,需要通过ADC控制寄存器ADCON0来进行选择。
3.6 数字滤波
数字滤波可以使用快速设置滤波器、Sinc2或Sinc3滤波器。
为了使系统的A/D转换具有低噪声、响应快速的优点,笔者按以下策略来选择滤波通道:当数据输入通道改变时,系统将在接下来的2次转换中使用快速设定滤波器,而其中第一次的转换结果又将舍弃。紧接着依次使用Sinc2或Sinc3滤波器以改善噪声性能。
3.7 CPU
MSC1201内置的FLASH具有100万次的读写次数,数据可以保存100年,可以自由地在FLASH中划分数据存储区和程序存储区。MSC1201拥有自举ROM,256字节RAM、128字节特殊功能寄存器,具有4组bank工作寄存器,当前程序只使用一组bank寄存器。通过改变当前bank寄存器可以快速切换程序上下文环境。这些设计极大方便了系统的设计。
由于MSC1201系列处理器使用更高效的15型处理器核心,所以在使用相同外部时钟的情况下它的指令执行速度比标准51型处理器快1.5-3倍,在使用相同的代码和外部时钟的情况下该处理器的吞吐量比标准51型处理器高2.5倍。
因此,工作于33MHz的MSC1201处理器运行能力等于工作于82.5MHz的8051核,这将有助于设计者降低处理器的运行频率,降低系统功耗并减小系统噪声。
3.8 显示模块
作为系统输出,采用2个SR120281型4位7段式LED模块显示检测到的温度和定时剩余时间。该模块含4个数码管,采用共阴极连接。模块中4位数码管的阳极引脚并联,通过阴极选择需要点亮的数码管。LED的阳极驱动采用MOTOROLA公司的MC14495型译码驱动器来完成,利用bic-8718型驱动电路产生4位数码管的位选择信号。每次点亮1位数码管,通过选择适当的选通顺序,利用人的视觉残留即可得到1次显示中4位数码管同时点亮的效果。
4 温度控制系统的软件设计
系统软件的复杂度与其所要完成的任务密切相关。本系统主要用于小型恒温箱的温度控制,需要控制的对象有加热装置的开关、风机的开关和带动托盘旋转的步进电机等。使用者通过按键设定恒温箱的工作温度和工作时间,定时到时,加热器关闭并告警。还有一些显示控制及对小键盘输入的响应处理。其程序包含以下几部分:键盘扫描子程序、温度信号采集子程序、显示控制子程序、电机控制子程序、继电器控制子程序和通信子程序。图5所示是系统的软件流程。
5 PC与温度控制系统的通信
对于一种温度采集与控制系统,实验完毕后可能要使用实验数据,当需要对现场数据进行更加复杂的数学分析运算和对数据进行海量存储时,与PC主机的通信非常重要。笔者利用MAX232电路实现系统与PC主机的串行通信,并设计了上位机软件。PC主机每隔30s与下位机通信一次以获得温度数据,并将这些数据存入ACCESS数据库中,便于日后查询。
利用VC完成上位机软件,在VC中通过使用MSComm控件来完成串口通信,在接收到数据后通过DAO方法访问数据库实现对数据的存储、查找、排序等操作。由于篇幅限制,具体过程恕不赘述。