本电路显示如何在精密热电偶温度监控应用中使用 ADuC7060 或 ADuC7061精密模拟微控制器ADuC7060/ADuC7061集成双通道24位∑-△型模数转换器(ADC)、双通道可编程电流源、14位数模转换器(DAC)、1.2 V内置基准电压源以及ARM7内核、32 kB闪存、4 kB SRAM和各种数字外设,例如UART、定时器、串行外设接口(SPI)和I2C接口。
在该电路中,ADuC7060/ADuC7061连接到一个热电偶和一个100Ω铂电阻温度检测器(RTD)。RTD用于冷结补偿。作为额外选项,ADT7311数字温度传感器可用于代替RTD来测量冷结温度。
在源代码中,ADC采样速率选择4 Hz。当ADC输入可编程增益放大器(PGA)的增益配置为32时,ADuC7060/ADuC7061的无噪声分辨率大于18位。
与主机的单边半字节传输(SENT)接口通过使用定时器控制数字输出引脚来实现。然后,使用外部NPN晶体管将此数字输出引脚通过外部方式电平转换为5 V。按照SENT协议(SAE J2716标准)第6.3.1节的建议在SENT输出电路中提供了EMC滤波器。数据按下降沿到下降沿测量,每个脉冲的持续时间与系统时钟周期数相关。可通过测量SYNC脉冲来确定系统时钟速率。SYNC脉冲在每个数据包开始时发送。要了解更多详情,请参见“SENT接口”部分。
|
|
图1. 具有热电偶接口、用作温度监控器控制器的ADuC7060/ADuC7061(原理示意图,未显示所有连接)
|
本应用中用到: ADuC7060/ ADuC7061的下列特性:
热电偶和RTD产生的信号均非常小,因此需要使用PGA来放大这些信号。ADuC7060/ADuC7061的辅助ADC不含PGA,因此二者均连接到主ADC,二者之间的切换通过软件完成。
本应用使用的热电偶为T型(copperconstantan),其温度范围为−200°C至+350°C,灵敏度约为40μV/°C,这意味着ADC在双极性模式和32倍PGA增益设置下可以覆盖热电偶的整个温度范围。
RTD用于冷结补偿。本电路使用的是100Ω 铂RTD,型号为Enercorp PCS 1.1503.1。它采用0805表贴封装,温度变化率为0.385Ω /°C。
注意,基准电阻RREF应为精密5.6 kΩ (±0.1%)电阻。
SENT接口
SENT接口是一种单引脚单向(传感器至主机)时间调制信号,主要用于在汽车系统中使分布式传感器与主机CPU接口。
SENT的主要要求包括以下几点:
关联的源代码使用ADuC7061的P0.4数字引脚作为SENT输出引脚。所用数据包格式为单传感器数据包格式,详见SAE J2716标准(SENT协议)文档的第A.4节。可修改源代码(尤其是SENT.h和Sent.c文件),来支持其它数据包格式。整体温度结果以/°C格式通过数据半字节1至数据半字节3返回。总而言之,返回的输出数据包为
图2为数据包示例。
|
|
图2. 在P0.4引脚处测得的示例SENT数据包
|
该电路必须构建在具有较大面积接地层的多层印刷电路板(PCB)上。为实现最佳性能,必须采用适当的布局、接地和去耦技术(请参见指南MT-031“实现数据转换器的接地并解开AGND和DGND的谜团”、 指南MT-101“去耦技术”以及 ADuC7060/ ADuC7061 评估板布局)。
代码说明
定时器1用于控制SENT输出引脚P0.4。根据热电偶的ADC结果和冷结温度计算出温度结果后,SENT数据包结构SENT_PACKET将更新,并且定时器1会启动。该结构的域会在P0.4引脚上逐个输出,如图2所示。数据包的第一级是同步序列。主机根据此脉冲确定时钟周期,并据此确定后续半字节值。
要获得温度读数,应测量热电偶和RTD的温度。RTD温度通过一个查找表转换为其等效热电偶电压。将这两个电压相加,便可得到热电偶电压的绝对值。
首先,测量热电偶两条线之间的电压(V1)。然后,测量RTD电压并通过查找表将其转换为温度。接着,将此温度转换为其等效热电偶电压(V2)。然后,将V1和V2相加,以得出整体热电偶电压,接着将此值转换为最终的温度测量结果。
最后,采用分段线性方案来计算最终的温度值。固定数量的电压各自对应的温度存储在一个数组中,其间的值则利用相邻点的线性插值法计算。图3给出了使用理想热电偶电压时的算法误差。图4显示了使用ADuC7060/ADuC7061上的ADC0引脚测量整个热电偶工作范围内的52个热电偶电压时获得的误差。最差情况的总误差小于1°C。
|
|
图3. 通过分段线性逼近法利用52个校准点和理想测量值计算时的误差
|
|
|
图4. 通过分段线性逼近法利用在ADuC7060/ADuC7061的ADC0引脚处测量的52个校准点计算时的误差
|
RTD温度是运用查找表计算出来的,并且对RTD的运用方式与对热电偶一样。注意,描述RTD温度与电阻关系的多项式与描述热电偶的多项式不同。
设计支持包中的源代码是利用KEILμVision V3.90生成的。
欲了解有关线性化和实现RTD最佳性能的详细信息,请参考 应用笔记AN-0970“利用ADuC706x微控制器实现RTD接口和线性化”。
可不使用外部RTD而改用 ADT7311 温度传感器来测量冷结温度。
使用ADT7311的源代码随附于设计支持包中的软件包: www.analog.com/CN0281-DesignSupport
需要一个额外的外部稳压器来为ADT7311供电。该电路中用到了ADP7102,但也可使用ADP120。
如果微控制器上需要更多GPIO引脚,则可选择采用48引脚LFCSP或48引脚LQFP封装的ADuC7060。请注意,ADuC7060/ADuC7061可通过标准JTAG接口进行编程或调试。
使用外部基准电阻作为RTD测量的基准源时,建议以单位增益模式使用运算放大器来对VREF+引脚的输入进行缓冲。这是为了确保进入VREF+引脚的输入泄漏电流不会有损于测量精度。图9中的OP193就是针对此目的。图1显示了额定工作温度范围为−40°C至+150°C的AD8628。
对于更宽的温度范围,可以使用不同的热电偶,例如J型热电偶。为使冷结补偿误差最小,可以让一个热敏电阻与实际的冷结接触,而不是将其放在PCB上。
针对冷结温度测量,可以用一个外部数字温度传感器来代替RTD和外部基准电阻。例如,ADT7311可以通过I2C接口连接到ADuC7060/ADuC7061。
有关冷结补偿的更多信息,请参阅ADI公司的《传感器信号调理》第7章“温度传感器”。
SENT接口测试
评估SENT接口输出时,利用数字示波器和逻辑分析仪。测试时间仅为1个SENT时钟周期(100μs),这是SENT标准允许的最大值。这项实施方案的限制因素包括以下几点:
|
|
图5. 选择“Split Load and Store Multiple(独立加载和存储多项_”选项
|
尽管存在这些限制,但选择1个SENT时钟周期(100μs)时,这种实施方案仍完全符合SENT规范的±20%时序精度要求。
图1中的SENT输出上考虑到了EMC滤波器。为此滤波器选择值(R1、C1、C2),以满足目标发射器输出波形,如图6所示,从而降低因SENT输出而造成的EMC辐射。
这里只对此滤波器做了有限测试;因此,忽略了该输出滤波器的电阻和电容值,如图1所示(R1、C1和C2)。
|
|
图6. SENT整形波形发射器输出示例
|
为了进一步测试和评估该电路,这里单独评估了热电偶测量和RTD测量。
热电偶测量测试
基本测试设置如图7所示。使用了两种方法来评估该电路的性能。首先使用连接到电路板的热电偶来测量冰桶的温度,然后测量沸水的温度。
|
|
图7. 用于在整个热电偶输出电压范围内校准和测试电路的设置
|
使用Wavetek 4808多功能校准仪来充分评估误差,如图3和图4所示。这种模式下,校准仪代替热电偶作为电压源,如图7所示。为了评估T型热电偶的整个范围,利用校准仪设置T型热电偶−200°C至+350°C的正负温度范围之间52个点的等效热电偶电压(T型热电偶请参见ITS-90表)。
为了评估查找算法的精度,将−200°C至+350°C温度范围内每隔+1°C的温度所对应的551个电压读数传递到温度计算函数中。针对线性方法和分段线性逼近法计算得到误差,如图3和图4所示。
RTD测量测试
为了评估RTD电路和线性化源代码,以精确的可调电阻源代替了电路板上的RTD。所用的仪器是1433-Z十进制电阻。测试的RTD值范围是90Ω到140Ω,代表−25°C到+114°C的RTD温度范围。
图8显示了RTD测试的误差结果,图9则显示了设置电路。
|
|
图8. 使用分段线性代码和ADC0测量结果进行RTD测量时的°C误差
|
|
|
图9. 用于校准和测试−25°C至+114°C范围内RTD输出电压的测试设置
|