毕业设计:单片机DIY-小型PM2.5系统,实际测试满足要求,赶快围观
|
大家好,因为最近忙着考试,最近比较忙,可能更新的文章比较少,疫情期间请大家多多注意身体,尽量减少外出,在家学习。 其实我发现在家学习只要静下心来,效率还是蛮快的,只要持之以恒,定会有所收获。 好了我们言归正传,前几天和几个小伙伴去市区公园玩,看着公园对面空气检测系统的大屏幕上各种数据不断变化,于是突发奇想,我能不能自己也用单片机做一个PM2.5测试系统呢,虽然不知道能不能成功,但想到就要做。 于是我利用好久以前的一个开发板当载体,开始自己DIY,成功了以后-我测试了一下基本能实时显示各种颗粒物的含量,又和真实数据对比了一下,准确度基板满足要求。 老规矩废话不多说,先上实物图: 原理:其实就是一块显示屏加上单片机实时控制,再加上采集和显示代码就差不多了 实物图1
数据采集和接收模块
实测测量精度和准确率还是可以的。 PM2.5检测系统参考代码如下: 主程序 include "delay.h" include "PM2_5.h" include "DHT11.h" define uchar unsigned char sbit waring=P1^3; void main() { lcd_init(); Init_BMP085(); Init_PM2_5(); while(1) { bmp085Convert(); RH(); lcd_pos(0,0); display_string("pm2.5:"); if(read_pm()>5) display_num(read_pm()); else display_num(5); display_string("ug/m3"); display_string(" "); lcd_pos(1,0); display_string("T:"); display_num(temperature/10); display_string("."); display_num(temperature); display_string("'C"); display_string(" ") display_string("H:"); display_num(RHdataH); display_string("%"); lcd_pos(2,0); display_string("pre:"); display_num(pressure/1000); display_string("."); display_num(pressure00); display_string("kpa"); lcd_pos(3,0); display_string("smo:"); if(read_pm()>200) { display_string("High"); waring=0; } else { display_string("low"); display_string(" "); waring=1; } display_string("Al:"); display_num(Altitude); display_string("m"); display_string(" "); delay_ms(200); } } PM2.5 define uint unsigned int define K_PM 820 void senddata(uchar dat); |











