发作品签到
专业版

基于STM32F103C6T6和光耦可控硅的可控温加热台

工程标签

5.8k
0
0
11

简介

220V可控温加热台,并有小巧的LCD屏幕显示工作状态,可通过按钮设定目标温度。

简介:220V可控温加热台,并有小巧的LCD屏幕显示工作状态,可通过按钮设定目标温度。
星火计划2024

开源协议

BSD License

(未经作者授权,禁止转载)
创建时间:2024-08-01 17:39:15更新时间:2024-11-05 11:15:08

描述

基于STM32F103C6T6和光耦可控硅的可控温加热台

 

安全警示(必看):本项目涉及高压电的使用,存在严重的安全隐患,包括但不限于电击、烧伤、火灾等。建议大家使用经过专业认证和测试的商用加热台确保安全和可靠性。

免责声明(必看):本项目仅供理论学习和交流请勿复刻或模仿本项目中的任何内容!本项目作者对于因您或他人复刻或模仿本项目而导致的任何人身伤害、财产损失或其他后果,均不承担任何法律责任。您在阅读和使用本项目,应充分了解并自行承担所有潜在的安全风险和法律责任。

 

目录:1.简介→2.功能描述→3.电路原理(光耦电路计算)→4.代码说明→5.烧录与组装→6.附件

1. 简介

特征:这是一个室温~270℃的可控温加热台,单环PID控温,精度±5℃(在200~270℃时)。输入220V,最大输出功率约300W,可限制最大加热功率。

【常规套路】主控STM32F103C6T6A,用标准库编写代码;

【玲珑小巧】长宽高10 * 7.3 * 7 cm,外壳由防水盒与六角螺柱组装;

【成本压制】包含外壳和电源线,零件成本70元;(暂不计加工成本)

【适度创新】相比同类设计,本项目无晶振,无复位按钮,有硬件加热指示灯。

原理:由光耦和可控硅控制电源通断,来调控PTC加热板的加热功率以保持特定温度,温度由热电偶采集。

目标用户:仅作者本人。需要一台“低成本、不占空间、相对安全、便于维修”的控温加热台,以满足日常低频率折腾电路板的需求。

不兼容特性:本项目虽然无需3D打印外壳,但需要在防水盒上挖槽和钻孔,以及焊接连接显示面板的10根飞线,DIY动手感极强!附件代码是在自己仅熟悉的IAR(v9.30)上编译的,ST-Link烧录。

2. 功能描述

可以限制加热台的最大加热功率,能在宿舍限电的环境下使用(危险)。

 

3. 电路原理分析

3.1. 原理图

请见附件。该文档、源代码、演示视频,在附件中也有。

3.2. 光耦可控硅电路设计

▶ 光耦与继电器的比较

继电器和光耦都能做到强电弱电隔离、以小电流控制大电流,那为什么要用光耦可控硅呢?如果只是控制开和关,完全可以使用继电器,当我拆开家里的小熊电炖盅时,看到里面的用的就是Ronway继电器。我认为用继电器也完全没问题,成本也更低,但是存在以下问题①继电器弹簧片的释放和吸合需要10ms的延时,所以PWM频率不能过高;②PWM频繁的开关会使继电器内部触点更快地磨损;③如果在交流峰值处闭环或断开,容易产生电火花,电路噪音更大。所以从寿命、开关速度、噪音等角度考虑,使用光耦可控硅方案。

▶ 过零光耦+双向可控硅电路工作原理

工作过程是,PWM高电平时,三极管S8050导通,使光耦导通。相比于普通光耦,过零光耦CT3063的导通或截止状态只会在交流电电压过零点时改变,避免了产生电火花。过零光耦在下一次过零导通后,先是220V交流主要从火线经过R3、可控硅Q1的G脚流向T1脚,经过加热片从PTC_L到PTC_N,流入零线。当R7上的电压超过可控硅的门极触发电压(V_GT>0.8V,或触发电流I_GT>10mA)后,可控硅BT138导通(相当于T1和T2短路),交流电就主要从晶闸管上流向加热片了,R3和R7上的电压降为0。PWM低电平时,光耦在下一次过零时断开断开,导通的可控硅也随之断开,流向加热片的电流中断。

光耦选型,需要考虑峰值击穿电压(Peak Breakdown Voltage),也称为断态输出端电压V_DRM(Off-State Output Terminal Voltage),CT3063击穿电压为600V,大于市电波幅1.414*220V=310V,符合要求。

双向可控硅选型,也需要考虑重复峰值阻断电压V_DRM,和最大通态电流I_T(RMS)。BT138-800E的阻断电压800V,最大电流12A,满足加热台功率要求。

▶ R5计算

R5的作用是光耦LED限流。假如忽略三极管S8050的压降V_CE,则R5=(VCC -V_F)/I_FT,其取值需要考虑以下参数:

输入触发电流I_FT(Input Trigger Current):只有电流大于该值,光耦才能稳定的触发。虽然stm32的引脚能够承受直接输出5mA的电流,但还是建议通过一颗三极管转接一下,以减小stm32的发热。

最大输入电流I_F:在Absolute Maximum Rating中可以找到该参数。输入电流也不得大于该值。

正向压降V_F:在光耦内LED上会有一定的压降

根据以上值,可以计算出限流电阻R5的取值范围。

▶ R3计算

R3的作用也是限流电阻,其取值由 峰值重复浪涌电流I_TSM(Peak Repetitive Surge Current) 决定。R3=交流电网电压峰值/I_TSM = 310V/1A = 310Ω,但由于买的电阻包中通常不包含该阻值,所以选取最近的300Ω或360Ω。

▶ R7的取值

R7是防止可控硅误触发的电阻,可断开不接。如果断开R7,当可控硅关断时,因负载电流滞后电压,可能传递一个小阶跃电压到G脚上,使可控硅误触发,结果是可控硅后的负载一直工作、无法停下。添加了R7后,相当于把G脚下拉到T1脚上了,可控硅就不那么敏感了。R7的取值比较灵活,网上方案中大到1kΩ的都有。为了少买物料,可以用和R3相同的阻值。

R3和R7电阻阻值会影响系统的电磁干扰(EMI),当R3电阻分压较大时,可控硅导通前需要T1和T2两脚之间的电压更大,电路噪声更大。

在正常工作时,R3和R7上经过的平均功率较小,但电阻需要能承受高压。所以建议选择插件电阻,或把多个贴片电阻串联。我实际测试中使用的2512封装,长时间工作后R3会有较明显的发热,R7和可控硅没有明显发热。

注意:以上R3、R7等计算我也不是很清楚,自己手头也没有示波器,最好还是有机会了测一下可控硅后的信号。

▶ RC电路

若被控制的电压变化dV/dt过快,超过了可控硅的断态电压临界上升率(Critical rate of rise of off-state voltage),也会使可控硅误触发。并联的RC支路可以起到缓冲的作用。由于PTC加热板几乎是阻性负载,所以也可以不添RC吸收回路。RC串联的复阻抗Z = R-j*[1/(2πfC)],由于电容值非常小,故交流电不会通过电容短路。

▶ 参考文献:

[1] 曹晓伟. MOC3061系列光电双向可控硅驱动器[J].国外电子元器件,1996,(12):2-4.

[2] Parameter list for SCRs, Triacs, AC Switches, and Diacs 

 

3.3. 控温设计

▶ K型热电偶特性与温度采集

K型热电偶中,正极通常为镍铬合金,负极通常为镍硅合金,在两种金属连接点处存在温度差时,会产生热电势。由于该电势值非常小,故使用MAX6675,可将温度的电压信号转换成12位数字量,精度为0.25℃。

MAX6675内部自带冷端补偿,焊接时不要让芯片烫太久。我刚焊上去后几天试着测室温竟是40℃,过了半个月后测温度又正常了,非常神奇。作者没有温度计进行测量和校准,故温度结果暂以MAX6675读出的结果为准。

▶ PID控温调参建议

由于从加热到热量传递到加热片表面具有5s左右的延迟,属于高延迟系统。因此,初始的p,i,d都设为0,先调节p至能较快速达到目标温度而不强烈震荡,然后调大d值减小震荡。i值可以不用调,i过大会加剧温度的波动。

▶ 加热模型与改进方向

本项目目前使用的是经典的PID算法,温度波动在±5℃。为了提高控温精度,还可以进一步改进,使用从模糊PID控制算法。

本加热台的物理模型基本符合带纯延迟的一阶惯性对象,温度G关于时间s的函数满足公式:

式中,K为系统增益、T为惯性时间常数、τ为纯滞后时间常数。通过测量加热台的温度随时间变化的曲线,可以确定这三个参数,然后使用模糊PID控制算法,对温度进行分段控制。

 

3.4. 电源

使用HLK-PM03模块,将220V转为3.3V给单片机供电。注意加装保险丝,R1为压敏电阻,防雷击。R2防输出端短路。由于对电压稳定性没有太高要求,所以未加上安规电容和共模电感。

 

4. 代码架构与问题记录

4.1. 代码整体思路

由于加热台所需的基础功能过于简单,可直接裸机编程,也不需要什么freeRTOS或什么任务调度库,用中断即可。让定时器TIM1每隔1s产生一个中断,测量一次温度。温度测完后,将新的温度值在液晶屏上显示出来,并计算一次PID控温,然后设置定时器TIM2输出新的占空比。最后MCU回到低功耗。当按钮按下后,也产生中断使MCU退出低功耗,并进行液晶屏界面更新,最后让MCU回到低功耗。

为保证温度测量准确,定时测温的中断拥有最高优先级,与MAX6675通信过程在中断函数中完成。而屏幕更新所需的时间较长,故在中断函数中只标记“需要更新液晶显示”这个中断标志位,屏幕具体切换到那个页面放在中断函数外执行,这样也避免了屏幕在页面更新时又进行另一个页面更新,而使显示屏卡住。

按键并联了电容进行消抖,同时软件上也设置了一个非阻塞性的冷却时长,避免灵敏的“温度+/-”按键与使用者的内心预期产生较大差距。

4.2. 工程文件说明

这是工程文件夹,真正需要用到的只有下图方框中四个文件夹内的代码,其它的是IAR和VSCode生成的文件。如果用IAR可以直接打开工程;如要移植到Keil,需要将四个文件夹中的代码创建一个工程,并将core_cm3.c和.h文件为替换Keil环境支持的。

4.3. 使用STM32的内部时钟

由于未连接晶振,故STM32自动使用内部高速时钟HSI,频率8MHz。项目代码中将HSI通过PLL倍频为64MHz,作为系统的时钟源。

4.4. 使用内置Flash保持设置

项目代码中将设置的数据,循环写入在STM32C6T6内置flash的第30扇区(倒数第2个扇区)中了,可以下电后内容不丢失。循环写入能减少擦除次数,延长Flash的寿命。如果修改本项目的代码请留意不要在该扇区储存程序。

5. 烧录与组装

5.1. 烧录

IAR编译好的固件“HeaterC6T6.hex”在“./Debug/Exe/”路径下。

断开220V市电,连接好ST-Link的3V3、GND、SWCLK、SWDIO四根线,插到电脑上。可能是由于代码中开启了中断服务函数,所以烧录一次后,第二次就烧不进去了。本加热台为节省物料,电路中没有给stm32留复位按钮,所以网上的“点击烧录后短按一下复位按钮”的方法就用不了了。找到的解决方法是:在ST-Link插上电脑后,赶在程序进入中断前(main中第一句delay()给大家留了充分的时间),把程序给烧进去或把flash给擦了。

若在IAR上烧录,发现工程的Reset方法得设置为Core(默认为system(default))。不然会报错“fatal error: initial reset failed, please check project settings”。

若使用“STM32 ST-LINK Utility”软件进行烧录:ST-LINK插上电脑后赶紧点击“Target - Erase Sectors...”把程序擦除了。如果擦除不了就点“Target - Option Bytes...”,先把flash的readOnly解锁,如果一次解锁不了就再解锁一遍,然后再擦。之后烧录就不会报错了。

5.2. 零件成本

物料成本约70元,并且还会多出很多料。电烙铁、电钻、锉刀、剪钳等加工工具约需100元。

PTC发热片、螺柱螺母、电源线、220V转3V3模块等占据了加热台的主要成本,这些可在tb买。阻容等在立创商城买更合算。

 

5.3. 组装中遇到的问题记录

  • 热电偶固定:我选择将裸露的热带偶金属丝用高温胶带直接粘到加热台反面,所以测得的是下表面的温度。热电偶多出来的线被卷起来塞在第一层盖板上的空间。热电偶也会将很多热量传递到下面。
  • 焊盘调整:接加热台和电源线的焊盘的孔要调大一点!
  • 防水盒挖槽孔:使用了60W冲击钻3~5mm的钻头钻孔,先钻出一个大致的形状,再用电子剪钳剪断,用锉刀把槽孔搓光滑。
  • 翘板开关:防水盒3mm太厚了点,翘板开关后的夹片得稍微剪短一点。有的翘板开关是带灯的,需要将零线连接到开关的第三个脚上才能亮,本设计中的开关只用了两个引脚,故开关上的灯不亮。
  • 液晶屏:淘宝上有的屏幕是BGR的,代码中得反着设置成BGR才会显示成RGB。
  • 显示面板的飞线:焊接要耐心一点,铜线上好锡后再去焊到焊盘上。任意一根线没焊牢,最终都会出问题。
  • 按键按着后陷入外壳内:在面板后垫一个纸方块,防止面板变形位移。
  • 紧固件:可用铁制的六角螺柱,比铜传热性差一些。螺柱、螺钉、螺母都是M3的。
  • 绝缘:给加热板的电源线套一层热缩管,加热台面可以再贴一层耐高温胶带

 

从工作量上来看:不如淘宝上直接买一个80元的加热台,和实验室里用的一模一样。

如果加热20min,短期内下层盖板的温度几乎不变。若连续加热3h,下层盖板中心的温度上约能升到60℃,摸上去有点小烫,上层盖板温度更高。目前加热台能够在高温长期工作,但散热还需改善。

6. 致谢

感谢嘉立创2024年星火计划提供了80元的元器件支持!让我第一次尝试打造了一个完整的作品。项目中存在许多错误和不规范的地方,还请大家指正。

[易于收纳和打包带走]

设计图

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

BOM

暂无BOM

附件

序号文件名称下载次数
1
功能验证视频.mp4
94
2
已编译固件_241102.hex
72
3
加热台说明书241102.pdf
77
4
源代码_241102.zip
157
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航