1. 项目背景与核心需求
去年夏天帮老家改造香菇烘干房时,发现市面上的温湿度控制器要么功能过剩价格昂贵,要么精度不足难以满足农产品加工需求。于是萌生了设计一款便携式温湿度检测烘干设备的想法,核心要解决三个痛点:
- 烘干过程中温湿度监测精度不足导致的物料损耗(实测传统机械式仪表误差可达±5℃)
- 设备便携性与供电灵活性需求(需适应田间、大棚等无市电环境)
- 成本控制在百元级以下(相比商用设备动辄上千元的报价)
经过多次迭代,最终成型的设计方案采用STM32F103C8T6作为主控,搭配SHT30温湿度传感器和PTC加热模块,实现了±0.3℃的测温精度和10%-90%RH的湿度检测范围。整套设备含18650电池总重量不到300g,特别适合食用菌、中药材等农产品的初加工场景。
2. 硬件系统设计详解
2.1 核心器件选型对比
主控芯片方案对比表:
| 型号 | 价格(元) | RAM/Flash | ADC精度 | 低功耗模式 | 选用理由 |
|---|---|---|---|---|---|
| STM32F103C8T6 | 8.5 | 20K/64K | 12位 | 支持 | 性价比高,外设丰富 |
| ATmega328P | 6.2 | 2K/32K | 10位 | 有限支持 | 性能不足 |
| ESP32-C3 | 12.8 | 400K/4M | 12位 | 支持 | 功能过剩,功耗偏高 |
最终选择STM32的Blue Pill开发板作为硬件基础,其GPIO资源足够驱动以下外设:
- PA6/PA7用于I2C通信连接传感器
- PB0/PB1控制MOSFET驱动加热片
- USART1连接OLED显示屏
2.2 传感器电路设计要点
SHT30传感器的典型应用电路需要注意:
- 上拉电阻取值:I2C线路建议使用4.7KΩ(实测10KΩ会导致通信不稳定)
- 电源去耦:必须并联0.1μF陶瓷电容(直接焊接在传感器VCC-GND引脚)
- 防反接保护:在VCC串联1N5819二极管(压降仅0.3V不影响传感器工作)
踩坑记录:初期未加去耦电容时,电机启动会导致传感器数据异常。用示波器捕捉到电源线上出现200mV的纹波,添加电容后问题解决。
2.3 加热控制模块优化
采用PID算法控制PTC加热片时,需特别注意:
c复制// 增量式PID实现代码片段
float PID_Calc(PID *pid, float actual){
float err = pid->target - actual;
float d_err = err - pid->last_err;
pid->integral += err;
if(pid->integral > 200) pid->integral=200; // 抗积分饱和
if(pid->integral < -200) pid->integral=-200;
float output = pid->Kp*err + pid->Ki*pid->integral + pid->Kd*d_err;
pid->last_err = err;
return output;
}
参数整定经验值:
- 烘干香菇:Kp=3.5, Ki=0.02, Kd=1.2
- 烘干枸杞:Kp=2.8, Ki=0.015, Kd=0.8
3. 软件系统实现关键
3.1 温湿度采样算法优化
针对农业场景的特殊需求,软件层面做了三项改进:
- 动态加权滤波算法
c复制#define SAMPLE_SIZE 5
float dynamic_filter(float new_val){
static float buffer[SAMPLE_SIZE];
static uint8_t index = 0;
buffer[index] = new_val;
index = (index + 1) % SAMPLE_SIZE;
// 计算方差决定权重
float sum = 0, mean = 0, var = 0;
for(int i=0; i<SAMPLE_SIZE; i++) sum += buffer[i];
mean = sum / SAMPLE_SIZE;
for(int i=0; i<SAMPLE_SIZE; i++)
var += (buffer[i]-mean)*(buffer[i]-mean);
var /= SAMPLE_SIZE;
float weight = 1.0 / (var + 0.1); // 防止除零
return (sum + weight*new_val) / (SAMPLE_SIZE + weight);
}
-
露点温度补偿
当检测到环境温度骤降时(如夜间大棚通风),自动提高2-3℃设定值,防止结露。 -
数据记录模式
每10分钟存储一组数据到AT24C02 EEPROM,最多可记录7天数据。
3.2 低功耗设计技巧
为延长电池续航,采取以下措施:
- 采样间隔可调:默认1分钟,最高可设10分钟间隔
- 屏幕自动关闭:无操作30秒后关闭OLED
- 加热阶段分级供电:
- 待机时STM32进入Stop模式(电流<1mA)
- 加热时切换至正常模式
- 通过MOSFET控制加热片通断而非PWM,减少开关损耗
实测数据:
- 2500mAh电池在连续烘干模式下续航8小时
- 间歇监测模式下可工作72小时
4. 结构设计与实用改进
4.1 便携式外壳方案
采用3D打印的上下盖结构,关键设计参数:
- 主体尺寸:100mm×60mm×40mm
- 进风口:侧面开φ3mm圆孔阵列(开孔率≥30%)
- 出风口:顶部格栅设计(倾斜45度防尘)
- 固定方式:背部强磁铁+挂绳孔双固定
经验:PLA材料在60℃以上会软化,建议使用ABS或PETG打印外壳。测试中发现PETG在高温环境下变形量小于0.5mm。
4.2 田间使用防误触设计
针对农户操作习惯,做了三项特殊处理:
- 按键加大到12mm×12mm,间隔5mm以上
- 旋钮编码器增加阻尼感(更换为15格/圈型号)
- 重要参数修改需长按3秒确认
5. 校准与维护指南
5.1 现场校准方法
准备两个标准环境:
- 饱和食盐溶液密闭容器(75%RH@20℃)
- 干燥剂密闭容器(约10%RH)
校准步骤:
- 将传感器放入饱和盐环境30分钟
- 按下校准键+加键进入湿度校准模式
- 同理用干燥环境校准低湿度点
- 温度校准需使用冰水混合物(0℃)和沸水(100℃)
5.2 常见故障排查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 显示"---" | I2C通信失败 | 检查传感器接线,重插连接器 |
| 温度读数跳变 | 电源干扰 | 确认去耦电容已安装 |
| 加热不启动 | MOSFET击穿 | 更换IRLZ44N并加散热片 |
| 电池消耗过快 | 未进入低功耗模式 | 检查程序中的Stop模式调用 |
6. 实际应用数据对比
在香菇烘干场景下的测试结果:
| 指标 | 传统设备 | 本设计 |
|---|---|---|
| 温度控制精度 | ±5℃ | ±0.8℃ |
| 湿度监测范围 | 30%-80%RH | 10%-90%RH |
| 平均能耗 | 300W | 65W |
| 成品开裂率 | 15% | 5%以下 |
这套设备经过半年实际使用,帮助农户将香菇优质品率从70%提升到92%,每公斤干菇多收益8-10元。后期计划增加蓝牙数据传输功能,方便手机查看历史曲线