风筝
发表于: 2021-8-30 14:23:08 | 显示全部楼层

在本篇文章中,我们将Gravity红外二氧化碳CO2传感器与Arduino连接,测量空气中的的CO2浓度PPM值。


所需的组件

●    Arduino Nano R3开发板

●    Gravity Infrared CO2 传感器模块

●    0.96寸SPI OLED显示屏模块


Gravity红外二氧化碳传感器

Gravity红外二氧化碳传感器(Infrared CO2 Sensor)是目前一款高精度模拟红外CO2传感器。红外CO2传感器带有一个3针连接器。该传感器基于非色散红外(NDIR)技术,具有更好的选择性和无氧依赖性。它结合了温度补偿和辅助DAC输出。


该传感器的有效测量范围为0至5000ppm,精度为±50 ppm+3%。该红外二氧化碳传感器可用于暖通空调、室内空气质量分析、工业过程以及安全防护分析、农业和畜牧业生产过程分析。

gravity analog infrared co2 sensor.jpg


OLED是一种自发光技术,通过在两个导体之间放置一系列有机薄膜而设计。


代码

  1. int sensorIn = A4;
  2. #include <SPI.h>
  3. #include <Adafruit_GFX.h>
  4. #include <Adafruit_SSD1306.h>
  5. #define SCREEN_WIDTH 128 // OLED display width, in pixels
  6. #define SCREEN_HEIGHT 64 // OLED display height, in pixels
  7. // Declaration for SSD1306 display connected using software SPI (default case):
  8. #define OLED_MOSI   9
  9. #define OLED_CLK   10
  10. #define OLED_DC    11
  11. #define OLED_CS    12
  12. #define OLED_RESET 13
  13. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
  14.   OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
  15. void setup(){
  16.   Serial.begin(9600);
  17.   // Set the default voltage of the reference voltage
  18.   analogReference(DEFAULT);
  19.   display.begin(SSD1306_SWITCHCAPVCC);
  20.   display.clearDisplay();
  21.   display.display();
  22. }
  23. void loop(){
  24.   //Read voltage
  25.   int sensorValue = analogRead(sensorIn);
  26.   // The analog signal is converted to a voltage
  27.   float voltage = sensorValue*(5000/1024.0);
  28.   if(voltage == 0)
  29.   {
  30.     Serial.println("Fault");
  31.   }
  32.   else if(voltage < 400)
  33.   {
  34.     Serial.println("preheating");
  35.   }
  36.   else
  37.   {
  38.     int voltage_diference=voltage-400;
  39.     float concentration=voltage_diference*50.0/16.0;
  40.     // Print Voltage
  41.     Serial.print("voltage: ");
  42.     Serial.print(voltage);
  43.     Serial.println("mv");
  44.     //Print CO2 concentration
  45.     Serial.print("CO2 Concentration: ");
  46.     Serial.print(concentration);
  47.     Serial.println("ppm");
  48.     display.setTextSize(2);
  49.     display.setTextColor(WHITE);
  50.     display.setCursor(18,43);
  51.     display.println("CO2");
  52.     display.setCursor(63,43);
  53.     display.println("(PPM)");
  54.     display.setTextSize(2);
  55.     display.setCursor(28,5);
  56.     display.println(concentration);
  57.     display.display();
  58.     display.clearDisplay();
  59.   }
  60.   delay(2000);
  61. }
复制代码


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 11:54 , Processed in 0.047183 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表