使用PD/PPS的USB类型C充电器的接口
该项目起源于与GmbH的共同作品。
他们在
那里有一些有趣的董事会来触发USB C型电源输送源。例如zy12pdn。
您可以在Manuel BL上找到许多细节。这些模块允许您介入可用的固定配置文件,其中包括5 V,9 V,12 V,15 V,15 V和20 V.那里有许多其他固定配置文件。有些其他,有些通过电阻或跳线具有可选的电压。
我设法接触了Hynetek的HUSB238芯片。使用I2C可以通过电阻或微控制器进行编程。
不幸的是,这远低于PD 3.0符合PD的功能。所有这些模块仅使用所谓的固定配置文件。但是有PPS模式(可保证电源)。这使用了增强配置文件。增强轮廓从3.3 V到21 V,最多5 A.可以以20 mV步长选择电压,并且可以以50 mA步长选择最大电流。
这是我的想法:您是否曾经使用过那些矮胖的实验室电源在桌子上吃掉大多数空间?这些电源通常范围从0-30 V和0-5A。就我而言,我主要在几个放大器上使用5-15 V。
如果我们可以使用此增强配置文件模仿实验室电源怎么办?我们需要一个能够从适合PPS的C型C型电源中要求此配置文件的芯片。
好吧,有一个简单和艰难的方法:
简单的方法是告诉一些芯片请求所需的电压形式。
这样的芯片是二极管公司可获得的AP33772。您可以获得专门的评估委员会表格二极管或其他制造商,例如。微型。这是USB-C接收器2点击形式microe: 
该芯片已被标记为NRND,并被AP33772所取代。 “ S”版本甚至更容易使用,但缺点很大:它仅允许100 mV和250 mA步骤。
困难的方法是使用其中一种USB-C PD物理。他们为电源提供OSI 0 + 1接口。必须在SW中实施更高的级别。最常用的芯片似乎是半导体上的FUSB302形式。该芯片用于原始ZY12PDN。
在这里是: 
这是Ryan MA脱离的PD-Micro。它是Aruduino Pro Micro,具有FUSB302,一些LED,电源开关和电压调节器。瑞安(Ryan)使选择适当的配置文件变得容易。 Kai Clemens Liebich对Ryan的Fusb302 Lib做出了一些改进。
唯一的问题是电压稳定性。即使使用5 A USB C电缆,电压下降也很重要。因此,我们可能需要测量输出电压以罚款调整电源电压。有些想法是将内部ADC与外部2.048 V电压递减。问题是,这只是10位ADC,但是我们需要测量最多21 V的电压。假设我们以20.48 V的夹子夹,我们的分辨率为20 mV。这似乎就足够了,但是我们可以做得更好。当使用专用ADC时,例如INA219
我们可以将精度提高到4 mV。这远低于20 mV步骤。一个我们在顶部得到当前传感器。
警告当前传感器ACS712
ACS 712是一种易于使用的隔离电流传感器。但:
现在,我们可以设置电压,启用输出并测量输出电压和电流。因此,我们可以编写几行代码来实现恒定电压 /电流源。远程响应时间将受到电源速度的限制,但它在USB电源的合理限制范围内。我的PS是一个过时的Ugreen Nexode 2,其100W在〜40 .. 50毫秒内切换。
但是电压和电流夹具如何?好吧,我们可以使用串行接口和计算机来“远程控制”电路。但是,LCD作为UI呢?
这使我进入了我的第一个原型。

这是与左上方的顺时针开头的组件。

这是电压和电流传感器。分流电阻已减少到R015,以获得5个全尺度读数。
板上有一个串行EEPROM 24C256。这用于参数存储。我本可以在芯片EEPROM上使用Atmel的,但这具有较小的耐磨性。我不知道需要多少个写周期,所以我选择了一个外部EEPROM

这是电路的核心。
PD -Micro的USB -C端口被电源占据。 USB接口不能用于通信。因此,HW串行界面与FT232 USB连接到串行芯片。

这是我的LCD库中所述的20x4 HD44780与PCF8574兼容显示,电压逆变器和当前的对比度。
左至显示屏上有一个KY-040旋转编码器开关。就在开关上方,只有一个I2C和VCC总线杆。
实验室电源需要什么功能?












在启动时,系统将在主菜单开始之前显示版本和构建消息。
PD/PPS-Controller
====================
Ver. : 3.3 nbl
Build: mmm dd yyyy
初始化完成后,将显示主菜单
Mode (x:...) [UI^] !
UU.UU V I.II A
OUT UU.UU V I.II A
[i i i i i] (i)
最后一行I:菜单图标
要选择菜单项按按钮,将出现光标。转动旋转开关,直到光标处于所需物品的位置。再次按按钮选择菜单。在此菜单中,第二行中的“ V”和“ A”也是菜单项。选择要调整所需的电压或电流。
此菜单用于选择所需的PD配置文件。
# 1 / n (...)
U= UU.UU V - UU.UU V
I= I.II A max
[i i i] (i)
最后一行I:菜单图标
要选择一个配置文件,按按钮导航到第一行中的“#”符号,然后再次按以输入配置文件选择。转弯将跨越Avalabla配置文件。要选择一个配置文件再次按下,然后导航到对接行中的复选标记,或选择“ x”以中止。
此菜单用于更改操作模式或校准值。
(i)=auto (*)=. *
(i)=auto
(i)=auto
[i i i x] (i)
[i]或(i)括号中的图标
I= I.III A: I.III A
[i i i x] (i)
[i]或(i)括号中的图标
要调整当前的测量校准,可以通过负载进行输出,并使用校准的安培仪表测量电流。
输入设置菜单,然后转到校准菜单。输入测得的电流并选择该检查标记,以选择尽可能高的电流以获得最大的精度。
AVR SW用Arduino IDE编写。在开发SW时,我发现了有关该系统的几件事:
最初的成功后,迅速遇到了Flash和Ram的问题。您可能可以运行AVR代码,但我建议您降低免费内存功能。
这使我使用AtSAMD21G18进行了第二个原型。
AVR文件夹中的软件是原样的。这将不再是该分支机构的进一步发展。这是一种工作,但要自行使用。它仅在没有启动加载程序的情况下编译,您需要将boards.local.txt文件从配置文件夹添加到
C:Users_user_AppDataLocalArduino15packagesarduinohardwareavr1.8.6
(至少在Windows机器上),然后从可用板中选择带有启动加载程序的Arduino Leonardo 。
您将需要Avrdude和Usbasp
提示:购买一个廉价克隆时要小心。他们经常带有过时的SW,并且无法正常工作。更新这些都没有问题,但是您需要一个工作的USBASP适配器。
程序员闪烁SW。对于非CLI用户:Avrduess是Avrdude的绝佳GUI。
您不妨将Arduino Uno用作USB到ISP桥。
挫折之后,我尝试了一个Arduino零。该板使用ATSAMD21G18,该ATSAMD21G18是以48 MHz运行的Cortex M0+ ARM控制器。它具有256 kb的闪光灯和32 kb ram和许多接口。快速端口表明,SW可以从AVR上移植到手臂,几乎没有问题。
这是我们决定启动第一个自定义PCB的地步,避免了第一个原型遇到的所有问题。
一些头痛会导致VCC供应。大多数雄鹿转换器电路都需要一些电压净空才能操作并“功能”欠压锁定电路。但这对于这个电路来说是不可能的。它需要低至3.3 V VBU。我们需要一个欠压旁路凝管,以确保在3.3 V VBUS处操作。否则,当VBU掉落到阈值以下时,电路将锁定,通常在3.3 V输出时4 V -4.7 V。
这个问题被略有工程化解决。我们使用了两个3.3 V调节器,这些调节剂由理想的二极管进行。
TPS62932配置为输出3.45 V. UVLO设置为4.55 V,并且将启用设置为5.06 V.这可以保证降压转换器在5 V以上操作,并且输出略高于3.3 V,因此3.3 V LDO可保存butsible。 LDO是NCV2951ACDMR2G设置为3.3 V.辍学电压为100 mA时最大450 mV。电路的当前消耗量低于50 mA,因此我们的最大液落估计为300 mV。
当输入电压高于5.06 V时,LDO是空闲的,VCC为3.45V。当输入伏特降至4.55 V以下降低4.55 v时,降压转换器被禁用,LDO降低了3.3 V的VCC,导致输入Voltoge继续降低,VCC将降低到3.3 V V vbus的〜3 V v v v vbus。
CPU将根据BrownOut设置保存至2.7 V。
PCBA:
工作原型:
Current Calibration
internal I.III A
reference I.III A
[i i i x] (i)
当前的读数和参考值已重组。
SW已被重构,现在是USB-PD2。在第一个SW中,电源的控制是在菜单类中实现的。这已移至自己的控制器类。
添加了托多德提醒的标题,已经添加了电源测试类以进行测试配置文件更改。
为了首次刷新SW,您将需要JTAG调试接口,例如
您可以使用Atmel Studio或Arduino IDE刷新Arduio零引导加载程序。
您也可以使用眨眼演示。选择草图 - >导出二进制。 IDE将创建一个文件xxx.ino.with_bootloader.arduino_zero.bin。只需刷一下文件即可。您可能需要从Arduino Zero中复制保险丝钻头。
保险丝文件夹中有一些样本。一些保险丝是工厂调整的,不能被覆盖。
Bootloader工作后,您可以使用SAM-BA引导加载程序闪烁SW。 Microchip提供的SW具有一个CLI,适用于所有支持SAM-BA的SAM设备,因此使用有些棘手。一个更简单的工具是Shumatech的Bossa。
我的充电器支持5 V / 9 V / 12 V / 15 V @ 3A和20 V @ 5A固定配置文件和3.3 V -21 V @ 5 A增强配置文件。请小心许多标有100W(甚至Ugreen)的充电器只能支撑65 W PPS(3.25 A),电压范围有限。它们可能不会在3.3 V以下的反向电压。有些人甚至具有两个具有不同网络 /电流等级的PPS轮廓。
Ugreen Nexode 2端口100W PD-Charger(CD254#50827)支持的配置文件:
Ugreen Nexode 100W桌面充电器(CD328#90928)支持配置文件:
Anker Powerport I 30W PD
支持的个人资料:
Ilepo USB C快速充电器65 W
支持的配置文件
Iniu Power Bank 20000mah,22.5W
支持的配置文件
当没有绘制电流时,某些功率似乎可以重置功率。
我的“ Nexode 100W台式充电器” P/N 90928在不加载的情况下重置〜1 h。其他充电器没有。
我的INIU电力库重置〜10s之内没有负载
使用LOAD 20R日志
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0172: RX Src_Cap id=1 raw=0x53A1
0172: obj0=0x2A01912C
0172: obj1=0x0002D0E9
0172: obj2=0x0003C096
0172: obj3=0xC076323C
0172: obj4=0xC0DC3228
0172: [0] 5.00V 3.00A
0172: [1] 9.00V 2.33A
0172: [2] 12.00V 1.50A
0172: [3] 5.00V-5.90V 3.00A PPS *
0172: [4] 5.00V-11.00V 2.00A PPS
0176: TX Request id=0 raw=0x1082
0176: obj0=0x42022628
0186: RX GoodCRC id=0 raw=0x0121
0192: RX Accept id=2 raw=0x05A3
0210: RX PS_RDY id=3 raw=0x07A6
0212: PPS 5.50V 2.00A supply ready
0214: Load SW ON
5214: TX Request id=1 raw=0x1282
5214: obj0=0x42022628
5222: RX GoodCRC id=1 raw=0x0321
5228: RX Accept id=4 raw=0x09A3
5246: RX PS_RDY id=5 raw=0x0BA6
5246: PPS 5.50V 2.00A supply ready
10248:TX Request id=2 raw=0x1482
10248: obj0=0x42022628
10256:RX GoodCRC id=2 raw=0x0521
10262:RX Accept id=6 raw=0x0DA3
10280:RX PS_RDY id=7 raw=0x0FA6
10280:PPS 5.50V 2.00A supply ready
...
没有负载的日志:
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0172: RX Src_Cap id=1 raw=0x53A1
0172: obj0=0x2A01912C
0172: obj1=0x0002D0E9
0172: obj2=0x0003C096
0172: obj3=0xC076323C
0172: obj4=0xC0DC3228
0172: [0] 5.00V 3.00A
0172: [1] 9.00V 2.33A
0172: [2] 12.00V 1.50A
0172: [3] 5.00V-5.90V 3.00A PPS *
0172: [4] 5.00V-11.00V 2.00A PPS
0176: TX Request id=0 raw=0x1082
0176: obj0=0x42022628
0186: RX GoodCRC id=0 raw=0x0121
0192: RX Accept id=2 raw=0x05A3
0210: RX PS_RDY id=3 raw=0x07A6
0212: PPS 5.50V 2.00A supply ready
0214: Load SW ON
5214: TX Request id=1 raw=0x1282
5214: obj0=0x42022628
5222: RX GoodCRC id=1 raw=0x0321
5228: RX Accept id=4 raw=0x09A3
5248: RX PS_RDY id=5 raw=0x0BA6
5248: PPS 5.50V 2.00A supply ready
10250:TX Request id=2 raw=0x1482
10250: obj0=0x42022628
10258:RX GoodCRC id=2 raw=0x0521
10264:RX Accept id=6 raw=0x0DA3
10284:RX PS_RDY id=7 raw=0x0FA6
10284:PPS 5.50V 2.00A supply ready
==> The Power bank resets and defaults to 5V only.
0006: FUSB302 ver ID:B_revA
0118: USB attached CC1 vRd-3.0
0352: TX Get_Src_Cap id=0 raw=0x0087
0704: TX Get_Src_Cap id=0 raw=0x0087
1056: TX Get_Src_Cap id=0 raw=0x0087