基于 CH32V003 和 INA219 的 USB 电流表 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 基于 CH32V003 和 INA219 的 USB 电流表

简介:一个基于 CH32V003 和 INA219 的 USB 电流表,支持 5~20V 电压和 0~5A 电流检测。

开源协议: CERN Open Hardware License

(未经作者授权,禁止转载)

创建时间: 2023-12-01 20:12:34
更新时间: 2023-12-19 10:38:27
描述

之前群里划水看到沁恒的廉价 RISC-V 单片机 CH32V003,单片只要 7 毛钱,之前一直在用 ESP32,亟需了解一下这种便宜的单机应用单片机,因此拿它做了一个电流表来练练手。

 

电压、电流、功率、容量界面:

 

功率历史图表界面:

 

USB 电流表需求

 

因为 CH32V003 资源有限,因此也没有设计过多的功能,主要用来验证这个 MCU 的能力和熟悉一下 SDK 的使用,因此电流表的主要功能确定为以下内容:

 

  • USB Type-C 输入与输出
  • PD 协议透传
  • 支持 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-A 接口,输入输出均使用了 USB Type-C 16P 接头。为了不影响 PD 协议协商,因此将输入输出的 CC1 CC2 引脚直接连通。虽然其它引脚在 PD 协议中并无实际使用场景,但是为了保障兼容还是直接全部直连了。

 

这样使用有两点需要注意:

 

  1. 因为 CC1 CC2 没有连接 5.1K 下拉电阻,因此在使用 C-C 线及 PD 充电头时,由于充电头无法协商 PD 协议,因此不会供电,电流表也无法启动。
  2. 因为 CC1 CC2 是直接连接,中间无 MUX 芯片,因此在两端充电线在接反的情况下,同样无法协商 PD 协议。

 

又因为两边的 USB Type-C 接头是直通的,因此其实不存在哪头用于输入哪头用于输出的情况,随便哪一边接充电器侧都可以。

 

DCDC 供电

 

因为电流表本身没有额外供电,因此需要从待测量电压中取电,同时因为待测量电压会比较高,PD 协议中最高可以到 20V,因此需要使用耐压比较高的取电方案。

 

传统使用 AMS1117 芯片并不支持耐压 20V,因此更好的方案是使用 DCDC,在立创商城找了一番之后,确定使用 LGS5145,这款 DCDC 芯片输入电压可以从 4.5V~55V,足矣应对 PD 高电压的降压需求。

 

 

原理图直接根据 LGS5145 数据手册绘制,其中 R6 R7 是因为手上有这两个规格的电阻,实际使用过程中可以使用一个 30K 的电阻代替。C6 为前馈补偿电容,可以不焊。

 

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 烧录程序。

 

外壳及面板

 

外壳使用 3D 打印,底部留孔透出电源状态,顶部设有两个按钮操作电流表。

 

 

 

电流表面板采用立创面板定制服务,通过背胶直接粘贴在外壳上。不得不说,有了立创面板定制服务,DIY 产品显得越来越正规了。

 

 

 

程序功能

 

电流表程序就是一个死循环,读取电压、电流后计算功率及容量,并统计显示。

 

I2C 及 12864 OELD 驱动相关代码参考了 https://github.com/wagiminator/CH32V003-GameConsole 的实现。

 

实际测试屏幕刷新率约 40FPS,即电压、电流每秒采样 40 次。

 

功率历史曲线采用每分钟平均值来显示,横向 128 个点,即总共可以显示 128 分钟的功率历史,在一般场景下可以满足使用需求。

 

后记

 

这个电流表整体还是比较简单的,CH32V003 在使用过程中没有太多麻烦,主要碰到的问题是资源相对 ESP32 严重不足,以及没有硬件浮点计算,因此实际编码过程中直接全部使用 mV mA 等作为单位,使用整形进行计算。

 

另外 DCDC 电路反而是整个方案中元件最多的部分,后续考虑替换为高耐压 LDO 来实际,例如 HT7533,输入电压可以最高 30V,这样可以使电路更加简单,并且 MCU + OLED 总体功耗只有几个毫安,应该也不太会有严重的发热问题。

 

 

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
序号 文件名称 下载次数
1

USBMeter.stl

46
2

USBMeter-firmware.bin

25
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP