主题中讨论的其他器件: USB2ANY
工具与软件:
尊敬的 TI:
我们正在开发 Python 软件、以利用 PGA305 IC 实现压力传感器的校准和验证过程自动化。 我们选择 Python 是因为我们已经开发了压力控制器、温度控制器、万用表、参考传感器等的驱动程序 我们扩展了 TI 提供的 USB2ANY.dll C++类、新增了用于处理校准序列的函数。
我们的问题是:在下面的步骤4中、我们如何在收集所有 ADC 点后计算 Pgain 和 Tgain。
您能否确认我们到目前为止的理解是正确的?
- 从而解决该问题
例如、我们将压力设置为10bar、将温度设置为某个特定的值 x。然后、我们读取 Padc 和 Tadc 值、使用二进制补码方法将原始十六进制值转换为整数。
-示例: 0xFECBE6转换为-78874 - DAC 值调整
我们确定在给定压力下、哪个 DAC 值输出预期的电流(mA)。 这是通过设置任意 DAC 值、读取 mA、计算误差、应用偏移和复位 DAC 值来实现的。 重复该过程、直到读取 mA 接近于预期的 mA。
-示例:在10 bar 时,预期电流为4.177 mA ,对应于2207的 DAC 值 - 重复多次
我们使用不同的压力和温度重复上述步骤、以收集多个数据点。 - 计算数字增益
如何计算 Pgain 和 Tgain? 它受什么限制? - 计算偏移
我们通过计算最低和最高 ADC 值之间的均值来计算 Poffset 和 Toffset。
示例:( Pmax - Pmin )/ 2 = Poffset - 应用增益和偏移
我们将 Pgain、Poffset、Tgain 和 Toffset 应用于所有 ADC 值。
-示例:(PADC * Pgain)+ Poffset - 对 ADC 值进行归一化
我们通过将 Padc 和 Tadc 值除以2^22来对它们进行归一化。
-示例:-78874/2^22=-0.018805027 - 标准化 DAC 值
我们通过将 DAC 值除以2^14来对其进行归一化。
-示例:2207/2^14 = 0.13470458984 - 多项式系数计算
数据表中提供了一个公式:
F (P、T)=(h0 + H1 * T + H2^* T^2 + H3 * T^3)+(g0 + G1 * T + G2 * T^2 + G3^* T^3)* P +(n0 + n1 * T + n2 * T^2 + n3 * T^3)* P^2 +(M0 + M1 * T + m2 * T^3)* m3
我们使用 NumPy 的最小二乘法根据归一化数据和数据表中提供的三阶多项式公式来计算三阶多项式系数(h0...m3)。 该函数不限于3P3T 或4P4T 配置、可以利用多个点来实现更准确的多项式。
-示例: F(Padc, Tadc)= dac - 未标准化系数
我们通过将系数乘以2^22来对系数进行非标准化处理。 然后、我们使用二进制补码方法将系数以及 Pgain、Tgain、Poffset 和 Toffset 转换为十六进制值、 这些信息随后将上传到 EEPROM。 - 验证
最后、我们关闭电源、然后为传感器加电、以进入补偿模式。 我们使用万用表测量 mA 输出来验证校准。
非常感谢您对此程序的确认或任何更正。
谢谢你
此致、
Mohammad Waqas Imtiaz