读取24位ad的值_实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值
一、實(shí)驗(yàn)準(zhǔn)備
1.實(shí)驗(yàn)環(huán)境
- 一塊stm32開(kāi)發(fā)板(推薦使用小熊派),以及數(shù)據(jù)線
- 已經(jīng)安裝STM32CubeMX
- 已經(jīng)安裝KeilMDK,并導(dǎo)入stm32開(kāi)發(fā)板對(duì)應(yīng)的芯片包(小熊派使用的是STM32L431RCT6)
- 準(zhǔn)備一個(gè)串口調(diào)試助手,我使用的是UartAssist(包含在附件中)
- 一個(gè)土壤濕度傳感器模塊
2.目標(biāo)效果
- 通過(guò)CubeMX創(chuàng)建工程并配置參數(shù)
- 獲取stm32以硬件IIC獲取SHT20傳感器值(通過(guò)SHT20數(shù)據(jù)手冊(cè)轉(zhuǎn)化)
- 串口1重定向輸出土壤濕度值
二、通過(guò)CubeMX生產(chǎn)MDK工程
A.芯片選擇
打開(kāi)CubeMX,進(jìn)入芯片選擇:
選擇自己的stm32芯片(即STM32L431RCT6):
B.時(shí)鐘源RCC設(shè)置
更改系統(tǒng)時(shí)鐘源
系統(tǒng)時(shí)鐘默認(rèn)使用內(nèi)部的高速時(shí)鐘(HSI),選擇使用HSE,時(shí)鐘更精確
設(shè)置外部時(shí)鐘對(duì)應(yīng)的端口
配置時(shí)鐘樹(shù)
STM32L431RCT6系統(tǒng)時(shí)鐘最大可以為80MHz,我們配置到最大即可
C.參數(shù)配置(對(duì)應(yīng)端口設(shè)置)
1)配置USART1
使用USART,模式為異步,波特率為115200,無(wú)硬件流控制
2)配置ADC通道
知識(shí)補(bǔ)充:ADC,模擬-數(shù)字轉(zhuǎn)換器,可以將連續(xù)變化的模擬信號(hào)轉(zhuǎn)化為離散的數(shù)字信號(hào)。其中,小熊派的ADC1的通道三已經(jīng)被引出,即PC2
打開(kāi)ADC1通道3
?---
3)配置adc
我們保持默認(rèn)即可:
D.工程設(shè)置
一些基礎(chǔ)的設(shè)置,包括工程名、存儲(chǔ)位置、工程環(huán)境、工程中各個(gè)文件的組成
E.生成代碼
三、代碼補(bǔ)充
1. 串口1輸出重定向
我們知道printf是打印函數(shù),原理是根據(jù)傳入的字符串參數(shù)格式化打印輸出到stdout中。我們需要讓printf打印到串口之中,只需要在usart.c文件中模仿printf寫(xiě)一個(gè)輸出函數(shù)即可
- 在添加頭文件
- 寫(xiě)輸出函數(shù)
注意:自己添加的代碼,需要在begin和end之間
2. 讀取傳感器ADC值
我們獲取傳感器adc的值,通過(guò)在實(shí)驗(yàn)室多次測(cè)量不同土壤濕度的ADC值,來(lái)表示土壤濕潤(rùn)程度
主函數(shù)代碼
while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_ADC_Start(&hadc1); //開(kāi)啟ADC1HAL_ADC_PollForConversion(&hadc1,50); //等待ADC轉(zhuǎn)化完成for(num=0;num<20;num++){AD_Value += HAL_ADC_GetValue(&hadc1);}AD_Value = AD_Value/20; //ADC轉(zhuǎn)換的數(shù)據(jù)20次的平均值UsartPrintf(&huart1,"ADC20次獲取的平均值值為:%drn",AD_Value);Temperature = ((int16_t)(AD_Value-*TEMP30_CAL_ADDR)*1.0/(int16_t)(*TEMP130_CAL_ADDR-*TEMP30_CAL_ADDR))+30;UsartPrintf(&huart1,"Temperature is %.2f °rn",Temperature); ////UsartPrintf(&huart1,"%drn",*TEMP130_CAL_ADDR);//UsartPrintf(&huart1,"%drn",*TEMP30_CAL_ADDR);}代碼很簡(jiǎn)單,但是如果我們需要獲取更精確的值,可以加入各種濾波算法。然后根據(jù)實(shí)驗(yàn)值,判斷土壤濕潤(rùn)程度。
我通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),在空氣中獲取的值為1300左右,包上濕潤(rùn)的餐巾紙后,值為兩位數(shù)以下。因此我們可以粗略判斷,土壤越濕度,值越小;相反,土壤越干,值越大。
四、編譯+下載
點(diǎn)擊編譯后,0 error,0 warning
小熊派連接在電腦上,代碼下載到開(kāi)發(fā)板
五、效果
1.將小熊派串口1和電腦相連,即撥到 AT-MUC,按下復(fù)位鍵
2.打開(kāi)串口調(diào)試助手
連接端口,設(shè)置波特率為115200
可以看到,在空氣中獲取的值為1200-1300;此時(shí),我們不僅掌握了ADC的使用,還掌握了土壤濕度傳感器的使用
附件中包含本文工程文件(cubemx + keilMDK)
附件:BearPiToSoil.zip
點(diǎn)擊關(guān)注,第一時(shí)間了解華為云新鮮技術(shù)~
總結(jié)
以上是生活随笔為你收集整理的读取24位ad的值_实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MATLAB仿真TSC在哪里找,-bas
- 下一篇: java生成pdf_JAVA 生成PDF