摘 要:本文介绍了一种基于Microchip的低功耗单片机PIC16F877新型智能二线制热电阻(Pt1000)温度变送器的电路设计。文章分析了系统设计的理论依据和软硬件实现方案,采用温度补偿算法使补偿后的精度等级达到0.1%FS。该智能式变送器具有精度高、可靠性好、现场显示,生产调试方便等特点,是老式二线制温度变送器的理想替代产品,具有广泛的应用前景。
关键词:低功耗单片机;线制;智能式变送器
1 引言
二线制热电阻温度变送器是将温度信号线性地变换成4~20mA直流标准输出信号。由于模拟二线制温度变送器大都采用分离元件组成,存在较大的温漂;同时热电阻本身存在非线性,所以要进行非线性处理,模拟元件在处理上存在较大的问题,因此精度大都不高,一般在0.5~1.0级。随着微处理器的功耗的极大降低和新器件的不断出现,以“A/D+微处理器+D/A”模式的智能变送器,在信号的处理、测量精度、仪表维修和维护等方面与老式变送器相比,存在无可比拟的优势,是今后变送器的主要发展方向。
图中的粗线为电源流程,细线为信号流程,两根外接导线既是电源线也是信号线。4~20mA信号体制为二线制设计提供了可能性,当被测信号的量程从0%~100%变化时,两根传输线上电流变化对应4~20mA,因此要求整体包括微处理器在内的电路静态工作电流小于4mA。RL为信号采样负载电阻,在供电电源17~30V的前提下,回路4~20mA电流由热电阻信号R确定。
图1智能式二线温度变送器系统结构框图
通过框图我们可以看到,首先对信号源所产生的信号进行采集,然后通过信号处理模块对信号进行放大处理,再由数据处理模块进行信号的软件线性化处理,最后通过V/I变化模块把线性反映温度变化大小的信号,调制成电压信号后转换成相应电流信号(0~16mA),加上系统的静态功耗4mA,形成4~20mA的电流信号通过二线电流线输出。
2 智能式二线制变送器的硬件设计
由于采用微处理器作为核心,因此要求微处理器和外围器件必修采用低功耗器件,必须保证其整体功耗小于4mA。下面就各部分工作原理作一下介绍。
2.1 电源管理模块
普通的二线制变送器由于采用模拟器件来实现,因此对电源的功耗要求较低,一般采用78系列稳压模块。其工作电流一般在1~2mA之间,但对于智能变送来说相对较大,如图2所示这里我们采用Maxim公司的高电压低功耗线性变换器MAX1616作为电压变换,该器件具有如下的特点:4V~28V电压输入范围;最大80uA的静态工作电流;3.3V/5V电压可选输出;30mA输出电流;±2%的电压输出精度。采用该器件将输入的24V电压变换成5V电压,给外围5V的器件供电。为进一步降低微处理器的功耗和提高数据处理精度,再把5V电压经过MAX619(低功耗高精密电压基准源)输出一个3V高精密的电压基准,对微处理器供电,并且为A/D转换提供参考电压,其中二极管D1是一个保护二极管,防止输入电压接反可能带来的对电路的影响和破坏。
图2 电源管理模块电路图
2.2 信号处理模块
在如图3所示信号处理模块中,采用TI公司的TLC27L2完成信号的放大与输出,TLC27L2是低功耗精密运放放大器,其特点是:单电源供电,超低功耗(25℃,5V时,电流为19uA),采用数字电位器X9c103和X9c504作为信号的调零和放大。其中 X9c103和X9c504分别是1K和50K具有100个抽头的低功耗数字电位器,由微处理器控制,对变送器进行数字调零和调满量程,R9、R10、R11、X9c103配合Pt1000热电阻组成测温电桥,利用X9c103可以对不同量程的变送器进行零点的调整,设数字电位器X9c103的电阻为W1,其中Pt1000(假设为R12)热电阻温度传感器封装在接线盒内,其接线电阻可以忽略,电桥中间两点电压作为差动运算放大器的输入信号。分别为:
该信号再经过差动放大对微弱信号进行放大,其中电容C12是滤波电容,用来防止信号受外界信号干扰,放大倍数由R15和X9c504构成,通过微处理器对X9c504的控制来获取可变的放大倍数,满足不同测量范围的要求,这里没有考虑热电阻的非线性补偿,对于热电阻的非线性补偿,本变送器是通过微处理器软件实现的,这将在变送器的软件设计中加以说明。
图3 信号处理模块电路图
2.3 数据运算模块
数据运算系统是变送器的关键部件之一,它完成变送的A/D转换、测量对象转换、键盘输入、信号分析处理及信息显示等功能。智能变送器采用Microchip公司的Flash单片机16F877,它是高性能类RSIC-CPU,内部带有8路10位A/D转换器、8K(14位)片内Flash程序存储器、368字节的数据存储器(RAM)、256字节的掉电数据存储器(EEPROM),14个中断源的低功耗单片机。它具有低功耗睡眠模式(可中断唤醒)和片内看门狗定时器(WDT),易于实现低功耗抗干扰设计。此外,PIC16F877与其他8位微处理器相比,代码压缩速度提高了4倍,器件性能大大提高。因此,PIC16F877是低功耗低智能仪器较为适宜的微控制器。
图4为数据运算系统电路图。温度信号经过信号处理模块后,送入PIC16F877的2脚是片内10位A/D
的输入端口口(模拟输入通道0)。33(RB0)脚通过R23接操作”回车”键;36(RB3)脚通过R20接操作”设置”键,选择调整对象;35(RB2)脚通过R21接操作”+”键,34脚通过R22接操作”—“键,对数据进行加减操作,19/20(RD0/RD1)脚(双向I/O口)分别接LCD显示器的时钟与数据端口。28/29/30(RD5/RD6/RD7)脚(双向I/O口)分别接串行D/A转换器TLC5615的片选、时钟和数据端口。 23/24(RC4/RC5)脚(双向I/O口)分别接X9c103和X9c504数字电位器的片选信号。21/22(RD2/RD3)脚(双向I/O口)分别接X9c103和X9c504数字电位器的调整脉冲信号和电阻上升/下降信号。
图4 微处理器模块电路图
由图4可见,数据运算系统的硬件电路较为简单,仪器只设有四个操作键,通过软件管理,完成温度测量基准值调节、温度测量斜率值调节、基准电流值调节和满量程量电流值调节等控制命令。
2.4 V/I变换模块
V/I变换模块电路如图5所示由D/A和V/I变换部分组成,D/A部分选用TLC5615串行D/A芯片,它是低功耗10位CMOS电压输出DAC,它的特点是:5V单电源工作;3线串行接口;高阻抗基准输入;基准电压两倍的输出电压范围;低功耗(1.75mW MAX);1.21MHz的更新速率;在温度范围内保持单调性。V/I变换部分采用负载共地方式,运算放大器采用TI公司的高速低功耗精密运算放大器TLE2012、精密电阻R3、R4、R5、R6、Rf、R8、T1组成。Vi为输入电压,I0为输出电流,Rf为反馈采样电阻,R5为限流电阻,RL为负载电阻,R8为限六电阻。Rf采样电流信号以电压的形式加到运算放大器的输入端,而且极性与输入电压信号反相,形成一个电流并联负反馈电路。
由于运算放大器的输入阻抗很高,流入运算放大器输入端的电流可以忽略。在R5、R6>>Rf的条件下,流经R5、R6的电流与I0相比可以忽略。由运算放大器正负输入端电位近似相等,假设R3=R4=R3, 5=R6=R5可得
化得
当取R3=100KΩ,R5=40KΩ,Rf=100Ω,当Vi=0~5V时,I0=0~20mA。为保证足够的V/I转换精度,电路中各电阻应当选用精密电阻;正电源是I0的最大值。
图5 V/I转换模块电路图
2.5 系统功耗
由于要求智能变送器系统的整体静态电流小于4mA,所以必须保证所选器件为低功耗或超低功耗的芯片。如图2~图5所示,经过实测,其中电源管理部分,主要器件MAX1615的静态电流为80uA、MAX619的静态电流为100uA;信号处理部分主要器件X9c103和X9c504的静态电流各为500uA、TLC27L2的静态电流为120uA;数据运算部分主要器件16F877的静态电流近似为1mA;V/I转换部分主要器件TLC5615的静态电流为350uA、TLE2021的静态电流为230uA、ICL7660的静态电流近似为200uA;其他部分散件的静态电流大约为500uA。
假设系统的总体静态电流为 IA,则
可见系统总体静态电流IA小于4mA,采用如图2所示的W0进行调节使系统在测量零点时两线系统的输出电流为4mA,满足系统设计的要求。
3 智能式二线制变送器的软件设计
3.1 PIC16F877的10位A/D转换
为使A/D转换器满足一定的转换精度,就必须让采样电路的保持电容有足够的充电时间,因此必须正确选择A/D转换的时钟源。系统采用1MHz的晶振,A/D转换时钟选择振荡频率的32分之一。其转换程序如下:
A_D_Change()
{ ADCON1=0x8e;
ADCS1=1; ADCS0=0; //A/D转换时钟选择fosc/32
CHS0=0; CHS1=0; CHS2=0; //选择A/D通道0
ADON=1; for(i=0;i<=100;i++); //启动A/D转换
ADGO=1; while(ADGO==1); //等待转换结束
ad_result1=(ADRESH&0x03)*256+ADRESL;
//读转换结果
ADGO=0;//清A/D转换标志 }
3.2传感器特性线性化处理
在实际工程中,大多数传感器的输出信号与被测参数之间呈现非线性,这是造成测量精度低、误差大的主要原因。热电阻的输出电压与被测温度之间就是一个非线性,温度与A/D转换值之间的关系(非线性)如图6所示。对其进行非线性补偿时,主要采用把查表法和计算法结合在一起的插值法。
首先通过精密电阻箱模拟铂电阻的分度表,每隔5℃获取其10位A/D转换结果显示在LCD上,得到关于被测温度与A/D转换数值对应表,如表1所示为温度0℃~300℃时, 16F877内部10位A/D转换器对应的数值。然后通过该表可以建立起被测温度与A/D转换数值之间的对应曲线,用平滑的曲线连接各点,可以得到如图6所示的特性曲线,可以看出它是一个非线性函数。
图6 T/N (温度/数值)特性
图中温度T被分成30个均匀的区间,每个区间的端点A/D转换值N k都对应一个T k。当A/D转换值为N i 时,实际测量温度值Ti一定会落在某个区间(T k,T k+1),采用线性插值法进行插值,用通过(N k,T k)和(N k+1,Tk+1)两点的直线近似代替原特性。 通过两点BK和BK+1的直线方程为:
从中可以看出线性化的精度由折线的段数决定,分段越多,精度与准确度越好。有时为了提高精度,也可以采用抛物线插值。分段是可以采用等分也可以采用非等分,这里我们采用等分的方法。
3.3 线性化软件的C语言实现
根据上述公式其线性化处理程序如下:
unsigned long Count_Tem(unsigned int ad_counter)
{ unsigned long js1,js2; unsigned char js=0;
while(1)
{ js1=counter[js]; js2=counter[js+1];
if(ad_counter>=js1 && ad_counter<=js2)
//判断Ni是否在(N k,N k+1)内
{ temp1=tempture[js]; temp2=tempture[js+1];
temp=temp1+(ad_counter-js1)*500/(js2-js1);
//代入公式计算结果
return temp; //返回温度值
} js=js+1; if(js>61){break;}
}}
4 结论