0.png (40.94 KB, 下載次數: 67)
下載附件
2016-10-11 17:31 上傳
完整的論文下載地址:
-----下面是論文部分內容的預覽-------------------------------------------------------------
PM2.5/10檢測儀設計報告 PM2.5/10 detector design report PM2.5/10檢測儀設計誠信聲明:
本團隊鄭重聲明:所呈交的PM2.5/10檢測儀設計,是本團隊在指導老師的指導下,獨立進行研究工作所取得的成果,成果不存在知識產權爭議,除文中已經注明引用的內容外,本論文不含任何其他個人或集體已經發表或撰寫過的作品成果。對本文的研究做出重要貢獻的個人和集體均已在文中以明確方式標明。本團隊完全意識到本聲明的法律結果由本團隊承擔。 摘要 最近中國很多地方出現了嚴重的霧霾天氣,影響著人們生活的各個方面,最嚴重的危害還是對人體健康的危害。霧霾的組成十分復雜,大小有數百種顆粒物,這些顆粒物通過人體呼吸,進入呼吸道,會引發氣管炎,哮喘等呼吸道疾病。眾所周知,吸煙的人患肺癌的幾率比普通人高60%,而霧霾里含有的有害顆粒物更多,所以霧霾比吸煙更易致癌。因此,對PM2.5/10的測量顯得越來越重要。 本設計采用Arduino unoR3 開發板為控制中心,由PM2.5激光傳感器SDS011測量空氣粉塵濃度,595驅動八位數碼管顯示當前空氣粉塵濃度。當空氣中粉塵濃度達到所設定限度啟動蜂鳴器自動報警,且能實時對應顯示相應的LED燈,直觀提醒當前的污染級別。該系統電路簡單、工作穩定、集成度高,調試方便,測試精度高,具有一定的實用價值。 Abstract Recently, severe hazy weathers appeared in many places around China, which caused impact on eve-ry aspect of people’s life. The most dangerous threat lies in the health hazard. The composition of h-aze is very complicated, as it is consisted of hundreds of particulate matters that can be breathed into humans respiratory, which lead to many respiratory diseases such as trachitis and asthma. Howe-ver, smokers have 60% higher chances of contracting lung cancer than ordinary people, and haze also contains many other harmful particulate matters so the haze is more likely to cause cancer tha-n smoking. Therefore, the measurement of PM2.5 is becoming more and more important. This design uses the unoR3 Arduino development board as the control center, by the PM2.5 laser sensor SDS011 measurement of air dust concentration, 595 drive eight digital tube display the current air dust concentration When the dust concentration in the air reaches the set limit, the buzzer will start to alarm automat-ically and can display corresponding LED light at real time, visually indicating current pollution le-vel. The system has the advantages of simple circuit, stable operation, high integration, convenient debugging, and high-test accuracy and has important practical value. 目錄: 反第一章:概述································································1~2 1.1設計的主要內容和意義····································································1~2 1.1.1設計的主要內容 ······································································· 1 1.1.2 設計的主要意義··········································································1~2 第二章:主控制器及主要器件····························2~6 2.1 Arduino unoR3開發板·····································································2~3 2.2 595驅動八位數碼管········································································3~5 2.3 PM2.5激光傳感器···········································································5~6 第三章:硬件電路設計···················································7~10 3.1 電路設計框圖············································································7~8 3.2 PM2.5檢測儀的簡單操作································································9~10 第四章:軟件11 4.1用到的軟件Arduino ide ·········································11 第五章: 設計主要用途及應用的場景·································11 5.1主要用途··················································································· 11 5.2 應用場景 ··················································································11 第六章:應用設計進行的相關實驗及結論分析····················12~16 6.1實驗一:公園的檢測····································································· 12 6.2 實驗二:路口的檢測·······································································13 6.3實驗三: 生活場景的檢測································································14~15 6.4 檢測分析····················································································16 6.5應對做法·····················································································16 第七章:總結································································16 參考文獻·····························································································17 附錄:程序························································································· 17
第一章:概述 1.1、設計的主要內容和意義 1.1.1、設計的主要內容本設計提出的“PM2.5,PM10監測”的方案最基本的實現方法是由Arduino開發板、激光粉塵傳感器、LED燈、顯示模塊、報警器等模塊組成的電路,PM2.5/10激光傳感器SDS011采集空氣中PM2.5,PM10的濃度值,經過Arduino unoR3開發板處理后,在595驅動八位數碼管上顯示,并且設置一個報警值,檢測的PM2.5,PM10濃度值超過報警值后,另外,該設計在實時檢測濃度的同時,根據當前檢測濃度亮起相應的燈,濃度范圍分別為: 1.1.2、設計的主要意義(1)PM2.5由什么組成: PM2.5是粒徑小于2.5μm的空氣中的懸浮物。微小的可溶性固體、可溶性氣體是形成PM2.5的首要因素。例如SOx(硫的氧化物)、NOx(氮的氧化物)、xCl、xBr、xCO3等物質形成的水的微小液滴,微小液滴和微小顆粒是形成灰霾的主要物質。 (2)PM2.5來源: PM2.5是日常發電、工業生產、汽車尾氣排放等過程中經過燃燒而排放的殘留物,大多含有重金屬等有毒物質。一般而言,粒徑2.5微米至10微米的粗顆粒物主要來自道路揚塵等,2.5微米一下的細顆粒物主要來自化石燃料燃燒。揮發有機物。 (3)PM2.5的危害: 氣象專家和醫學專家認為,由細顆粒物造成的灰霾天氣對人體健康的危害甚至要比沙大粒徑10微米以上的顆粒物,會被擋在人的鼻子外面;粒徑在2.5微米至10微米之間的顆粒物,能夠進入上呼吸道,但部分可通過痰液等排出體外,另外也會被鼻腔內部的絨毛阻擋,對人體健康危害相對較小;而粒徑在2.5微米以下的細顆粒物,直徑不足人類頭發絲的1/20大小,不易被阻擋。被吸入人體后會直接進入支氣管,干擾肺部的氣體交換引發包括哮喘、支氣管炎和心血管病等方面的疾病。 世界衛生組織發布的報告顯示,無論是發達國家還是發展中國家,目前大多數城市和農村人口均遭受到顆粒物對健康的影響。高污染城市中的死亡率超出相對清潔城市的15%至20%。據統計,在歐洲,PM2.5每年導致386000人死亡,并使歐盟國家人均期望壽命減少8.6個月。人體的生理結構決定了對PM2.5沒有任何過濾、阻攔能力,而PM2.5對人類健康的危害卻隨著醫學技術的進步,逐步暴露出其恐怖的一面。氣象專家和醫學專家認為,由細顆粒物造成的灰霾天氣對人體健康的危害甚至要比沙塵暴更大。粒徑10微米以上的顆粒物,會被擋在人的鼻子外面;粒徑在2.5微米至10微米之間的顆粒物,能夠進入上呼吸道,但部分可通過痰液等排出體外,另外也會被鼻腔內部的絨毛阻擋,對人體健康危害相對較小;而粒徑在2.5微米以下的細顆粒物,直徑相當于人類頭發的1/10大小,不易被阻擋。被吸入人體后會直接進入支氣管,刺激呼吸道,干擾肺部的氣體交換,從而引發咳嗽、呼吸困難、哮喘、慢性支氣管炎等呼吸系統的疾病并導致心律不齊、非致命性心臟病等心血管方面的疾病。其中,老人、小孩以及心肺疾病患者是PM2.5污染的敏感人群。 因此,對PM2.5的監測與治理便顯得越來越重要。 第二章:主控制器及主要器件 2.1、Arduino unoR3 開發板(1)Arduino UNO R3的介紹 Arduino UNO R3是一款易用型開源控制器,硬件上與Arduino UNO相比并沒有大的變動,最大不同在于USB轉串口電路部分,改用的 是一塊ATMega16U2單片機,由此成本也有所提高,軟件部分與之前一樣,沒有大的變化。 Arduino是一塊基于開放原始代碼的Simple i/o平臺,并且具有開發語言和開發環境都很簡單、易理解的特點。讓您可以快速使用Arduino做出有趣的東西。它是一個能夠用來感應和控制現實物理世界的一套工具。 它由一個基于單片機并且開放源碼的硬件平臺,和一套為Arduino板編寫程序 的開發環境組成。Arduino可以用來開發交互產品,比如它可以讀取大量的開關和傳感器信號,并且可以控制各式各樣的電燈、電機和其他物理設備。Arduino項目可以是單獨的,也可以在運行時和你電腦中運行的程序(例如:Flash,Processing,MaxMSP)進行通訊。 (2)Arduino unoR3的特性: 微控制器核心:AVRmega328P-PU(處理速度可達20MIPS) 工作電壓:+5V 外部輸入電壓:+7V~+12V(建議) 外部輸入電壓(極值):+6V≤Vin≤+20V 數字信號I/O接口:14(其中6個PWM輸出接口) 模擬信號輸入接口:6 DC I/O接口電流:40 mA Flash容量:32 KB (其他2K用于bootloader) 時鐘頻率:16MHz (3)Arduino UNO R3硬件實物圖如下
1.001.jpg (41.36 KB, 下載次數: 86)
下載附件
2016-10-11 17:32 上傳
(4)工作原理圖:
1.002.jpg (42.67 KB, 下載次數: 82)
下載附件
2016-10-11 17:32 上傳
2.2、595驅動八位數碼管(1)74HC595芯片: 74HC595是具有8位移位寄存器和一個存儲器,三態輸出功能。移位寄存器和存儲器是分別的時鐘。 數據在SHcp的上升沿輸入,在STcp的上升沿進入的存儲寄存器中去。如果兩個 時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。 (2)數碼管基本屬性: 1.采用2片 595驅動數碼管,需要 單片機3路IO口,根據數碼管動態掃描原理進行顯示; 2.寬工作電壓3.3V到5V; 3.PCB板尺寸:71mm*22mm 4.數碼管型號:共陰 (3)優點: 74595的主要優點是具有數據存儲寄存器,在移位的過程中,輸出端的數據可以保持不變。這在串行速度慢的場合很有用處,數碼管沒有閃爍感。 (4)硬件實物圖如下:
1.003.jpg (18.06 KB, 下載次數: 76)
下載附件
2016-10-11 17:32 上傳
(5)工作原理圖:
1.004.jpg (35.72 KB, 下載次數: 114)
下載附件
2016-10-11 17:32 上傳
(6)硬件連接圖:
1.005.jpg (43.02 KB, 下載次數: 76)
下載附件
2016-10-11 17:32 上傳
2.3、PM2.5 激光傳感器SDS011(1)工作原理: 采用激光散射原理:當激光照射到通過檢測位置的顆粒物時會產生微弱的光散射,在特定方向上的光散射波形與顆粒直徑有關,通過不同粒徑的波形分類統計及換算公式可以得到不同粒徑的實時顆粒物的數量濃度,按照標定方法得到跟官方單位統一的質量濃度。 (2)特點: 數據準確:激光檢測,穩定,一致性好; 響應快速:場景變換響應時間小于10秒; 便于集成:串口輸出(或IO口輸出可定制),自帶風扇; 分辨率高:分辨顆粒最小直徑達0.3微米; (3)技術指標: 測量輸出:PM2.5/PM10 量程:0.0-999.9微克/立方米 供電電壓:5V 最大工作電流:100mA 休眠電流:2mA 工作溫度范圍:-20-50℃ 相應時間:1秒 串口數據輸出頻率:1次/秒 顆粒物直徑分辨率:小于0.3微米 相對誤差:10% (4)硬件實物圖如下
1.006.jpg (35.06 KB, 下載次數: 67)
下載附件
2016-10-11 17:32 上傳
第三章:硬件電路設計及操作 3.1、電路設計框圖:3.1.1硬件設計框圖:
1.007.jpg (14.58 KB, 下載次數: 82)
下載附件
2016-10-11 17:32 上傳
3.1.2軟件設計框圖:
1.008.jpg (26.42 KB, 下載次數: 74)
下載附件
2016-10-11 17:32 上傳
3.1.3硬件連接圖:
1.009.jpg (31.46 KB, 下載次數: 72)
下載附件
2016-10-11 17:32 上傳
3.1.4 電路原理圖:
1.010.jpg (29.2 KB, 下載次數: 79)
下載附件
2016-10-11 17:32 上傳
3.2.1 PM2.5檢測儀的操作
1.011.jpg (34.16 KB, 下載次數: 88)
下載附件
2016-10-11 17:32 上傳
接上電源如上圖顯示,開始檢測PM2.5/10。主要操作按鈕有3個如下
1.012.jpg (23.55 KB, 下載次數: 82)
下載附件
2016-10-11 17:32 上傳
這兩個按鈕的功能是劃分PM2.5/10的質量等級。左邊的是PM2.5,右邊的是PM10 持續按下去儀器正面的LED燈會亮,主要操作附屬光碟有示。
1.013.jpg (27.89 KB, 下載次數: 83)
下載附件
2016-10-11 17:32 上傳
左上角的紅色按鈕是復位按鈕,主要用于蜂鳴器的復位。
第四章:軟件 4.1 編程軟件Arduino ideArduino IDE是Arduino的開放源代碼的集成開發環境,其界面友好,語法簡單以及能方便的下載程序,使得Arduino的程序開發變得非常便捷。作為一款開放源代碼的軟件,Arduino IDE也是由Java、Processing、 avr-gcc等開放源碼的軟件寫成,其另一個最大特點是跨平臺的兼容性,適用于Windows、Max OS X以及Linux。2011年11月30號Arduino官方正式發布了Arduino1.0版本,可以下載不同系統下的壓縮包,也可以在github上下載源碼重新編譯自己的IDE。 第五章:設計主要用途及應用場景 5.1、主要用途本設計主要可用于室內和戶外的空氣質量的檢測,可調節的報警濃度的設計,可用于長期檢測和提醒PM2.5和PM10的濃度。 5.2、應用場景辦公室空氣檢測和提醒,公共場合控煙,空調和通風口處監測,氣象臺,觀測站,馬路口監測為期排量 第六章:應用設計進行的相關實驗及結論分析 6.1、實驗一 :公園檢測
1.014.jpg (23.81 KB, 下載次數: 75)
下載附件
2016-10-11 17:32 上傳
(單位:微克/立方米)
1.015.jpg (20.77 KB, 下載次數: 82)
下載附件
2016-10-11 17:32 上傳
(單位:微克/立方米)
6.2、實驗二:路口檢測
1.016.jpg (23.59 KB, 下載次數: 78)
下載附件
2016-10-11 17:32 上傳
(單位:微克/立方米)
1.017.jpg (20.2 KB, 下載次數: 68)
下載附件
2016-10-11 17:32 上傳
6.3實驗三:常見生活場景檢測
1.018.jpg (23.76 KB, 下載次數: 101)
下載附件
2016-10-11 17:32 上傳
1.019.jpg (20.99 KB, 下載次數: 90)
下載附件
2016-10-11 17:32 上傳
1.020.jpg (22.95 KB, 下載次數: 78)
下載附件
2016-10-11 17:32 上傳
(單位:微克/立方米)
1.021.jpg (24.2 KB, 下載次數: 78)
下載附件
2016-10-11 17:32 上傳
6.4、檢測分析(1)相對于實驗二和三,實驗一的PM25和PM10數值明顯低很多,空氣質量等級為優,說明在花草樹木具有凈化空氣的效果,說明了花草樹木有助于凈化空氣。 (2)相對于實驗一和三,實驗三的PM25和PM10數值明顯高,特別是中午和晚上的時候到達頂峰,說明是中午和晚上是下班時間引起車流的高峰期造成的。 (3)該設計在日常生活中可以用于對我們經常處在的生活場景進行監測,在家里臥室的檢測數據結果是優秀的,但在學校宿舍檢測數據明顯升高,空氣質量為良,這是因為宿舍的旁邊是公路;車流量多造成的。
6.5、應對方法(1)治理方法: 多植樹,減少機動車的排放量,促進清潔能源開發,監督工廠排放等 (2)生活應對霧霾方法: 1、霧霾天氣少開窗,最好不出門或晨練。 2、外出戴專業防塵口罩。 3、多喝桐桔梗茶、桐參茶、桐桔梗顆粒、桔梗湯等“清肺除塵”茶飲。 4、少量補充維生素D。 5、飲食清淡多喝蜂蜜水. 7、盡量減少吸煙甚至不吸煙。 第七章、總結 隨著霧霾天氣的肆虐,我們有理由且必要的做一些措施來注意我們身邊空氣的PM2.5/10,而本設計這是基于這點,應用所學的知識,制作一個經濟,簡單,實用的多功能PM2.5/10濃度檢測儀。 在設計中PM2.5激光傳感器采集空氣中PM2.5和PM10的濃度值,經過Arduino unoR3開發板處理后,在八位數碼管上顯示,并且設置一個報警值,檢測的PM2.5濃度值超過報警值后,蜂鳴器報警。另外,該設計在實時檢測濃度的同時,根據當前檢測濃度亮起相應的燈,直觀的能告知觀測者當前的濃度。 在本設計中,需要閱讀相應的資料才能做出設計,對于資料的應用和學習能力是很重要,這也算是這次設計給團隊帶來的鍛煉。 當然在設計完成后,本著一開始設計的實用性的出發點,進行了三個檢測試驗,一方面檢測設計的可操作性和實用性,另一方面也是讓自己對PM2.5和PM10的產生有了直觀的了解。 最后很高心能夠通過團隊的努力,運用所學順利完成了該設計。 參考文獻 Arduino unoR3開發板用戶手冊 PM2.5激光傳感器用戶手冊 595驅動八位數碼管用戶手冊 Arduino程序設計基礎(第二版)陳呂州 Arduino編程從零開始 Simon Monk C程序設計教程(第二版)譚浩強 附錄:程序 - const unsigned char dula[10]=
- {
- 0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f
- };//0到9的段碼
- unsigned char const wela[]=
- {
- 0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f
- };//1到7的位碼
-
-
- unsigned char location[8];
- unsigned int Pm25=0;//初始化P2.5
- unsigned int Pm10=0;//初始化P10
- long previousMillis = 0;// 1s的時間間隔,
-
-
- void jinbao()//報警模塊
- {
- int i=1500;
- tone(9,i);
- }
-
-
- void SendByte1(unsigned char dat)
- {
- int CLK = 12;int SER = 11;
- unsigned char i;
- for(i=0;i<8;i++)
- {
- digitalWrite(CLK,0);
- digitalWrite(SER,bitRead(dat,7-i));
- digitalWrite(CLK,1);
- }
- }
-
- void SendByte2(unsigned char x,unsigned char y)//收集PM10和PM25并且發送給sendbyte1
- {
- SendByte1(x);
- SendByte1(y);
- }
- void latch(void)//鎖住模塊,傳感器傳來的數據
- {
- int ST = 13;
- digitalWrite(ST,1);
- digitalWrite(ST,0);
- }
-
-
- void PM25(unsigned int v)//PM25按照個十百分離模塊
- {
- int i;
- if(v/1000)
- {
- location[0]=dula[v/1000%10];
- location[1]=dula[v/100%10];
- location[2]=dula[v/10%10];
- }
- else
- {
- if((v/100) != 0)
- location[0]=dula[v/100%10];
- location[1]=dula[v/10%10]|0x80;
- location[2]=dula[v%10];
- }
- for(i=0;i<8;i++)
- {
- SendByte2(wela[i],location[i]);
- latch();
- }
- }
-
-
- void PM10(unsigned int v)//PM10按照個十百分離模塊
- {
-
- int i;
- if(v/1000)
- {
- location[4]=dula[v/1000%10];
- location[5]=dula[v/100%10];
- location[6]=dula[v/10%10];
- }
- else
- {
- if((v/100) != 0)
- location[4]=dula[v/100%10];
- location[5]=dula[v/10%10]|0x80;
- location[6]=dula[v%10];
- }
- for(i=0;i<8;i++)
- {
- SendByte2(wela[i],location[i]);
- latch();
- }
- }
- void Display()//顯示模塊
- {
- int i;
- for(i=0;i<8;i++)
- location[i]=0;
- PM25(Pm25);
- PM10(Pm10);
- }
- void serialsend()//串口數據模塊
- {
- uint8_t mData = 0;//無符號8位
- uint8_t i = 0;//無符號8位
- uint8_t mPkt[10] = {0};//無符號8位
- uint8_t mCheck= 0;//無符號8位
- while (Serial.available() > 0) //串口接收到了數據
- {
- mData = Serial.read(); //讀取發送的數據
- delay(10);//延時收集數據
- if(mData == 0xAA)
- {
- mPkt[0] = mData;
- mData = Serial.read();
- delay(10);
- if(mData == 0xc0)
- {
- mPkt[1] = mData;
- mCheck = 0;
- for(i=0;i < 6;i++)
- {
- mPkt[i+2] = Serial.read();
- mCheck += mPkt[i+2];
- }
- mPkt[8] = Serial.read();
- delay(10);
- mPkt[9] = Serial.read();
- if(mCheck == mPkt[8])//檢驗好了
- {
- Serial.flush();
- Pm25 = mPkt[2] | (mPkt[3]<<8);
- Pm10 = mPkt[4] | (mPkt[5]<<8);
- if(Pm25 > 9999)
- Pm25 = 9999;
- if(Pm10 > 9999)
- Pm10 = 9999; //得到一個好的數據
-
-
- int Button = digitalRead(2); //讀到的狀態值
- if(Button==0)
- {
- delay(10);
- if(Button==0) //延時消抖處理
- {
- switch (Pm10/100)
- {
- case 0 :digitalWrite(3,HIGH); break;
- case 1 :digitalWrite(3,HIGH); break;
- case 2 :digitalWrite(3,HIGH); break;
- case 3 :digitalWrite(3,HIGH);break;
- case 4 :digitalWrite(4,HIGH); break;
- case 5 :digitalWrite(4,HIGH); break;
- case 6 :digitalWrite(4,HIGH); break;
- case 7 :digitalWrite(4,HIGH); break;
- case 8 :digitalWrite(5,HIGH); break;
- case 9 :digitalWrite(5,HIGH); break;
- case 10 :digitalWrite(5,HIGH); break;
- case 11 :digitalWrite(5,HIGH); break;
- default: digitalWrite(3,HIGH);digitalWrite(4,HIGH); digitalWrite(5,HIGH);jinbao();break;
-
- }
- }
- }
- else
- {
- digitalWrite(3,LOW); digitalWrite(4,LOW);digitalWrite(5,LOW); digitalWrite(9,LOW);
- }
-
- int Button1 = digitalRead(10); //讀取的狀態值
- if(Button1==0)
- {
- delay(10);
- if(Button1==0) //延時消抖處理
- {
- switch (Pm25/100)
- {
- case 0 :digitalWrite(8,HIGH); break;
- case 1 :digitalWrite(8,HIGH); break;
- case 2 :digitalWrite(8,HIGH); break;
- case 3 :digitalWrite(8,HIGH);break;
- case 4 :digitalWrite(7,HIGH); break;
- case 5 :digitalWrite(7,HIGH); break;
- case 6 :digitalWrite(7,HIGH); break;
- case 7 :digitalWrite(7,HIGH); break;
- case 8 :digitalWrite(6,HIGH); break;
- case 9 :digitalWrite(6,HIGH); break;
- case 10:digitalWrite(6,HIGH); break;
- case 11 :digitalWrite(6,HIGH); break;
- default:digitalWrite(8,HIGH); digitalWrite(7,HIGH);digitalWrite(6,HIGH);jinbao(); break;
-
- }
- }
- }
- else
- {
- digitalWrite(8,LOW); digitalWrite(7,LOW);digitalWrite(6,LOW); digitalWrite(9,LOW);
- }
- }
- }
- }
- }
- }
- void setup()
- {
- pinMode(2, INPUT_PULLUP);pinMode(3,OUTPUT);pinMode(4,OUTPUT);
- pinMode(5,OUTPUT);pinMode(6,OUTPUT);pinMode(7,OUTPUT);
- pinMode(8,OUTPUT);pinMode(9,OUTPUT);pinMode(10, INPUT_PULLUP);
- pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT);
- Serial.begin(9600,SERIAL_8N1);
- Display();
- }
- void loop()
- {
- serialsend();
- Display();
- }
復制代碼 |