土壤溼度檢測模塊利用ADC測量具體溼度(一)

  網上關於土壤溼度檢測模塊的使用大多都是通過其DO數字信號輸出引腳來判斷檢測到的溼度是否超過閾值(超過輸出低電平,否則輸出高電平),而對於其AO模擬信號輸出引腳的使用卻鮮有人提及。

  本文就此從AO引腳的角度來簡單談談本模塊的使用,分享一些個人見解和疑惑。

  我用的是這種最簡單的不帶繼電器的模塊,如果採用DO引腳對模塊進行使用的話,可通過模塊中的藍色電位器對閾值進行調節——不過,本文則是採用AO引腳對模塊進行使用。(當然,你也可以結合起來一起使用)
在這裏插入圖片描述
關於該模塊的引腳說明我直接引用某寶產品圖片了:
在這裏插入圖片描述
  AO引腳我們接單片機的某個具有ADC功能的引腳(用於檢測模擬電壓信號),DO引腳我們接單片機的某個具有外部中斷功能的引腳(用於檢測電平信號的邊沿變化,以判斷溼度是否超過閾值),其它引腳我覺得傳媒學生都曉得怎麼接了。

  該模塊的AO引腳能夠輸出模擬電壓信號,而基於我們對ADC的簡單認知,我們知道單片機能夠通過ADC測得模擬電壓。那麼接下來就簡單了:

  我們通過ADC先測得在溼度爲0%時(乾燥環境下)AO引腳的值(假設爲M0),然後再測出在溼度爲100%時(插入純水中)AO引腳的值(假設爲M1),以這兩個數據作爲參考基準。那麼下一次實際測量時,即可通過以下公式求得實際溼度:

在這裏插入圖片描述
即通過對整個範圍的佔比來大致計算其溼度。

  接下來通過STM32舉例,拋開ADC配置不講,簡單po一些相關代碼和僞代碼,展示一下大致流程:

系統初始化();
exti_init();				//外部中斷初始化,用來檢測DO引腳的邊沿變化(這裏是上升沿檢測,使用PE1引腳)
Adc_Init();					//初始化ADC,這裏將PA5設爲模擬輸入並使能、配置ADC
adc_org=ADC採樣函數();		//對AO引腳進行採樣,得到採樣原始值
moisture = (float)(M_max-adc_org)/(M_max-M_min)*100;
//這裏M_max是溼度爲0%時測得值,M_min是100%時測得值
//由於溼度爲0%時數值大,溼度爲100%時數值小,即溼度越大,數值越小
//所以公式就轉變爲:(M_max-adcx)/(M_max-M_min)*100

一部分具體的代碼段如下圖所示,僅供參考:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
  以上就是關於該模塊AO引腳的大致使用,但是在寫本篇博文的時候,和朋友討論,發現好像還是有bug的:

  我們知道說AO引腳能夠輸出模擬電壓,那它輸出的是誰的電壓,它和待測的土壤溼度的轉換關係是什麼?
  再者,從"所謂的"溼度0%到100%,測得的數值它們之間是均勻線性分佈的嗎?
  測得值位於M_max和M_min的正中間,它就真的對應的是50%的溼度嗎?

所以本文觀點和思路還有待進一步的研究確認,僅作爲參考。

CSDN中調整圖片大小的方式:在原先#pic_center的基礎上,在後面加上
=500x500,就能得到相應的500x500大小的圖片了,租一次等於號前面需要有空格,乘號用小寫字母x。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章