日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32 Cube ADC 测量土壤湿度

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32 Cube ADC 测量土壤湿度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 。說明

本來想買個溫濕度模塊,結果買了個濕度 - _ - !

1. 什么是AD轉換

AD轉換是把離散的模擬量轉換為數字量的過程,其原理就是使用單片機的高頻率和時鐘來采樣x軸的點樣,根據電壓的變化使用曲線函數來獲取y軸數字值的過程,我們叫做AD轉換

2.如何確定AD采樣的位數,并知道電壓值

如果單片機的的ADC為12位,那么它的最大值為4095。單片機在進行AD轉換前需要先設置一個參考電壓。假如把參考電壓設置為5V,5V=4095,0V=0;根據這樣的關系,我們就可以把模擬電壓進行數字化了。比如:2V=2/5*4095=1638。

3. 什么是A0 和 D0

A0 輸出為模擬量的電壓值

D0 根據可調電阻設置傳感器的靈敏度,當達到某個閾值時候能輸出 1 或者 0 ,變化波動較大

比如:MQ135 未檢測到氣體時,電壓值為4v , 檢測到后為0.1V

VCC ?連接 5V ( 可查參考手冊,不同的模塊要求電壓不同)

GND ?接地

二 。配置

1. 設置采樣周期 55.5 cyles,和中斷端口 IN1,該端口和A0連接

2. 開啟中斷 ,這里采用中斷方式。也可以不使用中斷,直接在main的 while 里來做一樣

3.?根據配置的時鐘知道AD的采樣精度 ,這里我用的是12位的AD

三。濕度取值說明

在實際測試中,ad_value 隨著水分的增加,而減少
在干燥的空氣中,ad_value 在4020左右 -> 0
在純水的中的值為:ad_value 在1500左右 -> 100%
根據以上的幾個條件,我們可以用1次函數模擬出濕度變化的曲線,所以就可以求值了

四。代碼

int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_ADC1_Init();//開啟中斷HAL_ADC_Start_IT(&hadc1);while(1){} }//這是中斷回調函數 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {float vol,hum;uint32_t adc_value;//獲取ad valueadc_value= HAL_ADC_GetValue(&hadc1);//2的12次方,所以3V = 4096vol = (float)adc_value*3.3/4096;//在實際測試中,ad_value 隨著水分的增加,而減少//在干燥的空氣中,ad_value 在4020左右 -> 0//在純水的中的值為:ad_value 在1500左右 -> 100%//土壤濕度的范圍為 0~100 %hum = -0.03968253968253968*adc_value+159.52380952380952;//限制一下上下限if(hum < 0 ) hum = 0;if(hum > 100) hum = 100;//再次啟動ADC轉換HAL_ADC_Start_IT(hadc); }

四。演示效果(過程有些長,請耐心觀看)

1.空氣中濕度為:0?

2.水中濕度為:100?

3. 土壤中從淺到深?44 ~ 53%

感謝您的支持,寫的文章如對您有所幫助,開源不易,請您打賞,謝謝啦~

?

?

?

?

總結

以上是生活随笔為你收集整理的STM32 Cube ADC 测量土壤湿度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。