一 。说明

本来想买个温湿度模块,结果买了个湿度 - _ - !

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 测量土壤湿度相关推荐

  1. STM32内部ADC测量时产生噪声的原因与消除的方法

    首先让我们来看一张实际项目过程中,测试发现的问题: 每隔1ms 就会起来一个信号,这个信号大概是250ns. 我所使用的芯片是 STM32F103RCT6.使用内部ADC测量电压,采用定时器触发采样, ...

  2. STM32 Cube ADC MQ135测量空气质量和氨气PPM

    一 .说明 1. 什么是AD转换 AD转换是把离散的模拟量转换为数字量的过程,其原理就是使用单片机的高频率和时钟来采样x轴的点样,根据电压的变化使用曲线函数来获取y轴数字值的过程,我们叫做AD转换 2 ...

  3. 使用STM32 CUBE IDE配置STM32F7 用DMA传输多通道ADC数据

    我的使用环境: 硬件:STM32F767ZGT6.串口1.ADC1.16MHz晶振.216MHz主频 软件:STM32 CUBE IDE 优点:不用定时触发采样,ADC数据是不停的实时更新,ADC数据 ...

  4. 有关用STM32芯片自带的ADC测量电池电压,然后根据放电曲线得到电池容量的问题

    首先,这种方式测量我认为肯定是不能正确得到电池剩余容量的.STM32的ADC参考电压,我们一般设置为3.3V,也就是说ADC采集到的外部电压最高也是3.3V,一般我们使用的电池可能要高于3.3v,这就 ...

  5. stm32.cube介绍

    stm32.cube(一)--系统架构及目录结构 stm32.cube(二)--HAL结构及初始化 stm32.cube(三)--HAL.GPIO stm32.cube(四)--HAL.ADC stm ...

  6. 使用stm32的ADC得到准确的电压

    一.引脚多一点的stm32单片机存在VREF-和VREF+引脚 由上面的供电图知道,如果存在VREF-和VREF+引脚,那么ADC是由这两个引脚供电的,ADC的采集电压范围为:VREF-<VIN ...

  7. STM32之ADC实例(基于DMA方式)

    出处:https://blog.csdn.net/zouleideboke/article/details/75112224?locationNum=9&fps=1 ADC简介: ADC(An ...

  8. 对于STM32的ADC芯片的思考

    一,一般在STM32中的IIC.SPI.UART.外部中断都有对应的中断去处理 UART有接收中断,和发送完成中断 二,但是ADC这部分没弄清楚是通过什么方式去采样的,如果是中断的话,那么时间是固定的 ...

  9. STM32芯片ADC内部的CH17参考电压的用途

    每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17. 根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V ...

最新文章

  1. Swift----函数 、 闭包 、 枚举 、 类和结构体 、 属性
  2. 【问题帖】压缩图片大小至指定Kb以下
  3. 青龙面板修改端口教程避开5700更安全
  4. WPF 用户控件的使用
  5. php pdo 参数绑定,PDO绑定参数的其他方法
  6. php中的each()用法和list()用法
  7. django mysql socket_django mysql 读写分离
  8. 轻巧和实用并存——360安全卫士极速版试用报告
  9. windows ssh命令_如何启用和使用Windows 10的新内置SSH命令
  10. gmod服务器文件,gmod服务器里改名字指令 | 手游网游页游攻略大全
  11. 怎么用计算机打游戏视频,网吧电脑可以边玩游戏边录视频吗?这样的方法很少人知道...
  12. pk 打包文件_【旅行】同样是旅行,为啥中国人喜欢拉行李箱,老外喜欢背大包?附干货:行李打包锦囊...
  13. 深度剖析 string —— memset memcmp
  14. Preliminary Design Review(初步设计评审(回顾))
  15. 实验吧-天网管理系统
  16. 使用python获取win10锁屏照片
  17. Thinksystem本地制作BOMC刷新SR650 升级到指定版本微码
  18. 好用的SQL工具盘点:从学习到工作总有一款适合你
  19. 计算机附近组件的安装方法,在计算机上安装组件
  20. iptables禁止访问某个域名

热门文章

  1. EXCEL——VLOOKUP双条件匹配
  2. 金融数据类——美国对冲基金持仓
  3. python阶乘函数_python 阶乘函数
  4. html编写阶乘,阶乘的实现
  5. 小米游戏本 linux 编程键,小米笔记本安装Ubuntu后特殊键终于可用了
  6. html在小的电脑屏幕字体缩小,网页的字变小了怎么办?教你3种方法,让你看网页不再费眼~...
  7. 测试员都是背锅侠?测试人员避“锅”攻略,拿走不谢
  8. 计算机的英文怎么说不是computer,【英语写作】“开电脑”可不是“open the computer”,说错了很尴尬!...
  9. fenix3 hr 中文说明书_fenix3 中英文对照说明书.pdf
  10. B2B,B2C,C2C以及电子商务模式