分享一个不错的快充协议解决方案

描述

许多 USB 供电的消费电子设备都内置了Qualcomm QC (快速充电)解决方案,可在不同电压下快速充电,而不是通常的 5.0 V。这使得有机会在需要更多功率或更高电压(如 9/12 V)的项目中使用与 QC 兼容的移动电源。

该项目的目的是开发一种可以破解 QC 协议的设备,并允许爱好者、开发人员、工程师使用他们的移动电源为他们的下一个耗电项目提供更多电压/功率。以此从任何与 QC 兼容的充电器/移动电源中获取 5 V和 9、12 V(最大 18 W)的电压,为耗电项目供电。

移动电源

上图显示了 QC 2.0 兼容电源的 5、9、12 V输出,为 10 欧姆 5 瓦电阻器供电。

开发 Hack 设备

整个设备有两个有源元件——LM1117 3.3V稳压器和ATtiny85 MCU来控制。所有其他部件是电阻器、按钮开关、连接器、跳线、接头、端子、原型板等。

移动电源

为了构建设备,首先将组件放置在整齐的布局中,然后进行焊接。一些 0 欧姆短链路用于互连不同的部分。

有跳线来禁用板载电路和启用编程。因为,编程线(SPI - MOSI、MISO、SCK)在设备操作期间也充当 GPIO。

移动电源

使用 ISP 对 ATtiny85 进行编程

在对 ATtiny85 进行编程之前,将其从 IC Base 中取出并放在面包板上。要对 ATtiny85 进行编程,通过从文件 》 示例 》 ArduinoISP草图上传“ArduinoISP”,将 Arduino UNO 板转换为 ISP 编程器。该草图在Arduino IDE中可用。

编程 ATtiny85 需要以下步骤:

为 Arduino IDE安装 ATtiny 支持(感谢David A. Mellis )

使用 Arduino UNO 作为 ISP 为 ATtiny85烧录引导加载程序

使用 Arduino UNO 作为 ISP 开发和上传代码

以下电路已准备好对 ATtiny85 进行编程:

移动电源

ISP = in system programmer

或者,可以通过移除其周围的所有跳线来对 ATtiny85 进行编程以保持在设备上。

设备操作

要使用该设备,首先需要将其连接到兼容 QC 的移动电源(或充电器)。默认情况下,QC 移动电源的 USB 电压为 5.0 伏。

上传代码后必须连接所有跳线,以便 MCU 可以通过 D+/- 与 QC 源进行通信。

LM1117 3.3 V 稳压器将启动并向 ATtiny85 供电。该 MCU 将开始执行代码。ATtiny85 的 4 个 I/O 引脚连接到将用作输出高电平和低电平的分压电阻器。另一个 I/O 引脚连接到将初始化为输入上拉的开关。此开关采用用户输入来更改 QC 源的电压。

现在,在详细介绍之前,重要的是要知道输出将如何变化。每种 USB(USB A、B、C、1.1、2.0、3.0+)至少有 4 条通用线/线:

VBUS (默认Vcc +5V)

D +

D -

地面

在普通充电器/移动电源中,VBUS 是固定的,因为功率传输受电流限制,500 mA、1 A、2 A 分别产生 2.5 瓦、5 瓦和 10 瓦。

但在 QC 电源设备中,有一个内部升压转换器,可以根据受电设备 (PD) 的要求提升电压!!!

QC 2.0(也称为 3.0)利用 USB 的 D+ 和 D- 与 PD 通信。PD 在 D+ 和 D- 上发送电压信号,QC 充电器将通过改变 VBUS 电压相应地供电。根据这个CHY 数据表,这里有一个表格,解释了来自 PD 的 D+/D- 上的什么信号对将使 QC 提供什么电压输出:

移动电源

当 D+ 和 D- 上的电压与该表第 4 行的值相同并保持至少 1.25 秒时,QC 2.0 支持启动。如果 D+ 变为 0.0 伏(实际上低于 0.325 伏),QC 支持将停止,输出将为 5.0 伏。通过根据该表设置电压,可以改变 VBUS 上的输出。

在这里,ATtiny85 的 4 路输出连接到 2 个分压器网络,该网络由两个 10k 和两个 2.2k 电阻器组成,用于为 D+/D- 线生成这些电压信号。

移动电源

例如,要在 D+ 上产生 3.3 V 电压,连接到两个 ATtiny85 输出引脚 PB3 和 PB4 的顶部和底部电阻器都将通过代码设置为高电平。

同样,要在 D- 上产生 0.6 V,连接到其他两个 ATtiny85 输出引脚(PB1 和 PB3)的顶部和底部电阻器将分别设为高电平和低电平。

这样 QC 2.0 充电器/移动电源接收电压变化请求并相应地变化。Push Switch 配置为输入 PULLUP,当未按下时,MCU 将其读取为高电平,并且代码执行保持在 while 循环中,防止设置电压发生任何变化。当用户按下 Push Switch 时,while 循环断开并设置下一个电压。再一次,代码执行进入下一个 while 循环以保持当前 VBUS 电压。

有一个 LED 可以发出昏暗 (5V)、微弱 (9V) 和明亮 (12V) 的光,为用户提供输出电压的可视化表示。

可能使用的应用

驱动 12V LED 灯条

为更远距离的射频发射器/接收器供电

驱动 12V 继电器、电机等

使用 LM317 或 LM2596 获得 1.25 至 10 伏之间的任何电压

9V红外遥控驱动

机器人汽车电源

笔记本电脑充电 20V

任何高达 18 瓦的系统,例如用于 IoT 应用的 WiFI、LTE、S2E 设备

远程系统的备用电源

大多数 LCD、LED 显示器、打印机、扫描仪

低功耗便携式电脑

支持其他 QC 类

由于 QC 2.0 Class B、QC 3.0 和 QC 4.0 向后兼容 QC 2.0 Class A,因此该设备可能适用于所有最新的充电器和移动电源。但电压选项将是 5.0、9.0 和 12.0 伏。如果需要其他输出电压,请阅读CHY 100、101、103 数据表并相应地修改代码。

警告!

必须使用具有短路保护的高质量QC移动电源或充电器,外部负载不得超过18瓦。这可以通过检查负载设备上的额定功率标签来确保。

必须避免输出 20 伏,因为 1117 3v3 稳压器可以处理最大 15 伏,这应该从MCU 代码中避免,方法是永远不允许 D+ 和 D- 线同时具有 3.3 伏。

如果需要20 伏输出(受QC 2.0 B 类和 QC 3.0、QC 4.0支持),则必须使用能够处理超过 20 伏的电压调节器(LM317 配置为 3.3 V)。否则Regulator 和 MCU 都将被销毁!!!!

注意输出电压的极性, +ve 用红色表示,-ve用输出端子旁边的蓝色细线表示。

必须避免USB公母耦合处的松散连接,否则会因接触电阻而产生热量并降低电源效率。

在 ISP 编程期间,必须移除所有跳线以将 MOSI、MISO、SCK、VCC、GND、RESET 引脚与电路板上的其余电路隔离,以避免干扰编程。

在没有清楚了解QC充电协议的情况下不得进行代码修改,此设计主要用于QC 2.0(A类)电源,但可部分用于更高的QC标准

Hack可能不适用于某些QC充电器/移动电源

GPIO 切换必须以正确的顺序完成,以避免终止高压模式

注意:如果以上几点没有实现,建议不要复制此项目,否则可能会发生火灾危险或设备丢失的风险!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分