
迷你数控电源-FL Power V3
简介
这是一款迷你电源,尺寸约为53x53x17(mm),升降压输出,结合了USB功率计量。最新版V3。
简介:这是一款迷你电源,尺寸约为53x53x17(mm),升降压输出,结合了USB功率计量。最新版V3。开源协议
:CC BY-NC-SA 4.0
(未经作者授权,禁止转载)描述
项目参数
尺寸: 52x52x16mm(宽x长x高)
交互方式:1.54寸240x240分辨率TFT屏,1个波轮开关,2颗轻触开关
电源输入接口:Type-c口(支持PD协议),XT-3.0公座,4mm香蕉头接口(3D外壳可选)
电源输出接口:功率计量口Type-c,可调电源输出XT-3.0公座,4mm香蕉头接口(3D外壳可选)
可调电源输出范围:0.4-35V,0-5A
USB功率计量:PD协议检测,QC协议
开源协议
本工程依据“CC-BY-NC-SA 4.0”知识共享许可协议,请勿用于商用,转载时请标明出处。
开源代码:https://gitee.com/yllff/flpower
项目属性
本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。
项目更新
2024/4/2 添加部分介绍内容,更新core V2.1板。
【【开源】迷你数控电源(一)【电子工程师的日常乐趣】】
- core V2.1板更换了编码器,采用波轮开关以降低成本,引出swd口和串口。用于后续增加功能。注意,该版本与之前的外壳不兼容。 代码兼容。
- 添加了部分电路介绍和代码介绍。
2024/11/10 更新core V3.0板,power V3.0板,panel V3亚克力面板。
【【开源】哥哥有女朋友吗?介意多个表吗??】
- 更新整个结构,重新设计了内部PCB板
- 重新调整代码架构,更新UI交互,移植cherry USB, cherry DAP等代码实现虚拟串口、DAPLINK。
2024/11/13 补充文档介绍。
2024/11/17 补充文档介绍。
- 核心板上的U21、U22和功率板上的U21不是穿心电容,是做为短接用!!已有复刻的伙伴掉坑!!!
- 板子烧入好固件后需要连接到PC端导入校准系数,可以参考附件视频。
- 功率板C7、C8改为20pF,工程文件已更新。
项目待更新
VCP虚拟串口功能 (V3.0版已实现)电流表计量(V3.0版已实现)DAPLink功能(V3.0版已实现)0-50V的波形采样通道 (删除该功能)2S电池底座模块,用于实现无外接电源供电场景4S电池底座模块,用于实现无外接电源供电场景- 电池恒流恒压充电(待实现)
项目介绍
1.硬件
PCB板
分为两块,一块核心板一块功率板,两者通过双排插针以及固定螺母连接,在布局上考虑了PCB叠层后的高度。核心板为4层板,功率板为2层板,阻容基本采用0603封装。主控采用雅特立的AT32F403ARGT7,Arm cortex M4核心,1MBFlash,96Kram,主频240MHz。提供type-C接口、XT30接口、4mm香蕉头接口三种方式用于接入电源,内置FUSB302可实现PD协议检测。可调电源控制芯片为SC8701,可实现升降压输出。这种设计拓宽了使用场景,比如手上只有5V的电源,也可以通过该电源输出2-30V的电压使用。或者配合18650这类电池用于无外接电源的场景。USB功率计量和可调电源的输入接口是同一个type-C接口。
1.1框架
作为电源使用时,电源从核心板的DCIN(Type-C口)接入,如果是带PD协议的充电器可经过FUSB302诱骗为最大功率模式(我测试时用的是20V4.5A的充电头),再通过两块PCB板之间的螺柱连接到功率板,核心板的控制信号通过双排排针连接到功率板。
板子有做兼容设计,核心板有2处需要短接,功率板有1处需要短接。在该版本中功率板短接方式如下:
核心板短接方式如下:
1.2结构
外壳采用中框一体加底板以及亚克力面板结构,亚克力面板能一定程度的保护液晶屏。我依旧设计了3D打印和CNC铝合金两套图纸。3D打印外壳尺寸为53x53x16mm,铝合金外壳为52x52x16mm。此外设计PCB尺寸的时候考虑了一种铝合金型材的尺寸,应该比较合适,不过依旧没验证。等明年嘉立创型材加入CNC工艺。
3D打印外壳中框上有4颗螺丝固定位,底板是直接固定在PCB板上的,直接设计成平面的,最好用金属材料做用于散热,建议MOS管上贴上导热硅胶与底板充分贴合,两块PCB连接好后通过功率板上的焊接端子固定到中框。这种外壳(建议尼龙材料耐高温)优点是比便宜CNC便宜的多,缺点是打出来后有点软。 相对于第一版,中框结构更加美观结实,底板分离出来能增加散热能力。
CNC铝合金外壳外形如下图所示,固定靠底部的4颗螺丝固定。这种外壳的优点是质感很好,而且有硬度,加快散热。缺点是贵!还有外壳的接GND上的要注意!
1.3原理分析
1.3.1 核心电路供电设计
迷你电源的核心部分的供电可以通过电源侧(USB2)供电,也可以通过调试USB口供电,通过电源切换电路当两路同时供电时,会选择使用调试USB口侧的供电。电源切换电路如下所示,我们简单分析下,首先当电源侧供电时,通过U11(ME3115AM6G)输出VCC1有3.7V的电压,并通过Q5的体二极管输出到VCC处,同时Q5由于栅极通过R27接地,漏极和源极导通减少了Q5的体二极管压降导致的功耗,此时再通过U10(ME6211A33M3G-N)得到了3.3V。当调试USB口侧插入电源时,U11的EN引脚因为接在调试USB口的GND引脚上所以被拉低,VCC1变为0V,同时Q5的栅极有5V电压,而Q5的源极因为D3的缘故大概为4.4V左右,Vgs>0所以Q5截止。此时VCC单单由VCC2来供电。此电路的优点是在电源侧供电时因为Q5导通的原因所以并没有多大损耗,而当两路同时供电时,可将电源侧电源屏蔽掉,去掉了内部电路损耗有助于准确的计算数控电源输入输出部分的损耗。
1.3.2 电压可调设计
硬件中采用了SC8701这颗电源控制芯片,这是一颗同步4功率管Buck-Boost控制器,输出电压能够高于,等于或低于输入电压,可以极大的节省整体空间,并且这颗芯片提供了限流保护功能。其主要特性为输入电压2.7V至36V,输出电压2V至36V,可以通过PWM信号来调整输出电压。不足之处是可调的最小输出电压为1/6的最大设定电压,也就是说如果设计最大输出电压为30V,那么可调整到的最小输出电压为5V。原因如下,当PWM输出为0时,Vout=1/6Vset。
那么有方法可以让输出电压的可调范围做的更宽吗?答案是有的,我们可以从另一个角度去解决,让PWM控制引脚输出一直为高,去调整FB处的“电阻”。根据图6中的公式我们可以知道,Vout和RDown的阻值成反比,如果我们将PWM控制引脚一直设为高,即让SC8701输出最大的设定值Vout_set,而我们改变RDown也就能改变输出电压。
但我们需要用MCU去控制输出,所以还要再设计下电路。Air32f103cct6带有DAC功能,只是12位的分辨率不太满足需求,可以通过下图中的电路将16位分辨率的PWM信号变为模拟信号,并且将电压范围转换成0-V_REF。
将DAC信号通过电阻接入到FB点,通过调整DAC信号的幅值,就可以设置输出电压。其原理分析如下,当DAC输出为0V时,此时电流的走向如下图所示,两路电阻相当于并联,Vo输出电压为最大=1.22*(1+100k/((6.2k+2k)/2)),约为30.97V。实际测试大概为30.2V,主要是阻值有误差。
当DAC输出为基准电源即2.5V时,此时电流的走向如下图所示,流经R23的电流几乎为0A,因为DAC经过分压后,FB点电压已经有1.22V,理想情况下SC8701将不输出电压,Vo=0V。实际测试约为1.4V,主要是基准电源的不稳定以及阻值有误差。所以当我们输出DAC电压在0-2.5V的范围时,理想的输出电压的范围为0-30.9V,这样就实现了宽范围的电压输出。SC8701在文档里标注的输出为2-36V,内部原理未仔细研究,不确定是否输出最低为2V。
2.软件
mcu侧代码分为bootloader和app两部分,bootloader提供了模拟U盘拖拽升级功能,无需其他软件工具即可升级app固件,比较方便。app代码基于FreeRTOS+LVGL
, ide使用keil 5.38, gui使用SquareLine Studio
生成。bootloader固件通过keil或者jflash下载。
2.1应用固件更新
烧入bootloader固件后,可以通过简便的方式升级应用固件。具体操作是:将usb线一端先接到电脑,再按住迷你电源的''<''键后将usb线另一端插入调试口,此时电脑会弹出一个名为“FL POWER”的U盘,打开U盘会有一个TXT文件名为“READY”。将要更新的固件文件(bin格式或者hex格式)拖拽到此U盘内即可,U盘将重新识别,其内部的“READY”TXT文件名会更新,“SUCCESS”表示更新成功。
2.2 GUI界面
界面使用SquareLine Studio
生成,这是一个可视化的拖放式 UI 编辑器,可快速轻松地为嵌入式和桌面应用程序创建漂亮的图形用户界面。官网: https://squareline.io/,下载安装后可供个人免费使用,限制是只能设计5个UI界面和放置50个控件。通过软件简单设置可以方便直观的实现动画效果。
2.3调试上位机
上位机和之前的焊台通用,目前可以设置参数和校准。电源通过usb和pc连接,虚拟出串口通讯。
2.4代码浅析
2.4.1 App应用代码
app代码基于FreeRTOS+LVGL,在bsp初始化完后建立了多个Task,如下图所示。
Task_sample主要是采集各路电压电流值并进行计算,task_gui负责LVGL的运行处理,task_pd用于电源口的pd协议通讯,使其得到最大功率的电压选项,如图所示。
2.4.2 Bootloader代码
Bootloader侧代码主要是用于升级固件,当迷你电源通过USB先连接到电脑,并检测到对应按键处于按住状态,则进入升级阶段,代码会建立一个FAT16文件系统,并模拟出以芯片内部Flash(从0x08004000开始)为存储的U盘,此时可以直接将要升级的固件拖拽到U盘里,固件将会被拷贝至芯片内部flash。完成后重启电源即可。如果在上电后未检测到对应按键按下,则直接跳转到App应用代码处,执行App应用代码。Main函数代码如下图所示。
3.组装
组装比较简单,这里只说明CNC结构组装。先连接好两块PCB,在中框内放好2枚按键帽,将pcb放进中框对应位置,功率板背面mos管上贴上导入硅脂,盖上底板用螺丝固定。要注意功率板背面的插件元器件的脚需要减平,以防碰到外壳短路。
4.功能【具体可看视频链接】
4.1 CC表
通过两个Type-C口串到线路中检测电压电流功率等,可显示波形,支持PD协议检测,PPS可调输出。
4.2 升降压输出
支持通过多种方式接入电源,输入电压范围支持5-32V电压,具备反接保护。XT30接口输出0.4-35V可调电压,0-5A输出电流。
4.3 IO扩展功能
通过usb口和两个4p端子实现扩展功能,如DAPLINK、双串口等,界面会显示相关配置数据。
5.使用和测试
5.1使用介绍
PCB组装好后先烧入固件,目前通过核心板上预留的swd口用jlink之类的烧入。烧入后用usb连接到PC端,用上位机(附件下载)更新下校准参数,一般需要自己再校准一遍输入电压电流、输出电压电流、输出PWM对应电压。
电源有3个type-c口和1个XT3.0口,2颗按键和1个波轮开关。各个用处如下图所示,目前围绕数控电源功能尽量使得操作简单,后期功能有增加后可能会改动按键功能。
USB通信口:用于连接PC升级应用固件,以及作为电流表计时的单独供电来消除内部损耗误差。也用于连接上位机软件。
电源输入口:接入5-32V电源,可以是各类充电头通过type-c口接入,或者其他电源从XT30接入,默认通过pd协议选择最大功率挡。
指示灯:双色指示灯,蓝色表示运行呼吸灯模式,后期可能作为一些状态指示用。红色表示DAPLINK连接到设备。
电流表功能输出:直连电源输入口,作为电流表计时使用,注意在输入电源经过pd协议升压后,该口电压也是升高的!外接使用时需注意!!!
数控电源输出:0.4-35V输出,XT3.0接口,注意正负方向!
波轮开关:切换菜单、聚焦控件、修改参数。
右功能键:在当前应用短按切换界面,长按返回主菜单。
5.2带载纹波【2.0版本,3.0版本未仔细测】
各负载阶段的波形,由于输入电源的最大功率为60W(20V3A),所以输出最大只测到了30V2A。
【5V空载】
【30V空载】
【3.3V3A】
【5V3A】
【15V3A】
【30V2A】
项目参考
项目中的部分代码参考了如下作者的代码,非常敬佩以下作者的开源精神,也非常感谢!
合宙官方库:https://gitee.com/openLuat/luatos-soc-air32f103
stm32模拟u盘升级固件:https://gitee.com/joeylolipop/stm32-iap-msd
FUSB302 PD协议:https://gitee.com/liuzewen/PD_Micro
cherryusb: https://github.com/cherry-embedded/CherryUSB/
cherrydap: https://github.com/cherry-embedded/CherryDAP/
cherryrb: https://github.com/cherry-embedded/CherryRB
立创DAPLINK调试工具: https://oshwhub.com/li-chuang-kai-fa-ban/li-chuang-daplink-diao-shi-gong-ju
其他
主代码还在整理中,后面会提交到gitee。
开源代码:https://gitee.com/yllff/flpower
QQ讨论群:334607120
重点!
1、打样的时候,两块PCB都选1.0mm厚度!1.0mm厚度!1.0mm厚度!
2、原理图中的元件参数基本已经核对,生成清单的时候最好自己再核对下.
4、V3版本主控是at32f403argt7!
5、V3版本所有零件(外壳、面板、PCB板)都有改动,请注意!
6、核心板上的U21、U22和功率板上的U21不是穿心电容,是做为短接用!!已有复刻的伙伴掉坑!!!
设计图

BOM


评论