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.

[参考译文] AMC1210:转换问题(模数转换)

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/991886/amc1210-problem-with-conversion-analog-to-digital

器件型号:AMC1210

我想测量分流电阻中的电流(我们将分流电阻串联到器件以测量其电流消耗的分流电阻)。 我可以在4个并联的电阻中选择分流电阻值。  

目标是使用 AMC1210中的4个模块滤波器同时测量4个器件的电流。 但首先、我想使用第三个模块滤波器测量一个器件中的电流。

我使用 NUCLEO-L446RG 通过 SPI 总线与 AMC1210进行通信。 在 AMC1210前面、我使用 AMC1305 (Δ-Σ 调制器)将分流端子上的模拟电压转换为数字电压。

我使用三阶模块滤波器的三阶正弦滤波器。 我断开比较器滤波器、时间单元和积分器单元的连接。  

我使用带有中断的引脚 ACK 来从滤波器获取数字数据。

配置:  

控制寄存器= 0x0B00

时钟分频器寄存器= 0x0000

对于第3模块过滤器:

控制参数寄存器= 0x0000

Sinc 滤波器参数寄存器= 0x0F1F

积分器参数寄存器= 0x0000

比较器参数寄存器= 0x0000

对于其它模块过滤器:默认值

我的问题是滤波器从其数据寄存器发送到 STM32的数字数据、它与我在 AMC1305输入端测量的模拟电压不对应。

似乎未正确地将模拟电压转换为数字电压。  

如果我在程序中添加一些代码行、数字数据会稍有不同。 数字数据值因程序返回所需的时间而异。

也许我对滤波器和时间安排不了解。

分流器1  

电流(A)

0、5

1

1.5

2.

2.5.

3.

3、5

4.

(0,01Ω μ A)

输入电压 AMC1305 (mV)

2、6

9、1

15.6.

22、2.

28、7.

35、2

41、8.

48、3.

Vdevice = 5V

理论数据值(有符号16位)

1699

5948

10196

14510

18758

23007

27320

31569

输出数据值 AMC1210 (有符号16位)

3536.

6796

10352.

13702

17276.

20576.

23882

27832

差值

1837.

848

156.

-808

-1482.

-2431

-3438

-3737

分流器2  

电流(A)

0、05

0、1

0、2

0、3

0、4

0、5

(0,1Ω μ A)

输入电压 AMC1305 (mV)

1.5

6、6

16、9.

27、2.

37、6

47、9.

Vdevice = 5V

理论数据值(有符号16位)

980

4314

11046.

17778

24575

31307

输出数据值 AMC1210 (有符号16位)

2846.

5595

10853

16279.

21679

27125.

差值

1866

1281.

-193.

-1499

-2896

-4182

分流器3  

电流(A)

0、01

0、03

0、05

0,07.

0.09.

0、1

(0,5Ω μ A)

输入电压 AMC1305 (mV)

2、4

12、5

22、5

32、6

42、6

47、7.

Vdevice = 5V

理论数据值(有符号16位)

1569

8170

14706

21307

27843

31176.

输出数据值 AMC1210 (有符号16位)

2709

8137

13408.

18481

23959.

26650

差值

1140.

-33.

-1298

-2826.

-3884

-4526

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

    尊敬的 Annaelle:

    我们对该器件的主要支持现已推出、但在此期间、我将尽力提供帮助。  

    另一个问题是如何在 STM 中将 AMC1210的输出代码转换回电压?  

    您是通过分流器还是交流电应用直流电流? 我建议在调试时使用直流电。  

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

    您好、Alexander、  

    感谢您的回答。

    -您说“现在对该设备的支持已经结束”,这意味着什么? 支持今天是4月8日,或者支持今天是永远的?

    -对于转换,我的理解是:我选择了三阶 sinc 滤波器,并将 OSR 配置为32。 因此、数字数据可以得到一个介于-32758至+32768之间的值、该值对应于16个有符号位的分辨率。 AMC1305的动态输入电压范围为[-50mV;+50mV]。 因此,我计算了量子转换:q = VPE /2^n,VPE = 100mV (电压范围),n =分辨率= 16位→q = 0.1/ 65536 = 1.53µV。

    因此、例如、如果数字数据为3541、则对应5.4mV。 (5541 * q = 0.0054)

    -我正在通过分流器施加直流电流。

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

    尊敬的 Annaelle:

    我的意思是支持在4月8日的 PTO 上进行。 他今天应该回到网上、我会通知他这个话题。  

    您的转换看起来正确。  

    AMC1305输入端 的电压"输入电压 AMC1305 (mV)"是测得的还是理论值? 我只是要求排除模拟误差。  

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

    尊敬的 Annaelle:

    根据时钟分频器寄存器的配置、似乎主滤波器使能被设置为禁用所有滤波器。 您的帖子中是否有拼写错误?  如果禁用了 SINC 滤波器、我不会指望从器件中获得任何结果。  其他寄存器设置看起来正确。  

    此致、

    Scott

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

    您好、Alexander、

    感谢您的回答。

    测量"输入电压 AMC1305 (mV)"。

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

    您好、Scott、

    感谢您的回答。

    是的、我的第一个帖子中有一个拼写错误。

    以下是正确的值:  

    时钟分频器寄存器= 0x0B00

    控制寄存器= 0x0000

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

    大家好、我一直都很担心我的问题、有什么建议吗?

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

    尊敬的 Annaelle:

    您是否按照第22页所述应用16位移位?  

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

    您好、Alexander、

    感谢您的回答。

    不、我不应用16位数据移位、因为在这里、SINC 滤波器的 OSR 等于32、并且会绕过积分器、以便数据可以从-32768变为+32768。 滤波器最多需要16位才能将数据写入数据寄存器、它不需要32位字、因此我们不必移位数据即可将其具有16位表示形式。

    但也许我不清楚"16位数据移位"。

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

    尊敬的 Annaelle:

    在更仔细地查看表中的数据后、我注意到预期的满量程范围并不完全正确。 对于 AMC1305、满量程范围实际上基于+/-62.5mV 的削波电压。 +/-50mV 是器件的指定线性范围、这会产生80%的1或0位流、具体取决于您所在范围的哪一端。 请参阅随附的 Excel 文件、其中包含具有给定输入电压的预期代码示例:

    e2e.ti.com/.../AMC1210_5F00_e2e.xlsx

    在调试代码时、使用已知输入评估器件也会很有用。 最简单的方法是使用信号发生器或电压电源向 AMC1305输入施加固定的已知电压。 这样就不会担心分流器不准确。


    此致、

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

    您好、Scott、  

    感谢您的回答。

    实际上、我在满量程范围方面犯了一个错误、我根据模拟输入电压更正了预期的数字理论值。 感谢你的帮助。

    但是、为了调试代码、我没有任何设备可以精确地在 AMC1305的输入端施加差分电压。

    此外、我的第二个问题是代码中的时序。 对于固定模拟输入电压、如果我在代码中添加延迟、则数字输出值会有所不同。 请注意、添加的延迟不会影响数据检索。

    是否有任何特定的时间来获得正确的值?

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

    尊敬的 Annaelle:

    Scott 再次退出、让我跳到这里。  您能否分享用于从 AMC1210读取数据的时序原理图和波形?  对于 AMC1305和我们的其他调制器/放大器、其中一个输入通常连接到高侧接地(在本例中为 AGND)、因此单端信号发生器或电源将用于 Scott 所述的"仿真"测试。

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

    您好、Tom、  

    感谢您的回答。

    以下是2个文档、其中包含用于从 AMC1210读取数据的时序原理图和波形:  

    e2e.ti.com/.../1780.Schematic.pdf

    e2e.ti.com/.../Waveforms_5F00_timing.pdf

    对于"纹波"测试、是的、我可以使用单个信号、但我没有一个相当精确的外部电源来获得低于50mV 的精确电压值。 尽管我使用电位计固定单个信号、但我必须测量该电压才能知道它、这会降低该值的精度。 此外、我可以使用 DAC 来固定模拟电压、其精度比之前的两个想法更高、但这需要一些时间、因此我更喜欢在执行此"采样"测试之前学习其他解决方案。  

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

    大家好,我一直都很担心我的问题,有什么建议吗?

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

    尊敬的 Annaelle:

    很遗憾听到您仍然有问题。  您提到的添加的"延迟"是前8个 SCLK 周期和剩余16个周期之间的延迟吗?  如果您消除该延迟、是否会获得一致的结果?  整个事务中的/CS 线路是否处于低电平?   此外、您要向器件写入的其他信息是什么?  在您"要求读取数据寄存器"的屏幕截图中、看起来您将0x21用作要读取的地址、后跟0x3000。

    在原理图中、引脚测量1和引脚测量2?  您使用的运算放大器只能达到任一电源轨的~25mV。  您是否能够在+/-5V 范围内为该放大器供电、并查看情况是否有所改善?

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

    您好、Tom、  

    感谢您的回答。

    对于延迟:测量电流的代码在主函数的无限循环中执行。 当测量值准备就绪时、AMC1210会在连接到 STM32的 ACK 引脚上生成中断。 然后、当相应的管脚发生中断时、标志会在中断处理程序中设置为 true。 该值在主循环中从 AMC1210中检索。 之后、它会复位相应的标志。 如果我添加代码行、无论在无限循环中的哪个位置、测量值都将与之前的代码行不同。 这些值不是随机的、而是根据延迟以不同的值为中心。 例如、如果在主循环中未添加延迟、特定电流的值将约为3000。 除了在主循环中添加延迟之外、这些值将以2500为中心。

    在整个传输过程中,/CS 线路为低电平:/CS 线路被复位,然后是 STM32写入,然后是 STM32读取,最后是/CS 置位。  有关详细信息、请参阅下面的文档"Waveforms_timing_2"。

    在上面的文档中、我们还可以看到(使用新波形)、我们看不到您谈到的"附加信息"。 实际上、我不知道我们可以在之前发送的文档中看到什么"附加信息"。 因为此时、STM32只是从 AMC1210读取信息、而不是同时写入 soming。 缓冲区的内容可能不是空的。

    放大器->  

      

    VPOT =电位计输出端的模拟电压、周围有一个盒子(请参阅"电位计"上方的文档和前一条消息中的原理图)

    VSYS =我要测量电流的系统的电源电压(这里是固定的)

    该放大器用于具有差分放大器。 那么、这里是 V+= V-= VSYS/2。 我知道 VSYS 大约为5V、因此 V+= V-~= 2.5V。 我处于放大器范围的中间。

    但是、也许我在我的理由中犯了一个错误。

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

    尊敬的 Annaelle:

    几周后、让我回顾一下这个内容并刷新我的记忆。  您可以说、没有延迟、您将获得代码~3000、延迟为~2500。  此"延迟"仅在从中断接收到寄存器数字读数的时间起作用、对吗?  在您包含/CS 的新图片中- ACK 有/无延迟做什么?