站内搜索
更多
RP50 恒功率回流焊曲线加热台【星火计划2026】
专业版

RP50 恒功率回流焊曲线加热台【星火计划2026】

简介

通过升降压芯片实现恒功率功能。 组装方便,需要额外购买材料少,“无线”组装。 可快速更换加热板。

简介:通过升降压芯片实现恒功率功能。 组装方便,需要额外购买材料少,“无线”组装。 可快速更换加热板。
星火计划2026
复刻成本:100

开源协议

MIT License

创建时间:2026-04-27 18:24:46更新时间:2026-08-10 11:27:08

描述

RP50 — 迷你回流焊台

项目背景与动机

为什么做这个项目

当前立创开源平台的加热台大体分两类:

  • 高压版——性能硬核,但组装涉及强电接线与绝缘处理,新手望而却步;
  • 低压版——门槛低、功能简单,但性能与体验都偏弱,缺乏复刻动力。

两端之间缺一个「功能全面、组装友好、颜值在线」的中间档选择。RP50 就是来填这个空的。

Screenshot 2026-08-09 121213.png

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 打印外壳)全部独立完成
>

微信图片_20260804094515_140_9.jpg

规格参数一览

项目参数
加热板尺寸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¥7PT100 专用 ADC
PT100(B 级)¥3铂电阻温度传感器
INA226¥2功率监测
1.96" TFT LCD¥5160×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. 普通加热界面(手动恒温模式)

普通加热界面.jpg
屏幕从上到下分为三个区域:

  • 顶部状态栏:左侧显示 NTC 板温,风扇开启时旁边显示旋转的风扇叶片图标;右侧为时间条,手动模式下显示累计运行时间(MM:SS)。
  • 中部主显示区:左侧为大字号当前温度;右侧为 R/V/P 三行参数。
  • 底部状态栏:左半区显示 SET: 设定温度;右半区运行时显示旋转的呼吸指示点 + RUN 字样,停止时显示 STOP

操作:旋转编码器调节设定温度(5°C/档);短按启动/停止加热;运行中旋转编码器切换风扇;长按进入菜单。

2. 回流焊加热界面(TEXT 文字模式)

回流焊加热界面.jpg

布局与普通加热界面一致,区别在于底部状态栏与时间条含义的变化:

  • 时间条:停止时显示曲线总时长(如 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 模式)

曲线图界面.jpg
全屏曲线图布局,用于直观展示回流焊过程:

  • 顶部状态栏:左侧 NTC 板温,右侧显示 R:/V:/P: 三项电气参数(单行紧凑布局)。
  • 中部曲线区
    • 虚线为目标曲线(8 段折线,由当前峰值温度与总时长决定)
    • 圆点为当前实时温度位置
    • 左上角标注当前温度数值
  • 底部状态栏
    • 第一行:PEAK: 峰值温度、TGT: 当前目标温度、阶段名称
    • 第二行:进度百分比 NN% + 水平进度条(按阶段颜色填充)+ 右侧总剩余时间MM:SS 倒计时)

操作:与 TEXT 模式一致;GRAPH 与 TEXT 模式可通过菜单「Reflow UI」选项切换。

关键交互特性

  • 温度数字滚动动画:每位数字独立缓动,模拟机械电表进位效果,温度变化时数字依次翻转
  • 菜单动画:进入菜单时顶部高亮条从中心展开,滚动时带惯性缓动效果
  • NeoPixel RGB 灯:温度映射为蓝→绿→黄→红渐变,恒温后进入呼吸模式
  • 蜂鸣器音效:启动、确认、错误、停止四种音效,5 级音量可调

6 套配色方案

编号名称风格
0Macaron Sweet粉蓝白,低饱和度
1Retro Scope黑底绿字,荧光质感
2Industrial Steel灰橙黑,工业风
3Cyber Frost深蓝青,冷色调
4Art Spectrum高饱和撞色
5Rainbow Fest柔和渐变

二、菜单系统

RP50 的交互遵循「主菜单 → 子菜单 → 参数编辑」三级结构,全部通过旋转编码器 + 按键完成。

第一级:主菜单

  Quick Settings    ← 快速设置(日常参数)
  Reflow            ← 回流焊配置
  System            ← 系统参数(PID 等专业调节)
  Exit              ← 返回主界面

第二级:子菜单

快速设置

选项参数范围说明
FanOFF / ON / LOCK手动控制或锁定风扇
Brightness10~100%屏幕亮度
Color0~56 套配色方案切换
BuzzerLv.0~Lv.5蜂鸣器音量
Return返回主菜单

回流焊配置

选项参数范围默认值说明
Mode SwitchON/OFFOFF开启/关闭回流焊模式
Reflow UITEXT/GRAPHTEXT文字或曲线图显示模式
Peak Temp150~260°C245°C回流焊峰值温度
Preheat100~200°C150°C预热阶段温度
Total Time120~600s300s回流焊总时长
Return返回主菜单

系统菜单

选项参数范围默认值步进说明
Kp0~50155PID 比例增益
Ki0~50 (×0.1)0.50.1PID 积分增益
Kd0~50 (×0.1)0.20.1PID 微分增益
Cal 50°C-50~+50°C0150°C 校准点偏移(低温区)
Cal 150°C-50~+50°C01150°C 校准点偏移(中温区)
Cal 250°C-50~+50°C01250°C 校准点偏移(高温区)
Init Temp30~250°C50°C5初始设定温度
Max Power50~100W60W5最大加热功率
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 一键烧录

  1. 安装 Visual Studio CodePlatformIO 扩展
  2. 克隆或下载本项目到本地
  3. 用 PlatformIO 打开项目文件夹(/RP50
  4. PlatformIO 会自动识别 platformio.ini 并配置环境
  5. 将 ColorEasyPico2 开发板通过 USB 连接到电脑
  6. 点击 PlatformIO 底部工具栏的 →(Upload)按钮,编译并烧录
  7. 烧录完成后,开发板会自动重启运行

方式二:UF2 拖放烧录

  1. 在 PlatformIO 中完成编译后,找到生成的 UF2 文件:.pio\build\release\firmware.uf2
  2. 断开开发板 USB 线,按住开发板上的 BOOTSEL 键不放
  3. 保持按住 BOOTSEL 键,插入 USB 线连接电脑,此时可松开按键
  4. 电脑会自动弹出一个名为 RPI-RP2 的 U 盘
  5. firmware.uf2 文件直接拖入该 U 盘
  6. 文件复制完成后,开发板自动重启,烧录完成

硬件连接

参考 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)。

引脚功能连接目标
GPIO0I2C0 SDAINA226 SDA
GPIO1I2C0 SCLINA226 SCL
GPIO2~5SPI0MAX31865 (CLK/MOSI/MISO/CS)
GPIO6PWM VADJPL5501 电压调节
GPIO7PWM IADJPL5501 恒流阈值调节
GPIO8GPIOPL5501 EN 使能
GPIO9PWMTFT 背光
GPIO10~13SPI1TFT (CLK/MOSI/DC/CS)
GPIO14~15GPIO 中断编码器 EA/EB
GPIO16GPIO 中断编码器按键
GPIO17PWM蜂鸣器
GPIO19GPIONeoPixel DATA
GPIO21GPIO风扇 MOSFET 控制
GPIO28ADCNTC 分压

四、其他材料参考

以下为本项目外壳组装及散热所需材料的参考信息。

物料规格说明
SMT 贴片铜柱M1.4×C3×0.5 + C2×0.8铝基板固定,参考链接
SMT 贴片铜柱M1.4×C3×3.0 + C2×0.8隔热板支撑铜柱,参考链接
沉头螺丝M1.4x3.0与贴片铜柱配套
pt100A/B级 x1bom上不显示
fpc软线11pin 反向 x2bom上不显示
圆形硅胶垫片5mm 直径防滑,参考链接
导热双面胶粘性强固定屏幕PCB,固定NTC 参考链接
沉孔刀手动沉孔铝基板和导流板要进行沉孔处理

> 贴片铜柱买两种高度,短的用于铝基板固定,长的用于隔热板之间支撑。

物料规格说明
5V 风扇4007 或 4010需确认M2铜柱高度。本设计采用4007
铜柱套装M2 铜柱 + 螺丝 + 六角螺母发热块和主体之间的导电和支撑,单头、双通都可以,安装步骤不同

风扇安装高度参考:

  • 4007 风扇(7mm 厚)→ 使用 14mm 以上 铜柱
  • 4010 风扇(10mm 厚)→ 使用 17mm 以上 铜柱

DIY 方案:拆开两对 Amass XT30UPB 香蕉头代替铜柱,对插合高约 13mm,代替M2 铜柱套装。(注意:两种情况下,功率板PCB的焊盘孔大小需要改)

爆炸图.png

Screenshot 2026-08-03 144940.png

微信图片_20260803131056_136_9.jpg

微信图片_20260803131142_137_9.jpg


五、技术栈

领域选型
MCURP2350 (ColorEasyPico2),双核 150MHz
框架Arduino-Pico
温度传感MAX31865 + PT100,SPI
功率监测INA226,I²C,16 位 ADC
电源PL5501 Buck-Boost + CH224K PD 诱骗
显示TFT_eSPI,1.96" 160×80
RGBFastLED + 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_pl5501_V3_2026-08-03.png

PCB_rp2040_2_2026-08-03.png

原理图说明

系统由功率板主控板两块 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 与编码器信号引至屏幕板。

交互与外设驱动

外设驱动电路控制引脚
旋转编码器 SW1C1/C2/C3(100nF)硬件消抖GP14(EC_B)/ GP15(EC_A)/ GP16(EC_SW)
蜂鸣器Q2(N-MOSFET)低边开关 + D2 续流二极管GP17(BUZZ)
风扇Q3(N-MOSFET)低边开关 + D3 续流二极管GP21(FAN)
NeoPixelU2(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 窗口分析

R0V@90WI@90W超限项结论
3.5Ω17.7V5.07A电流超 5A
4.0Ω19.0V4.74A✅ 窗口下限
4.16Ω19.3V4.65A✅ 窗口上限
4.5Ω20.1V4.47A✅ 可用 90W,电压/电流余量大

可见 100W 电源下,R0 的可用窗口极窄(4.0~4.16Ω),超出此范围则受限于电流或电压上限,无法达到满功率。但对于实际使用,加热到 100% 设定功率仅在升温初期短暂存在,稳态恒温时功率需求远低于此值,因此窗口窄的考量主要影响升温时间,不影响恒温稳定性

65W PD 电源(可用 ~60W)的 R0 窗口分析

R0V@60WI@60W结论
4.0Ω15.5V3.87A
5.0Ω17.3V3.46A
6.0Ω19.0V3.16A
8.0Ω21.9V2.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)60W23.8V2.53A✅ 电压/电流均有余量,60W 可维持
100W (可用 ~90W)90W29.1V3.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
功率监测INA22616 位 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.618Ω,满功率推荐 59Ω),无需手动校准
  • 闭环功率限制:实测功率超过设定阈值时自动削减 PWM,保护电源不 overload,实测功率恢复后逐步释放
  • 电压校准在线学习:自动修正硬件偏差(分压电阻容差、PWM 电平漂移),校准系数持久化到 EEPROM
  • 实测电阻前馈钳制:基于 INA226 实测 V/I 计算真实电阻,钳制输出电压防止 R_est 偏大导致功率超标

RP50 的优势

  1. 加热台 + 回流焊二合一 — 手动模式设定温度恒温,回流焊模式按标准曲线自动焊接。恒功率特性使回流焊升温速率在全温度范围内保持线性,曲线跟踪更准确
  2. 真正的闭环恒功率 — 基于 INA226 + PL5501 的实时功率闭环,不是简单的「温度偏差→PWM」开环控制
  3. 全程数据可视化 — 1.96 寸彩屏实时显示温度、电阻、电压、功率,回流焊模式可显示实时温度曲线图
  4. 安全保护齐全 — 过温、过流、过压、过功率、传感器故障、电阻异常共 6 重保护,硬件看门狗 2 秒超时自恢复
  5. 交互体验完善 — 旋转编码器 + 按键操作,机械电表式数字滚动动画,6 套配色主题,RGB 灯效,蜂鸣器音效反馈
  6. 参数全可调 — 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 → 紧急停机(防止无效值导致满功率加热)
  │     ├── 温度 &gt; 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 &gt; 阈值 → 削减 PWM)          I_LIMIT = 5A × (PWM/255)
                              ↓
                     电压校准补偿(在线学习 m_voltageCalibScale)

核心算法代码介绍

1. PID 控制算法(三段式功率策略)

核心逻辑位于 HeatingControl::updatePID(),根据当前温度偏差分三段处理:

(1)大温差(ΔT > 10°C)— 全功率快速升温

if (error &gt; m_config.fastHeatRange + TEMP_EPSILON) {
    // 软启动三阶段(limitedPower = powerLimit × 0.95)
    unsigned long elapsed = millis() - m_softStartTime;
    if (elapsed &lt; 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 &lt; 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 &gt; 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 &gt; 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 &gt;= 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 &amp;&amp; m_state.power &lt; 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 &gt; 35.0f || m_state.currentTemp &lt; 10.0f) { /* 重置 */ return false; }

    // 阶段2: 传感器数据有效性检查(必须有足够负载电流)
    if (m_state.current &lt; CURRENT_MIN_VALID || m_state.loadVoltage &lt; VOLTAGE_DROP_MIN_VALID) return false;

    // 阶段3: 单次电阻测量与有效性检查(R = V/I,范围 2.6~18Ω)
    float r = m_state.loadVoltage / m_state.current;
    if (r &lt; RESISTANCE_MIN_VALID || r &gt; RESISTANCE_MAX_VALID) { /* 重置 */ return false; }

    // 阶段4: 多样本累积(抗噪声/瞬态干扰,10 次采样,10s 超时)
    m_coldCalibSampleSum += r;
    m_coldCalibSampleCount++;
    if (m_coldCalibSampleCount &lt; 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 &lt; RESISTANCE_MIN_VALID || r0 &gt; 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;

    // 更新所有高于室温的温度点(&gt;50°C),保持曲线形状
    for (int i = 0; i &lt; g_curveReflow.curve.pointCount; i++) {
        if (g_curveReflow.curve.points[i].temperature &gt; 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 &lt; 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)阶段说明
025起始点(室温)
60150预热结束
120150保温结束(保温 60s)
180220升温至峰值
210245峰值温度
240245峰值保温结束(30s)
300150冷却阶段
360100冷却完成

> 最大升温速率默认 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

实物图

加热台1.jpg

实物图1.jpg

实物图2.jpg

实物图3.jpg

实物图4.jpg

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
ec.3mf
13
2
main_8_8.3mf
1
3
fan_8_8.3mf
0

附件

序号文件名称下载次数
1
用户界面.mp4
5
2
firmware.uf2
14
3
rp50-v2.0.rar
28
4
加热示范和简单安装说明.mp4
8
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航