标准版
#第六届立创电赛#BUCK936数控焊台

创建时间:2年前

视频

  • 异常检测.mp4

  • 菜单设置.mp4

  • 等待唤醒.mp4

描述

<p>排版有些问题,建议在这个网址浏览阅读:</p> <p><a href="https://oshwhub.com/yANgZEN/buck-qu-do" target="_blank">https://oshwhub.com/yANgZEN/buck-qu-do</a></p> <h1>1、项目功能介绍</h1> <p><span class="colour" style="color:rgb(0,0,0);">在使用焊台中,经常忘记关电源使烙铁通宵加热。</span></p> <p><span class="colour" style="color:rgb(0,0,0);">然后就会<strong>浪费电,</strong></span><strong><span class="colour" style="color:rgb(0,0,0);">安全隐患,烙铁头氧化。</span></strong></p> <p><span class="colour" style="color:rgb(0,0,0);">鉴于以上原因,我着手开发该焊台。</span></p> <h2>首先,为了实现该功能要进行方案论证:</h2> <h4><strong>1.手柄内加入震动开关或陀螺仪。</strong></h4> <p>这种方法在现成DIY的T12手柄里面就有,实现简单,但T12烙铁头比较贵。</p> <h4><strong>2.在烙铁架上面做霍尔感应或重力感应。</strong></h4> <p>现有产品有在烙铁架上面加装霍尔感应来检测烙铁是否放置在烙铁架,实现休眠功能,但定制烙铁架的也成本也高。</p> <p>那难道就没有简单通用的方法?下面来讲解我的解决方法</p> <h4><strong>3.检测烙铁头功率、温度,对比放置在烙铁架时的热阻</strong></h4> <p>首先来科普下什么是【热阻】?</p> <p>首先了解一下散热器的原理:将热源的热量分散开来,使热更快地传递到空气中,完成散热。</p> <p>然后回来看烙铁头,是不是相当于一个散热面积很小的散热器?</p> <p>衡量散热器之间的差异有一个参数,叫热阻,单位是°C/W。其实功率器件技术手册都有说明。</p> <p><img src="//image.lceda.cn/pullimage/XPvWYQUmq4hCO1mSi5dItY2XRPqaAGCCgxTzVanM.png" alt=""></p> <p>如上图,第一行是到外壳的热阻。比如外接了良好散热,那么每有1W的功率,内部温度上升0.58度。</p> <p>第二行就是结环热阻,很拗口,但不是我翻译的。望文生义,内部对静置空气的热阻。</p> <p>就是不外接散热时。每有1W的功率,内部温度上升62度。</p> <p><img src="//image.lceda.cn/pullimage/QLI3zIDwGshUa6U7Pkxz0LPFYlKyPkehQDGjSpKX.png" alt=""></p> <p><strong>由此可见温度和功率是有一个正比例的关系。</strong></p> <p>然后是成本上的考虑,测功率只要测电流电压。测温度这是焊台的分内事。不需要额外的花销。</p> <p>当然,如果发热芯电阻比较稳定的话,可以用欧姆定律换算功率。不需要测电流。</p> <h1>2、电路硬件讲解</h1> <p>一般教学上会把全部电路都讲,但有一些很常见的电路就没必要再重复造轮子。</p> <p>人机交互部分见我上一届立创大赛的工程。基本是照搬的。</p> <p>下面来讲与众不同的。</p> <h2>降压驱动部分</h2> <p>首先,如果是交流电源驱动烙铁一般是可控硅,如果是直流则用场效应管。这里是直流供电,选场效应管。</p> <p>然后936是有两种发热芯的。分别为A1321和A1322。</p> <p>前者发热芯电阻会随温度变化从3~10欧姆,而后者为15欧姆。</p> <p>高下立见,前者功率标识为60W,后者功率标识为45W。</p> <p>但4欧姆的冷态电阻直接用PWM驱动会对电源造成极大的冲击。导致电源输出保护。</p> <p>此时我想到的就是BUCK降压电路。由于电感会限流,对电源的冲击会小一点。</p> <p><br> <img src="//image.lceda.cn/pullimage/tQixWhzU36TM5SdOuOHs4S4zJbjoTq0sTYkjxUQt.png" alt=""></p> <p>问题又来了,如果再搭配IR2103之类的电荷泵驱动上臂的话是做不到100%占空比的,就是说不能全功率运行。</p> <p><img src="//image.lceda.cn/pullimage/8dl0YJbmNysBrcwC2ANmRRonVpxNm1hOJyyzLoek.png" alt=""></p> <p>怎么办?我们尝试把BUCK电路进行上下颠倒,见下图。</p> <p><br> <img src="//image.lceda.cn/pullimage/uHCjhUY58BrYu61eC5tNNTKp3y9wxvaQxlvrUnUg.png" alt=""></p> <p>可以看出整个输出部分是浮地的,仅是一端接到24V电源上。</p> <p>而且让T1一直导通也是可行的了。</p> <p>D12,C24是为了不安装C12,C13所添加的峰值检测。实际可以进行取舍。</p> <p>ACS712是霍尔效应电流传感器,如果用采样电阻加差分放大就起码需要5个电阻了,而该芯片外围才2个电容。体积得到缩小。</p> <p>LCSC有出售,建议去翻看技术手册。脚对脚兼容而且更便宜的有<a href="https://item.szlcsc.com/470458.html" target="_blank">CC6902</a>。</p> <h2>恒流放大部分</h2> <p>上面提到烙铁头有两种。</p> <p>A1321是PT100电阻来做温度传感器的。测电阻就需要电源,所以U4.2构成一个恒流源电路。</p> <p>因为用了NMOS,响应会滞后,所以相位补偿电容C19就必须要焊接,不然就会震荡。(调节RV2使得输出电流为200uA)</p> <p>而A1322烙铁头是K型热电偶,4096uV/100°C。</p> <p>可见,当300°C时才12mV,这对于单片机的ADC来说就太难分辨具体温度。</p> <p>于是就需要U4.1做同相比例放大。这里取巧的一下,用3个常见的电阻构成了100倍的放大倍数。</p> <p>有兴趣的同学可以自己计算一下,其实有9.9kΩ的电阻,LCSC是有库存的,只是我没库存。</p> <p><img src="//image.lceda.cn/pullimage/5elHVauEZjQxpgkQRYx4UWMuVVIqFNwtWSwqxyD3.png" alt=""></p> <p>话说这个GS8552是上一届比赛的赞助商之一,咳咳咳~~~讲多了。</p> <p><img src="//image.lceda.cn/pullimage/wXPM54VsCUI4NgUvmlv1NUwvLIXb6c20mo8I5fuB.png" alt=""></p> <p>还是对比一下吧</p> <p><img src="//image.lceda.cn/pullimage/sF9amVkdDWXkL5xVRDE8mHKeTwWVAyOqBdO5myFQ.png" alt="image.png"></p> <p><img src="//image.lceda.cn/pullimage/cBAEOghsJ2mlIJ6pl4inMf34FZACUyPpFn3U9gUP.png" alt="image.png"></p> <p>虽然很想用富满赞助商的运放,但富满没有精密运放的产品线。</p> <p>从上图可以看出两个的输入偏置电压相差足足1000倍。</p> <p>【现实运放都不是理想的,正常工作时同相和反相输入端是会有电压差的,这就是输入偏置电压】</p> <p>如果用LM358来做放大的话,按照技术文档的参数估算可能会偏差个100度。</p> <p>而且这个运放还有个特性,就是轨对轨输入输出,能充分把单片机的ADC动态用起来。</p> <h1>3、单片机软件讲解</h1> <h2>人机交互代码</h2> <p>LCD1602都会点亮吧???我表示怀疑【引战】</p> <p>如果要灵活用起来首先建立一个环形缓冲</p> <pre><code class="language-cs">uint8_t lcd_buf[256]; uint8_t lcd_load_head=0; uint8_t lcd_load_tail=0;</code></pre> <p>然后把待发送数据存起来</p> <pre><code class="language-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&amp;0x0f)|(cmd?0x10:0); }</code></pre> <p>然后定期调用发送数据,由于我这里有按键复用,所以先读取按键再发送</p> <pre><code class="language-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; }</code></pre> <p>看完以后你还敢说你以前会点LCD1602?</p> <h2>PID代码</h2> <pre><code class="language-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&amp;=3;   temp_P=PID_Increase(&amp;pid_P,0.0001f*adc_get_uout()*adc_get_iout(),POWER_tiger*10);   temp_T=PID_Increase(&amp;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&lt;0)     pwm=0;   Tim1_pwm_set((uint16_t)pwm); }</code></pre> <p>注意这个是相对PID。</p> <p>这里两个变量互相限制,核心算法是取最小值来输出,同时稳定功率和温度。</p> <h2>蜂鸣器音乐</h2> <p>蜂鸣器音乐的代码之前有人想要,但解码部分实在太冗长,还是自己看代码吧。</p> <p>网上也有很多相关资料,可以帮助理解。</p> <h2>平台版本</h2> <p>由于这个系列的单片机非常火爆,电源、外设脚对脚兼容的芯片非常多,而且都比较便宜(涨价前)。</p> <p>为了学多一点,会进行多款单片机间移植。</p> <p>STM8平台的代码我也写了,奈何8KB的flash不够我挥霍。</p> <p>所以完整功能的只在HK32F030MF4P6了,附件有对应代码。</p> <p>感谢航顺陈工的技术支持,我算是比较早交作业的,如果外设驱动不起来的可以借鉴我的代码,但代码二次开源时别把我忘了。起码把该网页链接贴上。</p> <p>注意HK32F030M烧写时不要焊接C15,因为ADC和烧写口复用,滤波电容会把烧写数据旁路,切记。</p> <h2>操作流程说明</h2> <p><img src="//image.lceda.cn/pullimage/Gb04G6kk0ePQsBalnWMkXRozTxymLZ9xrbAaKXtw.png" alt="BUCK936运行流程 \(1\).png"></p> <p>上面是逻辑功能草图,下面来对照1602的屏幕来讲解。</p> <p><img src="//image.lceda.cn/pullimage/IiLhNgbEEeqH7TyK5nnuyhyirreKMbrVBodBCJhY.jpeg" alt="d33c4cfac4ac931379c9bb7c4da9557.jpg"> <img src="//image.lceda.cn/pullimage/lCw92CuEyjUgnsiFrUFZhT9j2AEQhguFVIQ0ymTw.jpeg" alt="9c9e7a04ce78df51781539407ea2b8e.jpg"></p> <h1>4、实物图片</h1> <p><img src="//image.lceda.cn/pullimage/xPPKriJ4SAMU4zY2IGopd18w8OoXucV0SpAlpiwD.jpeg" alt="裸板.jpg"></p> <p>C19在生产文件中已经修正,放心使用。 因为电解电容库存不够了,所以把剩下的电容焊接到重要位置上,影响不大,因为好几个都是并联。 D3也是没SS56了,两个SS36顶上。 注意12V风扇接口,因为不打算PWM调屏幕背光,所以仅焊接了风扇部分。</p> <p><img src="//image.lceda.cn/pullimage/eFqCG3nfXx80vNG021Z8eUdHx6LBS1t7NdgVVvgy.jpeg" alt="内部.jpg"></p> <p>安装图,这里式由于外壳太厚了,导致航空座上不了螺母,模型已经修正,而且5mm的壁厚有点偏厚了。 后续会重新设计个更薄的外壳,降低3d打印成本。如果是PLA的建议还是打这种厚度,填充度可以降低。 R26,R27,C10是给STM8预留的,非STM8不用焊接。</p> <p><img src="//image.lceda.cn/pullimage/XrlELs0kvGKqQiekNyagKDY0N3Poowh9Wxvt4RA6.jpeg" alt="正面.jpg"></p> <p>特意在底部预留风道设计,把发热元件放置一边角落。</p> <p>(如果追求效率可以把电感更换为同尺寸,同规格的铁硅铝磁环,额定电流更大,铁损更低。)</p> <p>另一边是运放,热敏,蜂鸣器,确保尽量不受温度干扰同时让蜂鸣器的声音透过栅格出来。</p> <h1>5、关于PCB文件</h1> <p>这里用的是EAGLE9.6,不是我不想给源工程,即使给了,也是只能看,不能动。【建议在EDA的原理图这里重新生成PCB来绘制】</p> <p>正版软件一年费用是500美刀,免费版本只能8x8cm,教育版申请要开学校盖章证明。</p> <p>盗版软件还停留在V7版本,。</p> <p>我这里项目是10x7cm。所以业余的只能老老实实换一个软件重新画。</p> <p>除了自带封装库好看,而且流畅度没得说。</p> <p>没体验过LCEDA专业版,不知道流畅度比不比得过。但自带封装一定不比EAGLE精致。</p> <h1>6、硬件成本</h1> <p>936烙铁手柄淘宝有11元包邮的,自己找一下。</p> <p>烙铁头有2元单个包邮的,10元一套包邮,建议尝试下找到适合自己的再买些贵点的烙铁头,不易氧化。</p> <p>我的推荐顺序:刀,马蹄,凿,尖。尖头比热容小,经常焊不动。而且不好挂锡。</p> <h1>7、电源选择</h1> <p>提个功率计算公式:P=U^2/R。也就是30V,15Ω时,最大功率60W。</p> <p>所以可以提高输入电压来提高功率,该电路极限输入电压为35V。</p> <p>特别是A1322发热芯,24V下也就40W。</p> <p>建议买20元包邮的24V3A铁壳工业电源,安全有保障点。</p> <p>如果一定要买拆机裸板电源建议先看高压滤波电容有没有1uF每瓦。不然功率很可能是虚标的。</p> <p>软件上有最大功率限制,假设你的电源是24V2A的话,就把最大功率设置为50W,防止电源保护,输出电压降低。</p> <p>正常使用时功率接近20W,主要是刚启动的几十秒里会全功率升温到设定温度。如果不是闷在盒子里的话对流散热不成问题。</p> <h1>8、软件更新</h1> <p>V02:</p> <ol> <li>菜单添加A1321,A1322切换</li> <li>菜单界面显示温度</li> <li>菜单10分钟无操作进入休眠画面</li> </ol>

文档

Sheet_1

Sheet_2

936-d

BOM

ID Name Designator Footprint Quantity Manufacturer Part Manufacturer Supplier Supplier Part
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 C0805 12
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 MINIMELF 4
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 R0805 5
17 1k R4,R13,R16,R21,R22,R23 R0805 6
18 10R R5,R6 R0805 2
19 100R R17 R0805 1
20 1M R19 R0805 1
21 10k RV2 SM-42/43A 1
22 6888K T1,T2 TO252 2
23 AO3400 T4 SOT-23 1
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 104 C14,C15 C0805 2
34 LL4148 D6,D7,D8,D9,D10,D11,D13 MINIMELF 7
35 LCD1602 J2 LCD2BY1 1
36 MA04-2 J3 MA04-2 1
37 10K NTC P642 1
38 1k R7,R10,R24 R0805 3
39 10k R8,R9,R11,R12,R25,R26,R27 R0805 7
40 10k RV1 SM-42/43A 1
41 31-XX S1,S2,S3,S4,S5 B3F-31XX 5
42 AO3400 T3,T5,T6 SOT-23 3
43 HK32F030M U3 SSOP20 1
44 12V_FAN J6 22-23-2021 1

附件

附件名 下载
936-d_2021-06-30.zip
前面板.SLDPRT
液晶支架.SLDPRT
HK32F030M焊台代码V02.zip

评论(25)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
fengok 回复
<p>936闲鱼有说短接电位器休眠,忘了是哪个脚了,具体未验证,因为936的很比T12的便宜好多呀</p>
画板当吃生菜 回复
<p>嗯,10元包邮就有一套烙铁头,实际我就用大刀头,比热容大,温度稳定。</p><br/><p>你说的休眠应该是把运放的一个输入对地短路,相当于目标温度设置到低于气温</p>
LZJ5208 回复
<p>怎么不用15单片机</p>
画板当吃生菜 回复
<p>比赛谁赞助就用谁的呗,移植平台也就打通单片机外设麻烦点,其他逻辑什么的都不用动</p>
CZF11 回复
<p><span class="colour" style="color:rgb(51,51,51);">U4.2的输入端这样接对嘛?看着不是很明白</span></p>
画板当吃生菜 回复
<p>输出有MOS管反相了,所以接正反馈。</p>
画板当吃生菜 回复
<p>发现一些小细节,或许对想做类似项目的人有用,可惜文章被锁定了,不能修改</p><br/><p><img src="//image.lceda.cn/pullimage/UUkAKGNSXCcAVbcqtjNkDe3uh4yjkBwV6W07NVwn.png" alt="image.png"><br><br/>为了间歇休眠省电会使电源抖动,从而影响ADC采集精度,然后PID随着单片机运算量而发生抖动。</p><br/><p>实测下,关闭休眠时这种定期抖动就会消失,</p><br/><p>这可能与单片机内部,电源布线,稳压块动态都有关系。</p>
700ift 回复
<p><span style="color:rgb(85,136,255);"><strong>问下HK32F030M焊台代码V02.zip 怎么写入啊.软件要求.hex或.bin文件</strong></span></p>
画板当吃生菜 回复
<p>打开keil,编译,写入,要安装对应单片机的DFP</p>
700ift 回复
<p>不好意思对我来说有点困难了,还要安装航顺的库,研究的一番都没搞定,还能提供个打包好的.hex文件,直接烧录就好了。邮箱23038500@qq.com</p>
画板当吃生菜 回复
<p>已经发送,有什么问题可以反馈。程序上会慢慢完善</p>
baoshi2812566 回复
<p>可以给个stm8s003的烧录程序么</p>
画板当吃生菜 回复
<p>预留接口是可以,IO外设映射也兼容,但这个项目STM8F003F3的8Kflash被我写爆了,不够用</p>
立创电赛 回复
<p><span class="colour" style="color: rgb(34, 34, 34);"><strong>恭喜入围“航顺HK32MCU杯”第六届立创电子设计开源大赛前八,更多详情见:</strong></span><a href="https://diy.szlcsc.com/posts/2745c50726da4cbca856be6e52dd7383" target="_blank">https://diy.szlcsc.com/posts/2745c50726da4cbca856be6e52dd7383</a><span class="colour" style="color: rgb(34, 34, 34);"></span></p>
立创电赛 回复
<p>恭喜您在“航顺HK32MCU杯”第六届立创电子设计开源大赛中获得三等奖</p>
lu50211 回复
<p>版本能详细讲一下A1322,热电偶和A1321,PT100温度转换吗??uint16_t temp;<br><br/>float resistor;<br><br/>if(SAVE_DATA.type)//A1322,热电偶<br><br/>temp=(uint32_t)8058*ADC_data[4][1]/65472+adc_get_temp()-100;<br><br/>else<br><br/>{<br><br/>resistor=165.0f*ADC_data[4][1]/65472.0f;<br><br/>if(resistor>50)<br><br/>temp=(resistor-50)/0.01904f;//A1321,PT100<br><br/>else<br><br/>temp=0;<br><br/>}<br><br/>return temp;</p><br/><p>请问算式里面的常数是怎么算出的。非常感谢!!</p>
画板当吃生菜 回复
<p><span style="color:rgb(51,51,51);">常数是化简合并出来的,前面应该是乘了3.3V还有电压温度的比例系数</span></p>
kzln 回复
<p>同求HK32F030M的HEX文件,谢谢您1309802193@qq.com</p>
Norris 回复
<p>这个好,持续关注,期待更加完</p>
画板当吃生菜 回复
<p>已经完结了,屁股也已经建模好了,貌似封闭评分了,上传不了附件</p>
li18617808909 回复
<p>这是交流吗</p>
li18617808909 回复
<p>这怎么写程序</p>
画板当吃生菜 回复
<p>DAP-Link连接,keil里面F8烧录</p>
li18617808909 回复
<p>那个是程序</p>
li18617808909 回复
<p>能买你一个烧写好的芯片吗.我没有烧写器</p>
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow