USB可调电源V3,硬件V4.7全面升级
简介
USB可调电源,输入防倒灌防反接,输出防倒灌,支持USB PD3.0,BC1.2等,DC 5V~27V输入,输出电压2V ~ 34V连续可调,大于5A的带载能力,限流10mA~8A连续可调
简介:USB可调电源,输入防倒灌防反接,输出防倒灌,支持USB PD3.0,BC1.2等,DC 5V~27V输入,输出电压2V ~ 34V连续可调,大于5A的带载能力,限流10mA~8A连续可调开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
重要更新及注意事项
———————————————————————————————————————————————————————————
- 本工程的硬件已经全面更新为V4.7版本,此版本主要更新了以下内容:
1. 加入了输入防反接/倒灌,输出防倒灌,可直接给电池充电,不必担心电流倒灌问题,
2. 加入了SC8701的输出限流,配合高侧MOS管实现双限流,改善高侧MOS管工作在大压差时发热严重问题,
同时又避免了SC8701在短路时无法限流问题。
3. 加入了外部NTC电路,待后期加入这部分的软件功能。
- 注意事项
1. 此版硬件需打开工程,然后才可看到V4.7的硬件版本。如下:
2. 此版本硬件需要使用的软件版本需大于等于V2.7
项目简介
———————————————————————————————————————————————————————————
本设计支持USB PD3.0,BC1.2协议, 可通过PD/BC1.2协议使支持PD/BC1.2协议的USB电源适配器输出5V,9V,12V,15V,20V
电源给系统供电;
宽范围的输出电压,从2.0V ~ 34V可调,大于5A的带载能力,10mA~8A限流连续可调;
输入电压电流,输出电压电流实时监测,通过320X240的TFT屏或者上位机反馈给用户;
简洁的交互方式,仅仅通过一个旋转编码器或者上位机对输出电压和电流限制进行调节;
(点击图片看大图)
上位机微信小程序
(点击图片看大图)
小程序上线了,可以扫描打开小程序:
项目背景
———————————————————————————————————————————————————————————
- 最近这一两年才接触开源硬件的项目,因没有太多开源项目的经验,加上本人硬件方面的开发能力有限,因此在V1,V2这两版本中
踩了不少的“坑”;
- 发布V3版本主要有以下3个目的:
1. “填坑”,将V1,V2两个版本中遇到的一些“坑”填平,
2. 总结经验,提升硬件设计方面的能力,对DC-DC电源深入学习,通过本项目的方式将学习到的知识进行实践验证,
3. 在V2版本上有很多小伙伴反馈,器件太多,封装太小,不好焊接,在V3设计过程中,优先将这些因数充分考虑进去,以简洁,方便DIY
为主,电阻,电容能统一的都尽量统一为同一规格的物料。
- 在技术交流群中总有一些“手残党”的小伙伴问我有没有成品,可不可以出成品,我当时心里想V2,V1还不太完善,不好意思出成品,
当时我就想,我需要找到一个比较完善的方案,长期维护,持续为小伙伴们提供一款相对完善的版本。这不,V3就来了,V3我会长期维护,
有需要的小伙伴,希望你们多多支持,我会上架咸鱼。
喜欢折腾的小伙伴,欢迎你们复刻,魔改。我非常乐意与你们一起分享我对DC-DC电源的学习和探索成果!!
成品:咸鱼搜索 “USB可调电源V3成品”或者B站工房:哔哩哔哩工房
项目亮点
———————————————————————————————————————————————————————————
- 支持USB PD3.0/PD2.0,BC1.2协议等等其他的一些快充协议,5V~20V输入
- 输入防反接/倒灌,输出防倒灌,可直接给电池充电,不必担心电流倒灌问题
- DC电源插座输入,5V~27V
- 输出电压从2.0V ~ 34V可调,5A+的输出电流带载能力(最大输出可到8A,需要考虑散热问题),可满足日常实验使用,
- 较小的输出电源纹波,buck模式:20mV~70mV左右
- 输出高侧限流,从10mA~8A连续可调,可接受输出直接短路,并保持设定限流不变
- 电源输出开关可控,方便反复给用电设备断电上电的操作
- 微信小程序配置输出电压,电压/电流实时监测记录
- 电源输出/输入电压,电流实时监测
- 320x240 TFT屏实时显示用电情况,可做为一个简易功率计使用,监测用电设备的用电情况
- 可通过BLE与上位机进行通信,实现更多应用的拓展开发
- 外围器件少,实现原理简单,方便DIY
- 小巧方便,不依赖特定电源,只要是USB适配器都可以使用
- 输出接线方式简单,不依赖特定接线头(香蕉头,或者导线都可轻松连接)
- 软硬件全部开源
经过多次的调整、实验,本项目终于接近完美的实现了高侧限流的功能,在这里我讲讲高侧限流的优点(相比于低侧限流)。
下图左边是高侧限流,右边是低侧限流,图中红色虚线是负载可能短路的路径,高侧限流方案短路的情况就只有一种情况,而且电流路径都
经过了限流检测环路,可以安全的保护用电设备和自身。
而低侧限流的方案在情况2,情况3时电流路径并没用经过电流检测环路,在这种情况下无法达到限流保护负载和自身的作用。
硬件介绍
———————————————————————————————————————————————————————————
- 硬件资源与尺寸标注
(点击图片看大图)
(点击图片看大图)
在这里解释一下为何本设计选用了如图所示的输出接线端子座,其实目的就一个,方便,不依赖于特定的接线插头,
随便身边一条普通的导线就可以使用;而且无需其他额外的工具就可以操作(有手就行)。还可以适配常用的香蕉插头。
我在开源社区有看到一些类似的开源项目,使用的都是一些专用的插座,有一定的局限性,不符合便携方便的需求。
- 原理图介绍
下图是电源输入部分,本设计的输入分为两部分,一部分是通过USB Type-C口输入;另外一部分是通过DC电源插座输入。
(点击图片看大图)
PD协议芯片电路,这部分电路相对比较简单,只是必要的供电电路,完成PD协议与BC1.2协议的交互。
(点击图片看大图)
如下是系统的电源供电部分,分为DC-DC5V, LDO 3.3V 两部分,3.3V为系统提供供电电压;
DC-DC 5V为LCD背光和AMP提供备份电源。支持4.5V~28V的输入电压。
(点击图片看大图)
输入/输出的电压/电流检测电路,有两颗INA226组成,一颗负责输入检测,另外一颗则负责输出检测。
(点击图片看大图)
输入防反接/倒灌电路,分为TYPE-C口和DC输入接口两部分
数字电源Buck-Boost电路,为负载提供电源,他的主要作用是根据用户设定的输出电压,为用电设备提供电源。输出电压通过DAC的转换电压配合FB的
电阻反馈网络进行调节控制。
(点击图片看大图)
输出泄放电路,作用是在SC8701无负载的情况下,输入端断电时快速释放输出的电容中存储的电荷,防止电流倒灌回输入端,
损害输入端的器件。
DAC转换电路,用于将MCU的控制信息转换为模拟电压,用于调节输出电压和限制输出电流
高侧N-MOS限流调整电路,实现硬件实时限流调控,他分别有高侧电流检测放大,运放组成的积分电路,稳压电路和N-MOS驱动控制电路组成。
这里说明一下积分电路,R50,C33和U11组成了一个积分电路,如果没有C33,整个限流调整电路将无法正常工作,有了C33后就可以对输
入的脉冲电流信号做一个平滑的作用,经过多个反馈周期后U11的输出将趋近一个稳定的输出电压,从而达到稳定限流的目的:
运放和输出防倒灌部分的电源电路,在SC8701为关闭状态时由5V给运放供电,当SC8701为工作状态时由SC8701的BST1,2供电,并限制最大39V输出
到运放供电端。
输出防倒灌电路,可有效防止输出端反向给系统供电,导致的反向升压,损坏内部器件的情况发生。
主控MCU电路,这部分电路比较简单,就是基本的供电,boot0和复位电路。boot0用于触发MCU进入UART下载程序。当需要下载程序时
通过短接CN1,触发MCU进入UART下载引导程序。
(点击图片看大图)
本设计还加入了一颗低功耗蓝牙(BLE)芯片,如下是BLE芯片的电路,包含RF、晶振、IO控制和电源部分。
BLE芯片可通过跳线冒与MCU的UART进行物理连接,通过UART口实现数据的交互;在下载BLE芯片固件时,需取消跳
线冒,如下USB0 DP,DM用于BLE芯片固件下载口或者在正常模式下时的UART TX、RX与MCU进行通信。
(点击图片看大图)
如下是LCD接口电路,电源、IO控制和SPI通信电路组成
(点击图片看大图)
如下是旋转编码器电路和实物图
(点击图片看大图)
用户UI介绍
———————————————————————————————————————————————————————————
- LCD显示描述
(点击图片看大图)
- 多功能旋转编码器描述
如下是本设计中使用到的旋转编码器,分别是逆时针旋转,顺时针旋转和中间向下按下,
它们分别代表了3个不同的按键。本项目中把逆时针旋转定义为CCW,顺时针旋转定义为CW,
中间按键定义为中间键(CENTER)。
下表是本项目中使用到的按键事件
按键事件 | 描述 |
DOWN | 按键按下 |
UP | 按键抬起 |
SINGLE_CLICK | 单击 |
MULTI_CLICK
|
多击,如:双击,三击,四击等 |
LP | 长按 |
VLP | 长长按 |
VVLP | 超长按 |
HOLD | 按下不放 |
CW | 顺时针旋转 |
CCW | 逆时针旋转 |
按键功能描述
按键名称 |
前提条件 |
按键事件 |
触发功能 |
备注 |
CENTER |
开机状态 |
MULTI_CLICK=2 |
使能输出电压、输出限流的设定 |
当此功能触发后,对应可调节的选项会闪烁 |
CENTER |
输出电压/限定流设定使能 |
MULTI_CLICK=2 |
切换选定输出电压和电流 |
|
CENTER |
开机状态 |
MULTI_CLICK=4 |
循环地打开/关闭电压和电流检测记录表功能 |
开机为打开状态,在打开状态,系统将实时采集最近250个点的电压和电流信息,并输出到LCD屏幕 |
CCW |
输出电压使能 |
逆时针旋转 |
减少输出电压 |
|
CCW | 限定电流设定使能 | 逆时针旋转 | 减少输出限流 | |
CW |
输出电压使能 |
顺时针旋转 |
增加输出电压 |
|
CW |
限定电流设定使能 |
顺时针旋转 |
增加输出限流 |
|
CENTER | 开机状态 | SINGLE_CLICK | 循环地打开/关闭电源输出 | |
CENTER | 开机状态 | MULTI_CLICK=5 | 校准输出电压 | 注意:初始输出电压需要设定在3.3V左右的时候开始触发这个功能,软件版本需大于或等于V1.2 |
CENTER | 开机状态 | LP | 主页面和电压电流页面切换 | 软件版本需大于或等于V2.5 |
软件介绍
———————————————————————————————————————————————————————————
本项目使用的软件架构为本人自行开发,此软件架构的核心是所有的功能模块被独立分开,模块与模块之间以消息的方式进行
信息交互,各个模块维护各自的状态;本着以功能内聚大,以数据耦合为主,尽量不使用逻辑耦合,或者直接修改对方数据的方式。
如下是程序框架图,下面对部分模块进行简要说明,详细的大家可以看看源代码,如有不明白的地方欢迎大家留言讨论:
(点击图片看大图)
mcu_os:
核心是mcu_os部分,这部分实现了消息处理,任务调度,内存管理等功能,本项目中的usr_main_app、usr_input_task、
usr_display_task几个功能任务模块就是居于此基础之上进行消息传递,实现系统UI的各个功能需求。
usr_display_task:
负责接收来自usr_main_app发来的一些状态信息,在LCD屏幕上实现各种界面显示。
usr_main_app:
负责接收来自usr_input_task发出的用户输入事件,对用户输入事件进行响应,并把一些状态信息发送给usr_display_task
usr_input_task:
负责调用驱动层的io_key,读取io_key状态信息,生成按键事件并把按键事件发送给usr_main_app
主要API函数介绍:
固件下载
———————————————————————————————————————————————————————————
mcu固件下载
- 本项目的MCU固件下载只需要一条USB转UART工具,通过UART下载程序到目标板,使用雅特力的USB DFU下载工具(Artery_ISP_Programmer),大家
自行下载安装,也可以在代码仓库里的这个目录里找到我下载好的“docs\tools\ARTRY_ISP”,
- 上电之前需确保{BOOT0}=1才能进入DFU模式,BOOT0有一个接线端子,将两头短接到一起就可以,PCB板子上有丝印;下载程序过程中一定要保持短接状态,
- 当{BOOT0}=1时上电,设备进入DFU模式,如下图1部分,表示设备已经进入DFU模式;接着一直点击下一步直到图2,选择需要下载的固件,软后点击下一步
完成下载;断电,恢复{BOOT0}=0;上电,这时设备应该能正常跑起来了。
硬件设置,V4.4修改了如下这个端子的接线布局,需按如下接线。
软件操作,这里忽略了2,3步,2,3步只需点击下一步即可,4步需添加MCU固件。
(点击图片看大图)
低功耗蓝牙固件下载(不需要开发蓝牙软件的小伙伴,建议用下面的方法2)
按如下方式接好USB线到板子,如果芯片是空片,这里就不需要杰里的强制升级的开发工具了,这里我们只需准备一条如下图的USB数据线转杜邦线,
连接如下红色框中的接线端子就可以;后面更新程序时就不用数据线了(因为本项目的源码是打开了OTA功能的),我们可以通过杰里的OTA升级小
程序更新软件,(可以在微信端搜索“杰里OTA”)。
上图是我个人制作的USB转接线,可作为参考。
点击图片看大图
- 方法1
接上USB线到电脑后,电脑端“设备管理器”中应该可以看到如下的USB设备
点击图片看大图
2. 用VS CODE打开SDK源代码,按如下图操作,编译并下载程序(如果你的VS CODE没有安装Task Explorer插件的话自己需按装一下)。
点击图片看大图
你最终应该会看到如下类似的提示信息,说明程序下载完成。
点击图片看大图
- 方法2
如果你电脑上没有安装VS CODE,也不关心源代码如何实现的话,你可以下载下面的附件“uart2ble_tools.7z”,解压后点击“download.bat”
批处理文件,也可以快速下载BLE的固件到蓝牙芯片内。
点击图片看大图
启动下载后一定要有如下的提示才算下载成功,
点击图片看大图
- BLE OTA文件
1. 如果需要OTA的话OTA文件在如下的目录里。
点击图片看大图
结构部件
———————————————————————————————————————————————————————————
以下这些配件可以拽下面这个链接,一站式配齐所有结构物料,打包好,让你省心,让你放心,(有需要的小伙伴,多多支持啊!
挣点小钱钱),咸鱼:搜索 “USB可调电源结构物料包”
成品:咸鱼搜索 “USB可调电源V3成品”或者B站工房:哔哩哔哩工房
1. 3D打印外壳:1个
2.ABS尼龙管空心圆柱直通:M4*2.7*4 4颗
3. 自攻螺丝:M2*12 4颗
4. 自攻螺丝:M2*6 4颗
5. 亚克力前盖:1片
6. 亚克力后盖:1片
7. 香蕉插座:2个(1红,1黑)
8. 编码器旋钮帽(15*17MM金属6MM孔径):1个
9. 高侧N-MOS散热片(15*10*20):1个(不包含在结构物料包,须自行购买)
参考链接:TO220三极管散热片 TO-3P TO-247 铁帽 电子铝制散热器 带单/双针-淘宝网 (taobao.com)
其他
———————————————————————————————————————————————————————————
1. 当MCU与蓝牙固件下载成功后,需要使用跳线帽连接MCU与蓝牙的UART,连接后MCU才能与小程序进行通信,
如下图所示:
项目当前已知问题!!
———————————————————————————————————————————————————————————
1. 电压输出的情况下,调节输出电压,当在高压与低压档之间切换时有2mS的低电压输出情况。
>>>硬件V4.4版本已经解决
2024/8/19
2. 空载情况下,输出电压后,直接拔掉输入端的电源,有输出端的电压倒灌会输入端的问题(电压大于30V时,SC8701基本会损害)
这个问题点已经有解决办法,需要飞线加元器件,如下图:
>>> 硬件V3.6版本已经加入此对策。
3. 电压调节得比较高,大约大于15V左右,输出限流小于2.5A, 此时输出电压上不去,需要增大限流,或者调低电压后慢慢增加电压才可正常输出设定电压。
>>>硬件V4.4版本已经解决
4. 如果是直接短路输出端,限流不准确,通常比设定的限制电流大很多。
>>>硬件V4.4版本已经解决
5. 低于100mA小电流限流时,一致性差,每台之间误差范围不一致,(可能是小信号容易受到干扰,元器件误差,或者是精度等导致,这个问题就留给大家去修复了!!)
6.长时间处于限流状态,高侧限流mos管发热严重,(由于空间限制,mos管的散热很难做到理想,使用过程中根据实际使用场景,需要注意!!)
7.外壳的EC11旋钮部分,开孔与旋钮的中心位置需要做微调,由于打印精度,旋钮帽的误差尺寸等等,导致旋钮帽的间距不太够,开孔需要 加大一些(暂时可以凑合着用吧,有时间了再调整验证了)
大家可以开始复刻了,V4.4几乎接近完美状态了!
如果您觉得本项目不错,帮忙点个赞。
同时如果您觉得本项目有实用价值,也欢迎您点击收藏。
LCD规格:2.0寸TFT显示屏240X320驱动ST7789接口SPI全彩
12Pin焊接液晶
性能参数展示
———————————————————————————————————————————————————————————
1. 输入20V,输出2V,负载4R; 测得的文波:29mV Vpp
2. 输入20V,输出3.3V,负载4R; 测得的文波:40mV Vpp
3. 输入20V,输出5V,负载4R; 测得的文波:50mV Vpp
4. 输入20V,输出9V,负载4R; 测得的文波:56mV Vpp
5. 输入20V,输出12V,负载4R; 测得的文波:68mV Vpp
6. 输入20V,输出15V,负载8R; 测得的文波:63mV Vpp
7. 输入20V,输出20V,负载8R; 测得的文波:78mV Vpp
8. 输入20V,输出24V,负载8R; 测得的文波:xxmV Vpp
-----
9. 输入20V,输出34V,负载8R; 测得的文波:xxmV Vpp
-----
其他附件
———————————————————————————————————————————————————————————
MCU源代码地址:MCU gitc仓库
BLE源码地址:AC6328 Git仓库
下面上传的附件文件说明:
AT32F421F8P7-USB-PS-V3-V2.1-for-HW4.4.hex:硬件V4.4的MCU固件
AT32F421F8P7-USB-PS-V3-V2.3-for-HWV4.4.hex: 适用V4.4硬件,在小伙伴“音阙诗听”的双buffer DMA算法的基础上优化改善屏幕刷新率,
电流曲线已经没有明显的闪屏现象了。
AT32F421F8P7-USB-PS-V3-V2.4-for-HWV4.4.hex: 更新“Tim”大佬的一套粗体字库。
AT32F421F8P7-USB-PS-V3-V2.6-for-HW4.4.hex: 重构UI界面,加入容量统计,温度显示,分为两个界面,主页面和电压电流页面切换。下面是B站演示视频
【USB-V3-电源界面全部重构了!!!】 https://www.bilibili.com/video/BV1pjmhYJEPE/?share_source=copy_web&vd_source=e41a5e37fca9bfcd8ffac2f41437aa43
AT32F421F8P7-USB-PS-V3-V2.8-for-HW4.7.hex:仅仅适配硬件版本V4.7
【V4.7软硬件更新了!!!】 https://www.bilibili.com/video/BV1FBzYYeEat/?share_source=copy_web&vd_source=e41a5e37fca9bfcd8ffac2f41437aa43
AT32F421F8P7-USB-PS-V3-V3.0-for-HW4.7.hex: 仅仅适配硬件版本V4.7,1.优化输出限流机制,修复由于器件误差导致的NMOS发热严重问题点,
2.优化CC,CV的判断机制
uart2ble_tools.7z:蓝牙固件及下载工具
UP_SHELL.stp: 亚克力3D后盖图纸
DW_SHELL.stp:亚克力3D前盖图纸
3D_PRINT_SHELL_2MM.stp:3D打印外壳
大家有需要的可以加入qq群:594614521
物料包:咸鱼搜索 “USB可调电源结构物料包”
成品:咸鱼搜索 “USB可调电源V3成品”或者B站工房:哔哩哔哩工房
- B站完整的制作过程和演示操作:
视频演示
———————————————————————————————————————————————————————————
- B站完整的制作过程和操作演示: USB可调电源V3完整回顾与制作
- 硬件V4.7版功能完整演示: 【V4.7硬件功能完整演示】
评论