本人在校學生一個,最近是使用到來GP2Y1010AU氣體檢測模塊,這個模塊標識的說可以檢測PM2..5,但是實際運用過程中,發現可能達不到這個精度。
話不多說,先上乾貨。實物以及引腳圖。這裏參考了一篇前輩的博客,就順手截圖過來(容許我偷個懶)
附上前輩的原文鏈接:https://blog.csdn.net/qq_33160790/article/details/78839529
先聲明:
1.實際上不用接模塊附帶的電容電阻,也可以正常工作。
2.商家沒有現成的stm32代碼,所以,還是老老實實看下這篇博客。
3.遇到新的模塊,知識,甚至困難,依舊要依靠自己強大的學習能力去征服。
初次拿到這個模塊的同學估計也是一臉蒙逼,怎麼用,引腳怎麼都不懂,小編爲此苦幹半天才實現基本數據讀取,也是很惱火,所以寫這麼一篇博客報復無良商家。
從上圖可知道,具體的接線方式.(將arduino換成32單片機的引腳就可以了,只不過進行不同模式的配置)
解答1:LED-GND是什麼鬼?這個代表是模塊內部的LED燈的GND,(閱讀手冊可知,測量空氣顆粒物濃度依據光學原理,所以,裏邊是有LED燈存在的,且是發射紅外線),同理,標識LED,就是對應的VCC(有點不嚴謹,應該說是可控的VCC)
解答2:如何讀取數據?將模塊的5號引腳接入單片機的ADC採集引腳即可。
解答3:爲何LED引腳要接入DAC輸出引腳呢?這個需要去查看該模塊的數據手冊,
根據 LED 驅動週期(脈衝週期:T (ms) ),LED 驅動時間(脈衝:寬度 Pw(ms) )輸出
電壓會變動,規格書特性的規格值是脈衝週期 T:10ms, Pw:0.32ms,取樣時
間:0.28ms,根據此條件變動(取樣時間可以自己設定,但是廠家給的手冊是10ms.....),規格書上規定的特性值(無塵時輸出電壓、檢出感度) 也隨之變動。
然後,通過stm32的ADC例程代碼,就可以實現簡單的數據讀取了(記得調整LED的驅動時間,即是驅動條件,查看微博客末尾的文章鏈接)
實際操作步驟:
正常連線。
初始化一個ADC通道,以及一個觸發脈衝引腳(不用PWM或者定時器,採用最簡單的定時拉高拉低就能實現觸發效果)。
通過ADC讀取電壓並轉換爲數值。
結合公式算出顆粒物的濃度。(見模塊參考手冊)
手冊鏈接:https://pan.baidu.com/s/1My-k_nrXNgmyyIeJnCLaJw 提取碼:c0pj
鏈接:https://pan.baidu.com/s/1My-k_nrXNgmyyIeJnCLaJw
提取碼:c0pj
測量結果如圖:
(1)部分是:我在實驗室內測得數據。
(2)部分是:我在傳感器旁邊放了一杆煙所測得的。
有實戰項目的話,我會在後邊不斷更新。代碼簡單,就不用再貼上源碼了。
每一個少年,心中都應有一片屬於自己的江湖。