历史上的今天
返回首页

历史上的今天

今天是:2024年12月16日(星期一)

正在发生

2021年12月16日 | 自制小型PM2.5环境检测系,实测效果还可以

2021-12-16 来源:elecfans

这段时间由于疫情影响不能出去,看着家对面空气检测系统的大屏幕上各种数据不断变化,于是突发奇想,能不能自己也做一个PM2.5测试系统呢,想到就要做。


老规矩废话不多说,先上实物图:


实物图1

在这里插入图片描述

实物图2

在这里插入图片描述
在这里插入图片描述

实测测量精度和准确率还是可以的。


PM2.5检测系统参考代码如下:

#include

#include “delay.h”

#include “LCD12864.h”

#include “PM2_5.h”

#include “BMP180.h”

#include “DHT11.h”

#define uint unsigned int

#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%10);

    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(pressure%1000);

    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

#include

#define uint unsigned int

#define uchar unsigned char

#define K_PM 820

void senddata(uchar dat);

uint read_pm();

uchar cal[7]={0};

// cal[0]:起始位 0xAA

// cal[1]:Vout(H)

// cal[2]:Vout(L)

// cal[3]:Vref(H)

// cal[4]:Vref(L)

// cal[5]:校验位

// cal[6]:结束位0xFF


uchar buf;

uchar sum;

int i=0;

float Vo;

void Init_PM2_5()

{

SCON=0x50;

PCON=0x00;


    TMOD=0x20;

    EA=1;

    ES=1;

    TL1=0xF4;

    TH1=0xF4;

    TR1=1;        


}


uint read_pm()

{

return (uint)(K_PM*Vo);

}


void serial() interrupt 4

{

ES=0;

RI=0;

buf=SBUF;

senddata(buf);

ES=1;

}


void senddata(uchar dat)

{

if(dat0xAA)

{

i=0;

cal[i]=dat;

}

else

{

i=i+1;

cal[i]=dat;

if(i6)

{

sum=cal[1]+cal[2]+cal[3]+cal[4];

if(sum==cal[5]&&cal[6]==0xFF)

{

// for(i=0;i<=6;i++)

// {

// SBUF=cal[i];

// while(!TI);

// TI=0;

// }

Vo=(cal[1]256+cal[2])/1024.05;

// SBUF=cal[1];

// while(!TI);

// TI=0;

//

//

// SBUF=cal[2];

// while(!TI);

// TI=0;


                    }

            }

    }


}


鉴于篇幅有限,只能写这么多了。

推荐阅读

史海拾趣

科通(COMTEK)公司的发展小趣事

为了进一步扩大市场份额,科通技术积极实施国际化战略。公司在全球范围内设立了多个办事处和分公司,加强了与国际市场的联系和合作。同时,科通技术还积极参加国际电子展会和论坛等活动,展示公司的最新产品和技术成果,提升了公司的国际知名度和影响力。

Fascomp公司的发展小趣事

随着电子行业的快速发展和变革,Fascomp面临着前所未有的挑战。为了应对这些挑战,公司决定进行转型升级。一方面,公司加大了对人工智能、物联网等新兴技术的研发投入;另一方面,公司还优化了生产流程和管理模式,提高了生产效率和产品质量。这些举措使Fascomp在行业中保持了领先地位。

FlexiPanel公司的发展小趣事

随着全球化进程的加速,FlexiPanel意识到构建稳定的全球供应链体系对于企业的长远发展至关重要。公司积极寻求与国内外知名芯片制造商、天线供应商等合作伙伴建立战略合作关系,共同推动RF模块技术的进步和产业化应用。通过整合全球资源,FlexiPanel不仅提升了自身的产品研发和生产能力,还确保了产品质量的稳定性和可靠性,赢得了客户的广泛信赖。

晨晶电子(Chenjing Electronics)公司的发展小趣事

在追求经济效益的同时,晨晶电子也积极履行社会责任,致力于绿色环保事业。公司通过了ISO14001环境管理体系认证,严格遵守环保法规,实施清洁生产。同时,晨晶电子还积极推广环保理念,倡导绿色消费,为保护环境、促进可持续发展做出了积极贡献。

这五个故事不仅展示了晨晶电子在电子行业中的发展历程和成就,也体现了其不断创新、追求卓越的企业精神。在未来的发展中,晨晶电子将继续秉承这一精神,努力成为电子行业的佼佼者。

方向电子公司的发展小趣事

随着国内市场的不断饱和,晨晶电子积极寻求海外市场的发展机遇。公司凭借优质的产品和服务,成功打开了国际市场的大门。通过与国外客户的深入合作,晨晶电子的产品逐渐走向世界,其品牌影响力也日益增强。同时,公司还积极参与国际电子行业的交流与合作,不断提升自身的国际竞争力。

Cardinal Components公司的发展小趣事

2016年,Taitien收购了Cardinal Components,这一收购为公司带来了新的发展机遇和资源支持。随后,在2021年,Cardinal加入了Pletronics,进一步扩大了其在电子行业的影响力。这些收购与合作不仅为公司带来了更多的业务机会,也促进了其在技术研发和市场拓展方面的进步。

这五个故事只是Cardinal Components在电子行业发展中的一部分缩影。作为一家具有深厚历史底蕴和强大技术实力的公司,Cardinal将继续在电子行业中发挥重要作用,为行业的进步和发展做出更多贡献。

问答坊 | AI 解惑

识别内存编号

识别内存编号 内存作假主要是以低速内存冒充高速度的,以低容量内存冒充高容量的。要杜绝此类作假,就要学会识别内存规格和内存芯片编号,方法一般是看SPD芯片中的信息和内存芯片上的编号,前者是内存的技术规范,后者由于厂家的不同,其编 ...…

查看全部问答>

51供电问题

自己做的9V转5V的电源(7805)空载时电压5V,带单片机后是也是5V,然后加了74LS164和数码管,单片机电压就掉到2.6V了!!!求助啊!!怎么办啊??为什么???…

查看全部问答>

PC机及单片机数据通信技术

PC机及单片机数据通信技术…

查看全部问答>

AVR学习笔记已经更新到第二十四篇了,论坛首页也改一下,呵呵

AVR学习笔记已经更新到第二十四篇了,论坛首页也改一下,呵呵 论坛首页还是写的共21篇,是不是该改一下了, 嘿嘿,要求如果过分,请不要介意…

查看全部问答>

给大家分享个温湿度传感器SHT21中文资料及代码

产品类别:湿度传感器 产品型号:SHT21 产品特点: SHT2 ...…

查看全部问答>

谈谈自己移植FatFs的看法!

       很久以前就开始对SD卡钟情了,原因不用多少说,控制方便,容量大,速度快,价格便宜等等。但是不能总把它当Flash用吧,就一个扇区的读,一个扇区的写,多没劲啊(不过刚开始读写成功后也挺兴奋的,哈哈)。那 ...…

查看全部问答>

SQL CE2.0同时只能有一个连接吗?

在wince 5.0环境下,用EVC写的应用程序,连接SQL CE2.0数据库,当打开2个程序同时去连接数据库时就会出错,请问如何解决?急着等。。。。。…

查看全部问答>

关于MAX7219控制数码管显示问题(MCU:C8051F340) ??

我的程序不知道哪里有错误,请大侠帮忙看一下,意见多多益善。 这个程序是用来显示123456 六位数。 #include        #define        Decoding        0x09 #define    ...…

查看全部问答>

EVC上控件显示的问题!

    各位老大 这个问题很菜,在控件上用了Gruopbox以后,Gruopbox里包含的控件都不能显示了,比如按钮之类的,这是啥原因啊?去掉Gruopbox就可以了,请各位指教!…

查看全部问答>

LPC1113的IO口默认状态下的悬空输入是高电平还是低电平???

我想知道,IO口先设置为输出高电平,然后设置为输入管脚,那么管脚上的电平状态是不是还是高电平呢,请大侠指教,谢谢。…

查看全部问答>