
前言
这是一个烘干器****!

这样使用▼
作者做了一个亚克力箱子,把整个amslite和干燥器(本项目)放进去,保持整个箱体,维持在50度左右。

*0***1
这个烘干器能干啥?
”
-
支持同时烘干4卷3D耗材
-
支持通过网页+手机控制烘干机:可以连接wifi后在网页控制台操作或配置MQTT连接homeassistant,设备外壳上设置了三个按钮用来应急控制
-
调温范围:20℃-120℃
-
支持实时查看机器当前温度
-
支持设置烘干时间,支持定时
-
支持设置散热风扇速度
-
支持保存设置
控制器页面如下↓

说明:该方案引入了B站UP主“扑腾的阿牛”的 GA12-N20 电动排气阀,配合AHT30湿度计。这意味着它可以做到:湿度高时打开阀门排湿,湿度降下来后关闭阀门保温。
这种闭环控制在商用烘干盒上都很少见!
*0***2
当然,它并非“完美”
”
它的确是一个“稳定”的升温方案,能避免一会冷一会热,但效果是这样的:
实际烘干时
设置70度
但仓温只维持在50度
但!温度有“差别”这不代表它做的不好,事实上这个项目做的很好。出现这种情况,是工业温控的很常见,很经典的课题——温场梯度与功率极限效应。
这是什么原因导致的?
复刻的时候怎么避免?
先回答第一个问题。
导致这个情况的原因是——封箱材质问题。
首先,箱子的空间至少在 30L~40L 以上,太大了,功率是不足的。
其次是,热量散失极快。
DIY 这种大箱子,用的还是透明的亚克力板。这些材质不仅不保温,而且表面积巨大,散热极快。
所以,其实这个项目本身做的很好。
作者用一个 24V 100W 的 PTC 去热一个这么大,且不能保温的箱子,还能把仓温钉在 50℃,其实已经说明这个 PID 算法和风道设计优化得非常出色了!
现在,咱们回答第二个问题——怎么实现设定70度,箱子里就是70度
有几个非常低成本的物理改良方案:
-
从传感器下手:DS18B20温度传感器一定不要贴着 PTC 的出风口,最好用支架固定在 AMS Lite 耗材盘的中间位置。只读取耗材周围的真实温度即可。
-
给箱体上强度:可以在箱体背面和底部贴上3D打印机热床专用的背胶铝箔保温棉。这样100W的PTC 就能轻松把仓温拉到60℃以上。
-
软件代码加个映射(Offset):在不加保温棉的情况下,网页显示 60℃ 相当于仓内实际 50℃,可以直接在固件里做个UI修正,或者在说明文档里注明:“由于 AMS 箱体散热,设定值请比目标仓温调高 15-20℃”。并能通过这个面板设置温度。
当然,如果你有更好的思路,也欢迎在评论区聊聊!
接下来,我们就看看,这个烘干机的硬件软件,具体是怎么设计的?
*0***3
硬件设计方案
”
作者用嘉立创EDA设计电路,思路是——使用esp32s3-N16R8,搭配24V100W的PTC加热块,实现在封箱内有限的空间下实现加热烘干。

原理图

PCB图
实物图
硬件参数
-
主控:esp32s3,自带wifi等功能,烘干控制等参数永久保存,掉电不会重置
-
显示屏:0.96寸oled,1306驱动,使用I²C通讯
-
风扇**:**使用24v四线PWM调速鼓风扇
-
温度计:DS18B20
-
湿度测量:AHT30模块
-
固件烧录:请自备usb转ttl模块
-
电动排气阀电机:选用6V,50转/分钟的GA12-N20减速电机,使用TC118S芯片控制排气阀电机的正反转,实现排气阀的自动开关
*0***4
软件设计方案
”
作者的源码已经开源,如果你想深入学习了解,可以参考第6章指引去开源网址。
本章节就简单探讨一下烘干器项目的PID参数调优方法以及ESP32上PID控制的核心代码实现
01
PID参数怎么调?3步搞定
热力学系统(如烘干箱、加热床)在控制理论中属于典型的大滞后、大惯性系统:PTC块通电后,热量传递到空气需要时间;关掉 PWM 后,残余热量还会继续发散。因此,如果用普通的PID逻辑,很容易出现“升温极慢”或者“严重超调(冲过头烧坏耗材)”。在这个烘干器项目中,PID参数调优和代码实现都需要针对温控特性做特殊优化。
1.1 温控PID计算公式如下:
-
Kp(比例):决定升温速度。Kp越大,开始加热时功率开得越大。
-
Ki(积分):用来解决稳态误差,就是上述的设 定70℃却卡在 50℃的问题,温差持续存在时,Ki会不断累加输出量,强制推高功率。
-
Kd(微分):扮演刹车角色。预测温度上升的趋势,当温度快速接近目标时提前减小功率,防止冲过头。
1.2 手动试凑法-3步
对于热惯性大的烘干箱,最推荐手动试凑法,按以下顺序调整:
①清零并先调 Kp(单比例阶段):把 Ki 和 Kd 设为 0。
- 将目标温度设为 50℃,逐步增大 Kp。直到加热曲线能快速上升,但在目标温度附近开始出现持续的小幅震荡(比如在 48℃~53℃ 之间摆动),此时记录这个Kp值,并将其取40%~50%作为最终的Kp基础值。
②加入Ki消灭死差(积分阶段):解决死活达不到目标温度的问题。
- 此时由于没有Ki,仓温可能会卡在45℃升不上去(稳态误差)。从小到大慢慢增加 Ki(由于热系统采样周期长,Ki必须给得很小,如 0.05~0.2),让系统慢慢把这5℃的温差解决,直到仓温能精准稳定在 50℃。
③入Kd抑制超调(刹车阶段):防止冷机启动时冲过头。
- 从室温25℃左右重新启动冷机加热到60℃。如果发现温度冲到了68℃降不下来,说明“刹车”不够。逐渐增大 Kd即可,直到冷机直接冲到 60℃ 时,平滑压住不超调(或仅超调 1℃~2℃)。
1.3 如何避免温度冲太高?
你还需要了解——积分分离与抗饱和。
热系统最怕的是:在室温25℃左右升到70℃的过程中,由于温差e(t)一直很大,I项累积得极其夸张(这就是积分饱和),会出现——当温度到70℃时,I项的输出会导致 MOS管继续100%满载,温度直接冲到85℃烧毁耗材。
这时候,你就可以用到积分分离方法:
-
当温差大于 5℃ 时:关闭 Ki 积分,只靠Kp + Kd全力冲刺。
-
当温差进入5℃范围以内时:开启K_i积分,进行精密微调消灭残差。
02
核心代码实现
在 ESP32 上,推荐将 PID 控制写成一个独立的类,并在 FreeRTOS 的独立 Task 中以固定的时间间隔(如 1 秒)运行,以保证时间的精准度。
2.1 PID 控制器类(C++ 实现)
#include
2.2 在 ESP32 FreeRTOS 任务中调用
在 ESP32-S3 中,我们可以把 PID 任务分配给 Core 1,使用 vTaskDelayUntil 保证每次计算间隔精确为 1000ms:
#include
2.3 注意事项
①为什么采样周期dt固定为1秒?
温度变化极其缓慢,没必要像电机那样几毫秒算一次。1 秒算一次既能节省 ESP32 的 CPU 算力,又能让 DS18B20(单总线转换需要 750ms 左右)有充足的时间更新数据。
②如何避免设置70℃,温度却卡在 50℃?
如果发现仓温死活差 10℃~20℃,可以直接在 Web 界面适度调大Ki(如从 0.05 提升到 0.15),让 I项强制拉满 PWM 输出;如果此时 PWM 已经达到 255(100% 满载),就说明需要去贴外壳保温棉了。
最后,如果你只是想复刻,那你可以参考下方教程烧录,烧录完即可使用。
03
固件烧录
-
打开烧录软件后如图选择esp32s3
-
需要同时烧录bootloader.bin、partitions.bin、烘干器V1.0.5.bin三个文件
-
注意烧录位置分别为 0x0000、0x8000、0x10000
-
烧录软件也已更新,默认已经配置好ESP32-S3的烧录参数,直接选择串口开始烧录即可()

*0***5
最后的脑洞大开
”
除了烘干3D耗材
它还有哪些使用场景?
干燥器,其实用处很大哦~小编怕自己想到的不全面,还特地请教了AI助理,得出如下结论:
它能用来给
PLA、PETG、ABS、Nylon等3D打印耗材
摄影器材(镜头、机身)
电子元器件
植物标本、干花、药材、宠物零食
提供恒定的
除湿+烘干
小编OOS:听AI小助理说,元器件用50℃-60℃烘烤几个小时进行除湿,能大大提升焊接良率也。原来我总焊不好,是因为没烘干呀嘿嘿
*0***6
开源网址
”
怎么样?你喜欢这个项目吗?你会想复刻吗?
如果你想给作者点赞or深入学习,欢迎前往开源网址~
开源网址:https://oshwhub.com/soughtquinee/ams-lite-dryer

评论区
登录后即可参与讨论
立即登录