我查看了以下链接中记录的讨论
通过使用 GUI 手册定义的以下公式、我的校准采用3个 PADC 值、并将其转换为3个 DAC 值:
DAC = h0+g0*PADC+n0*PADC^2
这是一种非常简单的 3x3线性矩阵解决方案。
但结果不匹配。
因此、我遇到的问题与本次讨论中的问题相同(请参阅 上面链接中的支持案例) =>计算系数与 GUI 的结果不匹配。
请告诉我您当时是如何解决的。
感谢你的帮助。
下面的图像中显示了我的计算。
此致、
伊戈尔
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.
我查看了以下链接中记录的讨论
通过使用 GUI 手册定义的以下公式、我的校准采用3个 PADC 值、并将其转换为3个 DAC 值:
DAC = h0+g0*PADC+n0*PADC^2
这是一种非常简单的 3x3线性矩阵解决方案。
但结果不匹配。
因此、我遇到的问题与本次讨论中的问题相同(请参阅 上面链接中的支持案例) =>计算系数与 GUI 的结果不匹配。
请告诉我您当时是如何解决的。
感谢你的帮助。
下面的图像中显示了我的计算。
此致、
伊戈尔
尊敬的 Igor:
GUI 算法的结果可能与在其他文章中提到的 DLL 中所得到的结果略有不同。 原因是该计算实际上可能具有多种可能结果、其差异具有更好的线性拟合。 在固件内、EEPROM 中的值全部标准化为2^22。 在参考帖子中、当比较系数时、EEPROM 值被缩放到2^30。 原因很难解释、但最终结果是最终 DAC 计算针对最终 DAC 输出右移8位。 对于 EEPROM 设置、这要求计算开始值为2^30 (22+8)。
至于计算、在尝试确定正确系数时、固件中的实际计算(在3P1T 用例中)首先进行压力测量、 根据 EEPROM 中的 OFFEN 设置、 将 EEPROM 的数字增益设置(PADC 增益)乘以压力转换代码、然后添加偏移 PADC 偏移)、或将增益乘以转换结果代码和 PADC 偏移 EEPROM 值的组合。
因此、以最简单的术语来思考该计算、h0系数直接与偏移有关、g0与增益有关。 请记住、h0项位于上一段的初始计算之后。
因此、您在公式中显示的 PADC 值是在计算从 EEPROM 值应用的数字增益和偏移之后得出的。 其他几个注意事项是 EEPROM 值是二进制补码值。 GUI 可以计算负系数。 另外、在将 GUI 与您计算的系数进行比较时、必须确保这些值使用相同的数值。 这意味着您作为系数计算和确定的值必须适合于适合于 EEPROM 值的24位范围内的值(乘以2^30时)。 最后一点是确保值不会作为32位有符号整数在固件中溢出。 这就是为什么会将内部值在固件中标准化2^22。
我要说明的最后一点是、计算后的结果必须是正值、并且必须适合14位、因为这是 DAC 的分辨率。 如果该值为负、则 DAC 输出将为0。
此致、
鲍勃 B
Bob 您好!
感谢您的答复。
不过,你的回应并没有回答我的问题。
众所周知、获取校准系数的方式和结果可能不同。
我知道 ho 是二阶多项式的第一项。
我的问题是、没有一个换算系数适用于所有3个系数(h0、g0和 n0)。
我选择了只有一个有效解决方案的情况:
当获取3个读数并计算3个系数时 è 只有1个有效的3x3线性系统解决方案。
我添加的图像显示"g0"系数具有2^30的缩放比例(这是第二项)。
不过、"h0"和"n0"不会缩放为2^30。
请帮助我了解如何正确缩放、确定正确的 PGA305系数:
测量的1T3P 数据如下表所示:
校准类型: 1T3P |
|
|
压力 [PSID] |
PADC -十进制值 |
已校准 DAC - 十进制值 |
-100 |
-4790932 |
1638 |
0 |
4750 |
8160 |
100 |
4759893 |
14685 |
我计算了校准系数、并将其与 PGA305 GUI 计算的系数进行比较。
等式:dac (十进制)= h0 + g0*PADC + n0*PADC^2
单解决方案系数(显示针对 零 错误):
H0=8132.309438
G0=0.00136606
N0=1.28E-12
PGA 计算的 GUI 系数:
H0=1FEEBD (十进制数2089917)
G0=1661AC (十进制数1466796)
N0=FFFE46 (十进制 -442)
TADC 增益=1
TADC 偏移= 0
PADC 增益=1
TADC 偏移=3CA0 (十进制数15520)
与 h0、g0和 n0没有直接相关。
我已经看到有人设置了一个实时会话、这样可以更轻松地解决很难与 vi 电子邮件进行通信的问题。
感谢你的帮助。
此致、
伊戈尔
尊敬的 Igor:
我很确定我确实回答了你的问题,但显然我不清楚。 实际系数值(h0、g0、n0)可以计算为浮点值、但要考虑到前面所述的限制以及系数被标准化为22位(加上8位、强制 DAC 输出为14位)的事实 扩展到2^30之前的系数要求真实系数本身小于+/- 1 /(2^8)或(.0039)、以防止溢出。 正如我最初所述、EEPROM 值以系数值乘以2^30的形式写入。 固件在计算 DAC 值时、采用 EEPROM 值并除以下表中显示的内部值:
Dec/2^22 | |
H0 | 0.498275042 |
H1 | 0 |
H2频道 | 0 |
H3 | 0 |
G0 | 0.349711418 |
G1 | 0 |
G2 | 0 |
G3 | 0 |
N0 | -0.000105381 |
N1 | 0 |
n2 | 0 |
N3 | 0 |
M0 | 0 |
M1 | 0 |
M2 | 0 |
M3 | 0 |
我使用了 P2设置的4750十进制、并通过以下公式计算结果:
12月 | 十六进制 | |
DAC | 8191.428282 | 1个 FFF |
校准时、由于初始值为8160、出现31个代码缺失。 根据经验、这很可能可以改进、因为我认为 GUI 只会发现 FIT 误差小于1、不一定是最佳拟合。
对于计算的值、您需要确保这些值与 PGA305计算 DAC 值的方式完全一致。 这意味着 h0值不能像您显示的那样大。 由于 EEPROM 值在计算开始前均除以2^22、因此公式不像您展示的那样简单、不能是浮点值。 DAC 值与(PADC + PADC 失调电压)相关、而不仅仅与 PADC 相关。 请注意、PGA305计算出的 h0值为0.498275042、而不是8132。
有趣的是、8132大约为 DAC 输出的1/2、当您除以2^14时、结果变为0.496337890625。 这里有一个相似性。 至于增益 g0系数、将 g0值乘以2^8、最终得到的值为0.3497216。 请注意、值有一定的对称性。 n0值有些混乱、因为该值使用了压力的平方。 因此、该值不会与 n0乘以2^8的平方根对齐。
因此我大致同意您的值在数学上可行、但如果不进行一些修改、这些值不会作为 PGA305的输入、从而适合 PGA 的框架。
此致、
鲍勃 B
Bob 您好!
感谢您的答复。
但是、我仍然看不出您是如何根据我收集的数据解释由 GUI 计算得出的系数并将其发送给您的。
您的解释和 GUI 计算的值之间很难联系起来。
我知道 SoC 不使用浮点、因此 值可能会略有不同(没关系)。
我还了解为了获得最佳结果而执行的缩放和偏移(PADC 偏移、PADC 增益、TADC 偏移、TADC 增益)。
请取我记录的输入(3个 PADC 值和相应的3个 DAC 值)并显示如何 计算 h0、g0和 n0的3个值。
请分步显示缩放比例和结果。
校准类型: 1T3P |
|
|
压力 [PSID] |
PADC -十进制值 |
已校准 DAC - 十进制值 |
-100 |
-4790932 |
1638 |
0 |
4750 |
8160 |
100 |
4759893 |
14685 |
感谢您的耐心和帮助。
此致、
伊戈尔