0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用ADuC7061为核心进行PLC模拟前端的设计

电子设计 作者:电子设计 2018-10-19 10:29 次阅读

工业控制系统中除了遇到开关量信号外,还会遇到另一类物理量,即模拟量,例如:角度、温度、压力、电压、电流等等,它们都是连续变化的物理量。可编程控制器PLC是以微处理器为基础的通用工业控制装置。传统的PLC是为开关量控制而设计,而现代的PLC已经具备了处理模拟量的功能。在工业控制系统中,模拟量输入信号的采集和处理是较为常见的控制内容,同时根据控制策略PLC能够输出模拟信号。

因此从工业应用的实际情况来看,现代的PLC不仅要能够采集外部输入的模拟信号,同时也应有能力输出模拟信号。并且随着微电子技术的发展,模拟AD、DA的性能越来也高,对于模拟信号检测的精度要求也在逐年递增。所以本文针对这种即要采集模拟输入又要输出模拟量的应用场合,提出一种高精度模拟前端的系统方案。

1 系统需求分析

常见的PLC的模拟信号有以下几种:0~5 V,0~10 V,±5 V,±10 V,4~20 mA,信号的频率范围为DC~500 Hz。本系统的输入能够兼容以上5种输入量,并提供4~20 mA输出信号量输出。考虑到实际应用环境中的温度影响,如果直接使用低温漂高精度的模拟IC,系统的成本会非常高;如果采用带有温度自校准的方案,可以选用价格更合理的模拟前端芯片完成设计,但是需要额外的MCU进行运算和控制。信号输

出需要额外的DAC配合调理电路实现。

由以上的分析可知,需要有一款即集成有高精度ADC和DAC,又带有MCU的模拟微控制器ADI公司的ADuC7061刚好可以满足系统的需求:集成两个独立的的8kSPS、24位高性能多通道∑-△型模数转换器(ADC);集成32位ARM7TDMI微控制器;片上提供一个单通道14bitDAC;集成SPI控制器。使用ADuC7061作为核心,配合外部电路可以即满足模拟通道的精度要求,又可以实现灵活的数据传输和控制。

该方案优点:可以进行温度校正;原本的ADC,DAC和MCU只需要一块ADuC7061即可实现,即节约PCB面积又降低成本;对外的数据传输接口可以共用一个SPI,可以通过制定灵活的数据传输协议,实现复杂的数据传输和控制功能。

2 总体结构设计

该系统的结构框图如图1所示。系统与外部是电气隔离的:通过隔离的24VDC-DC完成电源部分的隔离;通过SPI隔离驱动电路完成数据接口的电气隔离。两路输入调理电路是完全一样的,功能包括输入信号调理和自校准实现。系统的4~20 mA输出,是将ADuC7061内部14位DAC的输出电压经过V-I转换电路实现的。系统通过隔离的SPI与外部通信

3 主要模块设计

下面分别介绍系统主要模块的设计,分为ADuC7061核心电路、输入调理电路和输出V-I转换电路。

3.1 输入调理电路

系统的模拟输入可以兼容4~20 mA电流信号,或者是0~5 V、0~10 V、±5 V和±10 V的电压信号。其中4~20 mA电流信号可以通过并联一个250 Ω低温漂(25 ppm/℃)电阻负载变送为1~5 V电压信号。考虑到ADuC7061的24位∑-△型ADC输入电压范围0.1~1.8 V,所以前面提到的各种信号都要调理到0.1~1.8 V的范围内。在本系统中,采用一种基于AD8295的信号调理电路

基于ADuC7061的高精度PLC模拟前端设计

其中基本的信号调理功能由AD8295 IN-AMP(仪用放大器)和AD8295 A1(运算放大器放)实现,这个电路可以将单端和差分信号都调理成为差分信号。由于ADC也是差分输入,输入信号的共模量只需要电压稳定即可,具体分析如下:

ADuC7061集成的24位∑-△型ADC在差分输入配置下,要求共模电压VCOM》0.5 V,系统采用的共模电压是将模拟参考2.5 V通过2个1%电阻分压到1 V的。从上面两个方程可以看出,无论输入信号是差分电压,还是单端输入,都可以将信号转换成为一个以1 V为基准的差分电压信号。对于系统输入的0~5 V、0~10 V、±5 V和±10 V都可以通过同一个电路拓扑结构来实现,考虑到精度要求,唯一需要改变的就是RG的阻值。当RG开路,G=1,支持0~10 V和±10 V输入;RG为49.4 kΩ,G=2,支持0~5 V和±5 V输入。

经过仪用放大器和运放调理得到的信号DIFF+和DIFF-是一个以1V为基准,最大差分电压可以达到10 V的差分信号。这个差分信号电压过大,远远超过ADC输入电压规定的范围。经过图2中由R1、R2和R3构成的无源差分衰减器减小10倍,得到一个以1 V为基准,最大差分电压为1 V的差分信号ADC_IN+和ADC_IN-,然后送给后一级的ADuC7061的ADC采集。差分信号衰减倍数计算方程为:

采用ADuC7061为核心进行PLC模拟前端的设计

输入调理电路要实现的另外一个重要的功能就是自动校准,首先需要分析输入电压和24位ADC输出码值的关系:

采用ADuC7061为核心进行PLC模拟前端的设计

化简后得到:采用ADuC7061为核心进行PLC模拟前端的设计

系统ADC测量得到的是CODEADC,需要得到的最终数据是CODEvin并计算输入电压。

本系统中的电阻分压网络使信号衰减10倍,理想情况下上K=0.1,B=0。但是实际使用中,由于电阻本身的温漂,导致K随着温度会增加。并且运放、基准源和ADC并不是理想的,同样会有温度漂移。但这个温度漂移可以通过额外的温度校正来补偿。

AD8295 A2与SW1、SW2和SW3(注释见图2)一起构成校正电路。首先将SW1切换到AGND,使AGND通过SW1和SW2连到IN+,SW3连到AGND,此时Vin=0,校准零点漂移B记录ADC输出二进制码值记录为B,得到:

  化简后得到:    系统ADC测量得到的是CODEADC,需要得到的最终数据是CODEvin并计算输入电压。    本系统中的电阻分压网络使信号衰减10倍,理想情况下上K=0.1,B=0。但是实际使用中,由于电阻本身的温漂,导致K随着温度会增加。并且运放、基准源和ADC并不是理想的,同样会有温度漂移。但这个温度漂移可以通过额外的温度校正来补偿。

然后将模拟参考电压2.5 V通过A2跟随通过SW1和SW2供给IN+,SW3切换到IN-。此时Vin=Vref,校准斜率K,记录ADC输出二进制码值记录为A,得到: 系统校正之后只需要保存A和B两个整数即可,但是由于系统K=0.1,所以计算所得的CODEvin长度为32位。

这种校正的方案有两个显着的优点:1)校准斜率过程中取输入Vin=Vref,此时校准得到的K,精度只与ADC的INL参数有关,与参考电压Vref本身的精度无关,减少了校准过程中引入的额外误差:2)校准的中间变量A和B都用24位二进制整数表示,只在最后做两次浮点运算,简化中间过程中的浮点预算的次数,减少截断误差对系统测量结果的影响。

3.2 输出V-I转换电路

4~20 mA输出电路的原理图如图3所示,ADuC7061的14位DAC能够输出0~2.5 V电压信号,通过V-I转换电路使输入的0.4~2.0 V电压信号线性变为4~20 mA电流输出。

这个电路是从Howland电流源电路基本拓扑结构改进而来的,采用Q1-2N7002代替运放作为功率输出,这个电路对R1~R4和RF的电阻值大小有如下要求:R1=R2=R3=R4=100 kΩ;且R1≥RF,在这种情况下可以忽略R1~R4臂上流过的电流。通过虚短和虚断对电路分析得到:,RF=100 Ω。在此基础上增加的改进有两点,在电路中加入了CF和RP:其中CF用来改进电流输出的频率响应特性;RP用来平衡运放本身的电压偏置和电流偏置,RP大小随着每一块运放芯片的电压、电流偏置值的不同需要单独调整。

3.3 ADuC7061核心电路

如图4所示,作为测量和控制的核心,ADuC7061核心电路包括以下3部分:ADuC7061核心单元;外部看门狗ADM6320;隔离的SPI驱动ADuM 7441。从图1和图4可以看出,输入信号调理电路作为片内ADC的前级驱动,输出电压信号直接与芯片内部的两个独立ADC相连。ADuC7061采用内部的PLL使ARM内核工作在10 MHz的频率下。复位引脚与外部看门狗ADM6320相连,通过P2.0的定时喂狗提高系统运行的可靠性,并使系统可靠上电复位。系统通过片内SPI硬件控制器与外部通信,系统工作在从模式下,SPI时钟频率最高支持到5 M。外部通过IO控制外部模拟开关完成自动校准。

4 系统软件设计

由于系统有一个ARM7TDMI的主控ADuC7061,因此该系统可以实现比较复杂测量功能和实现适应温度变化的自动校准策略。系统软件分为两个部分,测量任务和定时中断任务,任务的流程图如图5所示。

系统上电启动之后,配置完系统外设,然后对两路模拟输入通道完成自动校准,并将校准使用到的变量保存到非易失性存储器中。然后进入自动测量主循环中,由于有ARM7主控,外部可以通过SPI灵活的配置每个ADC通道的参数。在本系统中,可以通过SPI控制通道采样率,以提高∑-△型ADC的有效位数,进一步提高系统精度。系统的在定时器中断时问设定为1 s,每秒钟通过ADuC7061内部集成的温度传感器测量当前温度,当检测到累计温度变化超过阈值时,通知设置校准标志位,让系统在下一次测量前自动完成一次通道校准,实现对温度的补偿。

5 测量结果以及误差分析

为了保证系统的精度,电路采用4层PCB实现,并提供大面积的模拟地平面以降低噪声干扰。对该系统的测试包括两部分,首先是测试输入电压测量精度,其次是电流输出精度。由于输入电压信号为DC~500 Hz信号,而且ADuC7061中的∑-△型ADC的有效位数随着采样频率的降低而增加。所以为了测量系统的绝对误差,将采样率设置为1 k,输入信号为-10~+10 V间隔1 V的直流电平,在零点附近增加了±0.5 V和±50 mV的电压输入,被测电压基准通过FLUKE5700A给出,将结果通过SPI输出到电脑中记录结果,进行误差分析,误差测试结果如图6所示。

可以看出系统自动校准后,精度可以达到0.05%,达到了设计的预期。从图6中可以看出,在输入小电压范围内,系统的主要误差是系统噪声,这个噪声直接决定小信号输入下的系统精度。

4~20 mA电流输出误差测量中,负载电阻250 Ω,并联负载电容10 nF。电流测量仪器使用的是普源DM3058,输出电流设定值通过SPI发送给系统,输出电流误差结果如图7所示。

从图7可以看出,系统电流输出误差最大为0.2%。系统的误差都是正值,说明误差是V-I变换电路中两个臂上流经的电流造成的,因为两个臂上流经的电流值是输出电流的千分之一,与误差在同一个数量级上,虽然系统已经达到了设计的目标,但是考虑到进一步提高系统精度,这个误差可以通过软件校准的方式,使用最小二乘法建立系统输入输出函数关系,可以进一步提高精度。

6 结论

本系统以ADuC7061为控制核心,采用改进的模拟调理电路,配合自动校准策略,完成高精度的电压采集功能。通过采用改进的Howland电流源电路完成4~20mA电流输出功能。配合外部的4线SPI完成系统对外通信,作为一个带有SPI接口的PLC模拟前端,起到模拟信号采集和电流输出的功能。该系统模拟测量精度高,软件灵活,接口通用,具有很高的实用价值,不仅可以作为PLC的模拟前端,也为其他模拟前端设计提出了很有价值的参考。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6808

    浏览量

    147612
  • plc
    plc
    +关注

    关注

    4974

    文章

    12250

    浏览量

    454862
  • 运算放大器
    +关注

    关注

    211

    文章

    3983

    浏览量

    170670
收藏 人收藏

    评论

    相关推荐

    ADuC7061和外部RTD构建的基于USB的温度监控器

    ADuC7061和外部RTD构建的基于USB的温度监控器
    发表于 07-03 11:04 2776次阅读
    <b class='flag-5'>ADuC7061</b>和外部RTD构建的基于USB的温度监控器

    ADUC7061 flash程序跑飞怎么解决?

    ADUC7061应用在产品中,在工业现场应用一段时间后,大约有百分之五的产品程序跑飞了,拿回来重新加载程序后,功能又正常,怀疑是flash程序存储有一定的问题,想请教一下,有遇到这样的问题的吗?
    发表于 01-12 08:15

    ADUC7061如何使用C语言实现EEPROM功能?

    我使用ADUC7061做的信号采集,现在客户需要实现EEPROM功能来保存3-5个数据,请问如何使用C语言实现?不使用外部EEPROM 专用IC。
    发表于 01-12 06:56

    ADuC7061采集得到的数值会突然下降是为什么?

    ADuC7061采集0~20mV的差分信号输入,如果输入1.02mV,ADuC7061转化过来的差不多也是1.02mV,但是运行一段时间之后,ADuC7061转化过来的数值会突然之间掉下去,大约降低了0.3mv,但是信号源没有
    发表于 01-15 07:20

    RS232串口如何与ADUC7061系列单片机通讯?

    RS232串口怎样与ADUC7061系列单片机通讯? ADUC7061系列单片机使用2.5v电压,使用串口芯片ADM3202、ADM3222能行吗?
    发表于 01-15 06:32

    如何根据ADuC7061的主ADC转换结果得出实际的模拟输入量?

    各位大侠好,我用ADuC7061的主ADC转换输入的模拟量,得到的数据在ADC0DAT寄存器中,我的疑问是我怎么从这个转换得到的数字量知道输入的模拟量的大小呢?怎么ADuC7061的d
    发表于 01-15 06:22

    如何实现Cortex-M3与ADuC7061之间用IIC通讯?

    我想实现Cortex-M3与ADuC7061之间用IIC通讯,Cortex-M3用做主机,ADuC7061用做从机 。我要实现收发数据,ADuC7061应该怎样配置呢,思路是什么?
    发表于 01-15 06:13

    基于ADI公司ADuC7061的智能压力变送器

    本参考设计以ADI公司ADuC7061为主控芯片(ARM7TDMI内核、低功耗、精密模拟微控制器),利用ADuC7061内部缓冲器、放大器,将板载的Epcos压阻传感器差分电压模拟信号
    发表于 10-16 18:15

    ADuC7061采集得到的数值突然间掉了下去

    ADuC7061采集0~20mV的差分信号输入,如果输入1.02mV,ADuC7061转化过来的差不多也是1.02mV,但是运行一段时间之后,ADuC7061转化过来的数值会突然之间掉下去,大约降低了0.3mv,但是信号源没有
    发表于 10-23 09:50

    请问怎么根据ADuC7061的主ADC的转换结果得出实际的模拟输入量?

    各位大侠好,我用ADuC7061的主ADC转换输入的模拟量,得到的数据在ADC0DAT寄存器中,我的疑问是我怎么从这个转换得到的数字量知道输入的模拟量的大小呢?怎么ADuC7061的d
    发表于 11-30 10:58

    利用ADUC7061芯片采集4路模拟信号,局部加热会导致ADUC7061测量不稳定吗?

    利用ADUC7061芯片采集4路模拟信号,单端采集。其中一路信号作为其它3路信号的参考信号。 在常温下,参考信号采集数值正常,波动范围在两个信号量之间,但是局部加热后,参考信号采集数值波动范围在8个
    发表于 12-04 07:13

    基于USB和ADuC7061的RTD温度监控器

    This circuit shows how the ADuC7061 precision analog microcontroller can be used in an accurate RTD
    发表于 04-06 15:53 59次下载
    基于USB和<b class='flag-5'>ADuC7061</b>的RTD温度监控器

    基于ADuC7061的高精度PLC模拟前端设计

    针对于工业PLC模拟信号的采集和输出,本文提出了一种基于ADuC7061的高精度模拟前端设计方案。该系统支持双通道的
    发表于 05-02 16:50 65次下载
    基于<b class='flag-5'>ADuC7061</b>的高精度<b class='flag-5'>PLC</b><b class='flag-5'>模拟</b><b class='flag-5'>前端</b>设计

    ADUC7061 低功耗、精密模拟微控制器、双通道Σ-Δ型ADC,Flash/EE存储器,ARM7TDMI内核

    电子发烧友网为你提供ADI(ti)ADUC7061相关产品参数、数据手册,更有ADUC7061的引脚图、接线图、封装手册、中文资料、英文资料,ADUC7061真值表,ADUC7061
    发表于 02-22 14:53
    <b class='flag-5'>ADUC7061</b> 低功耗、精密<b class='flag-5'>模拟</b>微控制器、双通道Σ-Δ型ADC,Flash/EE存储器,ARM7TDMI内核

    AN-1524:基于USB的温度监测仪,采用ADuC7061精密模拟微控制器和外部RTD

    AN-1524:基于USB的温度监测仪,采用ADuC7061精密模拟微控制器和外部RTD
    发表于 05-20 19:21 12次下载
    AN-1524:基于USB的温度监测仪,<b class='flag-5'>采用</b><b class='flag-5'>ADuC7061</b>精密<b class='flag-5'>模拟</b>微控制器和外部RTD