随着社会的发展,人们环保意识的增强,对建筑材料的要求越来越高,导热系数作为衡量建筑材料保温性能的重要指标一直为人们所重视,因而开发设计出高精度绝热材料导热系数测量仪器十分必要。绝热材料导热系数测量基于一维稳态传热原理,测出试件冷热面的平均温度(TC、TH)和稳态加热功率(P),由下式即可计算出导热系数:λ=Pd/A(TH-TC),其中d为试件厚度,A为试件对应主加热器部分的横截面积。整个测量系统主要由炉体和温度、功率测控系统两部分组成,炉体按国家标准的要求加工制造,大同小异,而温度、功率测控系统则随着电子技术的发展不断更新。
温度、功率测控系统的特点是要测量和控制多路温度信号,判断到达设定的状态后再进行计算。常见的设计方案是:用热电偶或铂电阻作温度传感器,输出的模拟电信号经过模拟放大和滤波,进入高精度模/数转换器(ADC),再经过单片机的判断、计算,控制加热电炉丝的功率,求出稳态导热情况下导热系数、热阻等材料热特性参数值。这种方案较过去的模拟式测量系统已经很先进,但是仍存在精度不够高、可靠性不够好的缺点。笔者新近开发的绝热材料导热系数测定仪采用TI公司新近推出的具有增强型8051内核的低功耗单片机MSC1212,其内部集成了8通道高精度24位Δ-Σ ADC和4通道16位DAC,在保证测量精度的同时又大大简化了外部电路,可靠性好。
MSC1212的内部结构图如图1所示。MSC1212工作电压2.7 V~5.25V,微控制器核是经过优化的8051内核,在给定时钟源的情况下,它的执行速度比标准的8051内核快三倍,从而使得器件可以在更低的外部时钟频率下工作,在功耗比标准的8051低的情况下,仍可达到相同的性能。同时,其片内外设十分丰富,包括32位累加器、1个带有FIFO的SPI串口、2个全双工的UART、32个数字输入输出端、看门狗定时器、低电压检测、片内上电复位、16位PWM、3个定时器/计数器、21个中断源。
MSC1212集成了32kB的FLASH存储器以及1.2kB的SRAM,其FLASH编程模式有串行和并行模式两种,在上电复位期间通过ALE和PSEN信号的状态来选择。PSEN=0,ALE=1时是串行编程模式。PSEN=1,ALE=0时为并行编程模式。假如两者都为1,则工作在用户模式。两者都为0是保留模式,没有定义。MSC1212是带ISP开发功能的单片机系统,与8051的指令集完全兼容,可以用已有的8051开发工具来开发MSC1212的软件。主要的开发环境是汇编语言和C语言。
2 MSC1212模拟接口介绍
MSC1212的内部集成的模拟接口是它优于其他单片机的特征之一,在绝热材料导热系数测定仪中担当了重要角色,有必要先加以详细介绍。
2.1 ADC结构介绍
MSC1212的ADC是Δ-Σ型,由多路开关(MUX)、温度检测器、缓冲器、可编程增益放大器(PGA)、调制器、数字滤波器、电压参考组成,有8个通道,10Hz数据输出率时有效分辨率可达24位。
一般ADC都定义成对的输入端,不可随意改变,而 MSC1212的ADC输入端可以由用户通过设置ADMUX寄存器来定义,可以把8个通道的任何2个分别作为同相端和反相端,这种软件设置使应用变得十分灵活,某个通道可以在一次测量中用作同相输入端,下一次测量中却用作反相输入端。例如ADMUX=0x01,则定义AIN0为同相输入端,AIN1为反相输入端。
当ADMUX所有位置1时,将选中温度检测器工作,返回芯片温度值,所以也可以把温度检测器看作ADC输入的第9个通道。
缓冲器使能与否通过寄存器ADCON0(BUF位置1使能)控制,当缓冲器使能时输入阻抗是10GΩ,输入电压范围变小,电流升高,没有缓冲器时MSC1212的输入阻抗是5MΩ/PGA。一般都要使能缓冲器,除非某一模拟输入端电压大于AVDD-1.5V。
通过改变寄存器ADCON0的低三位,可编程增益放大器(PGA)的增益可被设置为1、2、4、8、16、32、64和128。使用PGA可以提高ADC的有效分辨率。例如,当PGA为1且采用5V量程时,ADC能分辨到1uV。PGA为128且采用40mV量程时,分辨到75nV。通过设置寄存器ODAC,PGA的模拟输入可以通过高达其全量程一半的输入来补偿(即,若输入电压范围是5V,则补偿范围是±2.5V),其中MSB是符号位,七个LSB提供补偿的大小。这种补偿并不影响ADC的噪声特性和动态范围。
调制器是一个单环2阶Δ-Σ系统,其模拟信号采样率(fMOD)由下式确定:fMOD=fOSC/(ACLK+1)/64,寄存器ACLK由用户设置,若晶振频率fOSC=11.0592MHz, ACLK=8,则采样率fMOD=19200Hz。知晓Δ-ΣADC原理的人都知道,这一采样率并不是数字信号输出率,数字信号输出率(fDATA)等于模拟信号采样率(fMOD)除以抽取因子(Decimation),抽取因子由用户在寄存器ADCON2和ADCON3中定义,ADCON2为低8位,ADCON3为高3位。抽取因子越大,噪声抑制能力越强。
调制器输出经过数字滤波器就成为所需要的数字信号,MSC1212配置了三种数字滤波器:快速建立型、sinc2型、sinc3型,在通道同步变化的情况下,滤波器建立时间依次为1个、2个、3个转换周期;sinc型滤波器在整数倍fDATA频率处有很好的陷波特性,快速建立型滤波器陷波特性不佳。自动模式在输入通道或PGA改变时将sinc滤波器配置成最佳,刚转换为一个新的输入通道时,自动模式选择需要4个转换周期的建立时间,前2个周期用快速建立型滤波器,且第一个周期转换结果丢弃不要,后两个周期依次用sinc2型、sinc3型滤波器,之后一直用sinc3型滤波器,直到通道再次改变,这种方式充分利用了快速建立型滤波器的快速响应特性和sinc3型滤波器良好的噪声抑制特性。
多通道采样通道突然变化时,输出要稍作延迟才能正确反应新通道输入值,延迟时间依赖于使用的滤波器。由于通道转换通常不与数据输出间隙同步,所以还额外需要一个整周期才能准确采样。事实上这种不确定性导致获得理想分辨率要多花费一个转换周期,即输入通道突然变化时必须丢弃前1、2或3个转换周期的结果。自动模式可以降低必须丢失的数据数目,但是也会降低分辨率。
当多通道采样时必须考虑建立时间以确定总的数据通过率,例如,数据输出率(fDATA)为20Hz,滤波器采用sinc3型,采样5个通道,那么每个通道的结果输出率(fCH)为20/4/5=1Hz。事实上,最佳配置的评估是一种公平交易,不可能面面俱到。首要标准之一是确定转换结果的有效位数目(ENOB)。如果需要ENOB=18位,用三种滤波器皆可实现,对应快速建立型、sinc2型、sinc3型,抽取因子分别为1800、500、200。假定调制器时钟频率(或模拟信号采样率)是15625Hz,对应数据输出率(fDATA)分别为8.68、31.25、78.125 Hz,单通道的结果输出率(fCH)分别为4.34(8.68/2)、10.41(31.25/3)、19.53(78.125/4)Hz,通道同步转换时通道率分别为8.68(8.68/1)、15.625(31.25/2)、26.04(78.125/3)Hz。由此可见,这些"率"的大小基于一个合理的调制器时钟速度。在许多应用中,可以将数据通过率提高到上述数据的10倍。
MSC1212或整个系统的失调和增益误差可以通过校准来减少。校准可以通过寄存器ADCON1相应位来控制,每一个校准过程需要7个tDATA来完成,因此总共需要14个tDATA来完成失调和增益校准。系统校准要求适当的信号加到输入端,具体地,系统失调校准需要"零"差分输入信号以估计待消除的失调,系统增益校准则需要正的满量程输入信号以产生一个消除系统中增益误差的值。上电后或者温度、缓冲器、PGA中任何一个发生变化时都将执行校准。使用自动模式或者sinc3型滤波器有利于校准。校准将消除ODAC的影响,因此,对ODAC寄存器的改变必须在校准之后进行。校准完成之后,ADC的中断位置为1,说明校准完成,数据有效。[page]
MSC1212的电压参考可以是内部(上电后默认)的或外部的。电压参考是通过寄存器ADCON0(EVREF位)来选择的,内部电压参考可以是1.25V或2.5V(AVDD=4.5V~5.25V),由寄存器ADCON0的VREFH位来定义。假如不使用内部电压参考,应将其关闭以降低功耗和噪声。REFOUT引脚与AGND之间应接0.1uF的电容。外部电压参考是差分的,通过引脚REF IN+和REF IN-之间的电压差体现出来,任一引脚的绝对电压可以在AGND到AVDD之间变化,然而差分电压不能超过2.6V。
ADC转换结果保存在ADRESL/ ADRESM/ ADRESH寄存器中。MSC1212内部还有4个求和/移位寄存器SUMR0~3和1个求和/移位控制寄存器SS CON,可以对ADC转换结果进行累加平均从而进一步降低噪声提高分辨率。
2.2 DAC结构介绍
MSC1210的16位DAC是T型电阻网络型DAC,其内部结构框图如图2所示。输入DAC寄存器的值(D,取0~65535)与输出模拟量(VDAC)的关系为:VDAC=VREF*D/65536,其中VREF是DAC电压参考,可以选择内部REFOUT/REFIN+电压或电源电压AVDD,VREF与AVDD共同制约VDAC(IDAC)输入代码的范围,其关系如表1所示。DAC的轨-轨输出型缓冲放大器可以输出AGND~AVDD的电压,可以驱动2kΩ//1000pF的负载。加以外部电路,DAC也可输出±VREF的电压,例如图3所示电路,VO=VREF(D/32768-1)。
2.3 多通道数据采集程序示例
// A/D Conversion for 8 single ended channels,0-5V on inputs AIN0 to AIN7,AINCOM = 2.5V
#include
#include
#include
#define LSB 298.0232e-9
extern unsigned long positive(void); //return the 3 byte adres to R4567 (MSB~LSB)
void main(void)
{ unsigned long int xdata result, dummy;
unsigned char k, pga, chan;
unsigned int decimation;
float voltage;
CKCON = 0; // 0 MOVX cycle stretch
PDCON = 0x14; // turn on ADC-Vref, SPI and Systimers
printf(" MSC1210 ADC Conversion Test ");
printf(" Single-Ended 0V to 5V inputs, AINCOM="2".5V ");
printf("Chan. Dec. rate Hex Value Voltage ");
/ * Setup ADC */
ADMUX = 0x08; //(AIN+ = AIN0), (AIN- = AINCOM)
ACLK = 9; // ACLK = 11,0592,000/10 = 1,105,920 Hz
// modclock = 1,105,920/64 = 17,280 Hz
pga = 0;
ADCON0 = 0x38 | pga; // Vref On, Vref="2".5V, Buff on, BOD off, pga="1"
decimation = 1728; // 10 Hz
ADCON2 = decimation & 0xFF; // LSB of decimation
ADCON3 =(decimation>>8) & 0x07; // MSB of decimation
ADCON1 = 0x01; // bipolar, auto, self calibration (offset, gain)
for (chan=0; chan<8 ; chan++) // Channels Loop
{ ADMUX = (char)(chan<<4) | 8; // AINP = chan, AINN = AINCOM
for (k=0; k<4; k++) // Wait for Four conversions for filter to settle after calibration
{ while (!(AIE & 0x20)); // Wait for data ready
dummy = positive(); // Dummy read to clear ADCIRQ
}
while (!(AIE & 0x20)) {} // Wait for next result
result = positive();
printf (" %3bd %7d %5dHz ", chan,decimation,17280/decimation);
voltage = result * LSB;
printf ("%12lx %f ", result,voltage);
} Channels Loop
printf(" FINISHED ----------- ");
while(1) ;
} //main
3 基于MSC1212的单片机温度测控系统设计
基于MSC1212的单片机温度测控系统硬件框图如图2所示。整个系统可分为温度测量、温度控制、人机对话、与主机通信等部分。串口通讯可以把测量数据存储在主机上,供日后参考,还可以给出导热系数随温度变化的函数曲线或者分析非稳态传热情况下的热特性。异常报警、液晶显示、按键、打印电路保证了人机对话界面的友好,体现了系统的智能性。 [page]
|
3.1 温度测量
MSC1212内部集成了8通道24位高精度Δ-Σ ADC,虽然Δ-Σ ADC的数据率很低,但是温度是缓变信号,用Δ-Σ ADC完全可以满足要求。本系统所测温度范围为-30℃~150℃,用热电偶测量,要求最大测温误差不得超过0.1℃(对应大约0.004mV),而MSC1212的ADC输入范围为0V~5V(参考电压选择2.5V时),在10Hz数据率时可达22位有效输出,充分满足测量要求,不必加任何模拟放大电路,只要加一个缓冲器就可以了。热电偶冷端温度即环境温度由数字式温度传感器测量供热电偶冷端补偿和环境温度记录与显示。
3.2 温度控制
MSC1212实时测得冷热板温度并与用户设定的温度比较,结合PID控制和模糊控制算法,通过程序控制各路DAC输出一定的电压信号(0-5V),分别控制主副加热器电源电压(0-48V连续输出)、半导体制冷器电源电流(0-25A连续输出),电路十分简单,功率控制的速度和精度同时得到提高。
3.3 软件设计
本系统所要实现的功能是实时采集各路温度信号和主加热器电炉丝的电压电流信号,按照算法要求进行功率控制,监控温度传感器、主副加热器、半导体制冷器保护水浴等正常工作,人机对话以及与主机通讯等。系统软件采用模块化编程结构,由主程序和参数设定、系统标定、异常报警、数据处理、串口通讯、键盘、显示、打印等子程序组成。系统功能框图如图5所示。
4 结束语
综上所述,MSC1212单片机具有丰富的片内资源,尤其是内置高精度ADC、DAC,使之在本绝热材料导热系数测定仪中的应用不但提高了测量精度,而且大大简化了硬件电路,可以推广应用于其他测控系统中。
上一篇:单片机控制实时时钟设计
下一篇:单片机在电力系统监控中的应用
推荐阅读最新更新时间:2024-03-16 13:59