這段時間由于疫情影響不能出去,看著家對面空氣檢測系統的大屏幕上各種數據不斷變化,于是突發奇想,能不能自己也做一個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; } } } } 鑒于篇幅有限,只能寫這么多了。
上一篇:單片機做的半導體制冷小冰箱
下一篇:單片機+人體紅外感應的防盜系統設計
推薦閱讀
史海拾趣
在競爭激烈的電子行業中,CMS始終保持著持續創新的態勢。他們不斷投入研發資源,推出了一系列具有創新性的產品。例如,他們開發了一款基于人工智能技術的智能家居控制系統,該系統能夠通過語音控制實現家電設備的智能化管理。這一產品的推出進一步鞏固了CMS在智能家居領域的領先地位。
隨著全球對環保問題的日益關注,DMC Tools公司也積極響應號召,致力于綠色生產。公司引進了先進的環保設備和技術,對生產過程中的廢棄物進行無害化處理。同時,公司還積極推廣綠色產品,幫助客戶實現綠色生產。這種對環保的關注和投入不僅彰顯了公司的社會責任感,也為公司贏得了良好的社會聲譽。
HVPSI成立于本世紀初,起初是一家小型的技術初創企業,專注于研發高效、可靠的高壓電源模塊。在創始人及核心團隊的帶領下,公司迅速在MOV(金屬氧化物壓敏電阻)模塊領域取得了突破。這些模塊在電力電子設備中起到了關鍵的過壓保護作用,有效提高了系統的穩定性和安全性。通過不斷的技術迭代和產品優化,HVPSI逐漸在行業內樹立了技術領先的形象。
AMRI Enterprise Co Ltd注重與高校和研究機構的產學研合作,通過引進先進技術和人才,推動公司的技術創新。公司與多所知名高校建立了緊密的合作關系,共同開展科研項目和技術攻關。這些合作不僅為AMRI帶來了前沿的技術成果,還提升了公司的研發能力和創新能力。在產學研合作的推動下,AMRI不斷推出具有創新性和競爭力的新產品,為公司的持續發展提供了強有力的支撐。
在電子產品行業,品質與信譽是企業生存和發展的基石。Dexter深知這一點,從產品研發到生產制造的每一個環節,都嚴格把控品質。公司采用先進的生產工藝和檢測設備,確保每一件產品都符合高標準的質量要求。同時,Dexter還建立了完善的客戶服務體系,及時響應客戶需求,提供技術支持和解決方案。這些努力使Dexter贏得了客戶的信任和好評,逐漸在行業中建立了良好的口碑。
為了保持技術領先地位和滿足不斷變化的市場需求,Eagle Plastic Devices公司不斷加大研發投入,引進先進的研發設備和人才。公司建立了完善的研發體系,包括新產品開發、工藝改進、性能測試等環節。通過不斷的技術創新和產品升級,Eagle Plastic Devices公司成功推出了多款具有競爭力的新產品,進一步鞏固了其在行業內的領先地位。
485總線穩定性解決方法 一、關于485 總線的幾個概念: 1、485 總線的通訊距離可以達到1200 米。 根據485 總線結構理論,在理想環境的前提下,485 總線傳輸距離可以達到1200 米。其條件是通訊線材優質達標,波特率為9600,只負載一臺485 設備,才 ...… 查看全部問答∨ |
|
如何通過Tornado自帶的TCL命令實現對當前工程的編譯? 問題:如何通過Tornado自帶的TCL命令實現對當前工程的編譯,不借助Tornado界面中所提供的編譯操作,生成.o和.out文件。 實際上Tornado界面功能好像也是通過TCL命令來實現的,關鍵本人對TCL命令這塊不太熟悉,有請大俠們指教。 … 查看全部問答∨ |
|
最近想接觸一下Stellaris ,正好在匯總論壇的帖子,順便看看以前的帖子,學習了很多。 突然想到以前學習一款單片機的時候,第一件事都是找這個單片機的書。然后我去各個網上商店, ...… 查看全部問答∨ |
|
想到了一個問題,STM32不用外部晶振,程序也不對系統時鐘初始化,啟動后是什么樣的?外掛晶振,但是還是不對系統時鐘初始化,啟動后又是什么樣的呢?有沒有人試過?… 查看全部問答∨ |