|
发表于 2019-2-21 20:49:18
|
显示全部楼层
本帖最后由 bg1trk 于 2019-2-21 20:58 编辑
您手上有源程序吗?
如果有源程序,给您一个我现用的校正函数供参考:
/*********************************************************************************
* 函 数 名 : ProcessVoltage_ADC_V()
* 功能说明: 输出电压DA值转换并分段矫正为与实际输出相等,用于显示
* 形 参:Temp
* 返 回 值 : 输出电压值
* 日 期: 2018-5-26
*********************************************************************************/
float ProcessVoltage_ADC_V(float Temp)
{
Temp = Temp* 3267 / 4095; //单位:mV 3267是3V3的实际值
/*******************************以下为最小二乘法校正*****************************************/
if(Temp<=50) Temp = 1.027777778 * Temp + 1.305555556;
else
if(Temp>50 && Temp<1000) Temp = 1 * Temp + 2;
else
if(Temp<1500) Temp = 0.99915493 * Temp + 3.932957746;
else
if(Temp<2100) Temp =1.0025 * Temp - 1.05;
else
if(Temp<2500) Temp = 1 * Temp - 1;
else
if(Temp<3000) Temp = 1 * Temp - 1;
else Temp = 1 * Temp - 1;
Temp=Temp+0.5;
return (Temp); //返回mV时Temp*1000
}
其中诸如“Temp =1.0025 * Temp - 1.05”是校正公式,公式中的两个常数项,是根据各分段高低点的实际值和理想值计算得出的。
所谓校正,就是经测量、计算,确定这两个常数项的值。
|
|