本文的目的在于展示如何使用 MBDT、FreeMASTER 和一些电子知识来创建一个简单而实用的项目:监控 USB 电压和电流消耗。
我使用此设置来监控智能手机充电时的 USB 电压和电流,但它也可以用于其他目的,例如监控 USB 充电器/移动电源/PC 上连接的某些设备的功耗,或者可以用来查找一些充电问题,或者也许你只是想了解你的手机充电器是否支持快速充电,或者用来表征移动电源。
该项目可以通过测量 USB 电压和电流从 USB 电源流向 USB 负载的电阻器上的电压降来测量 USB 电压和电流。电流产生的电压由电子电路放大,并通过 ADC 转换器由 MPC5744P-DEVKIT 板采样,然后将数据发送到 PC,然后通过 FreeMASTER 项目以数值和示波器图表的形式显示。MPC5744P-DEVKIT 板由 MBDT 编程。
要构建这个简单的项目,您需要三个组件:安装了 MBDT 工具箱的 Matlab 、 FreeMASTER 运行时调试工具、一个非常简单的电子电路和一个 MPC5744P-DEVKIT 。
如图 1 所示,该项目可分为两个主要部分:硬件设置和软件设置。
图 1:USB 电压和电流监视器框图
测量电流的最简单方法是使用与负载(在我们的例子中是 USB 输出)串联的简单电阻器。欧姆定律给出了电路中电压和电流之间的线性关系:
U = R * I
U 是电阻器两端的电压降(以伏特 V 为单位),R 是电阻器的电阻(以欧姆Ω为单位),I 是我们需要测量的电流(以安培 A 为单位)。
大多数 USB 充电器最多可提供 3A 电流,而大多数智能手机的电流消耗却不到 3A。鉴于此,我考虑设计这个电路来测量最大电流约 3A。假设我们使用一个简单的 1 欧姆电阻。如果我们使用欧姆公式进行简单的数学计算,那么可以看出,对于 3A,电阻器两端的电压将为 3V(U = 1 * 3)。
图2:USB连接器和电流“传感器”
图2中左侧是USB输入连接器,右侧是输出USB连接器,两条GND线都通过R1电流传感器连接。如图 2 所示,电流“I”将从 USB 输入通过 VBUS 线流到 USB 输出上的 VBUS,然后流过连接到 USB 输出的负载,再通过 R1 流过同一连接器上的 GND,至少流到 USB 输入连接器上的 GND。该电流将在 R1(UR1)上产生等于 3V 的电压(如果我们使用 3 安培电流和 1 欧姆电阻)。
USB 标准充电之一规定最低(标准)电压为 5V。在我们的例子中,使用这个 1 欧姆电阻将导致 3V 损失,然后 USB 输出端的电压将为 2V(不可接受)。在大多数数字电子电路中,当使用 5 伏电源时,电压公差约为 10% (0.5V),这意味着电压可以在 4.5V 到 5.5V 之间。让我们尝试使该电阻上的最大电压降大约比 0.5V 低 3 倍,例如:150mV。那么电流传感器电阻为R1 = 0.15V / 3A = 0.05ohm。
为了测量该电压降,我们可以使用MPC5744P-DEVKIT上的任何 ADC 通道,但如果 ADC 的电压参考设置为 5V,则 ADC 的分辨率为 5V/4096 = 1.22mV,这意味着对应于电流测量的等效 ADC 分辨率约为 24mA(1.22mV 对应 24mA)。如果我们考虑USB连接器上的电噪声,那么输出信号很可能会被电噪声“淹没”,或者结果不会很令人满意。
解决该问题的方法是将 0V --> 0.15V 范围“重新缩放”为 0V --> 5V。我们可以通过使用运算放大器电路来做到这一点。
我使用了当时在我的电子元件中找到的 LM358 IC。这个IC不是最好的,但是对于演示来说,可以使用。
图3:USB电流和电压监视器
这个电子设计的一些想法:
通过使用该放大器,范围重新调整为 0 --> 5.1V。
为了测量 USB 输入电压,我们使用 R9 和 R10 分压电阻,并使用公式 U_R9 = U_USB * (R9/(R9 + R10))。对于 R9 使用 10K,对于 R10 使用 33K
ADC 测量的最大 USB 标准充电电压为 U_R9 = 20V * (10/(43)) = 4.65V。
该电路已在原型 PCB 上开发。该电路的输出连接到MPC5744P-DEVKIT的两个 ADC(电流信号至 PTB13 和电压信号至 PTB14)通道,可以在 CN1 连接器上找到(“USB 电压”、“USB 电流”和 GND)。
该开发套件的主要作用是从定制板获取电流和电压数据,并将其转换为数字数据并通过 UART 接口发送到 PC。
如图所示。4、我使用三根电线将定制电子板连接到开发套件(两个 ADC 和 GND)。
在 MPC5744P-DEVKIT 上,ADC 电压参考必须设置为 5V(跳线 J19 --> 2-3),数据将通过 UART(USB --> OpenSDA)发送到 PC。
MPC5744P-DEVKIT 必须通过 USB 电缆连接到 PC。其余跳线均可保持默认状态。
图 4:硬件设置(负载为 USB LED 灯)
对于软件开发,我使用Matlab 使用MBDT 工具箱。第一步是使用 MBDT 创建一个新的 Simulink 项目。该项目包含三个主要部分:
从 ADC 块获取值后,我们必须应用一些数学函数来逆转电子电路中产生的效应。
部分配置块包含:
变量声明部分用于声明用于从 ADC 外设获取值、中间值和最终值的所有变量。
主循环的一部分由简单的数学函数组成,其作用是将 ADC 值转换为电流和电压值。
首先执行的操作是获取 ADC 电流和电压值,然后将这些值转换为浮点类型,并乘以一个常数(ADC_Vref /ADC_resolution = 5/4095),该常数表示 ADC 电压分辨率。然后,对于 USB 电流值,必须将结果除以运算放大器的因数 (34),之后,我们可以从结果中减去运算放大器的输入偏移(如果测量到任何相关值),最后要做的就是使用欧姆定律 (U = R * I) 将电压转换为电流。
要获取 USB 电压,第一步与 USB 电流值类似,使用电阻分压器公式我们得到最终值。
对于使用不同的运算放大器IC,如果非反相输入太高,建议在电路开启时进行测量,并在模型中更新该值(变量Current_offset)。
图 5: MBDT 应用模型
要实时查看数据,首先要打开 FreeMASTER 项目,选择“工具”,然后选择“连接向导...”,然后点击“下一步”按钮,选择第一个选项“使用直接连接到板载 USB 端口”,然后选择分配给MPC5744P-DEVKIT 的串行 com 端口和 115200 波特率。
在 FreeMASTER 项目中,可以通过选择“RAW 数据”绘制原始 ADC USB 电流和电压值,以数值和示波器视图的形式观察 USB 电流和电压。要绘制真实的 USB 电流和电压值,请在项目树中选择“电压和电流”示波器。
图6: FreeMASTER USB电流和电压监视器
在图 6 中,可以看到当我的智能手机连接到原装充电器时,快速充电转换过程中的电流和电压随时间的变化。