尝试把代码中的float ppm=pow(11.5428*R0/RS,0.6549f);换成float ppm = pow(21.72*R0/RS, 2.1101f);

   (代码采用的是博主辰哥单片机的,见参考文献)

    一般来说,MQ-2模块能测到的气体浓度应该在100ppm-20000ppm区间内,在试了几个博主的气体浓度转化公式后发现ppm很小(<20ppm),重新梳理后发现是在matlab提取曲线那里存在计算错误。

笔者这里选择了丙烷(propane)进行了重新提取曲线

ppm=[200 500 800 1000 1562 2000 3000 5000 10000];
Rs/R0=[1.74 1.22 0.90 0.80 0.63 0.60 0.50 0.38 0.27];

左侧得到General model Power1:
     f(x) = a*x^b
Coefficients (with 95% confidence bounds):
       a =       21.72  (17.26, 26.18)
       b =     -0.4739  (-0.5066, -0.4413)

根据Rs/R0=a*(ppm)^b,得到

                  Rs/R0=21.72×(ppm)^(-0.4739)

也即

                ppm=(21.72×R0/RS)^(2.1101)

做下对比

用公式 ppm=pow(11.5428*R0/RS,0.6549f),烟雾在正常环境为3.5ppm。

用ppm=pow(21.72*R0/RS,2.1101f),烟雾在正常环境为220ppm。

初始值符合100ppm-10000ppm(液化气),达到目标。(后续拿烟熏值也是正常的,可以到达10000ppm,一手点烟一手拍照不好拍QAQ)

------------------------------------------------2025-2-20-------更新拍照-----------------------------------------------

拿蚊香熏后ppm值达到10000左右

-------------------------------------------2025-3-8-------------更新源码------------------------------------------

通过网盘分享的文件:MQ-2.zip
链接: https://pan.baidu.com/s/1-Phr3yhcTWPWXy1KnaQLLw?pwd=t7yv 提取码: t7yv 
--来自百度网盘超级会员v5的分享

 

  下进去是这样的,有问题的xd可以试试,QAQ,文香点了下可以升到4500

  有错误的话希望兄弟们多谅解,希望能帮到有同样问题的兄弟!QWQ

参考文献

a,博客文章:MQ-2烟雾传感器的电压与浓度转换_mq2-CSDN博客

b,博客文章:MQ-2烟雾传感器详解(STM32)_mq2烟雾传感器-CSDN博客

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐