基于 STM32 的储粮智能通风控制系统设计
摘要
针对粮食储藏过程中粮堆发热霉变的问题,本文设计并实现了一种基于 STM32 的储粮智能通风控制系统。系统以 STM32F103C8T6 为控制核心,DS18B20 不锈钢探头埋入粮堆内部测量粮温,DHT11 测量环境温湿度,按目标温差分档(量化比例控制)驱动 TB6612FNG 驱动的直流风扇通风降温;环境湿度不低于 75%RH 时自动闭锁通风,防止湿空气进入粮堆引起吸湿结露。系统支持储粮/环境两种测温模式、自动/手动两种运行模式,8 条定时通风计划与运行记录均持久化于 W25Q64 外部 Flash;ESP12F 提供 HTTP 接口与 NTP 对时,配套 React Native 手机 App 在局域网内直连设备,完成控制、计划、数据曲线与设置四类功能。测试表明,系统分档响应准确、滞回有效、湿度闭锁可靠,满足储粮通风的应用需求。
关键词:STM32;储粮通风;温差分档;DS18B20;湿度闭锁;React Native
1 引言
粮食在储藏期间,粮堆内部因呼吸作用与微生物活动会不断积热。粮堆热容大、导热差,内部温度可比气温高出 5~10℃,只测室温完全反映不了粮情,若不及时通风散热极易引发霉变。机械通风降温是粮食行业的通行做法,而传统通风设备的启停多依赖人工经验,缺乏对"粮温—气温—湿度"的综合判断。
本文的设计思路是:以粮堆内部温度为判定主变量,用目标温差分档代替连续调节——温差越大通风档位越高,降到目标附近即停转,这与粮堆大热容慢对象的特性天然匹配;同时引入湿度闭锁规则,从"温控风扇"升级为多参数决策系统。系统还通过 ESP12F 与手机 App 实现局域网内的远程监测与控制,不依赖云平台,断网环境同样可用。
2 系统总体设计
2.1 功能需求分析
系统需要实现以下功能:
- 双传感器测温:储粮模式以 DS18B20(埋入粮堆)温度为判定变量;环境模式以 DHT11 室温为判定变量,两种模式可随时切换;
- 温差分档通风:ΔT = 实际温度 − 目标温度(目标 15~40℃ 按键可调),按分档表输出 0/25%/50%/100% 四档 PWM,降档阈值下移 2℃ 形成滞回;
- 湿度闭锁:储粮模式下环境湿度 ≥ 75%RH 强制停机并提示,防止通风带入湿空气;
- 定时通风:8 条计划持久化存储,到点强制 3 档通风 N 分钟,不受温差与湿度闭锁约束;
- 本地交互与远程控制:OLED 中文菜单 + 4 按键本地操作;手机 App 经 ESP12F 的 HTTP 接口远程控制并查看运行数据曲线。
2.2 系统总体架构
系统由 STM32F103C8T6 主控、传感(DS18B20、DHT11、DS3231 时钟)、执行(TB6612FNG + 直流风扇)、存储(W25Q64)、显示交互(OLED + 4 按键)与通信(ESP12F)六部分组成。主循环每 2 秒执行一轮"采样—判定—输出",ESP12F 独立运行固件,向上为 App 提供 HTTP API,向下经串口 @ 协议与 STM32 交互并完成 NTP 对时。
2.3 元器件选型
| 模块 | 型号 | 关键参数 | 作用 |
|---|---|---|---|
| 主控 | STM32F103C8T6 | Cortex-M3 / 72 MHz / 64 KB Flash | 控制核心 |
| 粮堆测温 | DS18B20 | ±0.5℃,单总线,不锈钢探头 | 埋入粮堆内部测温 |
| 环境温湿度 | DHT11 | ±2℃,±5%RH | 环境模式判定 + 湿度闭锁 |
| 电机驱动 | TB6612FNG | 双 H 桥,PWM 调速 | 风扇驱动 |
| 时钟 | DS3231 | I2C,带温补晶振 | 定时通风走时 |
| 存储 | W25Q64 | 8 MB SPI Flash | 字库、计划与运行记录 |
| 通信 | ESP-12F | 802.11 b/g/n | HTTP API + NTP 对时 |
| 显示 | OLED 0.96" | 128×64,SSD1306 | 中文状态显示 |
3 硬件系统设计
3.1 引脚资源分配
| 功能 | 引脚 | 配置 |
|---|---|---|
| 风扇 PWM | PA0 | TIM2_CH1,1 kHz |
| 电机方向 AIN1/AIN2 | PA1 / PA2 | 推挽输出 |
| DS18B20 | PB1 | 单总线,4.7 kΩ 上拉 |
| DHT11 | PA8 | 开漏 + 上拉 |
| W25Q64 | PA4~PA7 | SPI1 |
| OLED | PB8 / PB9 | 软件 I2C |
| 按键 ×4 | PA3、PB5~PB7 | 外部中断,300 ms 消抖 |
| 调试串口 | PB10 / PB11 | USART3,IDLE+DMA |
| ESP12F | PA9 / PA10 | USART1,IDLE+DMA |
系统采用自制 PCB 集成上述电路(STM32 核心板座 + TB6612FNG + ESP-12F + OLED + 4 按键 + AMS1117-3.3 供电),实物如图 3-1 所示。

4 软件系统设计
4.1 主循环与两段式温度采样
主循环以 100 × 20 ms 的轮询结构每 2 秒完成一轮控制,并约定单轮内任何阻塞不得超过 ESP 命令超时(400 ms)。最容易超时的是 DS18B20 的 12 位温度转换(最长 750 ms),因此采用非阻塞两段式采样:本轮读出上一轮发起的转换结果,随即立刻发起下一轮转换,单轮阻塞仅约 2 ms,既保证了采样节拍,又不会导致 App 轮询撞上"STM32 无应答"。
4.2 目标温差分档控制
分档判定变量为 ΔT = 实际温度 − 目标温度。升档及时响应(无滞回),降档阈值整体下移 2℃(GEAR_HYST),避免 ΔT 在临界点附近反复跳档:
/* 升档看升档阈值;降档看下移 2°C 的降档阈值 */
static uint8_t Gear_Calc(float dt)
{
uint8_t up = 0;
if (dt >= GEAR_UP_3) up = 3;
else if (dt >= GEAR_UP_2) up = 2;
else if (dt >= GEAR_UP_1) up = 1;
if (up > g_fan_gear) return up; /* 需要升档:立即执行 */
uint8_t down = 0; /* 降档:带滞回 */
if (dt >= GEAR_UP_3 - GEAR_HYST) down = 3;
else if (dt >= GEAR_UP_2 - GEAR_HYST) down = 2;
else if (dt >= GEAR_UP_1 - GEAR_HYST) down = 1;
return down;
}
| ΔT | 档位 | PWM |
|---|---|---|
| ΔT < 2℃ | 0 档 | 0 |
| 2 ≤ ΔT < 5℃ | 1 档 | 25% |
| 5 ≤ ΔT < 8℃ | 2 档 | 50% |
| ΔT ≥ 8℃ | 3 档 | 100% |
1 档 25% 已越过电机约 15% 的启动死区(驱动层另有 Motor_EnforceMinPwm() 死区补偿兜底),保证低速档可靠启动。
4.3 湿度闭锁与定时通风
储粮模式下,DHT11 湿度 ≥ 75%RH 时强制 0 档并显示 HUM LOCK,湿度回落后自动解除——DHT11 湿度无小数位,天然形成滞回。定时通风计划存于 W25Q64 的 0x7E0000 扇区,每条含星期掩码、触发时刻与持续分钟数;到点后无视温差与湿度闭锁强制 3 档通风 N 分钟,到时自动恢复原模式。走时由 DS3231 提供本地时钟,ESP12F 定期 NTP 对时纠偏。
4.4 运行记录
系统每 10 分钟向 W25Q64(0x7D0000 起)追加一条 16 字节运行记录,内容涵盖周期采样、定时通风起止、手动开关与档位变化等事件类型,供 App 端绘制曲线与统计。
5 手机 App 设计
App 采用 React Native(Expo)开发,局域网 HTTP 直连 ESP12F,不依赖云平台,答辩与断网环境同样可用。App 分为四个页面:
- 控制:实际温度大卡片、目标温度 ± 调整、档位可视化、自动/手动切换与手动直控(图 5-1);
- 计划:定时通风计划的新增、启用与删除(图 5-2);
- 数据:读取设备 Flash 中的运行记录,按 1 小时/6 小时/24 小时绘制粮温、室温、湿度曲线并统计最值与均值(图 5-3);
- 设置:设备 IP 配置与连接测试、测温模式切换、设备时间与 NTP 状态(图 5-4)。




6 系统测试与结果分析
| 测试项目 | 测试方法 | 测试结果 |
|---|---|---|
| 温差分档 | 加热使 ΔT 依次越过 2/5/8℃ | 档位按 1/2/3 档正确递升,PWM 输出 25%/50%/100% |
| 降档滞回 | ΔT 在临界点附近波动 | 降档阈值下移 2℃ 生效,无反复跳档 |
| 湿度闭锁 | 对湿度传感器哈气加湿至 ≥75%RH | 立即强制 0 档并显示 HUM LOCK,回落自动解除 |
| 定时通风 | 设置到点计划 | 到点强制 3 档通风设定时长,断电重启计划不丢失 |
| 双模式切换 | 菜单与 App 切换储粮/环境、自动/手动 | 切换瞬间停扇清状态,新周期按新模式重新分档 |
| App 远程控制 | 局域网内四页功能遍历 | 控制即时生效,曲线与统计与串口遥测一致 |
结果分析:温差分档配合滞回在"及时响应"与"防止频繁启停"之间取得了预期平衡;湿度闭锁与定时通风使系统从单一温控升级为多参数决策;主循环两段式采样保证了 App 轮询期间设备始终在线应答。
7 结论与展望
本文设计并实现了基于 STM32 的储粮智能通风控制系统,完成了双传感器测温、目标温差分档、湿度闭锁、定时通风、运行记录与手机 App 远程控制等全部功能,并采用自制 PCB 完成整机集成。系统控制策略与粮堆热特性相匹配,工程实现完整、成本低廉。
后续可在两个方向完善:一是增加多点粮温检测(多颗 DS18B20 布点)以反映粮堆内部温度场分布;二是引入通风效果反馈(通风后 ΔT 下降速率)自适应调整分档阈值,并向 LS/T 1202《储粮机械通风操作规程》的行业阈值进一步对齐。