欢迎光临
我们一直在努力

Arduino粉尘检测仪实验

 

《arduino+无线下载模块+LCD1602 i2c显示屏+夏普PM2.5粉尘传感器=PM2.5实时检测器》

该小实验仅供思维学习扩展,不提供技术支持!

I2C 1602显示屏:购买链接

ZHONGBEST UNO R3主控板一块:购买链接

arduino无线下载器一套:购买链接

2节装电池盒带DC头一个:购买链接

14500电池3.7V锂电池两节:购买链接

夏普PM2.5粉尘传感器一个:购买链接

DIY杜邦头公端子10个,1P杜邦头10个:购买链接

==所需要用到的教程和示例==

I2C 1602显示屏教程:http://zhongbest.com/2016/09/01/i2c-1602%e8%bd%ac%e6%8e%a5%e6%9d%bf/

夏普粉尘传感器教程:http://zhongbest.com/2016/08/30/%e5%a4%8f%e6%99%ae%e7%b2%89%e5%b0%98%e4%bc%a0%e6%84%9f%e5%99%a8/

先上成品图:

3803F90A@F4D8513(01-09-17-21-30)

图中设备:最左侧为:某品牌PM2.5激光粉尘检测器,右边整套为:zhongbest-粉尘浓度检测套装。

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

==例子程序==

#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显示屏上的数值,即粉尘浓度值。

==注意事项==

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

(一般情况下不要随意旋转该旋钮,不宜大幅度转动,力度尽可能的轻!旋转过大有可能导致无法校准,从而使模块无法使用。)

实验思维扩展:

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

未经允许不得转载:Arduino-Maker » Arduino粉尘检测仪实验

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

中贝斯特线上商城

旗舰店企业店