第七届立创电赛:开源DIY一个带OLED显示的5V USB-C功率计
最近在捣鼓一些USB小设备,总想知道它们到底吃了多少电,充电宝还剩多少“力气”。市面上的USB功率计要么太大,要么功能单一,于是我就琢磨着自己做一个。正好借着第七届立创电赛的契机,我参考了嘉立创官方训练营的例程,设计了一款小巧精致的USB功率计。它最大的特点就是集成了一个0.91寸的OLED屏幕,让整个设备非常迷你,还增加了现在主流的USB-C输入口,用起来更方便。今天,我就把这个项目的设计思路和制作过程分享给大家,手把手教你从零复现这个实用的DIY工具。
1. 项目是什么?能干什么?
简单来说,这个项目就是一个“USB电表”。你可以把它插在手机充电器(或充电宝)和你的手机(或其他USB设备)之间。这样一来,它就能实时测量并显示充电过程中的关键电参数。
它能告诉你:
- 电压(V):当前USB口输出的电压是多少伏,比如是不是稳定的5V。
- 电流(A):你的设备正在以多大的电流充电或工作。
- 功率(W):电压乘以电流,就是消耗的总功率,单位是瓦特。
- 累计电量(mAh):从插入开始,总共输送了多少毫安时的电量,这能帮你估算充电宝的实际容量。
整个设备非常小巧,实测尺寸大约只有67mm长、20mm宽、10mm厚,比一支口红还细,随身携带毫无压力。对于电子爱好者、嵌入式新手,或者想参加电赛找点灵感的同学来说,这是一个绝佳的练手项目,硬件设计清晰,软件有现成例程,成功率高,成就感满满。
2. 硬件设计与元件选型
硬件是整个功率计的基础,我们的设计原则是:安全、好用、小巧。整个设计是基于嘉立创2022年暑期训练营的5V功率计例程进行优化而来的。
2.1 核心方案与电源输入
项目核心采用了训练营例程成熟的方案,主要围绕一颗专用的电量计芯片(通常如INA219等)来设计,它能高精度地测量电压和电流。我们在此基础上做了两处关键改进:
- 将输入接口改为USB-C:现在越来越多的充电器和设备都使用USB-C接口,为了通用性,我们把输入口换成了USB-C母座。这样,你只需要一根普通的USB-C to USB-A或C to C线,就能连接各种电源。
- 增加自恢复保险丝:安全第一!因为设计是5V版本,我在USB-C输入后,紧跟着放置了一颗5V2A的自恢复保险丝。它的作用是这样的:当后端电路意外短路或电流超过2A时,保险丝内部电阻会急剧增大,相当于“跳闸”,切断电流保护电路;当故障排除后,它又能自动恢复导通,不用更换,非常省心。
2.2 让设备变小的关键:0.91寸OLED屏
想要设备小巧,显示模块的选择至关重要。传统数码管或大尺寸OLED都会让体积膨胀。这里我选择了板载0.91寸OLED屏幕(通常是SSD1306驱动芯片的I2C接口版本)。
为什么是它?
- 尺寸极小:0.91寸的屏幕模组本身就很迷你,非常适合嵌入到狭长形的PCB上。
- 显示效果好:OLED自发光,对比度高,显示数字和简单图形非常清晰,即使在暗处也能看清。
- 接口简单:通常仅需I2C两根数据线(SCL, SDA)加上电源和地,就能驱动,大大节省了MCU的IO口和PCB布线空间。
正是这块小屏幕,使得整个功率计可以做成一个细长的“小棍子”形状,最终实现了约672010mm的紧凑三维尺寸。
2.3 PCB设计预览
来看一下设计好的PCB长什么样。这是最终的PCB渲染图,你可以清晰地看到所有元件的布局:
从图中可以看到,USB-C接口在板子一端,电量计芯片和MCU(单片机)在中间,0.91寸OLED屏立在板子上方,结构非常紧凑。PCB设计文件我会在后续的开源链接中提供。
3. 软件部分与程序烧录
对于初学者来说,软件往往是最大的门槛。但这个项目有个好消息:你可以直接使用官方训练营的例程,无需自己从头写代码。
我自己在这个项目里也是直接烧录了官方例程(坦白说,当时我还没学会修改和编写完整的嵌入式代码)。这大大降低了项目的完成难度。
烧录步骤通常如下:
- 获取开发环境:你需要安装单片机对应的开发环境,比如如果是STM32,就用Keil MDK或STM32CubeIDE;如果是国产MCU,可能是基于Keil或Arduino。
- 获取例程代码:从嘉立创训练营的资料页面下载功率计的完整例程工程。
- 连接下载器:将你的功率计PCB通过SWD/JTAG下载线(如ST-Link、DAP-Link)连接到电脑。PCB上需要预留出调试接口的焊盘或插座。
- 编译与下载:在开发环境中打开例程工程,直接编译,然后将生成的
.hex或.bin文件烧录到板载的MCU中。 - 上电测试:烧录完成后,断开下载器,给功率计接入一个5V USB电源,再连接一个手机或负载,屏幕上就应该显示出电压、电流等信息了。
注意:不同训练营例程使用的MCU型号可能不同,请务必根据你实际打板的元器件(特别是主控芯片型号),去查找对应的官方例程。代码是开源的(GPL 3.0协议),等你学会了编程,完全可以自己修改来增加新功能,比如切换显示页面、记录峰值功率等。
4. 制作、调试与心得
当你拿到打样回来的PCB和所有元器件后,就可以开始焊接组装了。焊接顺序我建议是“先矮后高,先难后易”:先焊电阻、电容等小贴片,再焊芯片,最后焊USB-C座和OLED屏这种较高的元件。
调试中可能遇到的坑:
- 屏幕不亮:首先检查OLED屏幕的接线(VCC, GND, SCL, SDA)是否正确,特别是I2C的上拉电阻是否焊上。然后用MCU的简单I2C扫描程序,看看能否检测到屏幕的地址(通常0x3C或0x3D)。
- 测量值不准或为零:检查电量计芯片周围的采样电阻(用于电流检测)焊接是否良好,量程配置是否合理。确保电源和被测负载正常连接。
- 保险丝异常断开:检查输出端是否有短路。自恢复保险丝在过流后会需要一点时间冷却才能恢复,耐心等待一下。
这个项目我做下来感觉非常顺畅,训练营的例程很成熟,硬件设计一次成功。最大的乐趣在于看着自己设计的PCB变成一个能实际工作的工具。把它插在充电宝和风扇之间,看着功率变化,感觉特别实在。
最后,项目的演示视频我已经上传到B站,你可以直观地看到它的工作效果和大小对比:https://www.bilibili.com/video/BV1dT411A7Km/
希望这个详细的教程能帮助你成功做出自己的USB功率计。硬件设计文件和软件例程的获取链接,请关注嘉立创训练营的相关页面。动手做起来吧,遇到问题,社区里有很多朋友可以一起交流解决!