
RP50 恒功率回流焊曲线加热台【星火计划2026】
简介
通过升降压芯片实现恒功率功能。 组装方便,需要额外购买材料少,“无线”组装。 可快速更换加热板。
简介:通过升降压芯片实现恒功率功能。 组装方便,需要额外购买材料少,“无线”组装。 可快速更换加热板。开源协议
:MIT License
描述
RP50 — 迷你回流焊台
项目背景与动机
为什么做这个项目
当前立创开源平台的加热台大体分两类:
- 高压版——性能硬核,但组装涉及强电接线与绝缘处理,新手望而却步;
- 低压版——门槛低、功能简单,但性能与体验都偏弱,缺乏复刻动力。
两端之间缺一个「功能全面、组装友好、颜值在线」的中间档选择。RP50 就是来填这个空的。

RP50 的解法
| 维度 | 做到了什么 |
|---|---|
| 安全 | PD 电源供电,属低压安全设备,无强电风险 |
| 结构 | 创新无螺丝主体结构,组装直观,基本无需安装指南 |
| 性能 | PD 满功率运行,65W 电源 200°C 升温约 60s |
| 易理解 | 电路原理简洁,新手可完全理解并 DIY 自己的版本 |
| 交互 | 彩屏 + 编码器,信息丰富、操作直观 |
一句话概括:一台颜值在线、功能全面的迷你加热台。(当前方案属于“客制化”堆料设计,开发板性质,比如可以切换成一台恒压恒流可调电源。单纯的加热台需求,市面上成熟的方案其实更合理。后面有时间会通过重新绘制功率板,省去DCDC电路部分,实现更低成本、更高温度、更小发热的设计。)
项目简介
RP50 是一台基于 立创·ColorEasyPico2 开发板(RP2350) 的迷你回流焊台,同时支持恒温加热和回流焊两种工作模式。项目从硬件设计到软件编码全部自主完成,目标是实现一台功能完整、交互顺手、安全可靠的桌面级加热台。
项目用到的嘉立创产品:PCB×4、铝基板×1、3D打印、薄膜+亚克力面板。
> 名称解读:RP = RP2350(主控芯片型号),50 = 50mm × 50mm 加热板尺寸。
>
> 设计亮点速览
> - 恒功率闭环控制 — INA226 实时测电阻 + PL5501 Buck-Boost 动态调压,功率不随温度衰减,回流焊升温曲线全程线性可预测
> - 加热板即插即用 — 开机自动标定冷态电阻(3~10Ω 自适应),换加热板零门槛,无需手动校准
> - 加热板组装结构创新 — 通过固定铝基板与PCB,让铜箔直接接触导电,省去导线连接。PT100也无需冷压导线步骤。
> - 加热台 + 回流焊二合一 — 一台设备覆盖恒温加热与标准回流焊曲线,8 段曲线可调,双 UI 模式(文字 / 实时曲线图)
> - 6 重安全保护 + 硬件看门狗 — 过温 / 过流 / 过压 / 过功率 / 传感器故障 / 电阻异常,故障锁存 + 2s 看门狗自动复位
> - 全自主设计 — 硬件(原理图 + PCB)+ 软件(PID + 恒功率引擎 + 回流焊曲线引擎)+ 结构(3D 打印外壳)全部独立完成
>

规格参数一览
| 项目 | 参数 |
|---|---|
| 加热板尺寸 | 50mm × 50mm 铝基板 |
| 温度范围 | 室温 ~ 260°C (铝基板限制,后续可无缝切换成嘉立创加热片) |
| 控制方式 | 恒功率闭环(INA226 + PL5501 ) |
| 工作模式 | 手动恒温 / 回流焊曲线 |
| 显示屏幕 | 1.96 寸 TFT 彩屏(160×80) |
| 交互方式 | 旋转编码器 + 按键 |
| 输入电源 | USB PD 20V(65W / 100W) |
| 安全保护 | 过温 / 过流 / 过压 / 过功率 / 传感器故障 / 电阻异常,共 6 重 + 硬件看门狗 |
| 尺寸 | 约 73mm × 57mm × 37mm |
成本估算
| 类别 | 物料 | 参考单价 | 小计 | 备注 |
|---|---|---|---|---|
| 核心器件 | ColorEasyPico2(RP2350) | ¥39 | 可用 RP2040 代替(¥10),需重新编译工程 | |
| PL5501 | ¥3 | 功率板主控 | ||
| MAX31865 | ¥7 | PT100 专用 ADC | ||
| PT100(B 级) | ¥3 | 铂电阻温度传感器 | ||
| INA226 | ¥2 | 功率监测 | ||
| 1.96" TFT LCD | ¥5 | 160×80 彩屏 | ||
| 4007 风扇 | ¥5 | 辅助散热 | ||
| 核心器件合计 | ¥64 | |||
| 结构与辅材 | 淘宝铜柱螺丝包 | <¥20 | 含贴片铜柱、沉头螺丝、硅胶垫片、双面胶等 | |
| 立创阻容杂项 | <¥20 | 配合优惠券10元包邮 | ||
| 面板(薄膜 + 亚克力) | 8 | 经常有优惠券只需付8元邮费 | ||
| 3D 打印外壳 | ~5 | 日常活动可免费打印 | ||
| 辅材合计 | ~¥55 | |||
| 总计 | ~¥120 |
> 提示:物料按较高价统计,实际花费更小。若使用 RP2040 开发板(¥10),总价可降至 ~¥90;3D 打印参与日常活动可免费;
功能概览
- 手动恒温模式 — 设定目标温度,PID 闭环自动恒温保持,适合预热、拆焊、加热工件等场景
- 旋转编码器调节设定温度(步长 5°C,范围 30~260°C)
- 时间条显示当前累计运行时间
- 实时显示 R/V/P(电阻/电压/功率)三项电气参数
- 回流焊模式 — 按标准回流焊曲线(预热→恒温→回流→冷却)自动完成焊接
- 峰值温度 150~260°C 可调
- 总时长 120~600s 可调
- 5 个阶段自动推进:PREHT(预热)→ SOAK(保温)→ RAMP(升温)→ PEAK(峰值)→ COOL(冷却)
- 双 UI 模式可切换:TEXT 文字模式或 GRAPH 曲线图模式
- 加热板即插即用 — 开机自动标定冷态电阻(2.6~18Ω 自适应),补偿到 25°C 归一化值,无需手动校准;换不同阻值的加热板可直接使用,系统自动适配
- 实时数据可视化 — 彩屏显示实时温度、电压、电流、功率、电阻值,回流焊模式可切换为实时曲线图
- 6 套配色主题 — 从低饱和度粉蓝到高饱和撞色,自由切换
- RGB 灯效 — 温度映射颜色(低温蓝→高温红),恒温后呼吸模式
- 蜂鸣器音效 — 启动、确认、错误、停止四种音效,5 级音量可调
- 参数全可调 — PID 参数、温度校准、最大功率、回流焊曲线参数均可通过菜单现场调整,无需重新编译
一、界面与交互
三种主界面
1. 普通加热界面(手动恒温模式)

屏幕从上到下分为三个区域:
- 顶部状态栏:左侧显示 NTC 板温,风扇开启时旁边显示旋转的风扇叶片图标;右侧为时间条,手动模式下显示累计运行时间(
MM:SS)。 - 中部主显示区:左侧为大字号当前温度;右侧为 R/V/P 三行参数。
- 底部状态栏:左半区显示
SET:设定温度;右半区运行时显示旋转的呼吸指示点 +RUN字样,停止时显示STOP。
操作:旋转编码器调节设定温度(5°C/档);短按启动/停止加热;运行中旋转编码器切换风扇;长按进入菜单。
2. 回流焊加热界面(TEXT 文字模式)

布局与普通加热界面一致,区别在于底部状态栏与时间条含义的变化:
- 时间条:停止时显示曲线总时长(如
06:00);运行中显示当前阶段剩余时间(倒计时),阶段切换时自动跳到下一阶段的剩余时间。 - 底部状态栏:左半区显示
TGT:当前曲线目标温度(随曲线插值实时变化);右半区显示当前阶段名称(PREHT / SOAK / RAMP / PEAK / COOL),并用对应阶段颜色着色。- PREHT 预热(蓝)、SOAK 保温(青绿)、RAMP 升温(黄)、PEAK 峰值(橙红)、COOL 冷却(浅蓝)、DONE 完成(绿)、READY 就绪(灰)
操作:停止时旋转编码器调节总时长(120 ~ 600s);运行中旋转编码器切换风扇 ON/OFF;短按启动/停止;峰值温度通过菜单「Peak Temp」调节(5°C/档,150~260°C)。
3. 曲线图界面(回流焊 GRAPH 模式)

全屏曲线图布局,用于直观展示回流焊过程:
- 顶部状态栏:左侧 NTC 板温,右侧显示
R:/V:/P:三项电气参数(单行紧凑布局)。 - 中部曲线区:
- 虚线为目标曲线(8 段折线,由当前峰值温度与总时长决定)
- 圆点为当前实时温度位置
- 左上角标注当前温度数值
- 底部状态栏:
- 第一行:
PEAK:峰值温度、TGT:当前目标温度、阶段名称 - 第二行:进度百分比
NN%+ 水平进度条(按阶段颜色填充)+ 右侧总剩余时间(MM:SS倒计时)
- 第一行:
操作:与 TEXT 模式一致;GRAPH 与 TEXT 模式可通过菜单「Reflow UI」选项切换。
关键交互特性
- 温度数字滚动动画:每位数字独立缓动,模拟机械电表进位效果,温度变化时数字依次翻转
- 菜单动画:进入菜单时顶部高亮条从中心展开,滚动时带惯性缓动效果
- NeoPixel RGB 灯:温度映射为蓝→绿→黄→红渐变,恒温后进入呼吸模式
- 蜂鸣器音效:启动、确认、错误、停止四种音效,5 级音量可调
6 套配色方案
| 编号 | 名称 | 风格 |
|---|---|---|
| 0 | Macaron Sweet | 粉蓝白,低饱和度 |
| 1 | Retro Scope | 黑底绿字,荧光质感 |
| 2 | Industrial Steel | 灰橙黑,工业风 |
| 3 | Cyber Frost | 深蓝青,冷色调 |
| 4 | Art Spectrum | 高饱和撞色 |
| 5 | Rainbow Fest | 柔和渐变 |
二、菜单系统
RP50 的交互遵循「主菜单 → 子菜单 → 参数编辑」三级结构,全部通过旋转编码器 + 按键完成。
第一级:主菜单
Quick Settings ← 快速设置(日常参数)
Reflow ← 回流焊配置
System ← 系统参数(PID 等专业调节)
Exit ← 返回主界面
第二级:子菜单
快速设置
| 选项 | 参数范围 | 说明 |
|---|---|---|
| Fan | OFF / ON / LOCK | 手动控制或锁定风扇 |
| Brightness | 10~100% | 屏幕亮度 |
| Color | 0~5 | 6 套配色方案切换 |
| Buzzer | Lv.0~Lv.5 | 蜂鸣器音量 |
| Return | — | 返回主菜单 |
回流焊配置
| 选项 | 参数范围 | 默认值 | 说明 |
|---|---|---|---|
| Mode Switch | ON/OFF | OFF | 开启/关闭回流焊模式 |
| Reflow UI | TEXT/GRAPH | TEXT | 文字或曲线图显示模式 |
| Peak Temp | 150~260°C | 245°C | 回流焊峰值温度 |
| Preheat | 100~200°C | 150°C | 预热阶段温度 |
| Total Time | 120~600s | 300s | 回流焊总时长 |
| Return | — | — | 返回主菜单 |
系统菜单
| 选项 | 参数范围 | 默认值 | 步进 | 说明 |
|---|---|---|---|---|
| Kp | 0~50 | 15 | 5 | PID 比例增益 |
| Ki | 0~50 (×0.1) | 0.5 | 0.1 | PID 积分增益 |
| Kd | 0~50 (×0.1) | 0.2 | 0.1 | PID 微分增益 |
| Cal 50°C | -50~+50°C | 0 | 1 | 50°C 校准点偏移(低温区) |
| Cal 150°C | -50~+50°C | 0 | 1 | 150°C 校准点偏移(中温区) |
| Cal 250°C | -50~+50°C | 0 | 1 | 250°C 校准点偏移(高温区) |
| Init Temp | 30~250°C | 50°C | 5 | 初始设定温度 |
| Max Power | 50~100W | 60W | 5 | 最大加热功率 |
| Return | — | — | — | 返回主菜单 |
第三级:参数编辑
选中参数项 → 单击进入编辑 → 旋转编码器调整 → 单击确认。
三、使用说明
目录结构
RP50/
├── src/
│ ├── main.cpp — 主程序入口,loop() 主循环
│ ├── Hardware_Driver.h — 引脚定义、EEPROM 地址、结构体、常量
│ ├── Driver.h — 硬件驱动实现(PWM、I²C、SPI、编码器、按键)
│ ├── UI.h — 界面绘制、温度滚动动画、菜单动画、RVP 显示
│ ├── ColorScheme.h — 6 套配色方案定义
│ ├── Logic.h — 菜单逻辑、输入处理、参数保存/加载
│ ├── HeatingControl.h/cpp — PID 闭环 + 恒功率引擎
│ ├── Control_Logic.h — 控制逻辑调度(processControl、曲线回流焊、风扇控制)
│ ├── Temperature_Calibration.h — 多点温度校准(分段线性插值)
│ └── Buzzer.h — 蜂鸣器驱动、音效序列
├── platformio.ini — PlatformIO 项目配置
└── RP50-项目介绍.md — 项目介绍文档
如何编译烧录
提供两种烧录方式:
方式一:PlatformIO 一键烧录
- 安装 Visual Studio Code 和 PlatformIO 扩展
- 克隆或下载本项目到本地
- 用 PlatformIO 打开项目文件夹(
/RP50) - PlatformIO 会自动识别
platformio.ini并配置环境 - 将 ColorEasyPico2 开发板通过 USB 连接到电脑
- 点击 PlatformIO 底部工具栏的 →(Upload)按钮,编译并烧录
- 烧录完成后,开发板会自动重启运行
方式二:UF2 拖放烧录
- 在 PlatformIO 中完成编译后,找到生成的 UF2 文件:
.pio\build\release\firmware.uf2 - 断开开发板 USB 线,按住开发板上的 BOOTSEL 键不放
- 保持按住 BOOTSEL 键,插入 USB 线连接电脑,此时可松开按键
- 电脑会自动弹出一个名为 RPI-RP2 的 U 盘
- 将
firmware.uf2文件直接拖入该 U 盘 - 文件复制完成后,开发板自动重启,烧录完成
硬件连接
参考 Hardware_Driver.h 中的引脚定义:
> 注意:开发板SPI引脚布局与默认不同,需要修改两个文件才能正常驱动:
>
> 1. TFT_eSPI 配置文件: User_Setup.h
> 2. 引脚映射文件 pins_arduino.h:位于 C:\Users\用户名\.platformio\packages\framework-arduinopico\variants\rpipico2\pins_arduino.h,需要修改 SPI 引脚映射以匹配 ColorEasyPico2 的硬件设计
>
> 修改后的 pins_arduino.h 文件已经放置在工程根目录下(pins_arduino.h.txt)。
| 引脚 | 功能 | 连接目标 |
|---|---|---|
| GPIO0 | I2C0 SDA | INA226 SDA |
| GPIO1 | I2C0 SCL | INA226 SCL |
| GPIO2~5 | SPI0 | MAX31865 (CLK/MOSI/MISO/CS) |
| GPIO6 | PWM VADJ | PL5501 电压调节 |
| GPIO7 | PWM IADJ | PL5501 恒流阈值调节 |
| GPIO8 | GPIO | PL5501 EN 使能 |
| GPIO9 | PWM | TFT 背光 |
| GPIO10~13 | SPI1 | TFT (CLK/MOSI/DC/CS) |
| GPIO14~15 | GPIO 中断 | 编码器 EA/EB |
| GPIO16 | GPIO 中断 | 编码器按键 |
| GPIO17 | PWM | 蜂鸣器 |
| GPIO19 | GPIO | NeoPixel DATA |
| GPIO21 | GPIO | 风扇 MOSFET 控制 |
| GPIO28 | ADC | NTC 分压 |
四、其他材料参考
以下为本项目外壳组装及散热所需材料的参考信息。
| 物料 | 规格 | 说明 |
|---|---|---|
| SMT 贴片铜柱 | M1.4×C3×0.5 + C2×0.8 | 铝基板固定,参考链接 |
| SMT 贴片铜柱 | M1.4×C3×3.0 + C2×0.8 | 隔热板支撑铜柱,参考链接 |
| 沉头螺丝 | M1.4x3.0 | 与贴片铜柱配套 |
| pt100 | A/B级 x1 | bom上不显示 |
| fpc软线 | 11pin 反向 x2 | bom上不显示 |
| 圆形硅胶垫片 | 5mm 直径 | 防滑,参考链接 |
| 导热双面胶 | 粘性强 | 固定屏幕PCB,固定NTC 参考链接 |
| 沉孔刀 | 手动沉孔 | 铝基板和导流板要进行沉孔处理 |
> 贴片铜柱买两种高度,短的用于铝基板固定,长的用于隔热板之间支撑。
| 物料 | 规格 | 说明 |
|---|---|---|
| 5V 风扇 | 4007 或 4010 | 需确认M2铜柱高度。本设计采用4007 |
| 铜柱套装 | M2 铜柱 + 螺丝 + 六角螺母 | 发热块和主体之间的导电和支撑,单头、双通都可以,安装步骤不同 |
风扇安装高度参考:
- 4007 风扇(7mm 厚)→ 使用 14mm 以上 铜柱
- 4010 风扇(10mm 厚)→ 使用 17mm 以上 铜柱
DIY 方案:拆开两对 Amass XT30UPB 香蕉头代替铜柱,对插合高约 13mm,代替M2 铜柱套装。(注意:两种情况下,功率板PCB的焊盘孔大小需要改)




五、技术栈
| 领域 | 选型 |
|---|---|
| MCU | RP2350 (ColorEasyPico2),双核 150MHz |
| 框架 | Arduino-Pico |
| 温度传感 | MAX31865 + PT100,SPI |
| 功率监测 | INA226,I²C,16 位 ADC |
| 电源 | PL5501 Buck-Boost + CH224K PD 诱骗 |
| 显示 | TFT_eSPI,1.96" 160×80 |
| RGB | FastLED + WS2812 |
| 蜂鸣器 | PWM 有源蜂鸣器 |
| 存储 | 片上 EEPROM 4KB,延迟提交缓存 |
| 调试 | PlatformIO + Serial,条件编译 DEBUG 开关 |
六、硬件设计
总体架构
USB PD 充电头 (65W/100W)
↓
CH224K 诱骗芯片 → 20V PD 协议协商
↓
PL5501 Buck-Boost DC-DC ← PWM VADJ(电压调节) + IADJ(电流限制)
↓ (0.5V~28V 可调输出)
铝基板加热片
↓
├── MAX31865 + PT100 → 温度测量(SPI)
├── INA226 → 电压/电流/功率监测(I²C)
├── NTC 热敏电阻 → 板温监测(ADC)
└── 风扇 → 辅助散热


原理图说明
系统由功率板和主控板两块 PCB 组成,通过 FPC 排线连接。
功率板 — PL5501 四开关 Buck-Boost
功率板实现 USB PD 20V → 0.5~28V 可调输出,核心为 PL5501控制的四开关 Buck-Boost 拓扑:
USB-C ──→ CH224K ──→ VBUS_PD(20V)
│
┌──────────────────┴──────────────────┐
│ PL5501 (U5) │
│ HG1 LG1 │ HG2 LG2 │ CSP/CSN ×2 │
└───┬──────┬────────┬──────┬─────────┘
│ │ │ │
Q1(高边) Q2(低边) Q4(高边) Q3(低边)
│ │ │ │
SW1 ←── U1(5.5μH电感)──→ SW2
│ │
└─── GND GND───┘
│
U3(8mΩ) ──→ ISENNSE+ ──→ 加热板
│
INA226 共用采样(经 FPC → 主控板)
主控板 — RP2350 系统控制
主控板以 ColorEasyPico2(U1, RP2350)为核心,集成温度测量、功率监测、显示驱动、交互输入与外设控制。
温度测量 — MAX31865 + PT100
U6(MAX31865, QFN-20)经 SPI0(GP2~GP5)连接 MCU。PT100 差分信号 R+/R- 从功率板接线端子经 FPC 引入,C8(1nF)跨接 R+/R- 作差分滤波。R15(430Ω, 0603)为 RTD 参考电阻,与 PT100(100Ω)成 4:1 比例。
功率监测 — INA226
U7(INA226, MSOP-10)经 I²C(GP0/GP1)连接 MCU。采样信号 ISENSE+/ISENSE- 从功率板 8mΩ 电阻经 FPC 引入,实现电压、电流、功率同步测量。
显示 — 1.96" TFT (ST7735S)
U3 经 SPI1(GP10=CLK, GP11=MOSI, GP12=DC, GP13=CS, GP22=RST)连接 MCU。背光由 GP9 驱动,亮度可调。U9/U10 为 FPC 连接器,将 SPI1 与编码器信号引至屏幕板。
交互与外设驱动
| 外设 | 驱动电路 | 控制引脚 |
|---|---|---|
| 旋转编码器 SW1 | C1/C2/C3(100nF)硬件消抖 | GP14(EC_B)/ GP15(EC_A)/ GP16(EC_SW) |
| 蜂鸣器 | Q2(N-MOSFET)低边开关 + D2 续流二极管 | GP17(BUZZ) |
| 风扇 | Q3(N-MOSFET)低边开关 + D3 续流二极管 | GP21(FAN) |
| NeoPixel | U2(WS2812),R10(100Ω)数据线串联匹配 | GP19 |
| NTC 板温 | R13(10kΩ 热敏)+ R14(10kΩ)分压 + C5(100nF)滤波 | GP28(ADC2) |
供电切换
功率板 5V 经 FPC 引入主控板 5V 网络;USB 5V(5V_usb)经 D1(肖特基)与功率板 5V 做二极管 OR-ing,实现双路供电自动切换。5V → MCU 板载 LDO → 3.3V 供外设。
电源方案
采用 USB PD 协议 + CH224K 诱骗芯片,将普通 USB PD 充电头的电压诱骗至 20V 作为系统输入。
- 65W PD 充电头:20V × 3.25A = 65W,实际可用约 60W(PL5501 Buck-Boost 转换效率约 90~95%,按 92% 估算:65W × 0.92 ≈ 60W)
- 100W PD 充电头:20V × 5A = 100W,实际可用约 90W(100W × 0.92 ≈ 92W,考虑到线损和余量,工程上取 ~90W)
铝基板加热片电阻选择分析
PL5501 Buck-Boost 输出范围 0.5~28V,加热片的功率遵循 P = V² / R。对于不同功率等级的 PD 电源,需要根据以下约束计算:
- 电压约束:Vout ≤ 28V
- 电流约束:Iout ≤ 5A(IADJ 恒流上限)
- 功率约束:Pout ≤ PD 电源可用功率
冷态(25°C)分析
100W PD 电源(可用 ~90W)的 R0 窗口分析:
| R0 | V@90W | I@90W | 超限项 | 结论 |
|---|---|---|---|---|
| 3.5Ω | 17.7V | 5.07A | 电流超 5A | ❌ |
| 4.0Ω | 19.0V | 4.74A | 无 | ✅ 窗口下限 |
| 4.16Ω | 19.3V | 4.65A | 无 | ✅ 窗口上限 |
| 4.5Ω | 20.1V | 4.47A | 无 | ✅ 可用 90W,电压/电流余量大 |
可见 100W 电源下,R0 的可用窗口极窄(4.0~4.16Ω),超出此范围则受限于电流或电压上限,无法达到满功率。但对于实际使用,加热到 100% 设定功率仅在升温初期短暂存在,稳态恒温时功率需求远低于此值,因此窗口窄的考量主要影响升温时间,不影响恒温稳定性。
65W PD 电源(可用 ~60W)的 R0 窗口分析:
| R0 | V@60W | I@60W | 结论 |
|---|---|---|---|
| 4.0Ω | 15.5V | 3.87A | ✅ |
| 5.0Ω | 17.3V | 3.46A | ✅ |
| 6.0Ω | 19.0V | 3.16A | ✅ |
| 8.0Ω | 21.9V | 2.74A | ✅ |
65W 下 R0 窗口宽裕(4~8Ω 均可)。
高温(250°C)分析
加热板采用铝基板结构:铝基板负责均热散热,铜走线作为电阻发热体。铜的电阻温度系数(TCR)约 0.00393/°C,高温下电阻显著增大:
R_250 = R_25 × (1 + 0.00393 × (250 - 25)) = R_25 × 1.884
以 5.0Ω 加热板为例,250°C 时电阻升至 ~9.42Ω,此时功率-电压-电流关系变为:
| 电源 | 目标功率 | V = √(P × 9.42) | I = V / 9.42 | 结论 |
|---|---|---|---|---|
| 65W (可用 ~60W) | 60W | 23.8V | 2.53A | ✅ 电压/电流均有余量,60W 可维持 |
| 100W (可用 ~90W) | 90W | 29.1V | 3.09A | ⚠️ V 超 28V 上限 |
通用推荐:5.0Ω
- 搭配 65W PD:冷态可跑满 60W,250°C 高温下仍可维持 60W(余量充足)
- 搭配 100W PD:冷态受 5A 电流限约束,实际 ~83W(83%);250°C 受 28V 电压限约束,同样 ~83W(83%)。
核心硬件选型
| 模块 | 型号 | 说明 |
|---|---|---|
| 主控板 | 立创·ColorEasyPico2(RP2350) | 双核 Cortex-M33,150MHz,内置硬件看门狗,Type-C 接口 |
| 测温 | MAX31865 + PT100 | 铂电阻方案,0.1°C 分辨率。建议选 B 级 PT100,性价比最高 |
| 功率拓扑 | PL5501 Buck-Boost | 支持升降压,输入 20V 可输出 0.5~28V,最大 100W |
| 功率监测 | INA226 | 16 位 ADC,I²C 接口,实时采集电压、电流、功率 |
| PD 诱骗 | CH224K | 自动协商 PD 协议,输出 20V |
| 显示 | 1.96" TFT (160×80) | SPI 接口,Sprite 双缓冲防闪烁 |
| 灯效 | WS2812 NeoPixel | 单灯珠,温度映射颜色(低温蓝→高温红) |
关于 PT100 精度等级选择
PT100 分为 AA/A/B/C 四级,关键区别在于 200°C 时的允差:
| 等级 | 200°C 允差 | 单价参考 |
|---|---|---|
| AA | ±0.44°C | 高(3~5 倍 B 级) |
| A | ±0.55°C | 中高 |
| B | ±1.30°C | 低(常规品) |
| C | ±2.60°C | 低 |
最佳选择是 B 级 PT100。理由:
- 回流焊工艺窗口(±3~5°C)远大于 B 级的 ±1.3°C,精度完全够用
- A 级虽精度更高,但对本项目来说是过度设计,没有实际收益
七、核心设计亮点:恒功率控制
传统加热台采用恒压控制——加热板电阻随温度升高而增大,功率自然衰减,升温越来越慢。这意味着实际加热功率是不可控、不可预测的。
RP50 采用恒功率控制方案,核心在于一个闭环:通过 INA226 实时测量加热板的电压和电流,计算出当前电阻 R;再用目标功率 P_target 计算出所需电压 V = √(P × R);最后通过 PL5501 Buck-Boost DC-DC 转换器精确输出该电压。无论加热板电阻如何随温度变化,实际加热功率始终等于目标功率。
这套方案的核心技术要素:
- PL5501 宽范围 Buck-Boost:支持升降压,输入 20V 可输出 0.5-28V,覆盖不同加热板在各种温度下的电压需求
- 电阻在线估算:基于 INA226 实测数据,融合 R-T 查表法 + 实测值置信度加权,稳态时优先使用实测值,电流小时回退到查表值
- 冷态电阻自动标定:开机自动采集 10 次样本,补偿到 25°C 归一化值,加热板即插即用(硬性接受范围 2.6
18Ω,满功率推荐 59Ω),无需手动校准 - 闭环功率限制:实测功率超过设定阈值时自动削减 PWM,保护电源不 overload,实测功率恢复后逐步释放
- 电压校准在线学习:自动修正硬件偏差(分压电阻容差、PWM 电平漂移),校准系数持久化到 EEPROM
- 实测电阻前馈钳制:基于 INA226 实测 V/I 计算真实电阻,钳制输出电压防止 R_est 偏大导致功率超标
RP50 的优势
- 加热台 + 回流焊二合一 — 手动模式设定温度恒温,回流焊模式按标准曲线自动焊接。恒功率特性使回流焊升温速率在全温度范围内保持线性,曲线跟踪更准确
- 真正的闭环恒功率 — 基于 INA226 + PL5501 的实时功率闭环,不是简单的「温度偏差→PWM」开环控制
- 全程数据可视化 — 1.96 寸彩屏实时显示温度、电阻、电压、功率,回流焊模式可显示实时温度曲线图
- 安全保护齐全 — 过温、过流、过压、过功率、传感器故障、电阻异常共 6 重保护,硬件看门狗 2 秒超时自恢复
- 交互体验完善 — 旋转编码器 + 按键操作,机械电表式数字滚动动画,6 套配色主题,RGB 灯效,蜂鸣器音效反馈
- 参数全可调 — PID 参数、温度校准、最大功率、回流焊曲线参数均可通过菜单现场调整
八、软件架构
模块分层
UI 层 UI.h — 界面绘制、动画、菜单显示
ColorScheme.h — 6 套配色方案定义
Logic 层 Logic.h — 菜单逻辑、输入处理、参数保存
Control 层 Control_Logic.h — 控制逻辑调度、曲线回流焊、风扇控制、RGB 灯效
Temperature_Calibration.h — 多点温度校准(分段线性插值)
HeatingControl.h/cpp — PID 闭环 + 恒功率引擎
Driver.h — 硬件驱动封装(编码器中断、PWM、I²C、SPI)
Buzzer.h — 蜂鸣器驱动、音效序列
HW 层 Hardware_Driver.h — 引脚定义、EEPROM 地址、结构体、常量
主循环流程
loop()
├── watchdog_update() ← 硬件看门狗喂狗
├── updateBuzzer() ← 非阻塞音效播放
├── updateAnimation() ← 菜单滚动/数字滚动动画帧
├── updateEEPROM() ← 延迟 2s 合并写入 EEPROM
│
├── [100ms] 读取 MAX31865 温度
│ ├── NaN → 紧急停机(防止无效值导致满功率加热)
│ ├── 温度 > 260°C → 紧急停机
│ └── 更新校准温度(三点分段线性插值)
│
├── [100ms] 读取 NTC 板温
├── 读取按键 (非阻塞消抖)
│
├── 状态分派:
│ ├── 菜单模式 → 对应的菜单处理函数
│ └── 主界面 → 按键/编码器处理
│
└── handleTimedTasks
├── [200ms] processControl() ← PID 控制 + 功率输出
├── [30ms] updateRGBLight() ← NeoPixel 颜色更新
├── [500ms] updateFanControl() ← NTC 滞回 / 用户手动控制
└── [100ms] updateDisplay() ← 刷新屏幕(回流焊曲线图模式每 1s 记录一次温度点)
控制原理
恒功率方案的优势是升温曲线更线性、可预测,这对回流焊曲线跟踪至关重要——曲线各段的升温速率需要在全温度范围内保持一致。
控制链路如下:
设定温度 → PID 算法 → 目标功率 P_target
↓
INA226 实测 R → V = √(P_target × R) → 查 PWM 校准表 → VADJ PWM → PL5501 电压输出
↓ ↓
实测电阻前馈钳制(V_actual/I_actual) IADJ PWM(恒流阈值)
↓ ↓
闭环功率限制器(实测 P > 阈值 → 削减 PWM) I_LIMIT = 5A × (PWM/255)
↓
电压校准补偿(在线学习 m_voltageCalibScale)
核心算法代码介绍
1. PID 控制算法(三段式功率策略)
核心逻辑位于 HeatingControl::updatePID(),根据当前温度偏差分三段处理:
(1)大温差(ΔT > 10°C)— 全功率快速升温
if (error > m_config.fastHeatRange + TEMP_EPSILON) {
// 软启动三阶段(limitedPower = powerLimit × 0.95)
unsigned long elapsed = millis() - m_softStartTime;
if (elapsed < SOFT_START_DURATION_MS) {
// 阶段1(0~2s): 5W 线性爬升到 powerLimit × 0.95
float ratio = (float)elapsed / SOFT_START_DURATION_MS;
targetPower = SOFT_START_POWER_MIN + ratio * (limitedPower - SOFT_START_POWER_MIN);
} else if (elapsed < SOFT_START_DURATION_MS + SOFT_START_HOLD_DURATION_MS) {
// 阶段2(2~4s): 保持限功率 powerLimit × 0.95,防止过冲导致电源重启
targetPower = limitedPower;
} else {
// 阶段3(4s 后): 释放到满功率 powerLimit
targetPower = m_config.powerLimit;
}
// 同时运行 PID 让积分项持续累积,后续过渡平滑
calculatePID(error);
}
(2)中温差(3°C < ΔT ≤ 10°C)— 快速功率与 PID 线性混合
else if (error > m_config.slowHeatRange + TEMP_EPSILON) {
// 先用 PID 算输出
targetPower = calculatePID(error);
// 用 error 做线性插值,混合快速功率和 PID 输出
float ratio = (error - m_config.slowHeatRange) /
(m_config.fastHeatRange - m_config.slowHeatRange);
ratio = constrain(ratio, 0.0f, 1.0f);
targetPower = m_lastFastBranchPower * ratio + targetPower * (1.0f - ratio);
}
(3)小温差(ΔT ≤ 3°C)— 纯 PID 精确调节
else if (error > TEMP_EPSILON) {
targetPower = calculatePID(error);
// 恒温模式下限制 25W 上限,防止过冲
if (m_isReflowMode) {
targetPower = constrain(targetPower, m_config.minHeatingPower, m_config.powerLimit);
} else {
targetPower = constrain(targetPower, m_config.minHeatingPower, 25.0f);
}
}
(4)PID 计算公式
float HeatingControl::calculatePID(float error) {
const float dt = m_config.sampleTimeMs / 1000.0f;
const float integralLimit = 50.0f;
// 积分项(带限幅)
m_pidIntegral += error * dt;
m_pidIntegral = constrain(m_pidIntegral, -integralLimit, integralLimit);
// 微分项(一阶低通滤波,系数 0.7+0.3)
float derivative = (error - m_pidLastError) / dt;
m_pidDerivativeFiltered = m_pidDerivativeFiltered * 0.7f + derivative * 0.3f;
// PID 输出
float output = m_config.pidKp * error + m_config.pidKi * m_pidIntegral + m_config.pidKd * m_pidDerivativeFiltered;
output = constrain(output, 0.0f, m_config.powerLimit);
m_pidLastError = error;
return output;
}
2. 闭环功率限制器
位于 HeatingControl::updatePowerOutput(),基于 INA226 实测功率反馈。当实测功率超过设定值时,逐步削减 PWM;当功率恢复后,逐步释放:
// 实测功率超过设定功率 × 0.95 → 逐步削减 PWM
if (m_state.power >= powerLimitThreshold) {
float excessRatio = (m_state.power - powerLimitThreshold) / (m_config.powerLimit * 0.1f);
uint8_t step = (uint8_t)constrain((int)(excessRatio * POWER_LIMIT_PWM_STEP * 2), 1, 5);
m_powerLimitPwmReduction += step;
}
// 实测功率低于设定功率 × 0.90 → 恢复 PWM
else if (m_powerLimitingActive && m_state.power < powerRecoveryThreshold) {
m_powerLimitPwmReduction -= POWER_LIMIT_PWM_STEP;
}
3. 冷态电阻自动标定
开机加热后自动采集 10 次有效 INA226 样本(每次间隔 100ms,约 1 秒完成),计算冷态加热板电阻并还原到 25°C 归一化值。加热板即插即用(硬性接受 R0 范围 2.6 - 18Ω,满功率推荐 5 - 9Ω),无需手动校准。完整流程包含 7 个阶段:
bool HeatingControl::calibrateColdResistance() {
// 阶段1: 环境条件检查(温度必须在 10~35°C 室温范围)
if (m_state.currentTemp > 35.0f || m_state.currentTemp < 10.0f) { /* 重置 */ return false; }
// 阶段2: 传感器数据有效性检查(必须有足够负载电流)
if (m_state.current < CURRENT_MIN_VALID || m_state.loadVoltage < VOLTAGE_DROP_MIN_VALID) return false;
// 阶段3: 单次电阻测量与有效性检查(R = V/I,范围 2.6~18Ω)
float r = m_state.loadVoltage / m_state.current;
if (r < RESISTANCE_MIN_VALID || r > RESISTANCE_MAX_VALID) { /* 重置 */ return false; }
// 阶段4: 多样本累积(抗噪声/瞬态干扰,10 次采样,10s 超时)
m_coldCalibSampleSum += r;
m_coldCalibSampleCount++;
if (m_coldCalibSampleCount < COLD_CALIB_SAMPLES_REQUIRED) return false;
// 阶段5: 计算平均电阻并做温度补偿(归一化到 25°C)
float averageR = m_coldCalibSampleSum / (float)COLD_CALIB_SAMPLES_REQUIRED;
float tempDiff = m_state.currentTemp - RESISTOR_NOMINAL_TEMP;
float r0 = averageR / (1.0f + m_r_estimator_config.alpha * tempDiff);
// 阶段6: 最终范围检查(补偿后的 R0 必须在 2.6~18Ω 内)
if (r0 < RESISTANCE_MIN_VALID || r0 > RESISTANCE_MAX_VALID) { /* 重置 */ return false; }
// 阶段7: 应用标定结果 + 重建 R-T 映射表
m_r_estimator_config.r0 = r0;
m_config.baseResistance = r0;
initR_T_Table(r0); // 根据新 R0 重建 25~250°C 的 R-T 查表
return true;
}
标定完成后,后续的电阻估算通过 R-T 查表法(根据实测温度查对应电阻变化,每 25°C 一个点,线性插值)和 INA226 实测值加权融合,稳态时置信度高时优先使用实测值,电流小时回退到查表值。R-T 表还支持在线自适应学习(指数移动平均),逐渐逼近加热板真实特性。
4. 回流焊曲线引擎
8 段温度-时间曲线点定义(Sn63/Pb37 标准曲线),支持实时缩放。调节峰值温度时按比例映射保持曲线形状,同时保留用户设定的预热温度和总时间;调节总时间时按比例缩放所有时间点:
// 调节峰值温度:重新加载默认曲线作为基准,避免累积误差
void updateCurvePeakTemp(float newPeakTemp) {
// 保存当前总时间和预热温度
unsigned long currentTotalTimeMs = g_curveReflow.curve.points[...].time_ms;
float currentPreheatTemp = g_curveReflow.curve.points[1].temperature;
// 重新加载默认曲线作为计算基准
loadDefaultReflowCurve();
// 将原始范围(25°C ~ 245°C)映射到新范围(25°C ~ newPeakTemp)
float originalRange = DEFAULT_PEAK_TEMP - 25.0f; // 220°C
float newRange = newPeakTemp - 25.0f;
float ratio = newRange / originalRange;
// 更新所有高于室温的温度点(>50°C),保持曲线形状
for (int i = 0; i < g_curveReflow.curve.pointCount; i++) {
if (g_curveReflow.curve.points[i].temperature > 50.0f) {
g_curveReflow.curve.points[i].temperature =
roundf(25.0f + (g_curveReflow.curve.points[i].temperature - 25.0f) * ratio);
}
}
// 恢复预热温度和总时间...
}
// 调节总时间:按比例缩放所有时间点
void updateCurveTotalTime(int newTotalTimeSec) {
unsigned long oldTotalTimeMs = g_curveReflow.curve.points[...].time_ms;
float ratio = (float)(newTotalTimeSec * 1000) / (float)oldTotalTimeMs;
for (int i = 0; i < g_curveReflow.curve.pointCount; i++) {
g_curveReflow.curve.points[i].time_ms =
(unsigned long)((float)g_curveReflow.curve.points[i].time_ms * ratio);
}
}
默认曲线 8 个关键点(Sn63/Pb37 锡膏):
| 时间 (s) | 温度 (°C) | 阶段说明 |
|---|---|---|
| 0 | 25 | 起始点(室温) |
| 60 | 150 | 预热结束 |
| 120 | 150 | 保温结束(保温 60s) |
| 180 | 220 | 升温至峰值 |
| 210 | 245 | 峰值温度 |
| 240 | 245 | 峰值保温结束(30s) |
| 300 | 150 | 冷却阶段 |
| 360 | 100 | 冷却完成 |
> 最大升温速率默认 2°C/s,最大降温速率默认 4°C/s,由 calculateCurveTargetTemp() 在曲线插值时进行速率限制。
九、安全保护
| 保护机制 | 触发条件 | 响应 |
|---|---|---|
| 过温保护 | 温度 > 260°C | 立即停机,停止 PWM 输出 |
| 传感器故障 | 读取温度为 NaN | 紧急停机,蜂鸣器报警(首次即停机,不用 0°C 覆盖) |
| 过功率限制 | 实测功率 > 设定 × 0.95 | 闭环削减 PWM 直至恢复 |
| 电阻异常 | 估算电阻 < 2.6Ω 或 > 18Ω | 禁止启动加热 |
| 过流/过压 | INA226 超阈值 | 故障锁存,强制停机等待用户操作 |
| 硬件看门狗 | 2 秒未喂狗 | MCU 硬件复位 |
更新日志与注意事项
1、铝基板和导流板要进行手动沉孔处理。
2、隔热板螺丝要拧紧,保证电流通畅。
3、风扇焊接注意区分正负。
4、排线不要插错位置,会烧mcu。
5、更换main.3mf fan.3mf文件,小更改 2026.8.8
实物图





设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










