发作品签到
专业版

USB可调电源V3,硬件V4.7全面升级

工程标签

4.3w
0
0
134

简介

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连续可调
星火计划2024

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-06-25 20:38:31更新时间:2024-12-13 09:45:36

描述

重要更新及注意事项

———————————————————————————————————————————————————————————

  • 本工程的硬件已经全面更新为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.0BC1.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,C33U11组成了一个积分电路,如果没有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函数介绍:

static void key_event_handle(mo_key_event_msg_t *k_event):用户按键事件处理
static void display_task_handle(mo_task tsk, mo_msg_id msg_id, mo_msg msg):LCD显示事件处理
static void uart_rx_msg_handle(mo_u8 *p_dat):上位机UART RX数据报处理
static void main_task_handle(mo_task tsk, mo_msg_id msg_id, mo_msg msg):主应用事件处理,系统所有事件的输入和输出有这
里接收和发出。
 

固件下载

———————————————————————————————————————————————————————————

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站完整的制作过程和演示操作:

                                

 

 

视频演示

———————————————————————————————————————————————————————————

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
UP_SHELL.stp
350
2
DW_SHELL.stp
336
3
3D_PRINT_SHELL_2mm.stp
353
4
USB-PS-V3-演示视频.mp4
306
5
uart2ble_tools .7z
595
6
AT32F421F8P7-USB-PS-V3-V1.1.hex
228
7
AT32F421F8P7-USB-PS-V3-V1.2.hex
230
8
USB-PS-V3-煮开水.mp4
170
9
AT32F421F8P7-USB-PS-V3-V2.1-for-HW4.4.hex
104
10
AT32F421F8P7-USB-PS-V3-V2.3-for-HWV4.4.hex
129
11
小程序演示.mp4
93
12
基本功能演示.mp4
111
13
AT32F421F8P7-USB-PS-V3-V2.4-for-HWV4.4.hex
87
14
AT32F421F8P7-USB-PS-V3-V2.6-for-HW4.4.hex
92
15
AT32F421F8P7-USB-PS-V3-V2.8-for-HW4.7.hex
50
16
AT32F421F8P7-USB-PS-V3-V3.0-for-HW4.7.hex
38
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航