排版有些问题,建议在这个网址浏览阅读:
[https://oshwhub.com/yANgZEN/buck-qu-do](https://oshwhub.com/yANgZEN/buck-qu-do)
# 1、项目功能介绍
在使用焊台中,经常忘记关电源使烙铁通宵加热。
然后就会**浪费电,****安全隐患,烙铁头氧化。**
鉴于以上原因,我着手开发该焊台。
## 首先,为了实现该功能要进行方案论证:
#### **1.手柄内加入震动开关或陀螺仪。**
这种方法在现成DIY的T12手柄里面就有,实现简单,但T12烙铁头比较贵。
#### **2.在烙铁架上面做霍尔感应或重力感应。**
现有产品有在烙铁架上面加装霍尔感应来检测烙铁是否放置在烙铁架,实现休眠功能,但定制烙铁架的也成本也高。
那难道就没有简单通用的方法?下面来讲解我的解决方法
#### **3.检测烙铁头功率、温度,对比放置在烙铁架时的热阻**
首先来科普下什么是【热阻】?
首先了解一下散热器的原理:将热源的热量分散开来,使热更快地传递到空气中,完成散热。
然后回来看烙铁头,是不是相当于一个散热面积很小的散热器?
衡量散热器之间的差异有一个参数,叫热阻,单位是°C/W。其实功率器件技术手册都有说明。
![](//image.lceda.cn/pullimage/XPvWYQUmq4hCO1mSi5dItY2XRPqaAGCCgxTzVanM.png)
如上图,第一行是到外壳的热阻。比如外接了良好散热,那么每有1W的功率,内部温度上升0.58度。
第二行就是结环热阻,很拗口,但不是我翻译的。望文生义,内部对静置空气的热阻。
就是不外接散热时。每有1W的功率,内部温度上升62度。
![](//image.lceda.cn/pullimage/QLI3zIDwGshUa6U7Pkxz0LPFYlKyPkehQDGjSpKX.png)
**由此可见温度和功率是有一个正比例的关系。**
然后是成本上的考虑,测功率只要测电流电压。测温度这是焊台的分内事。不需要额外的花销。
当然,如果发热芯电阻比较稳定的话,可以用欧姆定律换算功率。不需要测电流。
# 2、电路硬件讲解
一般教学上会把全部电路都讲,但有一些很常见的电路就没必要再重复造轮子。
人机交互部分见我上一届立创大赛的工程。基本是照搬的。
下面来讲与众不同的。
## 降压驱动部分
首先,如果是交流电源驱动烙铁一般是可控硅,如果是直流则用场效应管。这里是直流供电,选场效应管。
然后936是有两种发热芯的。分别为A1321和A1322。
前者发热芯电阻会随温度变化从3~10欧姆,而后者为15欧姆。
高下立见,前者功率标识为60W,后者功率标识为45W。
但4欧姆的冷态电阻直接用PWM驱动会对电源造成极大的冲击。导致电源输出保护。
此时我想到的就是BUCK降压电路。由于电感会限流,对电源的冲击会小一点。
![](//image.lceda.cn/pullimage/tQixWhzU36TM5SdOuOHs4S4zJbjoTq0sTYkjxUQt.png)
问题又来了,如果再搭配IR2103之类的电荷泵驱动上臂的话是做不到100%占空比的,就是说不能全功率运行。
![](//image.lceda.cn/pullimage/8dl0YJbmNysBrcwC2ANmRRonVpxNm1hOJyyzLoek.png)
怎么办?我们尝试把BUCK电路进行上下颠倒,见下图。
![](//image.lceda.cn/pullimage/uHCjhUY58BrYu61eC5tNNTKp3y9wxvaQxlvrUnUg.png)
可以看出整个输出部分是浮地的,仅是一端接到24V电源上。
而且让T1一直导通也是可行的了。
D12,C24是为了不安装C12,C13所添加的峰值检测。实际可以进行取舍。
ACS712是霍尔效应电流传感器,如果用采样电阻加差分放大就起码需要5个电阻了,而该芯片外围才2个电容。体积得到缩小。
LCSC有出售,建议去翻看技术手册。脚对脚兼容而且更便宜的有[CC6902](https://item.szlcsc.com/470458.html)。
## 恒流放大部分
上面提到烙铁头有两种。
A1321是PT100电阻来做温度传感器的。测电阻就需要电源,所以U4.2构成一个恒流源电路。
因为用了NMOS,响应会滞后,所以相位补偿电容C19就必须要焊接,不然就会震荡。(调节RV2使得输出电流为200uA)
而A1322烙铁头是K型热电偶,4096uV/100°C。
可见,当300°C时才12mV,这对于单片机的ADC来说就太难分辨具体温度。
于是就需要U4.1做同相比例放大。这里取巧的一下,用3个常见的电阻构成了100倍的放大倍数。
有兴趣的同学可以自己计算一下,其实有9.9kΩ的电阻,LCSC是有库存的,只是我没库存。
![](//image.lceda.cn/pullimage/5elHVauEZjQxpgkQRYx4UWMuVVIqFNwtWSwqxyD3.png)
话说这个GS8552是上一届比赛的赞助商之一,咳咳咳~~~讲多了。
![](//image.lceda.cn/pullimage/wXPM54VsCUI4NgUvmlv1NUwvLIXb6c20mo8I5fuB.png)
还是对比一下吧
![image.png](//image.lceda.cn/pullimage/sF9amVkdDWXkL5xVRDE8mHKeTwWVAyOqBdO5myFQ.png)
![image.png](//image.lceda.cn/pullimage/cBAEOghsJ2mlIJ6pl4inMf34FZACUyPpFn3U9gUP.png)
虽然很想用富满赞助商的运放,但富满没有精密运放的产品线。
从上图可以看出两个的输入偏置电压相差足足1000倍。
【现实运放都不是理想的,正常工作时同相和反相输入端是会有电压差的,这就是输入偏置电压】
如果用LM358来做放大的话,按照技术文档的参数估算可能会偏差个100度。
而且这个运放还有个特性,就是轨对轨输入输出,能充分把单片机的ADC动态用起来。
# 3、单片机软件讲解
## 人机交互代码
LCD1602都会点亮吧???我表示怀疑【引战】
如果要灵活用起来首先建立一个环形缓冲
``` cs
uint8_t lcd_buf[256];
uint8_t lcd_load_head=0;
uint8_t lcd_load_tail=0;
```
然后把待发送数据存起来
``` cs
void lcd_write(uint8_t dat,uint8_t cmd)
{
lcd_buf[lcd_load_head++]=(dat>>4)|(cmd?0x10:0);
lcd_buf[lcd_load_head++]=(dat&0x0f)|(cmd?0x10:0);
}
```
然后定期调用发送数据,由于我这里有按键复用,所以先读取按键再发送
``` cs
void lcd_maintain()
{
lcd_dat_load(0xff);
GOIO_input_init();
KEY_ODR=0;
asm("nop");asm("nop");
asm("nop");asm("nop");
key_load();//读取按键
KEY_ODR=1;
if(lcd_load_head==lcd_load_tail)
return;
EN_ODR=1;
GOIO_output_init();
lcd_dat_load(lcd_buf[lcd_load_tail++]);
asm("nop");asm("nop");
asm("nop");asm("nop");
EN_ODR=0;
}
```
看完以后你还敢说你以前会点LCD1602?
## PID代码
``` cs
void pid_maintain(float TEMP_tiger,float POWER_tiger)
{
static PID pid_P = {0.45 , 0.15 , 0.01 , 0, 0, 0, 50};
static PID pid_T = {3.75 , 0.02 , 0.02 , 0, 0, 0, 50};
static float temp_P=0,temp_T=0;
static uint16_t PTC_temp[4]={0};
static uint8_t PTC_num;
static float pwm=0;
if(TEMP_tiger==0||POWER_tiger==0)//输出为零,清除所有参数
{
Tim1_pwm_set(0);
pid_P.ek_1=0;
pid_P.ek_2=0;
pid_T.ek_1=0;
pid_T.ek_2=0;
PTC_temp[0]=0;
PTC_temp[1]=0;
PTC_temp[2]=0;
PTC_temp[3]=0;
pwm=0;
return;
}
if(PTC_temp[PTC_num]==0)//平均值预加载
{
PTC_temp[0]=
PTC_temp[1]=
PTC_temp[2]=
PTC_temp[3]=
adc_get_ptc();
}
else
{
PTC_temp[PTC_num++]=adc_get_ptc();//4次平均,消除噪声
}
PTC_num&=3;
temp_P=PID_Increase(&pid_P,0.0001f*adc_get_uout()*adc_get_iout(),POWER_tiger*10);
temp_T=PID_Increase(&pid_T,(PTC_temp[0]+PTC_temp[1]+PTC_temp[2]+PTC_temp[3]+2)/4,TEMP_tiger);
if(temp_T400)
pwm=400;
if(pwm<0)
pwm=0;
Tim1_pwm_set((uint16_t)pwm);
}
```
注意这个是相对PID。
这里两个变量互相限制,核心算法是取最小值来输出,同时稳定功率和温度。
## 蜂鸣器音乐
蜂鸣器音乐的代码之前有人想要,但解码部分实在太冗长,还是自己看代码吧。
网上也有很多相关资料,可以帮助理解。
## 平台版本
由于这个系列的单片机非常火爆,电源、外设脚对脚兼容的芯片非常多,而且都比较便宜(涨价前)。
为了学多一点,会进行多款单片机间移植。
STM8平台的代码我也写了,奈何8KB的flash不够我挥霍。
所以完整功能的只在HK32F030MF4P6了,附件有对应代码。
感谢航顺陈工的技术支持,我算是比较早交作业的,如果外设驱动不起来的可以借鉴我的代码,但代码二次开源时别把我忘了。起码把该网页链接贴上。
注意HK32F030M烧写时不要焊接C15,因为ADC和烧写口复用,滤波电容会把烧写数据旁路,切记。
## 操作流程说明
![BUCK936运行流程 \(1\).png](//image.lceda.cn/pullimage/Gb04G6kk0ePQsBalnWMkXRozTxymLZ9xrbAaKXtw.png)
上面是逻辑功能草图,下面来对照1602的屏幕来讲解。
![d33c4cfac4ac931379c9bb7c4da9557.jpg](//image.lceda.cn/pullimage/IiLhNgbEEeqH7TyK5nnuyhyirreKMbrVBodBCJhY.jpeg)
![9c9e7a04ce78df51781539407ea2b8e.jpg](//image.lceda.cn/pullimage/lCw92CuEyjUgnsiFrUFZhT9j2AEQhguFVIQ0ymTw.jpeg)
# 4、实物图片
![裸板.jpg](//image.lceda.cn/pullimage/xPPKriJ4SAMU4zY2IGopd18w8OoXucV0SpAlpiwD.jpeg)
C19在生产文件中已经修正,放心使用。
因为电解电容库存不够了,所以把剩下的电容焊接到重要位置上,影响不大,因为好几个都是并联。
D3也是没SS56了,两个SS36顶上。
注意12V风扇接口,因为不打算PWM调屏幕背光,所以仅焊接了风扇部分。
![内部.jpg](//image.lceda.cn/pullimage/eFqCG3nfXx80vNG021Z8eUdHx6LBS1t7NdgVVvgy.jpeg)
安装图,这里式由于外壳太厚了,导致航空座上不了螺母,模型已经修正,而且5mm的壁厚有点偏厚了。
后续会重新设计个更薄的外壳,降低3d打印成本。如果是PLA的建议还是打这种厚度,填充度可以降低。
R26,R27,C10是给STM8预留的,非STM8不用焊接。
![正面.jpg](//image.lceda.cn/pullimage/XrlELs0kvGKqQiekNyagKDY0N3Poowh9Wxvt4RA6.jpeg)
特意在底部预留风道设计,把发热元件放置一边角落。
(如果追求效率可以把电感更换为同尺寸,同规格的铁硅铝磁环,额定电流更大,铁损更低。)
另一边是运放,热敏,蜂鸣器,确保尽量不受温度干扰同时让蜂鸣器的声音透过栅格出来。
# 5、关于PCB文件
这里用的是EAGLE9.6,不是我不想给源工程,即使给了,也是只能看,不能动。【建议在EDA的原理图这里重新生成PCB来绘制】
正版软件一年费用是500美刀,免费版本只能8x8cm,教育版申请要开学校盖章证明。
盗版软件还停留在V7版本,。
我这里项目是10x7cm。所以业余的只能老老实实换一个软件重新画。
除了自带封装库好看,而且流畅度没得说。
没体验过LCEDA专业版,不知道流畅度比不比得过。但自带封装一定不比EAGLE精致。
# 6、硬件成本
936烙铁手柄淘宝有11元包邮的,自己找一下。
烙铁头有2元单个包邮的,10元一套包邮,建议尝试下找到适合自己的再买些贵点的烙铁头,不易氧化。
我的推荐顺序:刀,马蹄,凿,尖。尖头比热容小,经常焊不动。而且不好挂锡。
# 7、电源选择
提个功率计算公式:P=U^2/R。也就是30V,15Ω时,最大功率60W。
所以可以提高输入电压来提高功率,该电路极限输入电压为35V。
特别是A1322发热芯,24V下也就40W。
建议买20元包邮的24V3A铁壳工业电源,安全有保障点。
如果一定要买拆机裸板电源建议先看高压滤波电容有没有1uF每瓦。不然功率很可能是虚标的。
软件上有最大功率限制,假设你的电源是24V2A的话,就把最大功率设置为50W,防止电源保护,输出电压降低。
正常使用时功率接近20W,主要是刚启动的几十秒里会全功率升温到设定温度。如果不是闷在盒子里的话对流散热不成问题。
# 8、软件更新
V02:
1. 菜单添加A1321,A1322切换
2. 菜单界面显示温度
3. 菜单10分钟无操作进入休眠画面
ID |
Name |
Designator |
Footprint |
Quantity |
1 |
220u/35V |
C1,C4,C5,C6,C9,C12,C13 |
E3,5-8 |
7 |
2 |
104 |
C2,C3,C8,C16,C17,C18,C20,C23,C25,C26,C27,C28,C14,C15 |
C0805 |
14 |
3 |
102 |
C7 |
C0805 |
1 |
4 |
106 |
C11 |
C0805 |
1 |
5 |
103 |
C19,C22 |
C0805 |
2 |
6 |
10u/50V |
C21,C24 |
E2-5 |
2 |
7 |
SS36 |
D1 |
SMA |
1 |
8 |
LL4148 |
D2,D4,D5,D12,D6,D7,D8,D9,D10,D11,D13 |
MINIMELF |
11 |
9 |
SS56 |
D3 |
SMC |
1 |
10 |
MA05-1 |
J4 |
MA05-1 |
1 |
11 |
L0630 47uH |
L1 |
DR73 |
1 |
12 |
0R |
L2,L3 |
R0805 |
2 |
13 |
47uH |
L4 |
ED16 |
1 |
14 |
27k |
R1 |
R0805 |
1 |
15 |
3k |
R2 |
R0805 |
1 |
16 |
10k |
R3,R14,R15,R18,R20,R8,R9,R11,R12,R25,R26,R27 |
R0805 |
12 |
17 |
1k |
R4,R13,R16,R21,R22,R23,R7,R10,R24 |
R0805 |
9 |
18 |
10R |
R5,R6 |
R0805 |
2 |
19 |
100R |
R17 |
R0805 |
1 |
20 |
1M |
R19 |
R0805 |
1 |
21 |
10k |
RV2,RV1 |
SM-42/43A |
2 |
22 |
6888K |
T1,T2 |
TO252 |
2 |
23 |
AO3400 |
T4,T3,T5,T6 |
SOT-23 |
4 |
24 |
XL1509 |
U1 |
SO08-IRF |
1 |
25 |
7805T |
U2 |
TO220H |
1 |
26 |
LM1117_33 |
U5 |
SOT223 |
1 |
27 |
ACS712-05 |
U6 |
SO08 |
1 |
28 |
EG2131 |
U7 |
SO08 |
1 |
29 |
MSTBV3 |
J1 |
MSTBV3 |
1 |
30 |
GS8552 |
U4 |
SO08 |
1 |
31 |
F/QMX |
BUZZ |
F/QMX |
1 |
32 |
105 |
C10 |
C0805 |
1 |
33 |
LCD1602 |
J2 |
LCD2BY1 |
1 |
34 |
MA04-2 |
J3 |
MA04-2 |
1 |
35 |
10K |
NTC |
P642 |
1 |
36 |
31-XX |
S1,S2,S3,S4,S5 |
B3F-31XX |
5 |
37 |
HK32F030M |
U3 |
SSOP20 |
1 |
38 |
12V_FAN |
J6 |
22-23-2021 |
1 |
展开
40
78
收藏到专辑