基于 CH32V003 和 CH224K 的 PD 电源诱骗器
简介
基于 CH32V003 和 CH224K 的 PD 电源诱骗器,可以自行选择诱骗电压,并且支持电压、电流、功率显示。
简介:基于 CH32V003 和 CH224K 的 PD 电源诱骗器,可以自行选择诱骗电压,并且支持电压、电流、功率显示。开源协议
:CERN Open Hardware License
(未经作者授权,禁止转载)描述
基于 CH32V003 和 CH224K 的 PD 电源诱骗器,可以自行选择诱骗电压,并且支持电压、电流、功率显示。
不需要 USB PD 诱骗功能可以看另外一个基于 CH32V003 的纯 USB 电流表项目:https://oshwhub.com/wandaeda/ji-yu-ch32v003-de-usb-dian-liu-biao
主界面:
PCB:
三维猴透明树脂外壳很赞:
USB PD 诱骗器需求
- USB Type-C 输入
- DC 2.5mm 以及 MX126 端子输出
- USB PD 协议诱骗,支持多档电压,支持最高 20V 5A
- 支持 5~20V 电压检测
- 支持 0~5A 电流检测
- 支持功率计算、容量统计
- 支持功率历史图表显示
- 支持统计数据记录与清除
- 按键切换电压电流数据与功率历史图表
- 使用 INA219 采集电压、电流相关数据
- 使用 12864 OLED 显示相关数据
CH32V003 介绍
CH32V003系列是基于青稞RISC-V2A内核设计的工业级通用微控制器,支持48MHz系统主频,具有宽压、单线调试、低功耗、超小封装等特点。CH32V003系列内置1组DMA控制器、1组10位模数转换ADC、1组运放比较器、多组定时器以及标准通讯接口USART、IIC、SPI等。
官网:https://www.wch.cn/products/CH32V003.html
主要参数:
- 青稞32位RISC-V2A处理器,支持2级中断嵌套
- 最高48MHz系统主频
- 2KB SRAM,16KB Flash
- 供电电压:3.3/5V
- 多种低功耗模式:睡眠、待机
- 上/下电复位、可编程电压监测器
- 1组1路通用DMA控制器
- 1组运放比较器
- 1组10位ADC
- 1个16位高级定时器和1个16位通用定时器
- 2个看门狗定时器和1个32位系统时基定时器
- 1个USART接口、1组IIC接口、1组SPI接口
- 18个I/O口,映像一个外部中断
- 64位芯片唯一ID
- 串行单线调试接口
- 封装形式:TSSOP20、QFN20、SOP16、SOP8
对于本项目来说,使用 12864 OLED 以及 INA219 需要 I2C 接口,按键需要使用普通 GPIO,UART 用于调试信息输出,SDIO 用于烧录,对比之后发现,TSSOP20 封装的 CH32V003F4P6 更适合,它相比使用 SOP8 封装的 CH32V003J4M6 拥有更多 GPIO,并且 UART 和 SDIO 也没有复用,可以更好地满足本项目的需求。
MCU
MCU 部分没有什么特别需要介绍的,供电 3.3V,加上 100nF 去耦电容。注意 CH32V003 使用 I2C 时,需要在 SCL SDA 加上上拉电阻。
这里虽然给 SPI 接口也加了网络标识,但实际并未使用。
USB Type-C 输入及诱骗输出
输入使用了 USB Type-C 16P 接头,PD 诱骗通常不是为了再同样输出到 USB Type-C 接口设备使用,因此这里的输出使用 MX126 螺钉式接线端子和 DC 2.5mm 接口,这样高电压用电设备可以直接通过 DC 插头或者祼线的方式接入。
LDO 供电
因为诱骗器本身没有额外供电,因此需要从待测量电压中取电,同时因为待测量电压会比较高,PD 协议中最高可以到 20V,因此需要使用耐压比较高的取电方案。
相比之前的 USB 电流表,这里使用了 LDO 来从输入电压中降压到 3.3V 使用,因为输入电压有可能会高达 20V,因此这里选择了 HT7533S 这款 LDO 来作为降压方案,本项目中使用了 https://item.szlcsc.com/323875.html 这款。
整体 MCU + OLED 屏幕 + INA219 的耗电大概在 5mA 左右,因此可以不用担心 LDO 的发热,并且相比 DC-DC 方案,可以节省更多元器件以及 PCB 面积。
INA219 电压电流测量
本电流表使用的电压电流测量元件为德州仪器 INA219。选择它主要是因为之前使用过,比较熟悉,而且也有现成的库可以使用。
INA219 是一款具备 I2C 或 SMBUS 兼容接口的分流器和功率监测计。该器件监测分流器电压降和总线电源电压,转换次数和滤波选项可通过编程设定。
INA219 的电压最大量程为 26V,在 PD2.0 100W 中,最大 20V 是足够使用的,但是如果碰到支持 PD3.1 140W,使用 28V 供电时,就会超量程了。但是目前看支持 140W 的充电器和设备都比较少,暂时不纠结这个问题。后续可以考虑使用 INA226 来代替,它具备更高的量程。
为了能测量比较高的电压,并且避免较大的发热,这里使用 10mR 的采样电阻,这样即使在 100W 20V 5A 时,功耗也只有 0.25W,实测 100W 长时间运行也不发烫。
屏幕及按键
本电流表使用常见的 0.96 寸 12864 OLED 屏幕作为显示设备,该屏幕操作比较简单,功耗也比较少,比较适合这种场景。另外由于 0.96 OLED 祼屏需要比较复杂的配套电路,为了简化制作,这里直接采用成品屏幕模块,通过排针焊接在 PCB 上。
2.54mm 排针的高度,刚好可以让屏幕与 PCB 保持一定的距离且不会压到 MCU 等其他元件。注意 U8 和 H2 为同一个接口,放置 U8 主要是为了定位位置,方便对齐。
按键使用普通侧按,低电平触发。
下载及调试
需要注意 CH32V003 系列需要使用 WCH Link-E 编程器,实际使用时只需要连接 V3.3、GND、SWDIO 即可烧录程序,如果电流表 Type-C 输入有供电,也可以只接 GND、SWDIO 烧录程序。
外壳及面板
外壳使用三维猴打印服务,采用了透明树脂材料,并进行喷油处理,整体是透明质感,这不就是透明探索版嘛!
并且因为这次使用了彩色丝印,那必须把图案露出来呀,透明外壳更合适。
程序功能
电流表程序就是一个死循环,读取电压、电流后计算功率及容量,并统计显示。
I2C 及 12864 OELD 驱动相关代码参考了 https://github.com/wagiminator/CH32V003-GameConsole 的实现。
实际测试屏幕刷新率约 40FPS,即电压、电流每秒采样 40 次。
功率历史曲线采用每分钟平均值来显示,横向 128 个点,即总共可以显示 128 分钟的功率历史,在一般场景下可以满足使用需求。
后记
相比之前基于 CH32V003 的 USB 电流表,这个 USB PD 诱骗器将 DC-DC 替换为 LDO,并且添加了 CH224K 这个芯片来用来 USB PD 电压诱骗,实现了完全不同的功能。
最后感谢嘉立创“暖冬造物”活动,可以白嫖 PCB 打样、3D 打印、元件购买,最终得以完成这个项目。嘉立创产业服务群对于个人爱好者真是太有帮助了,个人实现产品开发完全成为可能,还有立创开源平台这样一个超棒的社区有各种项目可以参考、学习。
评论