STM32 ADC实战:光敏与烟雾传感器数据采集与报警

1. 项目概述

在嵌入式开发领域,ADC(模数转换器)的应用可以说是每个工程师的必修课。今天我要分享的这个实战项目,将带你从零开始实现STM32的ADC功能,完成光敏传感器和烟雾传感器的数据采集,并实现阈值报警功能。这个项目不仅涵盖了硬件连接、软件配置等基础内容,还会深入探讨在实际工程中可能遇到的各种坑点。

作为一名有多年STM32开发经验的工程师,我见过太多初学者在ADC应用上栽跟头。要么是采样精度不够,要么是数据跳动太大,或者是报警逻辑不准确。这个项目就是要把这些常见问题一网打尽,让你真正掌握ADC的应用精髓。

需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。

2. 硬件准备与连接

2.1 所需硬件清单

要完成这个项目,你需要准备以下硬件:

  • STM32开发板(以STM32F103C8T6为例)
  • 光敏电阻传感器模块
  • MQ-2烟雾传感器模块
  • 杜邦线若干
  • USB转TTL模块(用于串口通信)
  • 电阻、LED等基础元件

2.2 传感器特性分析

光敏传感器和烟雾传感器虽然都是模拟量输出,但它们的特性有很大不同:

光敏传感器:

  • 输出范围:0-3.3V
  • 响应时间:约20ms
  • 线性度:在特定范围内近似线性

MQ-2烟雾传感器:

  • 工作电压:5V(需要电平转换)
  • 预热时间:约1分钟
  • 输出特性:非线性,需要查表或算法处理

2.3 电路连接详解

正确的硬件连接是项目成功的基础。以下是具体的连接方式:

  1. 光敏传感器:

    • VCC → 3.3V
    • GND → GND
    • OUT → PA0(ADC1通道0)
  2. MQ-2烟雾传感器:

    • VCC → 5V(注意电平匹配)
    • GND → GND
    • OUT → PA1(ADC1通道1)通过分压电阻降至3.3V
  3. 报警LED:

    • LED阳极 → PB5(通过220Ω电阻)
    • LED阴极 → GND

特别注意:MQ-2传感器需要5V供电,但其输出可能超过3.3V,必须使用分压电路保护STM32的ADC输入引脚。

3. 软件环境配置

3.1 开发工具准备

我们使用Keil MDK作为开发环境,需要安装以下组件:

  • Keil MDK 5.25或更高版本
  • STM32F1xx_DFP设备支持包
  • STM32CubeMX(可选,用于初始化代码生成)

3.2 工程创建与配置

  1. 新建Keil工程,选择正确的芯片型号(STM32F103C8)
  2. 配置系统时钟为72MHz
  3. 启用SWD调试接口
  4. 添加必要的库文件:
    • stm32f1xx_hal_adc.c
    • stm32f1xx_hal_gpio.c
    • stm32f1xx_hal_rcc.c

3.3 ADC初始化代码解析

以下是ADC初始化的关键代码:

c复制ADC_HandleTypeDef hadc1;

void ADC1_Init(void)
{
    hadc1.Instance = ADC1;
    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc1.Init.ScanConvMode = DISABLE;
    hadc1.Init.ContinuousConvM

内容推荐

已经到底了哦
已经到底了哦