工程作者:666edaer
这位小伙,花70元,做了一个可控温的加热台!
别看它成本低
但该有的功能,却一点不少↓
-
可控温:室温~270℃;在200~270℃时,精度±5℃;满足日常焊接
-
LCD屏:实时显示当前温度、设定温度(按钮设置)
-
单环PID控温:更节能
-
输入:220V
-
最大输出功率:300W
-
有最大功率限制,能避免跳闸
-
支持断电保存数据
相信这时,你会有和小编同样的疑惑。
居然满足了基本功能?!
所以,作为个人玩家,他是如何节约成本的??
作者减去了晶振、复位键、EEPROM的硬件成本。只保留了关键的光耦、可控硅、保险丝等设计。
目的是让加热台有基本的稳定性。
但是,等等!
没有EEPROM?!那咋实现断点保存和最大功率限制?
相信有些创友已经想到了。
硬件不够,软件来凑,作者通过内部Flash模拟EEPROM,从软件层面补足了硬件缺失的部分,这也是比较常见的成本控制方式。
除此之外,作者还通过定时器中断,从零手动PID调参,实现了温度加热快,精准性高的功能。
从工作量上来看:不如淘宝上直接买一个80元的加热台。因为它和实验室里用的一模一样。
但是,从软硬件实现上看,这是一个很有复刻学习价值的低成本方案!
最有意思的是,你还能在这个方案中,看到STM32是如何被“榨干”的!
接下来,咱详细瞅瞅它的设计方案!
加热台基于STM32F103C6T6和光耦可控硅设计。这里,作者设计了3块PCB电路板和1块面板。
设计图如下:
尺寸说明:
-
加热台长宽高10*7.3*7 cm
-
PCB用嘉立创EDA设计,其尺寸支持免费打样
电路工作原理,一句话总结就是:
由光耦和可控硅控制电源通断,来调控PTC加热板的加热功率以保持特定温度。温度由热电偶采集。
如何提供快速/精准的控制温度条件?
如何设置最大功率限制?
接下来,我们分析一下这个光耦可控硅电路设计。
可以说,没有这个电路模块,PID调得再精准,都没用!
1.1 光耦与继电器的比较
继电器和光耦都能做到强电弱电隔离、以小电流控制大电流,我为什么要用光耦可控硅呢?
如果只是控制开和关,完全可以使用继电器,当我拆开家里的小熊电炖盅时(顺手的事),看到里面的用的就是Ronway继电器。我认为用继电器也完全没问题,成本也更低,但是存在以下问题:
①继电器弹簧片的释放和吸合需要10ms的延时,所以PWM频率不能过高;
②PWM频繁的开关会使继电器内部触点更快地磨损;
③如果在交流峰值处闭环或断开,容易产生电火花,电路噪音更大。
所以从寿命、开关速度、噪音等角度考虑,我使用光耦可控硅方案。
1.2 过零光耦+双向可控硅电路工作原理
这里的工作过程是——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低电平时,光耦在下一次过零时断开断开,导通的可控硅也随之断开,流向加热片的电流中断。
光耦和双向可控硅如何选型呢?
光耦主要考虑其峰值击穿电压,也称为断态输出端电压V_DRM,CT3063击穿电压为600V,大于市电波幅1.414*220V=310V,符合要求。
双向可控硅选型则考虑重复峰值阻断电压,和最大通态电流。BT138-800E的阻断电压800V,最大电流12A,满足加热台功率要求。
要是可控硅误触发,怎么破?
此时可以考虑并联一个RC电路,起到缓冲作用↓
1.3 RC电路
若被控制的电压变化dV/dt过快,超过了可控硅的断态电压临界上升率,也会使可控硅误触发。并联的RC支路可以起到缓冲的作用。
但由于PTC加热板几乎是阻性负载,所以也可以不添RC吸收回路。
RC串联的复阻抗Z = R-j*[1/(2πfC)],由于电容值非常小,故交流电不会通过电容短路。
总结
这个电路的本质,就是一个由单片机控制的、无触点的“高速电子开关”。它快速、精确地控制通往加热片的220V交流电的“通/断比例”,通过极其频繁的开关来模拟一个连续可调的功率输出。
搞定了光耦可控硅电路设计,就到了最重要的控温设计
2.1 K型热电偶特性与温度采集
K型热电偶中,正极通常为镍铬合金,负极通常为镍硅合金,在两种金属连接点处存在温度差时,会产生热电势。
由于该电势值非常小,故使用MAX6675,可将温度的电压信号转换成12位数字量,精度为0.25℃。
MAX6675内部自带冷端补偿,焊接时不要让芯片烫太久。我刚焊上去后几天试着测室温竟是40℃,过了半个月后测温度又正常了,非常神奇。作者没有温度计进行测量和校准,故温度结果暂以MAX6675读出的结果为准。
2.2 PID控温调参建议
由于从加热到热量传递到加热片表面具有5s左右的延迟,属于高延迟系统。
因此,初始的p,i,d都设为0,先调节p至能较快速达到目标温度而不强烈震荡,然后调大d值减小震荡。
i值可不调,i过大会加剧温度波动。
2.3 加热模型与改进方向
这里用经典的PID算法,温度波动±5℃。
为了提高控温精度,建议使用从模糊PID控制算法。
要应用模糊PID,首先需要建立系统的数学模型。本加热台的物理模型基本符合带纯延迟的一阶惯性对象,其传递函数如下:
式中:
-
K为系统增益
-
T为惯性时间常数
-
τ为纯滞后时间常数
具体实施时,通过测量加热台的升温曲线,即可辨识出K、T、τ这三个关键参数。在此基础上,就能使用模糊PID控制算法,对温度进行分段控制。
最后再简单说一下电源部分的设计↓
使用HLK-PM03模块,将220V转为3.3V给单片机供电。
注意加装保险丝,R1为压敏电阻,防雷击。R2防输出端短路。由于对电压稳定性没有太高要求,所以未加上安规电容和共模电感。
由于加热台所需的基础功能过于简单,可直接裸机编程。也不需要什么freeRTOS或什么任务调度库,用中断即可。
代码思路如下:
-
让定时器TIM1每隔1s产生一个中断,并测量温度
-
温度测完后,新的温度值显示在液晶屏上,并计算一次PID控温,然后设置定时器TIM2输出新的占空比
-
最后MCU回到低功耗
- 当按钮按下后,产生中断使MCU退出低功耗,并进行液晶屏界面更新,最后让MCU回到低功耗
①如何保证温度测量准确?
设置最高优先级为定时测温的中断,与MAX6675通信过程在中断函数中完成。
②如何避免显示屏卡主?
屏幕更新所需的时间较长,故在中断函数中只标记“需要更新液晶显示”这个中断标志位,屏幕具体切换到哪个页面,放在中断函数外执行,这样也避免了屏幕在页面更新时又进行另一个页面更新,而使显示屏卡住。
③如何保证按键灵敏度?
按键并联了电容进行消抖,同时软件上也设置了一个非阻塞性的冷却时长,避免灵敏的“温度+/-”按键与使用者的内心预期产生较大差距。
当然,软件部分,小编觉得最精彩的还是↓
如何榨干STM32的使用价值,从而做到降低成本?
①使用了STM32的内部时钟
由于未连接晶振,故STM32自动使用内部高速时钟HSI,频率8MHz。项目代码中将HSI通过PLL倍频为64MHz,作为系统的时钟源。
②使用内置Flash保持设置
项目代码中将设置的数据,循环写入在STM32C6T6内置flash的第30扇区(倒数第2个扇区)中了,可以下电后内容不丢失。循环写入能减少擦除次数,延长Flash的寿命。如果修改本项目的代码请留意不要在该扇区储存程序。
物料成本约70元,并且还会多出很多料。
电烙铁、电钻、锉刀、剪钳等加工工具约需100元。
温馨提醒:PTC发热片、螺柱螺母、电源线、220V转3V3模块等占据了加热台的主要成本,这些可在tb买。阻容等在立创商城买更合算。
开源网址: