首页 > 其他分享 >STM32Cube-10 | 使用ADC读取气体传感器数据(MQ-2)

STM32Cube-10 | 使用ADC读取气体传感器数据(MQ-2)

时间:2024-05-13 08:58:08浏览次数:15  
标签:10 HAL STM32Cube MQ ADC 串口 转换 时钟

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外设,读取MQ-2气体传感器的数据并通过串口发送

本质就是ADC采集

MQ-2的原理图如下:

 

生成MDK工程

选择芯片型号

打开STM32CubeMX,打开MCU选择器:

搜索并选中芯片STM32L431RCT6:

配置时钟源

  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
  • 如果使用默认内部时钟(HSI),这一步可以略过;

 

这里我都使用外部时钟:

配置串口

小熊派开发板板载ST-Link并且虚拟了一个串口,原理图如下:

这里我将开关拨到AT-MCU模式,使PC的串口与USART1之间连接。

接下来开始配置USART1

配置ADC

ADC

ADC全称 Analog-to-Digital Converter,即模拟-数字转换器,可以将连续变化的模拟信号转换为离散的数字信号,进而使用数字电路进行处理,称之为数字信号处理。

STM32L431xx 系列有 1 个 ADC,ADC 分辨率高达 12 位,每个 ADC 具有多达 20 个的采集通道,这些通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。

STM32L431 的 ADC 最大的转换速率为 5.33Mhz,也就是转换时间为 0.188us(12 位分辨率时),ADC 的转换时间与 AHB 总线时钟频率无关。

 

 

配置ADC(单次转换模式)

首先选择ADC1,开启通道3:

接下来是对ADC的设置,这里我们保持默认即可:

最后设置ADC的转换规则:

其余的一些设置保持默认即可。

配置时钟树

STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

生成工程设置

代码生成设置

最后设置生成独立的初始化文件:

生成代码

点击GENERATE CODE即可生成MDK-V5工程:

3. 在MDK中编写、编译、下载用户代码

重定向printf( )函数

参考:

编写读取数据的测试代码

修改main函数如下:

代码语言:javascript 复制
int main(void)
{
    uint16_t smoke_value = 0;

    HAL_Init();

    SystemClock_Config();

    MX_GPIO_Init();
    MX_ADC1_Init();
    MX_USART1_UART_Init();

    while (1)
    {
        HAL_ADC_Start(&hadc1);                    //启动ADC单次转换
        HAL_ADC_PollForConversion(&hadc1, 50);    //等待ADC转换完成
        smoke_value = HAL_ADC_GetValue(&hadc1); //读取ADC转换数据
        printf("smoke_value = %d\n", smoke_value);
        HAL_Delay(500);
    }
}

至此,我们已经学会如何使用ADC读取MQ-2传感器的值

标签:10,HAL,STM32Cube,MQ,ADC,串口,转换,时钟
From: https://www.cnblogs.com/dxqNet/p/18188565

相关文章

  • windows10ltsc 企业评估版,系统到期后,每一小时自动关机,不能修改主题
    问题1:参照https://www.zhihu.com/question/265212829答案太详细了,难以补充什么大概是用PSTool进入Systemaccount来获得修改WLMS的注册表的权限,把在注册表里把HKLM\SYSTEM\CurrentControlSet\Services\WLMS选择WLMS,在右侧选项“Start”中,将数值2改成4问题2:参照https://w......
  • P10229 [COCI 2023/2024 #4] Knjige 题解
    P10229[COCI2023/2024#4]Knjige题解知识点前缀和、贪心、枚举。题意分析一个长度为\(n\)的单调不减的数列\(\{k_i\}\),从左到右遍历,用\(a\)或\(b\)的代价,换\(0\)或\(k_i\)的价值。问:在总代价超过\(t\)之前,能够达到的最大价值为多少?思路分析显然是一个......
  • P10224 [COCI 2023/2024 #3] Vrsar 题解
    P10224[COCI2023/2024#3]Vrsar题解知识点前缀和思想,贪心。题意分析我觉得题目挺清晰了……思路部分分没必要,OK?我不会告诉你我考场上打部分分打了30min,还只有8分。正解我们设一个方案\(S\)为\(\{x_1,x_2...x_n\}\),其中\(x_i\)表示第\(i\)个滑雪场的......
  • P10225 [COCI 2023/2024 #3] Milano C.le 题解
    P10225[COCI2023/2024#3]MilanoC.le题解知识点栈,贪心,树状数组。题意分析求最小的栈的数量使得出入栈能够合法。思路分析我们为了方便,其实可以先按照到达车站的顺序(入栈顺序)给火车重新编号。编号后,就十分简单了。分析样例:53524132514编号后,就变成了:5......
  • P10232 [COCI 2023/2024 #4] Roboti 题解
    P10232[COCI2023/2024#4]Roboti题解知识点简单环,DFS。题意分析在\(n\)行,\(m\)列的网格里,给定\(k\)个转弯点,再给定\(Q\)个询问,问每次从某个坐标到另一个坐标的最少转弯次数,或者判断不可能到达。思路分析我们发现在一个点坐标与方向确定的时候,到达的下一个点的......
  • P10231 [COCI 2023/2024 #4] Putovanje 题解
    P10231[COCI2023/2024#4]Putovanje题解知识点多源BFS,bitset。题意分析在一个图上,每个点有一个权值,求满足到每个点的距离都为其权值的点(权值为\(-1\)的点除外)。思路分析Subtask1我们可以发现,这个子任务的图一定是一个有序的链,那么转换成序列问题,直接根据坐标进......
  • P10227 [COCI 2023/2024 #3] Slučajna Cesta 题解
    P10227[COCI2023/2024#3]SlučajnaCesta题解知识点期望DP,树形(换根)DP,组合数学。题意分析一棵树,每个点都有点权,每一条边的方向分布都是等概率的,问从每个点出发,有路走就一直走的情况下,所途径的点的权值总和的期望值。思路分析这明显是一个树形DP,且需要变成换根DP......
  • 【LeetCode 410】分割数组的最大值
    题目描述原题链接:LeetCode.410分割数组的最大值解题思路分割的是连续子数组,所以模拟分割求子数组之和可以利用前缀和计算;设前缀和数组preSume[i]含义为[0,..,i]范围元素之和,某个子数组subArray[i,j]的元素和就是preSum[j]-preSum[i];求K个子数组元素和的最大值能转换......
  • Linksys MAX-STREAM AC2600 / Linksys EA8100 固件资源整合分享
    注意:这款路由默认地址为192.168.10.1初始化时选手动安装!!!官方固件https://www.linksys.com/support-article?articleNum=49022升级教程:https://linksys-sh.com/home-ea8100/firmware-update-ea8100(适用于官方固件和Openwrt固件)转存V1FirmwareforStarHub(StarHub......
  • win11 系统右键菜单 更改成 win10的
    系统右键菜单切换的两份文件代码:to_win10.bat:win11换成win10的;to_win11.bat:win10换成win11的;to_win10.batregadd"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"/f/veto_win11.batregdelete"HKCU\Software\Cl......