一 。说明

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的采样精度 ,这里我用的是8位的AD

二。看技术文档

从MQ135文档中可以知道其灵敏度曲线和湿度的影响,也就是要检测气体的浓度值是受 温湿度影响的,也就是说要想获得准确的值,需要根据温湿度情况对Rs/R0的比进行矫正,从而获取真正的浓度值!

 四。代码

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,x,ppm;uint32_t Rs,R0,quality;//获取ad value madc_value= HAL_ADC_GetValue(&hadc1);//5v  = 2的8次方,所以5V = 256vol = (float)adc_value*5/256;//空气质量的范围为0~300  而我们的采集AD范围为: 0 ~ 255quality = (uint16_t)adc_value*300/255;//使用标定值计算// 1. 这里我测得的可调电阻103的阻值为 2500 Ω// 2.根据公式 Rs = (Vc / Vrl -1 ) * RL,Rs = (5 / vol - 1) * 2500;// 其中R0 为洁净空气中的电阻(即出厂时,将传感器放入100ppm的氨气中,测得的电阻值)R0 = 42000; //这里做了一个假设值,没有实验环境哈~~~~//x 为 RS/R0的比值x = (float)Rs/R0;//咱们看图取几个关键点,从而求PPM的值ppm= (1078.48 - 9.52 )/( 1 + pow(x/0.064,5.36) ) + 9.52;//再次启动ADC转换HAL_ADC_Start_IT(hadc);
}

 五。演示效果

模拟量输出电压 vol : 0.66v

quality 空气质量:41

ppm值为:9.6 

当然这个值并不准确,未进行气体标定,但从公式可以看出整个气体变化的曲线,是随着ppm的增加逐渐变得平滑,符合所有气体浓度的变化曲线!

感谢您的支持,写的文章如对您有所帮助,开源不易,请您打赏,谢谢啦~

STM32 Cube ADC MQ135测量空气质量和氨气PPM相关推荐

  1. STM32 Cube ADC 测量土壤湿度

    一 .说明 本来想买个温湿度模块,结果买了个湿度 - _ - ! 1. 什么是AD转换 AD转换是把离散的模拟量转换为数字量的过程,其原理就是使用单片机的高频率和时钟来采样x轴的点样,根据电压的变化使 ...

  2. 【Arduino综合项目】空气质量检测装置

    空气质量检测装置 功能介绍 本项目主要是实现基本的空气质量检测功能: PM2.5指数 空气质量指数 空气湿度 空气温度 准备材料 Arduino UNO *1 LCD 5110 *1 DHT11温湿度 ...

  3. 基于51单片机空气质量检测超限报警Proteus仿真

    资料编号:161   下面是相关功能视频演示: 161-基于51单片机空气质量检测超限报警Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为CPU,ADC0832作为AD转换模 ...

  4. 毕业设计 STM32空气质量检测仪 - 单片机 嵌入式

    文章目录 1 简介 2 系统设计概述 3 系统总体方案 4 硬件设计方案 4.1 stm32 主控 4.2 温度采集模块 4.3 甲醛浓度检测模块 4.4 PM2. 5 浓度检测模块 4.5 液晶显示 ...

  5. 单片机毕业设计 stm32空气质量检测仪

    文章目录 1 简介 2 系统设计概述 3 系统总体方案 4 硬件设计方案 4.1 stm32 主控 4.2 温度采集模块 4.3 甲醛浓度检测模块 4.4 PM2. 5 浓度检测模块 4.5 液晶显示 ...

  6. stm32毕业设计 空气质量检测系统

    文章目录 1 简介 2 系统设计概述 3 系统总体方案 4 硬件设计方案 4.1 stm32 主控 4.2 温度采集模块 4.3 甲醛浓度检测模块 4.4 PM2. 5 浓度检测模块 4.5 液晶显示 ...

  7. 【毕业设计】基于STM32的空气质量检测仪 - 环境检测盒子 - 单片机 物联网

    文章目录 1 简介 2 系统设计概述 3 系统总体方案 4 硬件设计方案 4.1 stm32 主控 4.2 温度采集模块 4.3 甲醛浓度检测模块 4.4 PM2. 5 浓度检测模块 4.5 液晶显示 ...

  8. 基于 STM32 空气质量检测装置设计

    一.毕业设计的背景和依据 现在,人们大约一半的时间是在室内度过的,室内空气质量与我们每个人的工作和生活 都息息相关,因此对生活环境的空气质量提出了更高的要求.针对雾霾.室内装修等污染问 题,人们还没有 ...

  9. 基于stm32单片机的空气质量检测仿真(仿真+源码+全套资料)

    资料编号:072 可以通过STM32的ADC检测当前的空气质量,LCD1602显示,并且可以自动控制风扇排气,也可以设置为手动排气.包含全套资料,下面是视频演示: 72-基于stm32单片机的空气质量 ...

最新文章

  1. Nature综述:植物与微生物组的相互作用:从群落装配到植物健康(下)
  2. python 基本数据类型之字符串功能
  3. mpstat 命令查看所有CPU核信息
  4. 【转】聊聊Linux操作系统中的显示管理器及如何更换
  5. C语言程序设计基础之结构
  6. C#中,当从数据库中查询到数据,以DataTable类型返回后,如果需要对DataTable中的数据进行筛选,可以选择下面的方式...
  7. Codeforces Round #493 (Div. 2):D. Roman Digits
  8. 有点意思!用Python 一键群发soul消息找对象
  9. R语言--Cox模型校准曲线原理(二)算法
  10. 拉宾-卡普算法详解以及示例[rabin-karp]
  11. 网站被攻击如何修复网站漏洞
  12. VC++公安指纹识别系统
  13. java倒序输出英文句子_Java实现英文句子中的单词顺序逆序输出的方法
  14. poi操作excel之填充数据、删除行
  15. SpringMVC与JSON传值,取值,使用SpringMVC实现文件的上传与下载,SpringMVC拦截器
  16. 多线程之生产者消费者模型
  17. 金融工程学(一):概述
  18. [论文学习]Private traits and attributes are predictable from digital records of human behavior
  19. 2014暑假学习总结
  20. mybatis大于号 小于号

热门文章

  1. c语言课设代写一般多少钱_代写平台可行性报告收费一般多少钱?价格原来这么低...
  2. 论剑场中部分web题的WP
  3. 职场上,除了拼才华,资源和关系也很重要
  4. SRS视频服务器-docker部署srs4.0:带SRT功能
  5. js实现下载多张图片并压缩起来
  6. 中国联通数字乡村白皮书 附下载
  7. Flask框架可视化模板
  8. 2021下半年最新前端求职面试指导(完整版)
  9. 【Bootstrap】bootstrap入门之媒体查询技术、样式类_01
  10. 【web安全】——命令执行漏洞(RCE)详解