MQ135传感器浓度转换公式

声明:网上几乎没有人给出相关的公式,但是在看完以下两篇文章,有了一些思路,验证成功后分享给大家,再次声明,此公式不是官方给的公式!!!

增加程序源码地址:https://gitee.com/anthonyymh/driver-file

着急的小伙子直接拉到后面!!!

感谢以下两位大神,请先看完以下两篇文章

MQ系列传感器电压与浓度转换关系_qq_35952136的博客-CSDN博客_mq2电压转化为浓度的公式

MQ135传感器测试_蒙古战狼的博客-CSDN博客_mq135

根据MQ135的数据手册,我们可以发现浓度与RS的关系图

从甲苯曲线上,大致取几组数据:

ppm:【10,20,30,40,50,60,70,80,90,100,200,】

Rs/Ro:【1.65,1.36,1.20,1.08,0.98,0.92,0.89,0.85,0.82,0.80,0.65】

通过以下网站得到拟合曲线:

在线曲线拟合神器_村美小站

Ro取的是10k,RL根据模块原理图是1k,Vcc是供电电压5V,Vout是输出引脚,ADC采集得到的电压值,最终得到公式:

ppm^{0.3203}=\frac{3.4880*Ro*Vout}{\left ( Vcc-Vout \right )*RL}

将Ro,RL,Vcc,Vout(变量temp)代入使用C语言计算得到:

ppm = pow((3.4880*10*temp)/(5-temp),(1.0/0.3203));

实验结果:

推荐大家使用:SGP30

### MQ135传感器浓度计算算法 对于MQ135气体传感器而言,其工作原理基于电阻变化来检测空气中特定气体的浓度。当环境中存在目标气体时,传感器内部材料吸附这些分子并改变自身的电导率,从而引起阻值的变化。 #### 电压与浓度的关系 通过测量分压网络中的输出电压\( V_{out} \),可间接得知当前环境下的气体浓度。具体来说,在给定的工作条件下(如电源电压 \( V_C = 5V \), 负载电阻 \( R_L = 1kΩ \) 和参考电压 \( V_{RL}=1.02V \)[^2]),能够推算出此时对应的传感元件电阻 \( RS ≈ 4kΩ \) 。进一步地,利用预先校准得到的标准曲线或数学模型,即可实现从电信号到实际物理量之间的映射转换[^1]。 #### 计算公式 假设已经获取到了标准条件下的初始电阻比 \( \frac{RS}{R0} \),那么可以根据下述经验公式估算未知样品中的污染物含量: \[ PPM = a * (\frac{RS}{R0})^{b} \] 其中参数a和b取决于具体的被测物质种类以及实验设定情况;而\(\frac{RS}{R0}\)则是指待测环境下相对于纯净空气状态的比例因子。为了提高精度,通常建议针对每种可能遇到的目标物单独建立相应的回归方程。 #### Python代码示例 下面给出一段简单的Python程序用于模拟上述过程: ```python def calculate_ppm(rs_r0_ratio, calibration_factor_a, calibration_factor_b): """ Calculate the concentration (in ppm) based on the ratio of sensor resistance to initial resistance. Args: rs_r0_ratio (float): Ratio between current and reference resistances. calibration_factor_a (float): Calibration factor A specific to target gas type. calibration_factor_b (float): Calibration factor B specific to target gas type. Returns: float: Estimated pollutant concentration in parts per million (ppm). """ return calibration_factor_a * pow(rs_r0_ratio, calibration_factor_b) # Example usage with hypothetical values for demonstration purposes only rs_over_r0_example_value = 4 / 1 # Assuming Rs is approximately four times larger than Ro under certain conditions calibration_factors_for_ammonia = {"A": 116.6020682, "B":-2.76904289} estimated_concentration_in_ppm = calculate_ppm( rs_over_r0_example_value, calibration_factors_for_ammonia["A"], calibration_factors_for_ammonia["B"] ) print(f"The estimated ammonia concentration is {round(estimated_concentration_in_ppm)} ppm.") ```
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值