我的订单 购物车(0)联系客服 帮助中心供应商合作 嘉立创产业服务群
领券中心备货找料立推专区爆款推荐合作库存PLUS会员BOM配单PCB/SMT工业品面板定制

140W,5-28V可调!我花6.8元,做了个这样的快充……

2026-02-03 11:32:43阅读量:128

工程名称:网页配置版140W Type-C受电工具(CH32M030版)

工程作者:Q2H2

前言

我做了个“万能”Type-C受电工具

 

“万能”Type-C受电工具

有了它,就能实现供电自由!!1个充电器,也能给笔记本、示波器、手机、智能小车等各种设备供电!

01
功能&亮点
  • 支持输出功率:≥140W持续输出

  • 支持输出电流:5A以内可调

  • 支持输出电压:5V~28V可调

  • 支持网页设置电压/电流:提供离线网页,不联网即可设置当前电压/电流,手机电脑都能设置,设置完手机充电器也能给笔记本充电!还配置掉电保存,下次上电直接使用

  • 支持FIX/PPS/EPR/AVS协议:常见设备,都能用!协议请求顺序可调

  • 集成过压 / 过流 / 过温保护,不怕炸板

  • DIY成本低:仅6.8元就能复刻一个

  • 芯片选型逻辑、电源路径可靠性设计、大电流采样优化、PD 库封装 + WinUSB 免驱设计,可复用!

  • 可二次开发:提供一个.a库文件,PD协议通信轻松搞定,还可以自行增删功能(例如RGB灯效,串口、I2C接口功能拓展等)

02
我为啥要做这个受电工具?

事情是这样的。

最近我想做一套从Type-C取电的电源工具,方便给开发的各种新设备上电,以及用于旧设备的维修(经常找不到适配充电器,很麻烦啊)等……

遂看了下平台上的开源方案。

  • 做可调电源吧,系统复杂难焊

  • 用PD受电芯片吧,挡位少不够灵活

好吧,老老实实自个手搓一个得了……

其实我起初考虑过用CH224Q这种受电芯片,它支持140W EPR,还能用MCU去配电压,但是,都自己手搓了,我又不太想用PD芯片加MCU这种过于老套的组合

咱就说,能不能只用一个芯片,实现要什么电压就给什么电压?

研究了一下,还真能!

我的灵感来自沁恒PD芯片的在线定制平台,这个网站神奇的地方在于——可以通过网页给eMarker芯片下载参数。

也就是说,如果我照葫芦画瓢把参数设置交给网页,输出电压通过PPS或者AVS协议让Type-C电源适配器去做,那么PCB上只要个MCU就够了

03
硬件设计方案

这是一个基于CH32M030的单芯片方案。

 

硬件框图

硬件框图

 

原理图

原理图

PCB图

PCB图

 

3.1 我为啥选择做单芯片方案?

因为这颗芯片的工作电源,能满足需求。

CH32M030内部的高压LDO支持5~28V电源。本设计中,Type-C接口最高输出140W(28V@5A)。

VBUS电压正好落在高压LDO工作范围中,因此芯片直接从VBUS上取电,省去传统双芯片方案中必需的外部高压 LDO。大大降低制作成本。

 

3.2 从VBUS上取电?这能可靠/安全吗?

能的,兄弟,能的。

现在电源通断好像都喜欢用NMOS,一是内阻低发热小,二是成本也比PMOS便宜

因此我这里也用的一对NMOS背靠背设计,防止VBUS掉电情况下模块输出端向Type-C接口倒灌电流。

本设计采用电源直出形式,模块输出电压与Type-C接口输入电压一致,NMOS的导通需要给栅极施加至少VBUS+Vgs(th)的开启电压。

 

3.3 高于VBUS的电压怎么来?

这就要用到芯片内部的电荷泵了。

①电荷泵升压工作原理

M030的二级电荷泵只需要三个电容即可输出VBUS+8V,可为电源路径上NMOS的开启提供足够的高压。

电荷泵的工作原理非常简单,先将电容C1充电至VBUS,之后电容C1叠加PB14的高电平,将C2充至VBUS+4V;然后C2再叠加PB12的高电平,将C3充到VBUS+8V。

整个过程持续交替进行,从而保证HVCP带载情况下也能输出稳定高压。

 

电荷泵升压工作原理

电荷泵的三个引脚由CH32M030定时器2的两对互补通道驱动。工作时,PC5、PB14输出互补波形、PB14与PB12输出互补波形。通道2中插入死区,可以防止C1向VBUS倒灌。

电荷泵升压工作原理

解决了NMOS 的驱动难题,接下来聊聊如何防止驱动后的高温击穿?如何让方案更稳定?

 

②电源路径上NMOS的通断控制

有了HVCP引脚上的VBUS+8V,就可以通过MCU的I/O控制电源路径上的NMOS。这里使用PB15,这个引脚只能开漏输出。

电源路径上NMOS的通断控制

PB15内部可选120k欧的电阻再到地,这是为了防止VBUS+8V与DCDC后的DC Out压差过大导致MOS栅源击穿用的。本方案没有使用DCDC,VBUS+8V与DC Out压差总是8V,因此内部的120k没有用到。

另加的2M电阻用于防止MOS漏源在较高温度下微弱漏电造成栅源击穿

 

3.4 那产生压差了,咋办?

或许,你需要一个差分电流放大电路。

毕竟在 140W 大功率场景下,大电流流过 GND 平面会产生微小压差 —— 用普通单端采样的话,这个压差会混进采样信号里,导致电流测不准,甚至触发误保护。

使用差分采样可以很好地解决这个问题。

 

差分电流放大电路

CH32M030内部的运放可以很方便地配成高增益的差分输入,本方案将采样电阻上的电压放大50倍后加偏置送给ADC进行采样。

差分电流放大电路
04
怎么实现网页配置/PD通信?
01 
PD通信,可直接调用库

由于M030的EVT自带PD例程,项目起步就比较方便。

可以先参考例程跑通PD通信,再照着PD官方文档把对应的逻辑堆出来就行。

这部分比较枯燥,代码写了好几天。考虑到许多朋友对PD协议可能不太熟,我把PD的底层代码封成了libPD_SNK.a库给大家,直接调用API,这样做二次开发的朋友上手会比较容易

PD通信,可直接调用库
02 
网页配置,基于WinUSB

Google的Chrome等许多浏览器都支持用网页访问本地USB设备的Web API。本作品通过网页更新受电工具参数就依赖这套API。

网页和受电工具的通信基于WinUSB。

所谓WinUSB,是微软为USB设备与主机通信提供的简单解决方案。WinUSB无需安装驱动,操作系统会自动识别并加载内置的WinUSB驱动,同时提供数据收发的上层接口。

通过浏览器的Web API,可以扫描并连接受电工具,将网页上配置好的参数通过USB写进受电工具中。

网页配置,基于WinUSB
03 
代码结构

如果只是做着玩,直接编译工程烧录固件就可以了。CH32M030不支持ISP下载,下载程序要用WCH-LinkE,也不贵。

对于有志二次开发的朋友,这里简要介绍一下工程结构。

几个比较重要的文件和文件夹:

  •  
User文件夹|----HVCP文件夹----NMOS升压和驱动相关|----USBFS文件夹——USB设备枚举|----USBPD文件夹——PD驱动库|----PD_User.c——PD回调函数

PD_User.c提供初始的默认配置和PD通信节点的回调函数,此外还包含一个不精确的1ms延时,可以加入灯效或者按键扫描等内容。这个1ms延时不能添加Delay或者其他耗时长的操作。这个文件中,电压、电流、温度的单位分别为mV、mA和℃,例如:

  •  
.VoltTarget = 20000代表20V.CurrentTarget = 4500代表4.5A.OTPNum = 70代表70℃

另外,CH32M030K9U7的信息在DS2手册里,芯片用的时候要结合DS0/RM一起看。

 

04 
使用方法

这里主要介绍网页配置工具的界面功能,网页工具对应压缩包CfgWeb/PD WEBUSB/index.html文件。

网页配置,基于WinUSB
05
结语

最后点名表扬一下MRS2。

怎么说呢,Keil确实功能强大,但是吧《那你和我的MRS2说去吧》《我们都在用力的活着》。

MRS2你就用吧,香就完事了。

MR32

再啰嗦一句,注意用电安全!!!

这个方案涉及高压大功率,尝试之前一定要做好功课,安全第一!

方案分享给大家学习研究Type-C受电技术,做产品的话还是建议选用CH224Q/CH224A这类专用芯片。

 

怎么样?

你喜欢这个作品吗

如果你想给作者点个赞

或想了解开源项目[源码][硬件]等资料

就下滑吧!

▼▼

开源网址:https://oshwhub.com/q2h2/ch32m030-140w-typec-dc?code=AC-f93aadb4bcaf4102947acbc42bf7a592

标签图标
快充
上一篇:这个轮腿机器人,开源了……下一篇:没有了