欢迎光临
我们一直在努力

基于Arduino的粉尘监测仪(粉尘传感器、1602显示屏)

1、概述


图中设备:最左侧为:某品牌PM2.5激光粉尘检测器,右边整套为:zhongbest-粉尘浓度检测套装。
图中数值:同样是测量室外空气:某品牌PM2.5激光粉尘检测器:158ug/m³=0.158mg/m³,zhongbest-粉尘浓度检测套装:0.15mg/m³

对于模块不了解的,可以先看一下我们的模块教程[传送门],了解掌握模块使用方法后,再尝试本小实验。因为综合实验一般涉及多个模块,我们仅对全部使用我司产品的客户做技术支持,若只是部分使用我司产品的,我们只对我司产品部分是否有故障进行排查。

2、所需材料

1、UNO主控板:官方板 或者 国产板
2、辅助配件:面包板杜邦线
3、传感器和模块:粉尘传感器14500锂电池1602显示屏IIC版

3、接线

夏普粉尘:
Sharp pin 1 (V-LED) => 5V 串联1个150欧姆的电阻(最好在电阻一侧和GND之间再串联一个220uf的电容)
Sharp pin 2 (LED-GND) => GND
Sharp pin 3 (LED) => Arduino PIN 2 (开关LED)
Sharp pin 4 (S-GND) => GND
Sharp pin 5 (Vo) => Arduino A0 pin (空气质量数据通过电压模拟信号输出)
Sharp pin 6 (Vcc) => 5V

I2C1602显示屏:
SDA——————-A4
SCL——————–A5
VCC——————-5V
GND——————GND

4、示例程序

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int measurePin = 0; //Connect dust sensor to Arduino A0 pin
int ledPower = 2; //Connect 3 led driver pins of dust sensor to Arduino D2
int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
void setup(){
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(5, 0);
lcd.print("Boot...");
lcd.setCursor(0, 1);
for(int i=0;i<16;i++)
{
lcd.write(0xff);
delay(250);
}
}
void loop(){
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin); // read the dust value
delayMicroseconds(deltaTime);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(sleepTime);
// 0 - 5V mapped to 0 - 1023 integer values
// recover voltage
calcVoltage = voMeasured * (5.0 / 1024.0);
// linear eqaution taken from [url=http://www.howmuchsnow.com/arduino/airquality/]http://www.howmuchsnow.com/arduino/airquality/[/url]
// Chris Nafis (c) 2012
dustDensity = 0.17 * calcVoltage - 0.1;
Serial.print("Raw Signal Value (0-1023): ");
Serial.print(voMeasured);
Serial.print(" - Voltage: ");
Serial.print(calcVoltage);
Serial.print(" - Dust Density: ");
Serial.println(dustDensity); // unit: mg/m3
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("dustDensity:");
lcd.setCursor(0,1);
lcd.print(dustDensity);
lcd.setCursor(9,1);
lcd.print(" mg/m^3");
delay(1000);
}

观察LCD1602显示屏上的数值,即粉尘浓度值。

5、注意事项

夏普粉尘传感器上有个小的电位器(即校准旋钮),如果在烟雾环境中,数值无变化,则可以微调该旋钮,来进行校准。校准时,请使用专业校准仪器或者PM2.5检测仪、空气净化器等。

夏普粉尘传感器校准方法:
夏普粉尘传感器上有一个银色电位器,将夏普粉尘传感器按照接线图接线,并上传程序后,打开串口监视器,随后使用小螺丝刀,旋转调节该电位器(逆时针旋转,微调,不宜转动过大。),旁边放一台空气净化器或者专业检测仪器来方便校准(模块靠近空气净化器,数值接近于0),通过旋转电位器,观察串口数值变化,从而校准模块。室内数值可以参考我们的教程上检测的数值。
(一般情况下不要随意旋转该旋钮,不宜大幅度转动,力度尽可能的轻!旋转过大有可能导致无法校准,从而使模块无法使用。)

实验思维扩展:
本实验主要是通过粉尘传感器来输出一个污染值,我们可以用这个污染值做很多事情。比如设置一个阈值报警器,可以是用蜂鸣器做声音的,也可以用发光二极管做光亮的。还可以用继电器模块去控制一些大功率电器的运行。如何扩展出自己的一套系统,可以自己想一下。

未经允许不得转载:Arduino-Maker » 基于Arduino的粉尘监测仪(粉尘传感器、1602显示屏)

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

线上商城

中贝斯特创客空间蘑菇云创客教育