又给公司省钱了,功耗测试仪七八千一台,自己做一个!

科技   2025-01-02 08:00   中国香港  
大疆无人机、福禄克万用表、小米手机、华为手表等你来!

👆面包板社区DIY活动进行中!


在工作中经常会用到Power Monitor监控设备的工作电流,除了进行基本的待机测试,还有一些特定的场景会启动不同的CPU核心,关注CPU跑在不同的电压和频率上引起的电流变化,需要通过改变软件的负载平衡达到最佳的功耗性能比。

主流的Power Monitor是MonSoon公司出品的,价格在7000~8000元之间,如下图。

可以设定1V~14V之间的输出电压,我们使用最多的是电流采样功能。电流精度可以到uA级别,时间精度可以到mS级别。足以应付研发测试的需求,缺点就是价格太贵了。公司只有几台这样的设备,需要用的时候经常和别人冲突,于是我考虑自己做一台Power Monitor。

首先考虑的是电压输出,网上买一个二手台式机电脑电源50元输出3.3V/5V/12V,加上一个某宝上到处都是的LDO或者DCDC调压模块,27元很便宜。XL4015就很好,最大可以输出75W,对于电池供电设备来说已经是绰绰有余了。
电压输出搞定了,下面就是考虑电流采样的设备选型了。选用的是Ti的INA240电流感应放大器,某宝上有现成的模块卖,价格56人民币。
该放大器内置Gain有50倍,输出电压可以使用STM32单片机的ADC来采样,输出电压的曲线如下图
理想是采用第二种双向采样模式,因为我希望Power Monitor能采集充电电流和放电电流。如果VCC直接连接单片机的3.3V的话,Vcc/2为1.65V,我购买的模块使用10m欧的精密电阻,GAIN为50,最大能测到的电流是1.65/(50 * 0.01) = +/- 3.3A. 考虑到STM32F407的ADC最大的分辨率是12bits (4096 levels.),但是ADC的REF是0V~3.3V,意味着我只能使用最大精度的一半量程了,于是电流的最大精度是3.3 / 2048 / (50 * 0.01) = 0.0032A,大概是3.2mA左右,我期望测试的设备的最小待机功耗在10mA左右,变动的精度< 5mA都是满足要求的,看上去可行。如果和购买的Power Monitor相比的话,还是要差一个数量级,Monsoon的PM最低可以测试uA的精度。但是我这个成本不足200元人民币,看在价格的份上还是容忍一下精度的差异。当然如果要提升精度的话,也很简单,选取更高bits的ADC模块,或者提高采样电阻的阻值,我这里是10m欧的电阻,某宝上还有更高电阻的模块(20m欧,40m欧....)可供选择。

如果采用第一种单向采样模式的话,虽然不能测试充电电流,但是电流量程却可以大幅提高,最大电流可以到3.3/(50 * 0.01) = 6.6A (0~6.6A),最大精度依然是3.2mA左右 (6.6/4096/(50 * 0.01))。

下面需要考虑的就是采样时间的最小精度了,STM32F407能提供最大2.4MSPS的采样率,对我来说是绰绰有余,作为一个验证机,我考虑使用1Khz的采样率 (1ms)来验证其可行性。

家里正好还有一块STM32F407最小系统板就无需到某宝上再去采购了。
硬件组装好后如上图,下面就是我最喜欢的软件部分了。基本的框架比较简单,分为上位机和下位机两部分。
[Sensors/Input Devices]         |         v    [ADC on STM32F407] ---> [USB Interface on STM32F407] ---> [PC]         |         v    [Power Supply]

我一般会选用FreeRTOS作为Base来开发下位机的软件模块,基本的框架如下:
ADC 任务:此任务由计时器触发,负责处理 ADC 采样。数据通过 DMA 直接传输到缓冲区,以减轻 CPU 负载。

USB RX 任务和 USB TX 任务:分别处理通过 USB 的数据接收和传输。

xQueue:用于任务间通信,使任务能够有效地传递数据或消息,同时不损失实时性能。

我在代码中直接设置为1Khz的采样率以简化代码流程。
下面是上位机部分,上位机使用QT开发为了更好的实时性。我使用了开源的SerialPlotter作为模板,简单的改了下ADC转换公式,其他大部分都直接使用了模板的代码,因为我使用的是基于CDC的USB-Serial,所以并不需要串口的设置,这一部分也做了相关的简化处理。
调节电流的时候,相应的上位机电流变化趋势。为了测试方便,使用带电流计的Power Supply来比较上位机显示电流和实际电流差异,结果还是挺MATCH的。
大家后继可以基于开源代码修改上位机界面或修改下位机的命令响应,设置不同的采样率以提高响应,或使用外置的ADC模块获取更高的精度。

对应的代码已经开源,欢迎访问:
https://gitlab.com/imwangwang/freertos_powermonitor
https://gitlab.com/imwangwang/qt_powermonitor

作者:imwangwang79
来源:面包板社区《DIY分享》活动,https://mbb.eet-china.com/forum
/topic/147727_1_1.html


面包板社区DIY活动进行中!👇

https://mbb.eet-china.com/forum/topic/147007_1_1.html





在面包板社区博客/论坛分享你的DIY电子设计,并在发布文章时添加【电子DIY】标签,字数不限,文章通过社区评审,将有丰富奖励送给您!


↓ 扫码参加


【奖项设置】


一等奖(1位):大疆DJI Neo无人机、小米Redmi Note13Pro、海康威视 NAS Mage20PRO...(任选一个)
二等奖(不限人数):福禄克F15B PRO MAX万用表、华为WATCH FIT 2...(任选一个)
三等奖(不限人数):小米手环9 NFC版、小米mini筋膜枪2C、价值¥300电子常用工具大礼包...(任选一个)
参与奖所有参与者均可获得500个E币奖励!
过万奖励若单篇文章/单个视频,在MBB微信号阅读量过万,每篇奖1000个E币奖励(E币可在商城兑换奖品,数据统计截至时间为2025.2.28,仅限前20篇,按文章发布在MBB社区的时间排序,个人累计封顶奖励10000个E币奖励)
E币可以在E币商城(https://estore.eet-china.com/)兑换工程师常用工具及精美礼品!如,镊子、开发板、示波器、工具箱、收纳盒等。


【文章要求】

1、内容要求原创,必须和电子行业相关且首次发布于互联网

2、内容应包括:设计思路、成品展示(如电路原理、功能展示、成本控制方案或清单、代码等)涉及核心知识产权的内容可不展示。

3. 活动期间,同一ID可多次参加,等质量条件下多发作品可累积评分。


活动时间:2024.11.13 - 2025.02.13

点击阅读原文,了解活动详情!


面包板社区
分享电子技术干货,电子工程师福利!EET电子工程专辑、ESM国际电子商情、EDN电子技术设计官方社区。
 最新文章