这里写自定义目录标题
首先声明,公式不是官方给定的,而且有很多的局限性。
这篇文章是个人对MQ系列传感器电压与浓度转换的公式进行一个探索。
以MQ135为例
在氨气曲线上采点,得
x(ppm)=[10,20,30,40,50,60,70,80,90,100];
y(Rs/Ro)=[2.61,1.91,1.70,1.53,1.4,1.31,1.20,1.14,1.07,1];
通过MATLAB处理数据,拟合曲线选取最适合的模型得:
General model Power1:
f(x) = a*x^b
Coefficients (with 95% confidence bounds):
a = 6.467 (6.017, 6.917)
b = -0.3962 (-0.4164, -0.376)
Goodness of fit:
SSE: 0.009492
R-square: 0.9956
Adjusted R-square: 0.995
RMSE: 0.03445
则:
Rs/Ro = 6.467 *(ppm)^-0.3962 ①
在官方手册中,可以看到
Ro表示传感器在100ppm氨气中的电阻值,则Ro应为一个常数,这个我在网上查也没有查到具体的值是多少,有一种说法为10k,姑且认为如此。
商家模块的电路图
通过商家模块的电路图,以及和官方的手册对比可以得到,RL的值为1k。
Vc=5V为工作电压。
综上,联合①②
并且带入Ro,RL,Vc的值可以得到氨气(NH4)的C语言计算公式
ppm=pow((6.467*10*V)/(5-V),(1.0/0.3962))
变量V为ADC采集到的电压值
同理
在甲苯曲线上采点,得
x(ppm)=[10,20,30,40,50,60,70,80,90,100];
y(Rs/Ro)=[1.61,1.35,1.21,1.08,0.98,0.91,0.88,0.85,0.82,0.80];
General model Power1:
f(x) = a*x^b
Coefficients (with 95% confidence bounds):
a = 3.367 (3.104, 3.63)
b = -0.3123 (-0.3343, -0.2904)
Goodness of fit:
SSE: 0.005299
R-square: 0.9917
Adjusted R-square: 0.9907
RMSE: 0.02574
…
最终得到公式:
ppm=pow((3.367*10*V)/(5-V),(1.0/0.3123))
综上所述,公式的局限性(包括出错的可能误差)为:
1.Ro的值
2.在曲线上采点读数存在误差
3.拟合出公式的系数存在误差
4.模块也会受环境温度和湿度的影响,公式没有考虑到此影响系数
个人感觉MQ系列传感器适合做定性而不是定量分析,需要更精确的气体浓度参数时,应该使用更加精密的模块。
才学疏浅,如有错误之处,望不吝赐教。