🎖️基于FreeRTOS的STM32烟机控制系统
2026-4-12
| 2026-4-21
Words 884Read Time 3 min
type
Post
status
Published
date
Apr 12, 2026
slug
summary
tags
category
icon
password
😀
本项目采用STM32F103C8T6作为主控芯片
 

📝 项目简介

项目功能包括
  • 支持待机、手动、自动、防回流四种工作模式
  • 支持温度、湿度、气体浓度采集,协同作为电机控制决策
  • 手动模式下通过PID实现目标转速闭环控制,高低档
  • 自动模式下通过多传感器融合结果动态输出风机PWM
  • 防回流模式下通过阈值和滞回逻辑启停风机
  • 通过USART3 → Python→WebSocket→浏览器,实现上位机监控
  • 通过LCD实时显示系统状态

工作模式介绍

1.待机模式
系统的空闲状态,电机不工作,系统本身仍然处于运行状态,传感器采集,按键扫描,LCD显示仍然正常工作。代码里待机模式会执行motor_stop(),此时电机运行标志和自动模式计数器状态清零
2.手动模式
用户主动控制电机的模式,根据挡位设置电机转速:抵挡或者高档(190/220RPM),接着通过PID不断比较目标转速和实际转速,实时调整PWM输出,让风机转速尽量稳定
 
3.自动模式
这个就是结合温度、湿度和气体浓度融合计算,得到一个PWM调整转速。同时还设置了阈值判断是否进入”Cooking Event”,也就是烹饪场景。内部分为三个状态
  • 首先进入自动模式时候,电机转速较低,等待cooking event触发
  • 触发后,按照融合算法来动态调节风速
  • 烹饪结束不会停机,延时一段时间关机
4.防回流模式
这个模式主要解决烟气倒灌问题,系统周期性检测MQ2的气体浓度,浓度超过阈值的时候,触发回流条件,自动启动风机。当浓度降低,就自动关闭电机。当然这里采用了滞回逻辑,防止风机在临界值反复开关。一旦电机运动,转速由高低档位配PID算法实现。
 

采用FreeRTOS原因

系统中需要处理逻辑如下
1.按键扫描和模式切换
2.传感器DHT11/MQ2
3.风速融合算法
4.电机PWM控制
5.编码器测速
6.串口状态上传
7.LCD刷新
如果还是采用裸机的循环裸机,各模块之间会发生耦合,显示/控制/通信很难兼顾实时性,整体系统反应速度变低。

项目中任务拆分

1.按键扫描任务
KeyScanTask:周期性扫描按键,保证对模式/挡位/开关/蜂鸣器的控制和切换
2.传感器采集任务
SensorTask:周期性读取DHT11、MQ-2,把温湿度和气体浓度写入系统
3.融合算法任务
WindSpeedTask:读取环境数据,执行PWM融合算法,判断当前是否进入Cooking Event
4.电机控制任务
MotorControlTask:根据不同模式,调整电机运行策略
5.UI显示任务
6.防回流任务
7.测速任务
8.数据上传任务
 
 
💡
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
哈尔滨工业大学(深圳) 李毅“干脆利萝”——一体化胡萝卜收获机
Loading...