×

基于ESP8266的大气空气分析仪

消耗积分:0 | 格式:rar | 大小:0.17 MB | 2022-12-14

香香技术员

分享资料个

方案介绍

一种低成本的空气质量监测设备,旨在检测由于交通拥堵或工厂排放造成的污染热点。

这个项目的想法始于一个“设计思维”项目,其动机是设计一个测量本地空气质量数据的系统,以检测污染热点并提醒通勤者。这个想法是在一个地理位置部署大量低成本设备来获取这些数据,对其进行分析并将其用于交通管理和城市规划。这个项目虽然很有远见和雄心,但在各个层面都得到了很多赞赏,在各种比赛中表现出色,但并没有真正进入实施阶段。缺乏资金、专业知识和获得技术的机会较少,阻碍了项目的进展。

硬件概述
项目中的硬件大致分为:

  • 传感器及其与 Arduino Nano 的接口
  • Arduino Nano 和 NodeMCU 接口

在这个项目中,Figaro TGS2600检查甲烷和一氧化碳,Figaro TGS2602检查氨、硫化氢和甲苯,而不太准确和便宜的MQ135检查二氧化碳和 NOx。虽然单个传感器用于检测多种气体,但如果您想要更好的准确性和可靠性,最好为每种气体使用专用传感器。

传感器:使用 Nano 进行接口和测试
市场上可用的大多数低成本气体传感器是电化学型接触式传感器。传感元件用于检测某种气体。传感器电导率根据空气中的气体浓度增加/减少。一个简单的电路可以将电导率的变化转换为对应于气体浓度的输出信号。要对此建模,了解数据表和 Rs/Ro Vs PPM 或灵敏度特性非常重要。

用于与 Arduino 的 TGS2600/TGS2602 传感器接口

传感器需要两个电压输入来检测气体浓度:加热器电压 (VH) 和电路电压 (VC)。该传感器有 4 个端子。两个专用于保持传感器中最佳传感温度的加热器,另外两个用于测量与传感器串联的负载电阻 (RL) 上的输出电压。由于传感器具有极性,因此电路电压需要直流电压。VC 和 VH 都可以使用一个公共电源电路来满足传感器的电气要求。

应选择负载电阻 (RL) 的值以优化警报阈值,将半导体的功耗 (PS) 保持在 15mW 的限值以下。当暴露在气体中时 Rs 的值等于 RL 时,功耗 (PS) 将最高(来源:TGS2600 数据表)。

针脚连接:
1:加热器
2:传感器电极(-)
3:传感器电极(+)
4:加热器

从灵敏度曲线中,我们使用幂回归获得方程的比例因子 (a) 和指数 (b),ppm = a*(Rs/Ro)^b。如果您对此不理解,请参阅 Davide 的博客。

此外,Rs = 不同浓度显示气体中的传感器电阻 Ro = 新鲜空气中的传感器电阻

计算 Ro:

我们知道“空气”的 a、b 值(通常始终是恒定的)以及 Rs 值,可以通过以下公式计算得出:
Rs = ( Vc/Vout - 1) x RL

因此从等式: ppm = a*(Rs/Ro)^b 我们得到:
Ro = Rs * sqrt(a/ppm, b)

获取 Ro 的代码位于页面的代码部分。请参阅该端以查看代码。

获得 Ro 值后,您现在可以继续计算最终的 PPM 值。为此,请按照下列步骤操作:

  • 将原始模拟值转换为 Vout 或 Vrl 电压值
  • 计算 Rs 值
  • 查找 Rs/Ro 比率
  • 通过将获得的值代入公式来获得 PPM 值

VRL_F2600 = analogRead(F2600)*(5.0/1023.0);
Rs_F2600 = ((5.0/VRL_F2600)-1)*(RL_F2600);
ratio_F2600 = Rs_F2600/Ro_F2600;
float ppm_CO = CO_A * pow(ratio_F2600, CO_B);

这应该有助于您获得以 PPM 为单位的气体传感器值。但是,作为校准的一部分,您可能需要使用真实值作为参考并与测量值进行比较。

用途:参考值 = 校准系数 x 测量值

Arduino Nano 和 NodeMCU 接口
虽然传感器硬件及其与 Arduino Nano 的连接并不令人惊讶并且相当普遍,但 Arduino Nano 和 NodeMCU 之间的接口可能对一些人来说很有趣。这里的目标是确保设备便宜并且应该可以连接到互联网。当要对来自传感器的数据进行采样时,就需要使用 Arduino Nano。气体传感器输出模拟数据,因此 MCU 必须至少有 3 个模拟引脚(因为我们在这里使用了 3 个气体传感器;可以扩大到更大的数量)来读取此模拟数据。

由于 NodeMCU 只有 1 个模拟输入引脚 (A0),因此单独使用它并不适合这项工作。为了解决这个问题,最明显的方法是连接 ADC(模数)转换器并完成这项工作,但我选择了一种相当不常见的方法,即连接 NodeMCU 和 Nano(与传感器连接) . 我这样做是因为与 ADC 相比,这两种设备通常可用且易于使用,因此很方便。

Nano 和 NodeMCU 的接口非常简单。我们使用“ SoftwareSerial.h ”库,它允许我们使用 MCU 上的任何一组数字引脚作为我们的 UART 总线。我们直接使用 Nano 默认的 Rx/Tx 引脚,分别与 NodeMCU 上的 6 和 5 引脚交叉连接,建立 UART 通信。

Rx (Nano) <=> Tx (NodeMCU 上的数字引脚 6)
Tx (Nano) <=> Rx (NodeMCU 上的数字引脚 5)
GND (Nano) <=> GND (NodeMCU)

在测试 UART 通信时,我意识到整个数据没有被传输,我也无法调试它。因此,我决定使用标准的 JSON 格式来传输数据。在“ArduinoJson.h”库的帮助下,我可以打包这些数据,发送它,将其存储在缓冲区中,直到接收到全部数据,解包然后上传到 ThingSpeak。要了解如何在您的项目中实现 Arduino JSON,请访问创建者的网站或阅读 GitHub 上的库文档。

注意:这些值是随机的,不会在此图像中描绘传感器数据。

PCB设计和硬件外壳
使用用户友好的 EAGLE CAD,设计了一个简单的 PCB 来容纳三个气体传感器和 DHT11 温度传感器。您可以在附件部分找到原理图和电路板文件。除此之外,还使用 ​​AutoCAD 设计了一个简单的硬件外壳来容纳传感器 PCB。然后它是 3D 打印的,从那时起就一直在使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !