攀藤G1是一款數字式通用顆粒濃度傳感器,可以用于獲得單位體積內空氣中懸浮顆粒物個數及質量,即顆粒物濃度,并以數字接口形式輸出。傳感器采用激光散射原理。即令激光照射在空氣中的懸浮顆粒物上產生散射,同時在某一特定角度收集散射光,得到散射光強隨時間變化的曲線。進而微處理器利用基于米氏(MIE)理論的算法,得出顆粒物的等效粒徑及單位體積內不同粒徑的顆粒物數量。輸出為單位體積內各濃度顆粒物質量及個數。
攀藤G1傳感器傳輸協議串口默認波特率:9600bps,校驗位:無,停止位:1位。模塊工作在連續采樣方式下,模塊在每一次采樣結束后主動發送采樣數據,采樣響應時間小于600毫秒,數據更新時間小于2秒。模塊發送數據包定義32個字節。控制器只要讀取串口中數據,處理、傳喚得到需要的數值。
屏幕顯示的污染級別對應的顏色,嚴格按照這個配色來的,照片顏色顯示質量不如實際顯示顏色鮮艷。照不出效果。
0.jpg (34.55 KB, 下載次數: 45)
下載附件
2018-4-17 02:04 上傳
合體到一塊了,內部空間。
電路原理圖如下:
0.jpg (81.96 KB, 下載次數: 50)
下載附件
2018-4-17 02:06 上傳
stm32單片機源程序如下:
- #include"led.h"
- #include"LCD.h"
- #include"delay.h"
- extern u16 Conce_PM1_0; // PM1.0濃度
- extern u16 Conce_PM2_5; // PM2.5濃度
- extern u16 Conce_PM10; // PM10濃度
- u16 IAQI[8]={0,50,100,150,200,300,400,500};
- u16 PM10[8]={0,50,150,250,350,420,500,600};
- u16 PM25[8]={0,35,75,115,150,250,350,500};
- u16 IAQIPM10; //PM10空氣質量分指數
- u16 IAQIPM25; //PM2.5空氣質量分指數
- u16 CpPM10; //PM10濃度
- u16 CpPM25; //PM2.5濃度
- u16 BpHi; //與Cp相近的污染物濃度限值的高值
- u16 BpLo; //與Cp相近的污染物濃度限值的低值
- u16 IAQIHi; //與BpHi對應的空氣質量分指數
- u16 IAQILo; //與BpLo對應的空氣質量分指數
- u16 AQI; //空氣質量指數
- u8 Max=10; //Max=0,首要污染物為PM25,Max=1,為PM10,Max=2雙重污染
- void delay_BUSY(void) // 觸摸顯示屏 發送延時
- {
- u16 a;
- for (a=0; a<100; a++) ;
- while(HMI_BUSY); // 當發送完之后,等待BUSY為0
- }
- void Window(void)
- {
- printf("CLS(0);");
- printf("DS48(10,12,'唐山',7,0);");
- printf("DS32(110,28,'實時空氣質量指數(AQI)',7,0);");
- printf("CIR(92,160,56,4);");
- printf("CIR(92,160,55,4);");
- printf("DS24(55,198,'AQI指數',4,0);");
- printf("CIR(239,160,55,4);");
- printf("CIR(239,160,56,4);");
- printf("DS24(180,198,'首要污染物',4,0);");
- printf("CIR(386,160,55,4);");
- printf("CIR(386,160,56,4);");
- printf("DS24(340,198,'PM2.5濃度',4,0);");
- printf("BOXF(50,265,100,280,2);"); //綠色
- printf("BOXF(100,265,150,280,4);"); //黃色
- printf("SCC(37,64480);");
- printf("BOXF(150,265,200,280,37);"); //橙色
- printf("BOXF(200,265,250,280,1);"); //紅色
- printf("SCC(19,38921);");
- printf("BOXF(250,265,300,280,19);"); //紫色
- printf("SCC(18,30724);");
- printf("BOXF(300,265,350,280,18);"); //褐紅色
- printf("DS16(48,285,'0',7,0);");
- printf("DS16(91,285,'50',7,0);");
- printf("DS16(140,285,'100',7);");
- printf("DS16(190,285,'150',7);");
- printf("DS16(240,285,'200',7);");
- printf("DS16(290,285,'300',7);");
- printf("DS16(340,285,'500',7);");
- printf("DS16(369,178,'ug/m3',7,0);");
- printf("CBOX(0,0,479,318,5,4);");
- printf("PL(0,76,479,76,4);");
- printf("DS16(400,265,'13:20:36',7);");
- printf("DS16(395,285,'2016-5-18',7,0);");
- printf("\r\n");
- // delay_BUSY(); //當發送完之后,等待BUSY為0
- }
- void AQI_Count(void) //計算AQI指數,判斷首要污染物
- {
- u8 i=0;
- u8 j=0;
-
- CpPM10=Conce_PM10;
-
-
- for(i=0;i<7;i++)
- {
- if((CpPM10>PM10[i])&&(CpPM10<PM10[i+1]))
- {
- BpHi=PM10[i+1];
- BpLo=PM10[i];
- IAQIHi=IAQI[i+1];
- IAQILo=IAQI[i];
- IAQIPM10=(IAQIHi-IAQILo)*(CpPM10-BpLo)/(BpHi-BpLo)+IAQILo;
- }
- else if(CpPM10==PM10[i])
- {
- IAQIPM10=IAQI[i];
- }
- else if(CpPM10>=600)
- {
- IAQIPM10=((50/6)*(CpPM10-600))/10+500; //爆表
- }
- }
- CpPM25=Conce_PM2_5;
-
- for(j=0;j<7;j++)
- {
- if((CpPM25>PM25[j])&&(CpPM25<PM25[j+1]))
- {
- BpHi=PM25[j+1];
- BpLo=PM25[j];
- IAQIHi=IAQI[j+1];
- IAQILo=IAQI[j];
- IAQIPM25=(IAQIHi-IAQILo)*(CpPM25-BpLo)/(BpHi-BpLo)+IAQILo;
- }
- else if(CpPM25==PM25[j])
- {
- IAQIPM25=IAQI[j];
- }
- else if(CpPM25>=500)
- {
- IAQIPM25=CpPM25; //爆表
- }
- }
-
- if(IAQIPM10>IAQIPM25)
- {
- AQI=IAQIPM10;
- Max=1;
- }
- else if(IAQIPM10<IAQIPM25)
- {
- AQI=IAQIPM25;
- Max=0;
- }else if(IAQIPM10==IAQIPM25)
- {
- AQI=IAQIPM10;
- Max=2;
- }
- }
- void Display(void)
- {
- // printf("CLS(0);\r\n"); //清屏
- // printf("PIC(0,0,1);"); //畫圖
-
- // printf("SBC(2);"); //設置背景色
- // printf("TPN(2);"); //觸摸屏模式
- // printf("BTN(6,396,278,475,315,0);"); //熱點區域按鈕
- // printf("BTN(7,0,0,479,274,0);\r\n");
-
- printf("DS48(350,132,'%4d ',7);",Conce_PM2_5); // PM2.5輸出
- // printf("PS64(0,10,100,'PM1.0:%5d',2);\r\n",Conce_PM1_0); // PM1.0輸出
- // printf("DS48(0,10,240,'PM10 :%5d',3);\r\n",Conce_PM10); // PM10 輸出
- // delay_BUSY(); //當發送完之后,等待BUSY為0
- // printf("DS48(0,0,'PM2.5:%4d ',1);",Conce_PM2_5); // PM2.5輸出
- // printf("DS48(0,60,'PM10 :%4d ',2);",Conce_PM10); // PM10 輸出
- printf("DS48(55,135,'%4d ',3;",AQI); // AQI
- // printf("DS48(0,240,'IAQIPM10:%4d ',5;",IAQIPM10); // PM2.5輸出
- if(Max==0)
- {
- printf("DS32(203,145,'PM2.5',14);"); // PM2.5 輸出
- }
- else if(Max==1)
- {
- printf("DS32(203,145,' PM10',14);"); // PM10 輸出
- }else if(Max==2)
- {
- // printf("DS32(203,135,'PM2.5',14)");
- // printf("DS32(203,160,' PM10',14)");
- }
-
- if(AQI<=50)
- {
- printf("DS24(60,235,' 優 ',5)");
- }
- else if((AQI>50)&&(AQI<=100))
- {
- printf("DS24(60,235,' 良 ',5)");
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
設計說明.doc
(460 KB, 下載次數: 40)
2018-4-16 14:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
激光PM2.5 傳感器攀藤G1資料包.zip
(6.95 MB, 下載次數: 32)
2018-4-16 14:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
STM32F103C8T6-2原理圖.pdf
(54.8 KB, 下載次數: 24)
2018-4-16 14:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
PM2.5 Program.zip
(913.7 KB, 下載次數: 50)
2018-4-16 14:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|