Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 模数转换器校准方法_C++_C_Calibration_Adc - Fatal编程技术网

C++ 模数转换器校准方法

C++ 模数转换器校准方法,c++,c,calibration,adc,C++,C,Calibration,Adc,我使用MOD54415上网本模块驱动SPI控制的16输入12位ADC(AD7490B),但我注意到回读中的错误>0.3%——我采样10.000伏,回读9.9645伏。我正在尝试为它编写一个校准例程,以将该错误关闭到0.1%或更好,但我真的不确定如何继续。我在Excel中使用数据输入和ADC读取的数据图进行了二次曲线匹配,但我不确定这是否是实现它的最佳方法,浮点数学将消耗多少个周期,以及是否有更好的方法。总的来说,我以前从未做过任何类型的校准,所以我真的不确定从哪里开始。有人能给我指出正确的方向吗

我使用MOD54415上网本模块驱动SPI控制的16输入12位ADC(AD7490B),但我注意到回读中的错误>0.3%——我采样10.000伏,回读9.9645伏。我正在尝试为它编写一个校准例程,以将该错误关闭到0.1%或更好,但我真的不确定如何继续。我在Excel中使用数据输入和ADC读取的数据图进行了二次曲线匹配,但我不确定这是否是实现它的最佳方法,浮点数学将消耗多少个周期,以及是否有更好的方法。总的来说,我以前从未做过任何类型的校准,所以我真的不确定从哪里开始。有人能给我指出正确的方向吗?如果有帮助的话,处理器是250MHz,我每0.1秒轮询所有16个通道(SPI速度是20MHz)。谢谢大家


编辑:输入实际上仅允许5V电压。我有一个跟随器缓冲器和一个2:1的分频器滤波器。我从一个参考源中提供了5.000和10.000,并用一个数字万用表进行测量,数字万用表显示小数点后4位。A ADC的输入引脚,我读取5.0009V和2.5005,ADC应该读取0xFFF(+/-2LSB),但它读取0xFEC到0xFF3(近似值)。我只是计算了一下数字。

你怎么确定它实际上是10v?您使用的测量设备是否有可能有其自身的电位差?10V是否超过ADC的最大额定值?你是如何调整输入电压和参考电压的?你应该能够通过调整输入的分压比来补偿一些增益误差…如果你已经有了每个设备的校准曲线,我看不出你还能在软件中做什么。生产测试和一致性是程序和合同事项,不在SO的范围内。分配比预先设定为尽可能精确。分压器使用0.1%的电阻器和5%的电容。这是给我的。它必须在软件中完成。你如何确定它实际上是10v?您使用的测量设备是否有可能有其自身的电位差?10V是否超过ADC的最大额定值?你是如何调整输入电压和参考电压的?你应该能够通过调整输入的分压比来补偿一些增益误差…如果你已经有了每个设备的校准曲线,我看不出你还能在软件中做什么。生产测试和一致性是程序和合同事项,不在SO的范围内。分配比预先设定为尽可能精确。分压器使用0.1%的电阻器和5%的电容。这是给我的。它必须在软件中完成。