发作品签到
专业版

#第七届立创电赛#小型功率分析仪

工程标签

2.0w
0
0
99

简介

简介:

开源协议

GPL 3.0

创建时间:2022-05-21 04:37:36更新时间:2022-10-27 03:14:30

描述

1.项目功能介绍

image.png
之前做了一个以电池供电的低功耗移动设备。为了评估电池寿命需要知道设备在一个休眠周期消耗的电量。因为设备的工作电流是不断变化的,一般的万用表难以胜任,所以需要一个能测量、记录、分析电流变化的精密功率计。但是这种仪器专业级的非常贵,为了一个练手的项目不划算,用示波器加放大电路又不够方便。于是就催生了此项目。

本项目是一个小型的便携的精密功率计,最高可以实现1uA的电流测量。带有一个2.4寸的QVGA屏幕,可以记录设备的电流消耗情况或电源的电压变化,并且以图形化的方式显示,方便进行供电或者功耗分析。机身自带电池,支持完全离线操作,无需上位机,同时也可以上传采样数据至PC进行更加详细的数据分析。支持触发采样功能,可以方便对偶发事件进行记录。最高100SPS的采样率,满足大多数场景下的需求。

特性:

  • 数字电压表和电流表功能
  • 2.4寸彩色LCD显示屏
  • 电压表量程:0~5.5V,分辨率0.01V,电流表量程:0 ~ 1A,分辨率0.1uA(有效值1uA)
  • 采样率:最高100SPS, 最低0.01SPS
  • 最高采样深度6kpts
  • 数据记录、回放和图表显示功能
  • 支持游标,可随时回看采样记录
  • 支持触发采样,工作模式:自动、手动、条件
  • 条件触发支持电压和电流触发
  • 触发边沿:上升、下降
  • 支持数据上传(通过USB通用串口协议)
  • 内置700mA电池,可离线使用最高4个小时,充电方式:USB TYPE-C
  • 更多特性演示可以参考视频

本项目硬件部分100%使用立创EDA进行设计。

本项目软件、硬件完全开源,可以浏览、下载本项目资源,或在此基础上进行二次开发,但是禁止未授权的商用。

2.项目属性

本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。

3.开源协议

本项目完全开源,包括PC端的上位机代码和MCU端的代码。使用GPL3.0协议分发。

4.硬件部分

基本工作原理

设备的基本工作原理如图所示。这个项目本质上就是一个封装的电压表加上电流表,不过额外的增加了对测试结果的采样、存储、处理功能,这样可以用于观察电压或者电流随时间的变化情况,亦或者对指定时间段的数据进行分析。

image.png

PCB概览

背面

image.png

正面

image.png

硬件结构

项目的硬件结构主要由以下部分构成:

  • 采样和放大电路
  • 模数转换器(ADC)
  • 电源管理模块
  • 输入(用户按键)与输出模块(LCD和USB-UART)
  • MCU image.png

采样和放大电路

电流采样和放大电路概览

原理图

image.png

PCB图

image.png

电流的采样是本项目的重点。在本项目中,使用了采样电阻低边电流采样的方式来对电流进行采样。因为本项目设计时的最高电流分辨率达到了0.1uA,而电流的最大量程为1A,两者相差达一千万倍的,如果通过单采样电阻实现,那么不仅采样电阻要选择更高阻值的型号,而且需要使用运放对采样结果进行1000倍以上的放大,这样可能会在测量结果中引入大量的误差和噪音。所以,本项目使用了两个不同阻值的采样电阻。其中,低阻值(0.1Ω)的电阻用于大电流时的采样,高阻值(10Ω)的电阻用于微小电流时的采样。然后对于每个采样电阻上的采样结果分别通过运放进行二级放大,并且将每级放大的结果全部引出。这样一来,总共可以拥有四档量程,且每档量程的放大倍率都在正常范围内(10~100倍的数量级),在每个量程的范围内都可以充分发挥ADC的最大分辨率。最后经过对放大比例的调节,可以最终在硬件上实现最低0.1uA分辨率(有效值最低为1uA),最高999mA的高测量范围的设计目标。

量程切换电路

image.png
因为使用了两个采样电阻,如果两个采样电阻始终接入电路,那么在电流较大时,大阻值采样电阻上的压降将变得十分可观(0.1A的电流时将会有1V的压降),这一方面会带来发热,另一方面会导致输出端的电压下降,可能影响输出端设备的正常使用。所以为了解决这个问题,本项目设计了一个量程切换电路,在电流较大(本项目中设定的阈值为10mA)时,通过一个MOSFET,将大阻值的采样电阻短路,然后在电流小于该阈值时再关闭此MOSFET,将采样电阻接入电路。这样,就完美解决了大电流下,高阻值采样电阻上的压降问题。

电流放大电路

image.png
每个采样电阻对应的放大电路都由二级运放放大电路组成,其中初级放大电路使用差分放大方式,以进一步减小导线上的电阻带来的误差,二级放大电路则使用通用的正反馈放大。对于本项目而言,初级放大电路的放大倍率为33倍(10xADC测量范围),次级放大电路的放大倍率为9.2(约10)倍。两级的放大结果均引入ADC,加上另一个采样电阻的两级输入,总共有四级放大结果通过四个通道输入ADC。因为两个采样电阻间的阻值相差100倍,所以对于同一个电流信号,ADC将同时获得这个信号的x10,x100,x1000,x10000共四级输入(即四个档位),这样ADC就可以在自己的动态范围内,选择合适的档位来作为最终的输出结果。

电压放大电路

电压不是本项目的重点,因为通常情况下,我们使用过的电源都是恒压电源,电压不会产生较大的拨动,而且基本上也不会存在对超低电压(如小于1V)的测量需求。比起电压, 我们更关心的是电流的变化情况(市面上的有些同类仪器甚至不具备电压测量功能,就是单纯的高精度电流计)。所以,本项目设计的电压测量范围为0~5.5V,分辨率0.01V。

image.png

具体的电压采样使用一个差分放大(衰减)电路实现,将输入电压衰减2.13倍,这样在ADC的范围为03.3V的情况下,最高容许7V左右的电压输入,相对于05.5V的设计目标,既留足了余量,也可以充分发挥ADC的性能,实现0.01V的分辨率。

运放选型

电流信号放大部分,使用了两个高精度、零偏移的双路R2R运放COS8552,分别负责两个采样电阻上的信号的放大

image.png

电压放大部分因为要求不高,所以使用了通用的单通道运放RS321

image.png

ADC

由之前的介绍,我们可以看到ADC至少需要5个通道才能满足需求,即4个电流通道和一个电压通道。而且为了实现100SPS的采样率,ADC的采样速率也必须高于这个设计目标。而多通道、高分辨率、高采样率的ADC是非常昂贵的。因为我们对ADC各个采样通道的要求是不同的,我们希望更高的电流分辨率,但是对于电压的分辨率要求不高,所以出于最优化的选择,本项目选择使用独立的ADC对电流通道进行采样,而电压和其他模拟通道(如电池电量和摇杆输入)则使用MCU内置的ADC进行采样。

用于电流采样的独立ADC最终选择了ADS1115这个型号,具有4通道16bit的分辨率,使用IIC方式与MCU通讯,最高采样率为860SPS,满足本项目的需求。
image.png

电源管理

电池和充放电管理

为了使用方便并且满足完全离线使用的设计需求,本项目选择了内置锂电池的方案。锂电池的充放电管理使用经典的TP4056来实现,设计锂电池容量为700mAh,尺寸编码为642745(64mmx27mm长宽,厚4.5mm)

image.png

PCB版上对应的电池安装位置:

image.png

充电管理使用了经典的TP4056充电管理IC:

image.png

相关电路如下:

image.png

供电方案

因为本项目的工作电流需求不大,加上对电路的干扰比较敏感,所以在供电方案上,选择了LDO方案,使用的LDO是XC6206(即经典的662k)

image.png

为了实现供电上了数模隔离,再加上MCU的RTC部分需要的后备电源,所以总共使用了3颗XC6206,分别为数字电路、模拟电路和MCU RTC(后备电路)供电。需要注意的是,数字供电VCC和模拟供电VCC是由开关控制开启的,而后备电源供电则绕过了开关,直接连接在电池上。

image.png

电池电量和充电检测

这部分电路是为了检测电池电量和充电状态,均使用电阻分压电路实现。为了减少对电池电量的消耗,电量检测电路位于开关之后。两者的输出信号均直连MCU的ADC通道:

image.png

模拟地和数字地

为了减少模拟电路和数字电路间的串扰,本项目使用了模拟地和数字地隔离的方式,两者之间通过0Ω电阻单点连接:

image.png

用户输入和输出

LCD

LCD是主要的用户输出通道,本机的绝大部分数据都通过LCD向用户展示。在平衡了显示内容的完整度、MCU的处理能力和项目成本之后,本项目选择了一块2.4英寸分辨率为QVGA(320X240)的彩色点阵TFT-LCD显示屏。LCD通过8bit 8080总线与MCU进行通讯,经过测试,最大刷新率可以达到60Hz。实际使用中,为了降低MCU的压力,这块屏幕最终工作在8位(LUT)色模式,30Hz的刷新率下

LCD的电路如下

image.png

LCD的背光电路则使用一颗MOSFET通过PWM控制,调光频率约1KHz,最大工作电流约40mA

image.png

按键

本项目的用户输入全部由按键完成,包括一个五向开关(摇杆)和两个轻触按键组成。

为了降低IO的消耗和PCB布线难度,摇杆使用了ADC按键的接法:

image.png

其他两个按键则使用独立的IO。为了以后可能的MCU休眠功能,运行按键是高电平触发,连接在MCU的PA0休眠唤醒IO上,另一个选项/设置按键则使用通用的低电平触发,连接在MCU普通的GPIO上。

image.png

USB串口

为了实现采样数据的上传功能,本项目额外设计了USB-UART桥接电路,可以将数据通过USB串口上传至上位机。

image.png

其中USB串口IC选用的型号为CH340E:

image.png

在本项目中,串口的通讯参数为11500波特率,8数据位, 1停止位,无校验位

MCU

本项目使用的MCU是STM32F407VE,拥有192KB的SRAM,最大168MHz的主频,带有ADC和8080总线接口,可以满足本项目对于信号采样和处理以及驱动LCD的需求

image.png

5.软件部分

开发环境

本项目使用基于Eclipse的STM32CubeIDE开发,编译器为GCC:
image.png

软件架构

本项目的软件架构比较简单,使用了HAL库作为MCU的硬件驱动,使用FreeRTOS作为整个项目的软件基础。OS共分为两个线程,其中一个为ADC采样线程,为高优先级线程,另一个则为主线程。ADC采样线程只负责按照固定的频率进行ADC的采样。其他的信号处理,用户交互,数据展示,逻辑处理等均在主线程内完成。

图形处理部分使用了8位的整屏framebuffer以降低开发难度并提高刷屏效率,使用的图形库的字模处理部分使用了LVGL的部分代码,其他全部为自行编写。

使用的图形库部分代码截图

image.png

采样数据的结构使用了一个结构体进行定义,这样在每个采样点上均保存了采样时的电压、电流和时间戳数据。单个数据内存消耗为8byte,总共使用48KB的内存来实现最高6Kpts的存储深度

image.png

6.项目材料清单

image.png

image.png

7.大赛LOGO验证

image.png

8.其他图片

成品图

image.png

正面(未开机)

image.png

PCB背面

image.png

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
STM32F407VE-PowerMeter-v1.0.zip
507
2
BOM_功率分析仪_v1.0.xlsx
187
3
外壳3D文件.zip
158
4
MCU固件-PowerMeter-v1.0.hex
195
5
功率分析仪_Gerber_v1.0.zip
184
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航