发作品签到
专业版

USB可调电源V3

工程标签

1.3w
0
0
56

简介

USB可编程电源/功耗监测,小程序控制, 支持USB PD3.0,BC1.2协议,DC 2.7V~27V输入, 宽范围的输出电压,从2V ~ 34V连续可调,大于5A的带载能力

简介:USB可编程电源/功耗监测,小程序控制, 支持USB PD3.0,BC1.2协议,DC 2.7V~27V输入, 宽范围的输出电压,从2V ~ 34V连续可调,大于5A的带载能力
星火计划2024

开源协议

GPL 3.0

创建时间:2024-06-25 20:38:31更新时间:2024-08-26 11:05:15

描述

项目简介

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

本设计支持USB PD3.0,BC1.2协议, 可通过PD/BC1.2协议使支持PD/BC1.2协议的USB电源适配器输出5V,9V,12V,15V,20V

电源给系统供电;

宽范围的输出电压,从2.0V ~ 34V可调,5A+的带载能力;

输入电压电流,输出电压电流实时监测,通过320X240的TFT或者上位机反馈给用户;

简洁的用户交互,仅仅通过一个旋转编码器或者上位机输出电压输出电流限制进行连续调整;

                                                                              (点击图片看大图)

上位机微信小程序

                                                                (点击图片看大图)

小程序上线了,可以扫描打开小程序:

 

项目背景

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

  • 最近这一两年才接触开源硬件的项目,因没有太多开源项目的经验,加上本人硬件方面的开发能力有限,因此在V1,V2这两版本中

          踩了不少的“”;

  • 发布V3版本主要有以下3个目的:

          1. “填坑”,将V1,V2两个版本中遇到的一些“坑”填平,

          2. 总结经验,提升硬件设计方面的能力,对DC-DC电源深入学习,通过本项目的方式将学习到的知识进行实践验证,

          3. 在V2版本上有很多小伙伴反馈,器件太多,封装太小,不好焊接,在V3设计过程中,优先将这些因数充分考虑进去,以简洁,方便DIY

              为主,电阻,电容能统一的都尽量统一为同一规格的物料

  •  在技术交流群中总有一些“手残党”的小伙伴问我有没有成品,可不可以出成品,我当时心里想V2,V1还不太完善,不好意思出成品,

           当时我就想,我需要找到一个比较完善的方案,长期维护,持续为小伙伴们提供一款相对完善的版本。这不,V3就来了,V3我会长期维护

           有需要的小伙伴,希望你们多多支持,我会上架咸鱼

           喜欢折腾的小伙伴,欢迎你们复刻魔改。我非常乐意与你们一起分享我对DC-DC电源的学习和探索成果!!                              

成品链接:https://m.tb.cn/h.gPymWTo?tk=Bz683ejrOvg

 

项目亮点

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

  • 支持USB PD3.0/PD2.0BC1.2协议,支持5V~20V输入
  • 支持DC电源插座输入2.7V~27V输入
  • 输出电压从2.0V ~ 34V可调,5A+的输出电流带载能力(最大输出可到8A,需要考虑散热问题),可满足日常实验使用,
  • 较小的输出电源纹波,back模式:20mV~70mV左右
  • 输出限流可从500mA~8A可调
  • 电源输出可控,方便反复给用电设备断电上电的操作
  • 微信小程序配置输出电压,与电压/电流实时监测记录
  • 电源输入电压,电流实时监测
  • 电源输出电压,电流实时监测
  • 320x240 TFT实时显示用电情况,可做为一个简易功率计使用,监测用电设备的用电情况
  • 可通过BLE与上位机进行通信,实现更多应用的拓展开发
  • 外围器件少,实现原理简单,非常方便DIY
  • 小巧方便,不依赖特定电源,只要是USB适配器都可以使用
  • 软硬件全部开源

硬件介绍

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

  • 硬件资源与尺寸标注

                                                                   (点击图片看大图)

                                                                 (点击图片看大图)                    

     在这里解释一下为何本设计选用了如图所示的输出接线端子座,其实目的就一个,方便不依赖于特定的接线插头

随便身边一条普通的导线就可以使用;而且无需其他额外的工具就可以操作(有手就行)。而且还可以适配常用的香蕉插头

     我在开源社区有看到一些类似的开源项目,使用的都是一些专用的插座,有一定的局限性不符合便携方便的需求。

  • 原理图介绍

    下图是电源输入部分,本设计的输入分为两部分,一部分是通过USB Type-C口输入;另外一部分是通过DC电源插座输入。

   

                           (点击图片看大图)

    PD协议芯片电路,这部分电路相对比较简单,只是必要的供电电路,完成PD协议与BC1.2协议的交互。

                                       (点击图片看大图)

 

    3.3V DC-DC电路,为系统提供3.3V供电电压。支持4.5V~28V的输入电压。

                              (点击图片看大图)

输入/输出的电压/电流检测电路,有两颗INA226组成,一颗负责输入检测,另外一颗则负责输出检测。

                                    (点击图片看大图)

数字电源Buck-Boost电路,为负载提供电源,他的主要作用是根据用户设定的输出电压,和输出限流,为用电设备提供电源。输出电压和限流可通过

PWM和IO口进行控制。VADJ网络是电压调整的PWM控制控制信号,IADJ网络名是电流限制的PWM控制信号;PWM的占空比越大,输出电压/电流

就越大。

                             (点击图片看大图)

  • 主控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

                                                                                  

软件介绍

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

本项目使用的软件架构为本人自行开发,此软件架构的核心是所有的功能模块被独立分开,模块与模块之间以消息的方式进行

信息交互,各个模块维护各自的状态;本着以功能内聚大,以数据耦合为主,尽量不使用逻辑耦合,或者直接修改对方数据的方式。

如下是程序框架图,下面对部分模块进行简要说明,详细的大家可以看看源代码,如有不明白的地方欢迎大家留言讨论:

                                                                                      (点击图片看大图)

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;上电,这时设备应该能正常跑起来了。

 

 硬件设置

 软件操作,这里忽略了2,3步,2,3步只需点击下一步即可,4步需添加MCU固件。

                                                                        (点击图片看大图)

低功耗蓝牙固件下载(不需要开发蓝牙软件的小伙伴,建议用下面的方法2)

按如下方式接好USB线到板子,如果芯片是空片,这里就不需要杰里的强制升级的开发工具了,这里我们只需准备一条如下图的USB数据线就可以;

后面更新程序时就不用数据线了(因为本项目的源码是打开了OTA功能的),我们可以通过杰里的OTA升级小程序更新软件,(可以在微信端搜索

“杰里OTA”)。

                       点击图片看大图

  • 方法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文件在如下的目录里。

                              点击图片看大图

结构部件

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

以下这些配件可以拽下面这个链接,一站式配齐所有结构物料打包好,让你省心,让你放心,(有需要的小伙伴,多多支持啊!

挣点小钱钱),咸鱼链接:https://m.tb.cn/h.gPycLdA?tk=jR6g3ejUBxi

成品链接:https://m.tb.cn/h.gPymWTo?tk=Bz683ejrOvg

 

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

 

项目当前已知问题!!

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

1. 电压输出的情况下,调节输出电压,当在高压与低压档之间切换时有2mS的低电压输出情况。

2024/8/19

2. 空载情况下,输出电压后,直接拔掉输入端的电源,有输出端的电压倒灌会输入端的问题(电压大于30V时,SC8701基本会损害)

这个问题点已经有解决办法,需要飞线加元器件,如下图:

>>> 硬件V3.6版本已经加入此对策

3. 电压调节得比较高,大约大于15V左右,输出限流小于2.5A, 此时输出电压上不去,需要增大限流,或者调低电压后慢慢增加电压才可正常输出设定电压。

4. 如果是直接短路输出端,限流不准确,通常比设定的限制电流大很多。

以上是这段时间(截止至2024/8/19)小伙伴们不断测试体验后的一些问题点,还没有复刻的小伙伴可以等等,我会把这些问题点排查,最终会更新PCB和原理图。

 

如果您觉得本项目不错,帮忙点个赞。

同时如果您觉得本项目有实用价值,也欢迎您点击收藏。

 

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-Vx.x.hex: MCU下载固件

uart2ble_tools.7z:蓝牙固件及下载工具

UP_SHELL.stp: 亚克力3D后盖图纸

DW_SHELL.stp:亚克力3D前盖图纸

3D_PRINT_SHELL_2MM.stp:3D打印外壳

大家有需要的可以加入qq群:594614521

结构件打包链接:https://m.tb.cn/h.gPycLdA?tk=jR6g3ejUBxi

成品链接:https://m.tb.cn/h.gPymWTo?tk=Bz683ejrOvg

 

  • B站完整的制作过程和演示操作:

                                

 

 

视频演示

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

设计图

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

BOM

暂无BOM

附件

序号文件名称下载次数
1
UP_SHELL.stp
103
2
DW_SHELL.stp
96
3
3D_PRINT_SHELL_2mm.stp
102
4
USB-PS-V3-演示视频.mp4
85
5
uart2ble_tools .7z
150
6
AT32F421F8P7-USB-PS-V3-V1.1.hex
67
7
AT32F421F8P7-USB-PS-V3-V1.2.hex
72
8
USB-PS-V3-煮开水.mp4
36
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

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

底部导航