基于CS5550的工业测量仪表设计

2010年03月13日 23:18    发布者:李宽
0 引言

现代工业测量仪表以单片机为核心,具有数字显示、开关量输出、超限报警和通信等功能。用于测量各类工业现场的检测信号,是工业控制自动化必不可少的重要检测和控制装置。广泛应用于电力、化工、冶金等部门。

随着元件生产工艺、自动化水平的提高,对测量装置的要求越来越高。为实现低漂移、高稳定、高分辨率,使用了CS5550 A/D转换器。本系统通过简单的跳线,实现了单一仪表对电压、电流、电阻等各信号的采集,通过强大的程序实现各种信号的变换,真正达到了一表多用的智能型仪表。

1 硬件电路设计

仪表各种输入信号经跳线选择,切换测量电路后直接送入CS5550 A/D转换器,转换成数字量送入CPU处理,输入信号经线性化、冷端补偿、外线电阻补偿等运算后,得到测量值送LED显示或经RS-232传给上位机或其它控制器,同时与用户设定的报警值进行比较,从而驱动继电器报警输出。

系统结构如图1所示,测量电路与A/D转换的模拟电路部分是系统设计的关键,直接影响到测量结果的精确程度。软件的核心部分是将采集到的数字信号量转换成准确测量结果,如将热电偶的微弱电压信号转换成对应的温度值。



1.1 A/D转换电路

本系统的A/D转换采用Cirrus Logic公司的两通道、低成本Delta-Sigma模数转换器CS5550芯片,是一种便于设计、性价比高的小体积高集成解决方案。

CS5550集放大器、A/D转换器、数字滤波器、基准电压电路和双向串口于一身。具有方便的片上偏移和增益校准功能,通过串口可重新设置完成初始化,可直接输出精确测量结果。它是一个双通道解决方案。

CS5550的模拟电源与数字电源分开提供,模拟电源部分使用了RC低通滤波电路,增强了系统的稳定性。使用片上提供的基准电压源,简化电路设计。通过 SPI接口与单片机进行通信。CS5550的外围参考电路如图2所示。



1.2 测量电路

测量电路如图3所示,信号输入接在接线端子上,通过跳线选择输入信号的测量电路。这里,跳线可以使用模拟开关替代,通过单片机控制进行切换。



当跳线1、2短接时,测量输入电压信号,可接热电偶的信号输入。

当跳线5、6短接时,测量输入电流信号,电流经过精密电阻r产生压降,这样只需知道电阻r的阻值,便可测得电流值,可接0~10mA、4~20mA标准信号。

当跳线3、4短接时,测量输入电阻信号。电阻测量法可以采用恒流源法,它既可以消除引线电阻的影响,输出电压又不存在非线性,但是造价比较昂贵。

本系统采用三线式电阻测量法,如图3中虚线部分为测量电阻的两根信号线,电阻接地线为第三根线。因为引线通常采用的是同种材料、同等长度,所以引线上电阻产生的压降、温度漂移相互抵消。通过LM336提供稳定的基准电压源,消除电源不稳定对电阻测量的影响。这种方案成本低、测量准确、稳定。

1.3 键盘和LED显示

本系统提供四个按键,接在单片机的P1.0~P1.3上,其功能分别为”菜单”、”+”、”一”、”确定”。按键信息通过定时扫描进行读取,具有软件去抖动,提高稳定性。通过按键对系统进行控制,执行校准、设定值、信号变换类型的切换等。LED显示通过定时中断来进行实时扫描,无闪烁,通过缓冲区机制存取,数据变化时只需更新缓冲区即可。

1.4 EEPROM存储系统

EEPROM用于产品出厂时,系统校准参数永久保存,这样系统上电工作时,首先从EEPROM中读取系统的参数数据。在系统运行长时间后,系统参数可进行重新校准,确保测量的精确性。

1.5 RS-232通信接口

RS-232是系统与上位机或其它控制器的通信接口。通过RS-232可实时地输出测量数据或报警信号数据,作为其它控制器的输入,并可通过RS-232 对运行模式进行设定,为工业控制自动化和组态提供了方便。

1.6 开关量输出电路

该电路作为控制器向外输出信号之用。利用键盘将最高、最低设定值置入内存,并保存到EEPROM中长久保存。仪表随时比较采样值和设定值,并把比较结果以开关量方式输出,达到控制外设的目的。开关量输出电路由光电耦合电路和输出继电器组成,如图4所示。



2 软件设计

软件部分采用模块化编码,主要模块有:系统参数校准模块、数据计算与变换模块、键盘和LED显示模块、CS5550操作模块、93C46 EEPROM存储模块、RS-232通信模块、开关量输出控制模块等。软件系统的总体流程如图5所示。



系统开机后,首先进行初始化,将校准过的系统参数从EEPROM中载入,对I/O、A/D等进行初始化。接下来进入程序主循环,执行键盘扫描,当有按键按下时,进行按键处理,根据按键组合,进行CS5550参数校准、测量电路校准、信号变换类型的切换或参数值设定等。若无按键按下,则对输入信号采样,计算,并根据设定的变换类型进行数据变换后得到信号的测量值,然后刷新显示缓冲区,更新显示。得到的测量值再与开关量的高低设定值比较,输出设定的相应电平,达到控制的目的。最后如有通信要求,执行相应的子程序后回到循环起点。

2.1 校准模块

首先短接图3测量电路中跳线1、2,输入相应的基准信号,进行CS5550的偏移和增益系数校准。然后短接跳线5、6,输入标准电流i后,如取10mA,读取实际的测量值,即电阻r上的压降Ur,则r的阻值为Ur/i,并将该结果保存到EEPROM中作为系统参数之一。最后,短接跳线3、4,下面详细介绍电阻测量电路中参数V,R的校准,待测电阻rx的计算,其等效电路如图6 所示。



如图6所示,rx为待测电阻,沩流经rx的电流,所产生的压降为u,由欧姆定律得到式(1)、(2)。



整理后得式(3),其中V,R为未知数,u是由本系统测得的数据。通过连接精密电阻箱来取代待测电阻,取定rx两个值,如100Ω和400Ω。代入式 (3),解方程组可得V和R的校准值,并存入EEPROM中作为系统参数。



经校准后便可根据式(4)精确地计算出待测电阻rx的值。

2.2 计算与变换模块

经校准和初始化后,CS5550进入测量阶段,通过最新获得的N个瞬时测量值计算出转换有效值后,以满量程的相对百分比方式提供所有的测量结果。其中通道 1具有可编程放大器增益选择,当工作在增益为10的情况下,如果测量结果低于10%,则系统将其增益切换成增益为50;反之,当工作在增益为50的情况下,如果测量结果高于90%,则系统将其增益切换成10。这样不仅测量的信号范围宽,而且提高了系统测量的精确性。

从CS5550读取测量结果转化成相对百分比后,乘上相应的满量程值就可以得出实际测得的电压值u,如果输入的是电流值,则除以系统参数r即为所测得的电流值,如果是测量输入电阻,则根据式(4)计算所测得的电阻值。

得到相应测量信号的实际值后需再进一步地变换。如热电偶输入的是电压信号,需变换成相对应的温度信号,而且电压一温度之问不是线性的变换关系。变换方法可以采用多项式曲线拟合方法或者小区间线性化处理方法。

本系统可进行十几种的信号变换,真正做到一表多用,下面介绍信号变换切换的C语言实现方法,这是通过函数指针来实现的。首先声明函数指针,

    typedef float,(*convert_t)(float val);

然后定义该函数指针的一个变量,

    convert_tconvert:

下面是一些信号变换的函数原形声明,函数中的参数是测量的电压值,函数返回的是变换后的值,

    float lkConvert(float val): //热电偶K级
    float lsConveit(float val)://热电偶S级
    float Pt100Convert(float val)://热电阻Pt100
    float Cu50Conveit(float val): //热电阻Cu50

信号变换切换方法示例如下,

    SWitch(opNum){
    case 1: //热电偶K级
         convert=lkConvert:
       break:
    ……
    }

确定了信号变换函数,最后是函数调用,举例如下,

    unsigned long temp;
    float result;
    //从CS5550中读取通道1数据
    temp=read(Ox16);
    //转换成百分比
    result=temp/(float)0x0l000000;
    //乘上满量程值
    result*=fullScale;
    //执行信号变换
    result=convert(result);
    这样result变量就是传感器对应的信号值,如温度。

3 结束语

本系统使用CS5550进行硬件核心电路设计,性价比极高,使用简单的配置实现一表多用,体积小、集成度高、运行可靠,有很好的推广价值。

作者:福州大学 苏松剑 吴景东   来源:电子技术