我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 719|回复: 0

基于CS5550的工业测量仪表设计 - 工业/测控 - 电子工程师俱

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:25:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
<strong>0 引言</strong>

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

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

<strong>1 硬件电路设计</strong>

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

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


<ignore_js_op>





2010-3-13 23:14:54 上传
<strong>下载附件</strong> (15.17 KB)




</ignore_js_op>


1.1 A/D转换电路

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

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

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


<ignore_js_op>





2010-3-13 23:14:54 上传
<strong>下载附件</strong> (36.59 KB)




</ignore_js_op>


1.2 测量电路

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


<ignore_js_op>





2010-3-13 23:14:54 上传
<strong>下载附件</strong> (22.73 KB)




</ignore_js_op>


当跳线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所示。


<ignore_js_op>





2010-3-13 23:14:54 上传
<strong>下载附件</strong> (14.57 KB)




</ignore_js_op>


<strong>2 软件设计</strong>

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


<ignore_js_op>





2010-3-13 23:14:54 上传
<strong>下载附件</strong> (20.66 KB)




</ignore_js_op>


系统开机后,首先进行初始化,将校准过的系统参数从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 所示。


<ignore_js_op>





2010-3-13 23:14:55 上传
<strong>下载附件</strong> (7.85 KB)




</ignore_js_op>


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


<ignore_js_op>





2010-3-13 23:14:55 上传
<strong>下载附件</strong> (3.6 KB)




</ignore_js_op>


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


<ignore_js_op>





2010-3-13 23:14:53 上传
<strong>下载附件</strong> (1.85 KB)




</ignore_js_op>


经校准后便可根据式(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变量就是传感器对应的信号值,如温度。

<strong>3 结束语</strong>

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

公告:服务器刚移机,
大家请不要下载东西。
会下载失败


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表