This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DAC7568EVM:模拟输出不准确和更改-需要校准?

Guru**** 2585275 points
Other Parts Discussed in Thread: DAC7568EVM, DAC8568

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/635687/dac7568evm-analog-output-inaccurate-and-changing---calibration-needed

部件号:DAC7568EVM
主题中讨论的其他部件: REF5025DAC8568

您好,

我计划在设计中使用DAC8568C (实际上,我只需要大约11位的精度,但是考虑到我从数据表中看到的所有不准确之处,我想我最好选择16位)。 为了进行评估,我使用的是DAC7568EVM (但我知道,除了DAC分辨率外,DAC是相同的)。

我正在使用TPS7A471EVM为EVM供电,我已将其设置为提供5.4 V (有效测量5.439 V)。 SPI与Arduino的连接运行正常。 但是我的模拟输出有问题。

如果为内部2.5 V参考通电,根据我的Fluke 187真有效值万用表,我获得5.0006 和5.0007 V之间的全刻度输出(因此,这里的一切都符合预期; 根据示波器,电压输出基本上被一些噪音覆盖,但只要RMS正常,我就不会太在意)。 但是,零刻度输出为2.8 mV。 两小时后测量并重新连接所有导线,我现在获得4.9997 V满刻度和2.7 mV零刻度。

在进行第二次测量时,如果连接评估板上提供的外部参考(REF5025),我将获得5.0000 V满刻度和2.4 mV零刻度输出。

现在,我对我的情景有一些问题:

  1. 怎么可能呢,我在零刻度上有那么多的偏离,但在全刻度上是相当准确的? 对于1 LSB初始精确度,我是否应该关闭最大1.22 mV? 当然,我也读过电压参考精确度,最大值为5 mV,但由于全刻度输出是正确的,我不能把它联系起来。 补偿这种情况的最佳方法是什么? 编辑:我刚刚看到了高达4毫伏的零代码错误。 这可能是问题吗? 我能弥补这一点吗?
  2. 如何在初始电压参考精确度为+/- 5 mV的情况下获得16位精度? 这对我来说更像是10位精度。

我能否通过校准消除这些不准确之处? 如果是这样,我该怎么做(在所有DAC的Arduino代码中仅执行一次是否足够,或者我是否必须再次为每个DAC执行此操作,甚至在每次启动DAC时执行此操作)? 实现所需准确性的最佳方式是什么(11位–减去所有误差后–对我而言)?

非常感谢您回答我的问题! 我对模拟信号很缺乏经验,所以我希望你们能帮我。

此致,

Henrik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Henrik,

    欢迎使用E2E,感谢您的查询。 我正在研究这个问题。 会尽快回来的

    此致,
    Uttam Sahu
    精密DAC应用工程师
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你,Uttam!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Henrik,

    我对这件事的两分钱...

    我在零刻度上非常偏离,但在全刻度上非常准确,这怎么可能呢? 对于1 LSB初始精确度,我是否应该关闭最大1.22 mV? 当然,我也读过电压参考精确度,最大值为5 mV,但由于全刻度输出是正确的,我不能把它联系起来。 补偿这种情况的最佳方法是什么? 编辑:我刚刚看到了高达4毫伏的零代码错误。 这可能是问题吗? 我可以对此做出某种补偿吗?[/QUOT]

    DAC8568是单电源设备,在您使用~5.4V VDD电源电压工作时,可以使用此设备。 在这种情况下,请考虑输出放大器负极电源为GND,而正极电源为5.4V。 如果是正满刻度输出,则头部空间在满刻度5V输出上的电压为400mV,因此不受任何输出电压摆动到导轨问题的限制。 在零刻度的情况下,同时没有脚空间,因此您将观察到放大器输出电压摆动至导轨能力的一些特征,数据表中通过零代码错误描述了这一点。 由于这是单电源设备,因此您无法采取任何措施来弥补此错误,并且您共享的测量值与数据表数据一致。

    如果接近零刻度对您很重要,我们可以建议其他方法。 我认为最实用的方法是考虑使用无缓冲的R-2R DAC,这样您就可以选择具有较低回转到轨道限制和/或在双电源上运行的外部放大器。

    初始电压参考精确度为+/- 5 mV时,如何获得16位精度? 这对我来说更像是10位精度。[/QUOT]

    分辨率和准确性并不相同。 准确性表明您与绝对值的接近程度,同时分辨率描述了您可以采取的步长/步数。 如果要从DAC校准偏移和增益错误,在线性操作区域内,基本上只能将INL错误+噪声作为错误源,以及16位步进大小。 在DAC8568中,如果我们假设完美的偏移和增益校准,则线性操作区域中会出现0.018 % FSR错误,根据数据表,该错误的定义范围为代码485到6.4714万 (避免摆动到导轨限制)。

    我是否可以通过校准消除这些不准确之处? 如果是,我该怎么做?(在所有DAC的Arduino代码中仅执行一次是否足够,或者我是否必须再次为每个DAC执行一次,甚至在每次启动DAC时执行此操作)?[/QUOT]

    每个DAC需要单独校准。 每次启动时都不需要校准,尽管过了足够长的时间(年),某些参数将开始移位。 PCB或环境中的热量也会影响所有数据表漂移系数定义的性能。

    Henrik Hille 说:
    对于我来说,实现所需准确性的最佳方法是什么(11位–减去所有误差后–对我而言)?[/QUOT]

    通常,通过在室温(25C)下使用两点测量来测量装置的性能,执行最简单的校准以消除偏移和增益误差。 在这里,您可以对输入数据应用偏移和标量系数(回想一下旧的y = mx + b)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kevin,非常感谢您的回答! 我现在看得更清楚了。 :)

    让我再向大家介绍一下我整个系统的情况,让大家对我的跟进问题有更多的了解。 我正在设计一个编码器,它应该将线性位置传感器的sin-cos信号转换为线性模拟电压(最大5 V),该电压与感应位置成正比。 模拟信号随后被馈送至PLC模拟输入模块以进行进一步处理。

    应用程序的精确度要求很高,因此我需要能够区分666个不同的位置(即电压值;根据您的文本,我的理解是,这将称为分辨率要求; 以前是2000步-这就是为什么我指的是12位精度,最初是指2.5 mV),精度尽可能高(+-1位置步长会更好)。 因此,一个电压步长可能会围绕7.5 mV (如果我避免如下所述的零范围,实际上会小一些)。 从原始传感器信号中得出的位置工作正常,我已将其成功存储在我的Arduino中。 现在,我在模拟输出端工作,这似乎有点棘手。

    [报价用户="Kevin Duke"]

    DAC8568 是单电源设备,在您使用~5.4V VDD电源电压工作时,可以使用此设备。 在这种情况下,请考虑输出放大器负极电源为GND,而正极电源为5.4V。 如果是正满刻度输出,则头部空间在满刻度5V输出上的电压为400mV,因此不受任何输出电压摆动到导轨问题的限制。 在零刻度的情况下,同时没有脚空间,因此您将观察到放大器输出电压摆动至导轨能力的一些特征,数据表中通过零代码错误描述了这一点。 由于这是单电源设备,因此您无法采取任何措施来弥补此错误,并且您共享的测量值与数据表数据一致。

    如果接近零刻度对您很重要,我们可以建议其他方法。 我认为最实用的方法是考虑使用无缓冲的R-2R DAC,这样您就可以选择具有较低回转到轨道限制和/或在双电源上运行的外部放大器。

    [/引述]

    感谢您的解释! 这对我来说是有意义的,实际上,我想到,它最好不要使用零范围,所以PLC可以检测铅断裂。 您是否意味着我的FSR不会受代码6.4714万的上限限制,而实际上是6.5535万,因为我的电源是5.4 V? 然后我可以使用37 mV (代码485)和5 V之间的所有值,并假设这些点之间的线性,对吗?

    [报价用户="Kevin Duke"]

    分辨率和准确性并不相同。 准确性表明您与绝对值的接近程度,同时分辨率描述了您可以采取的步长/步数。 如果要从DAC校准偏移和增益错误,在线性操作区域内,基本上只能将INL错误+噪声作为错误源,以及16位步进大小。 在DAC8568中 ,如果我们假设完美的偏移和增益校准,则线性操作区域中会出现0.018 % FSR错误,根据数据表,该错误的定义范围为代码485到6.4714万 (避免摆动到导轨限制)。

    [/引述]

    这两个术语对我来说还不是100%清晰。 INL / FSR错误是否会实际影响准确性或分辨率? 也许DAC总是将分辨率固定在16位,我只需要一个大约7.5 mV的模拟输出精度?! 在这种情况下,我是否可以使用12位DAC,因为我所需的精度仍低于5V/2^12 = 1.22 mV,因此将分辨率从16位更改为12位不会影响我的精度? 0.018 %听起来不错。 这是INL错误,对吧? "完美校准"的实际含义是什么? 我是否可以通过应用增益和偏移校准(如下所述)完全消除指定的"满刻度误差"?

    [报价用户="Kevin Duke"]

    通常,通过在室温(25C)下使用两点测量来测量装置的性能,执行最简单的校准以消除偏移和增益误差。 在这里,您可以对输入数据应用偏移和标量系数(回想一下旧的y = mx + b)

    [/引述]

    这听起来很简单。 为了达到我所需的精确度,只需输入代码485,测量输出,输入代码6.5535万,测量输出,从与我所期望的差值(37 mV和5 V)中导出偏移和增益校准系数并将它们存储在EEPROM中即可。 在生产使用中,每次将代码输入到DAC之前,我都会将这些因素应用到代码中。 这真的不是什么神奇的东西。 听起来太简单,难以置信。 :-)

    因此,简而言之,如果不使用零量程并应用偏移和增益校准,我应该能够达到约+mV 7.5 的准确度目标,对吗? 您能否告诉我,如果应用要求更改为+-5 mV甚至2.5 mV,这是否仍然有效? 除了发援会的核心外,在这些情况下,内部参考是否仍然足够? 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Henrik,

    很高兴我们能够帮助您了解数据表的详细信息,并使设备选择与您的应用需求保持一致。

    Henrik Hille 说:
    您是否意味着我的FSR不受代码6.4714万的限制,而实际上是6.5535万,因为我的电源是5.4 V? 然后我可以使用37 mV (代码485)和5 V之间的所有值,并假设这些点之间的线性,对吗?[/QUOT]

    从直观的电气角度来看,如果您的净空超过5V,则定义线性操作区域的代码上限将大于6.4714万。 如果您拥有应用程序中所述的扩展空间,我相信在完整的代码6.5535万之前,您不会遇到任何问题。 出于传统原因,我认为数据表是按照这种两点最佳匹配线选择高代码的方式指定的,因为可能具有5V FSR的旧零件也指定了5V正电源。 因此,除了数据表所说的内容,我无法真正保证任何内容,但我认为您应该能够访问线性操作区域中的全尺寸代码。 这也与您测量的观察结果相匹配。

    我唯一要补充的是,如果不进行校准,偏移和增益误差的影响仍然可能会使您处于一种全标度值不完全完美的情况,因为这些影响也会影响全标度的输出。

    这两个术语对我来说还不是100%清晰。 INL / FSR错误是否会实际影响准确性或分辨率? 也许DAC总是将分辨率固定在16位,我只需要一个大约7.5 mV的模拟输出精度?![/QUOT]

    有两个主要规范与描述数据转换器的有效分辨率有关,它们被称为差分非线性(DNL)和积分非线性(INL)。 我使用百分比满刻度范围(% FSR)作为术语来描述与整个范围相关的错误。 因此,% FSR是一个单位,而INL和DNL是描述设备的规格(即通常在LSB中指定INL和DNL,但您可以将其转换为% FSR)

    DNL指定了两个相邻代码之间的差异,对于DAC8658,指定了一个16位器件,DNL错误为+/-1 LSB最大值。 这意味着对于任何两个相邻代码,您将始终按预期递增或递减,并且不会丢失代码,这意味着您拥有16位设备。

    INL实际上是DNL错误的总和。 您可以想象每个步骤不会 恰好是1个LSB,例如,一个步骤可能是1.5 LSB (此处的错误是0.5 LSB)。 如果您有两个固定的1.5 LSB步骤,则集成错误将是这两个步骤中的1 LSB。 因此,基本上在您执行校准时,唯一留下的错误(在基本术语中)是INL错误,对于DAC8568,该错误表示在整个传输功能的任何点上都不存在(除了校准时丢失的错误) 您看到的错误是否大于12个LSB或我之前提到的0.018 % FSR编号。

    我说INL和DNL是主要的错误来源。 我想我以前也没有这样做过,但是,你也可能会看到噪音和温度漂移系数的影响。

    在这种情况下,我是否可以使用12位DAC,因为我所需的精确度仍然低于5V/2^12=DAC 1.22 毫伏,因此将分辨率从16位更改为12位不会影响我的精度? [/引述]

    完全正确。 精度=% FSR错误。 分辨率=步长。

    % 0.018 听起来不错。 这是INL错误,对吧? "完美校准"的实际含义是什么? 我是否可以通过应用增益和偏移校准(如下所述)完全消除指定的"满刻度误差"?[/QUOT]

    是的,该数字是12个LSB转换为% FSR。 SO 12 / 6.5536万 * 100 =~0.018 %

    当我说完美校准时,我的意思是您已经成功地消除了基于两点测量的偏移和增益误差的影响。 在现实中,由于 测量,重复性等方面存在噪音,它可能无法完全消除这些影响。我提议的这种校准纯粹是在数字领域,因此模拟域产生的端点效应(如输出放大器摆动到导轨限制等)仍然存在。 偏移误差通常来自输出放大器的输入偏移电压,该电压也在模拟域中。 增益错误来自模拟域中DAC电阻器字符串中的电阻器匹配。 因此,在终点,即使使用"完美校准",您仍可能会看到错误,因为您将会缺少要补偿的代码。

    示例:假设您在1 % 0-5V输出16位DAC上遇到了一些极端的问题,例如-DAC增益错误,因此在满刻度代码6.5535万时,您将看到4.95V而不是5V。 您不能输入大于6.5535万的代码来补偿这种情况。

    这听起来很简单。 为了达到我所需的精确度,只需输入代码485,测量输出,输入代码6.5535万,测量输出,从与我所期望的差值(37 mV和5 V)中导出偏移和增益校准系数并将它们存储在EEPROM中即可。 在生产使用中,每次将代码输入到DAC之前,我都会将这些因素应用到代码中。 这真的不是什么神奇的东西。 听起来太简单,难以置信。 :-)

    如上所述,您将需要低于代码6.5535万,以便在高端上实际有空间执行此校准。 数据表中的高代码和低代码值可能是很好的准则。

    那么,简而言之,如果不使用零范围并应用偏置和增益校准,我应该能够达到我的目标,即大约+mV 7.5 的精确度,对吗? 您能否告诉我,如果应用要求更改为+-5 mV甚至2.5 mV,这是否仍然有效? 除了发援会的核心外,在这些情况下,内部参考是否仍然足够? 谢谢![/QUOT]

    如果按照描述成功校准,您将消除内部参考初始精确度的影响,因为它已包含在增益校准例程中。 这些影响是直接相关的。

    如果校准完美,仅INL错误(无噪音等),因为我没有理由假设带宽/工作温度范围) 12 LSB最大值为915uV,只是略低于1mV。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很棒,这很有帮助! 我真的很欣赏这种简单的方式来获得个性化且非常有帮助的建议。 谢谢!