今天分享的项目是一款USB供电触发和监控 USB PD检测仪,可以在几乎任何USB type-c型PD电源上运行,其中,电压、电流、功率等重要信息会显示在OLED上。
USB PD 检测仪基于廉价且易于使用的 CH224K 多快速充电协议电源接收芯片、INA219 电压和电流传感器 IC 以及 ATtiny微控制器。下面是相应的原理图:
主要芯片有:
1)78L33 稳压器:一款简单且价格低廉的稳压器,可将高达30V的输入电压转换为3.3V的输出电压,输出电流高达200mA,压差为1.7V。78L33为电路的所有元件提供3.3V电压。
2)CH224K USB PD 功率接收芯片:USB PD受电协议芯片,集成了PD3.0/2.0、BC1.2等快充协议,自动检测VCONN和模拟E-Mark芯片,支持高达100W的功率,内置PD通信模块。它还在内部集成了输出电压检测,以支持过热和过压保护。它的特点是:
4V 至 22V 输入电压;PD3.0/2.0、BC1.2等快充协议;USB C 型 PD,正负插入检测和自动切换;E-Mark模拟,自动检测VCONN,支持100W功率PD请求;请求的电压可以通过多种方法动态调整;单芯片集成度高,外设简化,成本低;内置过压过温保护模块。
输出电压通过CH224K的三个配置引脚选择,这些引脚直接连接到ATtiny 并根据下表进行设置:
CH224K 的 PG 引脚为漏极开路,当请求的电压与 USB PD 电源成功协商时,将输入拉至地。它可用于驱动指示灯 LED 或高侧 P 沟道 MOSFET,以实现电源路径控制。在这里,该引脚直接连接到ATtiny,ATtiny可以借助内部上拉电阻查询状态。
3)INA219 电流/功率监视器:具有 I²C 兼容接口的分流器和电源监视器。该器件监视分流压降和总线电源电压,并具有可编程转换时间和滤波功能。可编程校准值与内部乘法器相结合,可以直接读取以安培为单位的电流。所选的10mΩ分流电阻对电路的影响非常小,测量分辨率为1mA。为了进行精确测量,应选择容差低(1%或更好)的分流电阻。此处使用 INA219 来测量输出电压和输出电流。它通过I²C与ATtinic通信。
4)A微型微控制器:ATtiny 微控制器处理用户界面、CH224K 和 INA219 的控制以及测量值的计算和显示。用户界面采用两个按钮和一个SSD1306 128×32像素OLED显示屏。在此应用中,ATtiny 仅以 1MHz 的频率运行,以保持低功耗,从而避免 78L33 稳压器过热,尤其是在 20V 输出电压下。
编译和上传固件,有两种方式:
1)使用 Arduino IDE,这个使用过的就不用多说了。
2)使用生成文件 (Linux/Mac):
-
将编程器连接到您的 PC 和板上的 UPDI 接头。确保编程器在3.3V下工作。
-
确保已安装最新的 avr-gcc 工具链。
-
打开终端。
-
导航到包含生成文件和草图的文件夹。
-
运行以编译、上传固件(相应地更改设备、程序和端口)
DEVICE=attiny814
PROGRMR=serialupdi
PORT=/dev/ttyUSB0 make install
操作说明:
使用 USB-C 电缆将 USB PD 检测仪连接到 USB C 型 PD 电源。
使用 SET 按钮选择所需的输出电压。当设备与电源通信时,显示屏上会出现一个沙漏。如果协商成功,则显示滴答声,输出端存在所需电压。
通过输出螺丝端子将设备连接到输出端。
使用重置按钮清除能量计数器。
原文链接: