前言
作为一名数码爱好者,一直想拥有一个USB电流表,但无奈被Power-Z的价格劝退,转念一想,不如自己做个USB电流表,既能满足自己的需求,也是一个学习的过程,顺便还能水一期视频,于是就有了本篇文章。并且由于这个项目是为了代替power-z而产生的,所以干脆将其命名了Power_X。
此项目的软硬件部分已全部开源,开源地址:https://github.com/cheng-inkor/Power_X
硬件部分
虽然我是typec接口的坚定推崇者,但无奈如今的大环境下仍然还是有着大量的USB-A接口,而且大部分数码产品的线材也是A to C的,所以此次的接口除了两个C口之外还加了两个A口,这也导致没法将其体积压缩到极致
下图是PCB的原理图和PCB图,如果看不清楚的话可以去开源地址把完整的工程下载下来
在板子会过大电流的电路我进行了开窗处理,主要是为了可以在上面铺层锡提高线路过大电流能力。
下面依次介绍一下IC芯片的选型:
主控使用的是STM32F103C8T6,性能完全是够用了,甚至有点大材小用了,但是我其实更加推荐使用GD32F103C8T6,主要因为ST芯片价格涨的太离谱了,而国产的GD芯片价格就要低不少,至于质量的话虽说目前不如ST家的,但做这个项目的主控还是绰绰有余的,毕竟power-z的主控也是GD家的,至于GD芯片的开发就更不用担心了,和STM32基本是一样的。
AD采集芯片使用的是INA226,和power-z上使用的是同款芯片。
LDO采用的是HT7533,没有采用662K的主要原因是HT7533能承受的最大电压是30V,而662K仅为6V,如今大部分的数码产品都支持快充,充电电压达到9V,12V都十分常见了,不过最好还是使用DC-DC芯片进行降压,不过我图省事就直接使用HT7533了。
EEPROM采用的是AT24C256C,可以储存自定义的设置和数据。
本来还想加PD&QC诱骗电路,但马上就要开学了,事情也多了起来,就暂时没加,以后有时间再加上,所以此USB电流表没有检测充电协议的功能,但也不会影响到原来的充电协议。
PCB画好之后渲染了一下模型,感觉还不错,就拿去打样板了。为了能节省一次嘉立创5元打板的机会,我将上下两层PCB放在一起,中间连接部分不进行铺铜处理,到手之后直接掰开,用砂纸将断裂处打磨一下即可。
比较有意思的是,我复用的连接上下两层PCB的四个铜柱,这四个铜柱分别作为电源的正和负,I2C总线的时钟线和数据线,所以在通电使用的时候千万不要把它放置在导电的材料上,否则电源短路你懂的……
软件部分
代码部分的话其实没啥可说的,毕竟我也就只写了个简单的demo进行用于测试,经测试能够通过I2C正常读取INA226的数据并显示在oled上,值得说明的是,该工程的代码我是先使用STM32CubeMX生成GCC代码,然后在VScode中进行编译烧录的,所以无法使用keil5打开此工程,为了方便大家烧录,我将代码编译后生成的hex和bin文件单独拎了出来,所以各位可以直接烧录这两个文件中的任意一个。