描述
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 1、项目功能介绍</h3>
<hr>
<p style="line-height:1.8;"><span style="font-size:14px;"> 在25年2月前,少有烙铁会根据PDO自动调整功率,也无任何通讯功能,既如此只能自己动手写写了。与常见的电烙铁一样,使用PD诱骗供电,加热2s到5s即可达到设定温度。加热时,会根据PDO报文的电压电流,自动限制输出PWM的占空比,输出就是PD充电头的最大功率,PD充电头随便用就行了,不用担心输出断电什么的。因为要兼顾温度采集,使用高侧NMOS控制,电流采样也是高侧采集,使用2mR的采样电阻,大电流下发热低。USB通讯方面,使用了中断的HID,返回数据的速度快。作为新的设计,TFT彩屏是必须的,蜂鸣器和陀螺仪也得加上,在有限的空间内,尽可能加入了更多功能。</span></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><span style="font-size:14px;"><strong><span style="font-size:16px;">使用方法</span></strong></span></p>
<ul>
<li style="line-height:1.8;"><span style="font-size:14px;">按键从左到右:减少- 功能M 增加+</span></li>
<li style="line-height:1.8;"><span style="font-size:14px;">主页</span>
<ul>
<li style="line-height:1.8;"><span style="font-size:14px;">M:单击开启/停止加热;长按进入菜单页面</span></li>
<li style="line-height:1.8;"><span style="font-size:14px;"> - :单击减少设定温度,长按快速减少</span></li>
<li style="line-height:1.8;"><span style="font-size:14px;"> + :单击增加设定温度,长按快速增加</span></li>
</ul>
</li>
<li><span style="font-size:14px;">菜单页面</span>
<ul>
<li><span style="font-size:14px;">M:单击进入相应页面</span></li>
<li><span style="font-size:14px;"> - :单击箭头向上</span></li>
<li><span style="font-size:14px;"> + :单击箭头向下</span></li>
</ul>
</li>
<li><span style="font-size:14px;">各个子菜单</span>
<ul>
<li><span style="font-size:14px;">M:单击开始修改,长按退出并保存</span></li>
<li><span style="font-size:14px;"> - :向上/减少数值,单击步进1,双击步进10*2,长按快速加减</span></li>
<li><span style="font-size:14px;"> + :向下/增加数值,单击步进1,双击步进10*2,长按快速加减</span></li>
</ul>
</li>
</ul>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><strong><span style="font-size:16px;">功能总结</span></strong></p>
<ul style="list-style-type:square;">
<li><span style="font-size:14px;">PD3.0供电,最高支持sw3538的20V 7A。(硬件支持诱骗PD3.1,但像是噱头就没搞)</span></li>
<li><span style="font-size:14px;">自动功率控制,由PDO和烙铁内阻计算得出。</span></li>
<li><span style="font-size:14px;">自动计算烙铁内阻,仅5V供电开启。</span></li>
<li><span style="font-size:14px;">高侧NMOS控制,24Khz频率,最大98%占空比,保险起见是95%。</span></li>
<li><span style="font-size:14px;">9V栅极驱动器供电,由5V升压至9V而来。</span></li>
<li><span style="font-size:14px;">高侧电流检测,使用低至2mR采样电阻。</span></li>
<li><span style="font-size:14px;">k型热电偶测温,加上ntc就行冷端补偿。</span></li>
<li><span style="font-size:14px;">带有0.99寸TFT彩屏、陀螺仪、蜂鸣器、EEPROM</span></li>
</ul>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><strong>QQ群:</strong>984566019</p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*2、项目属性</h3>
<hr>
<p style="line-height:1.8;"><span style="font-size:14px;">首次公开;原创设计;无获奖;非答辩设计</span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">* 3、开源协议</h3>
<hr>
<p style="line-height:1.8;"><span style="color:#000000;font-size:14px;">CC BY-NC-SA 4.0,严禁商用!!!</span></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*4、硬件部分</h3>
<hr>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/CbVJ2NtcqKkqcdvd04MXaHEYOnSGZDG5VQF35g82.png" width="813" height="300" alt="CbVJ2NtcqKkqcdvd04MXaHEYOnSGZDG5VQF35g82.png"></p>
<ul>
<li style="line-height:1.8;">主控采用CH32X035G8,外设只有两个电容,这个封装只有28个引脚,体积小且刚好够用,非常适合本项目。</li>
<li style="line-height:1.8;">本项目使用的外设有:PD、USB、SPI、IIC、TIM、ADC</li>
<li style="line-height:1.8;">ADC:测了三个MCU,对地阻值都不为0,在软件中增加了对地值校准</li>
</ul>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/lwjyD6sevPyJDUiac1beH7qFi3aDjbqtguhffFDQ.png" width="519" height="300" alt="lwjyD6sevPyJDUiac1beH7qFi3aDjbqtguhffFDQ.png"></p>
<ul>
<li style="line-height:1.8;">使用了TP181A3,将电流数据放大200倍。按照MCU供电3.3v,理论最大电流为3.3v÷200÷0.002R=8.25A。</li>
<li style="line-height:1.8;">需要注意的是,这样的组合空载会有≈0.01a的电流跳动,在软件部分使用0.1的低通滤波即可消除。</li>
</ul>
<p> </p>
<p><img src="//image.lceda.cn/pullimage/7ReABVJwJdOUmsBLc8hXO4TgAQrhpz5U11b7qtgZ.png" width="520" height="388" alt="7ReABVJwJdOUmsBLc8hXO4TgAQrhpz5U11b7qtgZ.png"></p>
<ul>
<li>输入可以看作是RC滤波,能略微降低加热时的干扰,使用0R也没有问题。</li>
<li>需要注意,使用ME3116时,FB的两个电阻不会有问题,其他芯片需要酌情加大电阻,一般放大10倍即可。</li>
</ul>
<p> </p>
<p><img src="//image.lceda.cn/pullimage/ImLfpUWMiERVSiO7HQv0XqeWfpOY6D6wCvyW7m3x.png" width="299" height="300" alt="ImLfpUWMiERVSiO7HQv0XqeWfpOY6D6wCvyW7m3x.png"></p>
<ul>
<li>第一个是电压检测,Vin电压缩小10.09倍,最高能检测33V输入,够用。</li>
<li>第二个是NTC温度检测,PCB上要靠着烙铁芯放置,热电偶的冷端温度才更准确。</li>
</ul>
<p> </p>
<p><img src="//image.lceda.cn/pullimage/4A9UddKQc4nHfCZ1obaYdv2kUzF8kHhzLBTJqQaa.png" width="614" height="300" alt="4A9UddKQc4nHfCZ1obaYdv2kUzF8kHhzLBTJqQaa.png"></p>
<ul>
<li>这边的R20和R23最好用千分之一的精密电阻,当然软件也做了线性校准。</li>
<li>R19这个电阻可以是1M到10M,推荐10M。这里用1M是为了减少元件数量。</li>
<li>比较推荐用TLV333,性价比比较高,性能也足够了。</li>
</ul>
<p> </p>
<p><img src="//image.lceda.cn/pullimage/NDnMDGUe7byYHTNpz5yOaOBZ7DjvPW8YCjvImFYZ.png" width="486" height="300" alt="NDnMDGUe7byYHTNpz5yOaOBZ7DjvPW8YCjvImFYZ.png"></p>
<ul>
<li>这里的R22差不多就行,电压在9~12V以内都是可以的。</li>
<li>需要注意C29的耐压,最好是输出电压的两倍,延长使用寿命。</li>
</ul>
<p> </p>
<p>【TYPEC、LDO、EEPROM、蜂鸣器、按键、TFT屏幕、陀螺仪、NMOS驱动】这些就跳过了,都是最常见的电路。</p>
<p> </p>
<p><strong>3D外壳需要注意,尽量打印尼龙材质的,按键推荐使用树脂。零件四选择“三合一按键”打印,安装方便。</strong></p>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*5、软件部分</h3>
<hr>
<p style="line-height:1.8;"> 为了方便管理各个功能,使用了Freertos操作系统。RTOS使用的官方移植例程,PD和USB也在官方的例程上修改而来。受限于单片机性能,屏幕未使用GUI库,页面均为绘图函数画出;也受限于屏幕尺寸,加之中文字库需要16*16字体才清晰,所以子页面使用了英文。项目使用了AT24C02作为存储器,保存了所有的可设置参数。暂未计划做多组数据快速调整,感觉用处比较少吧,大部分时候是上电就用了,现在烙铁的目标温度是检测修改后2s保存一次,应该可以满足大部分使用情况了。</p>
<p style="line-height:1.8;"> </p>
<ul>
<li style="line-height:1.8;"><strong>当前RTOS的任务</strong>
<ul>
<li style="line-height:1.8;">PD数据处理(负责PD诱骗和解析PDO)</li>
<li style="line-height:1.8;">主控制任务(负责按键按下检测和不同页面下的逻辑)</li>
<li style="line-height:1.8;">数据处理任务(负责ADC数据采集和PWM加热控制)</li>
<li style="line-height:1.8;">TFT显示任务(负责显示不同页面,和更新数据)</li>
<li style="line-height:1.8;">陀螺仪任务(负责读取和处理陀螺仪数据)</li>
</ul>
</li>
</ul>
<p style="line-height:1.8;"> </p>
<ul>
<li style="line-height:1.8;"><strong>关于按键</strong>
<ul>
<li style="line-height:1.8;">开机时会读取KEY2的情况,按住KEY2后上电,会进入USB ISP下载 。</li>
<li style="line-height:1.8;">系统会间隔50ms,监测一次按键状态,累积到约300ms上报一次。</li>
</ul>
</li>
</ul>
<p style="line-height:1.8;"> </p>
<ul>
<li style="line-height:1.8;"><strong>关于ADC</strong>
<ul>
<li style="line-height:1.8;">使用了DMA传输,分为电流采集和其他数据采集,每次都会切换相应的DMA通道。</li>
<li style="line-height:1.8;">为取得PWM的平均电流,ADC使用240Khz频率采样,每个PWM开关周期内采样10次,共计30次取平均值。</li>
<li style="line-height:1.8;">烙铁是K型热电偶,通过NTC进行冷端补偿。设置温度以50℃递增,经测试呈现线性增长状态,软件使用了简单的线性函数校准y=kx+b。</li>
</ul>
</li>
</ul>
<p> </p>
<ul>
<li><strong>关于加热</strong>
<ul>
<li>使用起停式控制+PI混合控制:当温度离设定值较远时,使用起停式控制满功率加热;接近设定温度时,切换为PI控制。</li>
<li>开发过程中,Kp积分初始值易过大,导致非常严重的过冲,需要适当控制。</li>
</ul>
</li>
</ul>
<p> </p>
<ul>
<li><strong>关于屏幕</strong><br>
<ul>
<li>使用DMA+局部刷新,SPI最小2分频,时钟速率24Mhz。</li>
<li>屏幕刷新任务50ms运行一次,rtos显示占用30%的CPU。</li>
<li>纯手绘的页面,个人审美有限,实在是画不出来了。</li>
</ul>
</li>
</ul>
<p style="line-height:1.8;"> </p>
<ul>
<li style="line-height:1.8;"><strong>关于固件版本</strong>
<ul>
<li style="line-height:1.8;">V0.0.0——初始版本,暂未使用USB和陀螺仪,后续更新。</li>
</ul>
</li>
</ul>
<p style="line-height:1.8;"> </p>
<ul>
<li style="line-height:1.8;"><strong>关于固件烧录</strong>
<ul>
<li style="line-height:1.8;">如果是未烧录过的单片机,直接上电会自动识别。</li>
<li style="line-height:1.8;">烧录过固件的单片机,按住KEY2后上电,也会自动识别。
<ul>
<li style="line-height:1.8;">步骤1:如果没有识别到单片机,选择CH32X035G8。</li>
<li style="line-height:1.8;">步骤2:点击三个点添加固件,并勾选上,随后点击下载即可完成烧录。</li>
</ul>
</li>
<li>固件烧录好后,先做两件事情:5V供电检测烙铁内阻、NTC用金属镊子短接,测试ADC对地阻值。</li>
</ul>
</li>
</ul>
<p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/JSe3hla0UGNpIuDcff6MRdqAfeq63DkLUefbTZpG.png" width="824" height="480" alt="JSe3hla0UGNpIuDcff6MRdqAfeq63DkLUefbTZpG.png"></p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"> </p>
<p style="line-height:1.8;"><strong><span style="font-size:18px;">USB通讯格式如下:</span></strong></p>
<table style="border-collapse:collapse;width:99.9598%;height:70.9895px;">
<tr style="height:26.1979px;">
<td style="width:99.9805%;height:26.1979px;" colspan="5">
<h3><span style="font-size:16px;">请求包格式(上位机 → 单片机)</span></h3>
</td>
</tr>
<tr style="height:22.3958px;">
<td style="width:14.3607%;height:22.3958px;"><span style="font-size:16px;">参数ID</span></td>
<td style="width:15.9291%;height:22.3958px;"><span style="font-size:16px;">操作码</span></td>
<td style="width:17.4981%;height:22.3958px;"><span style="font-size:16px;">数据长度</span></td>
<td style="width:19.5496%;height:22.3958px;"><span style="font-size:16px;">写入的数据</span></td>
<td style="width:32.643%;height:22.3958px;"><span style="font-size:16px;">XOR校验值</span></td>
</tr>
<tr style="height:22.3958px;">
<td style="width:14.3607%;height:22.3958px;"><span style="font-size:16px;">请求的数据</span></td>
<td style="width:15.9291%;height:22.3958px;"><span style="font-size:16px;">读(0)/写(1)</span></td>
<td style="width:17.4981%;height:22.3958px;"><span style="font-size:16px;">数据的长度N</span></td>
<td style="width:19.5496%;height:22.3958px;"><span style="font-size:16px;">读操作时,此段为空</span></td>
<td style="width:32.643%;height:22.3958px;"><span style="font-size:16px;"> 对前面所有字节进行异或计算得到的值</span></td>
</tr>
</table>
<p style="line-height:1.8;"> </p>
<table style="border-collapse:collapse;width:100.02%;height:70.9895px;">
<tr style="height:26.1979px;">
<td style="height:26.1979px;width:100%;" colspan="6">
<h3>响应包格式(单片机 → 上位机)</h3>
</td>
</tr>
<tr style="height:22.3958px;">
<td style="width:14.416%;height:22.3958px;">参数ID</td>
<td style="width:16.0424%;height:22.3958px;">操作码</td>
<td style="width:17.31%;height:22.3958px;">状态码</td>
<td style="width:19.7829%;height:22.3958px;">返回数据长度</td>
<td style="width:13.5103%;height:22.3958px;">返回数据 </td>
<td style="width:18.9385%;">XOR校验值 </td>
</tr>
<tr style="height:22.3958px;">
<td style="width:14.416%;height:22.3958px;">回显请求中的参数ID</td>
<td style="width:16.0424%;height:22.3958px;">回显请求中的操作码,读(0)/写(1)</td>
<td style="width:17.31%;height:22.3958px;">表示本次请求的处理结果:<br><code>0x00</code> – 成功<br><code>0x01</code> – 未知参数<br><code>0x02</code> – 无效操作码<br><code>0x03</code> – 数据长度错误</td>
<td style="width:19.7829%;height:22.3958px;">数据的长度N</td>
<td style="width:13.5103%;height:22.3958px;">写操作时,此段为空</td>
<td style="width:18.9385%;">对前面所有字节进行异或计算得到的值</td>
</tr>
</table>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*6、BOM清单</h3>
<hr>
<p><img src="https://image.lceda.cn/oshwhub/pullImage/8a0dc877ab714f4ab5ce1642e0189e05.png" width="935" height="840" alt="8a0dc877ab714f4ab5ce1642e0189e05.png"></p>
<ul>
<li style="line-height:1.8;"><strong>注意</strong>:
<ul>
<li style="line-height:1.8;">除了PCBA上需外挂100uF的电容,再加上MLCC效果更好。不加电容,非常容易死机。</li>
<li style="line-height:1.8;">3D外壳中,“零件3”需要热熔上铜螺母,安装在PCBA尾部,防止用力后PCBA移位。</li>
</ul>
</li>
</ul>
<p style="line-height:1.8;"> </p>
<h3 style="line-height:1.8;">*7、大赛LOGO验证</h3>
<hr>
<p style="line-height:1.8;"><img src="https://image.lceda.cn/oshwhub/pullImage/2376b9114a0a45b4bb014cd73b92e5c1.jpg" width="640" height="480" alt="2376b9114a0a45b4bb014cd73b92e5c1.jpg"></p>
<p style="line-height:1.8;"><img src="https://image.lceda.cn/oshwhub/pullImage/5c2a2c875f3646238a7fd4718133659c.jpg" width="640" height="480" alt="5c2a2c875f3646238a7fd4718133659c.jpg"></p>
<h3 style="line-height:1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p style="line-height:1.8;">电烙铁介绍:<a title="电烙铁介绍" href="https://www.bilibili.com/video/BV1vmjb6DEdj/" target="_blank">https://www.bilibili.com/video/BV1vmjb6DEdj/</a></p>
<p style="line-height:1.8;"> </p>
评论(12)