· 8 min read
带功率计量的 PD 诱骗器
背景与目标
最近正在开发一款支持多协议快充的桌面供电设备,需要测试输出的情况,所以迫切需要拥有一个 PD Sinker。之前还没机会用到相关的芯片,这次借机搓一个。
因为自己的首要需求是测试快充输出,其次是其他场景下也能发挥最大的功能,所以考虑要实现的目标如下:
支持 PD sink
5-20V 支持,不追求细分的电压档位
数控,避免误操作
带有记忆功能
支持显示电流和功率
自带显示屏
实时显示输出,不做历史记录
工作电压 4-25V,电流 10A
选型与设计
大体思路
项目整体上是分为两个部分,一个是 PD sink,一个是实际输出的参数采集。这俩部分由 MCU 控制。MCU 通过微动开关收集用户输入的指令,通过显示屏输出系统状态。
尽量选择支持双向通信的 PD sink 芯片,用来采集可选的 PD 档位,避免误选了不存在的档位,导致输出的电压不符合预期。
作为串联在电源与用电器之间的设备,功耗要尽量地低,避免拖累电源。
PD Sink 芯片
USB Power Delivery 受电芯片是本项目的核心部件,用于向 PD Source 申请指定的电压与电流。第一步就是选择 PD sink 芯片。
首先映入眼帘的就是经常见到的 CH224K,支持模拟和数字两种方式配置诱骗的电压,其中数字方式适合本项目,支持 5V、9V、12V、15V、20V。
我更喜欢 CH224D 这款芯片。一是相比 CH224K 的 ESSOP-10 封装,没有脚的 QFN20 好焊很多。二是它有控制 NMOS 的能力,具体功能就不清楚了,因为某宝买不到,就没继续研究了。
然后发现 FS312 这款芯片,支持的档位和 CH224K 一样,只支持模拟方式配置,虽然 MCU 也有办法控制,但是没必要折磨自己。
主角来了,HUSB238,比 CH224K 多了 18V 档位,还能通过 I2C 配置,并且能读取 PD Source 支持的档位信息,加上 DFN10 封装,满足了。某宝上价格还行,比 CH224K 贵一点点。
功率计芯片
INA226 支持 36V 母线电压, 我一直在使用 INA226,正好有日常备料,直接使用了。
我还没发现其他更好的选择。
主控芯片
主控芯片我目前只会从 ESP32-C3 和 CH32V003 中选择,这个项目我就直接选择 CH32V003 了,0.5 CNY,买不了吃亏买不了上当,能在 macOS 上开发,芯片性能也足够了。
显示屏
我是根据 PCB 尺寸来选的,考虑到上一个项目已经使用了使用 ST7735S 主控的 0.96 寸 TFT,用在这个项目上尺寸正好。我大概估算了下功率,觉得还行就直接选这个了。
因为我觉得看起来会比单色的 OLED 舒服些,所以选择了彩屏。后续考虑做自动熄屏来节约功耗。
电源芯片
由于系统整体功耗不算小,所以不考虑通过 PD sink 芯片取电,而是使用单独的供电。目标供电电压在 2.8-3.3V 之间(受限于显示屏,其他器件 2.7-5.5V)。
SY6345 支持 40V、300mA 输入的 LDO,支持最低 300mV 的压差。这款在优信上有卖,价格也低。
其它的选择我忘记了(来自一周后才开始写这篇文章的我),受限于体积,没有选择封装更大的 LDO,SY6345AAC 使用 SOT23-5 封装,体积足够小。
输出接口
我选 2.54mm 弯排针,我比较常用这个。我买了 24AWG 的镀金的杜邦线,测试时走 12V 3A 是 OK 的。
软件设计
操作逻辑
主界面是功率计界面,显示电压、电流、功率、当前申请的电压档位。
设备的按键 A 和按键 B 分别位于屏幕长边的两侧,为了方便说明,根据屏幕方向,将上方按键作为_按键上_,下方按键作为_按键下_。
主界面下短按_按键上_进入或退出睡眠模式,长按_按键上_启用或禁用自动睡眠,短按_按键下_切换界面内容,长按_按键下_切换屏幕方向。
同时短按两个按键开启或关闭输出,关闭输出时显示诱骗档位选择界面。按键上和按键下切换选中项,同时短按两个按键生效并开启输出。
同时长按两个按键进入设置界面,设置界面功能待定。
按键处理
本次使用 SysTick
和 GPIO 中断实现按键触发、长按短按识别。按键 A 和按键 B 连接 PA1 和 PA2,MCU 内部上拉,低电平表示按下。500 ms 内算短按,否则算长按,不支持自动连击。
SysTick
是以 HCLK
或 HCLK/8
作为时基,我选用 HCLK
。 HCLK
又由 RCC_CFGR0
寄存器 SW[1:0]
配置,我选用默认的内置高速时钟源 HSI
, 频率 24 MHz。所以我希望的 500 ms 等于 0.5s * 24MHz = 12M
测试与调整
在 12V 及以上输入时,LDO 温度偏高
目前屏幕背光 100% 亮度,MCU 和功率计正常工作,LDO 温度偏高。目前考虑降低背光亮度和实现屏幕待机逻辑。
我还没等到实现屏幕背光亮度控制逻辑,CH32V003 的 Flash 已经被我的程序和字体占得满满的了。现在得去做下一版了。