{
PH_Dat = ((ADC_PH/12.41212121212121)*2); //4095/3.3=1240.909090909091,也就是说 1V电压对应的AD值是这么多,用AD值除以系数,得到的就是电压,这里需要保留两位,然后乘以2,因为电路是分压输入的,分了一半
//计算原理,之前的计算原理是按照人家提供的计算公式进行计算的,但是对于成品设计还好,不用动程序了,但是对于定制设计,在使用中发现移植效果不好,
//因为要配合掉电存储,大量的计算,移植起来比较麻烦,所以这里采用一种新的计算方法,移植起来很简单,只要计算出PH输出的电压数据即可,计算出的电压
//保留两位小数,然后直接代入下个公式,这个公式是自己推出来的,误差目前测试三种溶液没有超过 0.5 ,368这个数据来源是这样,
// PH 电压 PH变化值 电压变化值 电压变化率
// 4 3.00
// 6.86 2.50 2.86 0.5 0.1748251748251748
// 9.18 2.11 2.32 0.39 0.1681034482758621
//可以看出,PH越大,电压越小
// 从上面的统计可以看出,随着PH的变化,他的电压变化率并不是线性,这也是为什么人家会用一个复杂的计算公式来计算,所以这里我有个设想,假如说PH4的时候
//电压我调节为 3V,那选择一个 0.17的系数,计算出从PH=0到 4,电压值应该是变化了 0.68左右 0.17*4 = 0.68 ,既然这样我就假如,PH0的时候电压是 3.68V,保留两位小数,就是 368 了
if(PH_Dat>=368) PH_value=0;
else
{
PH_value = (368-PH_Dat) /1.781505+((368-PH_Dat) /1.781505)*0.05; //368 是假定的Ph=0的电压值,减去检测到的电压值,得到的就是电压变化量,然后乘以变化率,就可以得到PH
if(PH_value>140) PH_value=140; //从上面的表述可以看出变化率不是固定的,我在大量测试之后,写了一个补偿,计算出的数据加上他数据的0.05,这是自己凭感觉测试得出的,
}
}
PH值算法
最新推荐文章于 2025-03-30 16:05:21 发布