我想测量分流电阻中的电流(我们将分流电阻串联到器件以测量其电流消耗的分流电阻)。 我可以在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 |