对于所有便携式设备而言,功耗都是一个至关重要的因素。硬件开发人员越来越注重在增加功能、减小尺寸、降低成本的同时,实现低功耗方案。能量监测通常会提供有关能耗的信息,从而帮助开发人员进行电池管理和总体功率基准测试。
电池供电类设备存在已久。然而自手机问世以来,由可充电电池供电的设备数量在过去二十年呈现出指数级增长。截至2018年,成千上万种型号的手机、平板电脑、笔记本电脑和许多其他小型电器都在使用锂电池。
对于所有便携式设备而言,功耗都是一个至关重要的因素。硬件开发人员越来越注重在增加功能、减小尺寸、降低成本的同时,实现低功耗方案。软件开发人员也以旧算法为切入点,针对操作系统领域(即通过能量监测调度)和新兴领域(例如机器学习),研发新的功率监测方法,力求降低功耗。功率是指瞬时消耗的能量。如公式1所示,在电学中,功率等于瞬时电压与电流之积。功率单位为瓦特(W),表示“焦耳每秒”。
公式1 - 功率公式
能量等于功率与时间的乘积。电路消耗能量,电池则存储能量。功率管理通常是指管理瞬时电流和电压,以满足功率传输能力和负载条件。能量监测通常会提供有关能耗的信息,从而帮助开发人员进行电池管理和总体功率基准测试。通过专门设计的软件(可根据特定负荷采取相应操作)监视能量时,即开始了主动能量管理。
主动能量管理可以基于预定义的设置自动进行,也可以在软件启动时手动进行,其作用是为用户提供特定的建议。例如,大多数笔记本电脑在使用电池而不是交流电源运行时,处理器性能会自动降低,并且改用低功耗、低性能的集成图形处理器,而不使用专用处理器。可以关闭笔记本电脑的一些外设,以延长电池供电时间,而用户也可能收到降低屏幕亮度或调暗键盘背光的通知。大多数智能手机都提供各种节能选项,当电池电量降至特定水平时,主动能量管理便会提出使用节能选项的建议,包括关闭一些现有的互联网连接、降低屏幕亮度等。
但类似情况并不限于电池供电设备。服务器会仔细监测功耗和负荷水平,以确定是否可以完全停止或暂停某些服务。在虚拟服务器中,可根据电流总用量和基于统计信息预测的用量增加和缩减应用。对于这类服务器,可以使用虚拟机管理程序完全关闭某些虚拟机。进行调试时,也可以使用主动能量管理。能量监测可提供非常有效的信息,用以确定整个系统或部分系统是否在界定范围内运行。
用于测量直流功率和能量的电路
如前文所述,电功率是电压与电流的乘积。要精确测量功率,需要对电压和电流进行精准测量。在一定时段内测量功率并将结果累加,即得到能量。功耗在大多数情况下都不是恒定值,因此,必须使用一个选定测量带宽,在此范围内对电压和电流进行测量。直流电压测量电路的一个典型示例是图1左侧所示的简单分压器和右侧图1所示的缓冲分压器。这两个电路都可以通过适当的校准提供高精度测量结果,尽管带缓冲的分压器比不带缓冲的分压器价格昂贵,但前者通常功耗更低,尤其适合测量极低的直流信号。
虽然借助霍尔效应也可以测量电流(包括直流电流),但本文侧重于使用分流电阻测量直流电流,因为后者更常用而且费用更低。分流电阻是一个低阻值电阻,与电路串联。电流流经分流电阻时,分流电阻两端会产生一个小的压差。该压差与电流成正比,如公式2所示,并且通常使用运算放大器进行放大。
由于分流电阻与电路的其余部分串联,因此可以连接在任意一侧:上桥臂(分流电阻的一个端子直接连接总线电压),或者下桥臂(分流电阻的一个端子接地),如图2所示。在这两种情况下,分流电阻都会出现一个小的压差,电路的总电压会降低。但是,分流电阻的连接位置会有一些影响:
如果分流电阻放在下桥臂(图2右侧),其两端的电压将直接接地。由于分流电阻通常很小,其两端的压差也很小,因此电流测量电路使用便宜的低压运算放大器即可非常方便地放大压差。这对于缩减成本很有帮助。但下桥臂分流有一个明显的不足,即整个电路不再直接接地,而是连接高于接地端电压的位置。分流电阻两端的压差通常以毫伏计。
如果将分流电阻连接在上桥臂(图2左侧),则电路直接接地,可消除地弹反射效应。如果要对电路进行精确测量或必须提供精确的输出,则应选用此连接方法。此方法的唯一缺点是需要使用电压更高的差分运算放大器电路,并且视运算放大器的带宽而定,费用也可能会增加。
图2 - 电流测量电路
尽管电压、电流甚至功率本身都可以通过模拟电路轻松测量,而且成本很低,但能量测量却需要使用更复杂的电路来实现。然而,传统的能量测量方法是使用模拟电路测量电压和电流,然后使用模数转换器(ADC)将模拟信号转换为数字信号,将数据输出到单片机。单片机的作用是对信号随时间累加的功率进行采样,从而实现能量测量。测量能量的典型电路如图3所示。在测量电路中增加单片机既有优点也有缺点。一方面,在算法计算、监视不同行为和进行更详细的报告方面具有很大的灵活性,例如每小时、每天等。此外,单片机的作用不仅限于能量测量,还可以触发事件、运行自定义状态机或满足工程师的任何需求。而如果系统原本就需要使用单片机,则成本和物料清单(BOM)的增加并不是问题。另一方面,使用单片机监测能量的缺点则是测量系统的总功耗、令人讨厌的代码开发工作和开销成本都会增加,而且视精度要求而定,有时可能还需要外部ADC。
图3 - 典型的能量测量电路
多年来,随着业界对直流能量监测功能的需求不断增长,多种面向此类应用的集成电路相继问世。例如Microchip的PAC1934集成电路。此类集成电路只需使用分流电阻作为外部元件,即可轻松地同时对多达4个通道进行采样。基本电路图如图4所示。电路中集成了运算放大器、ADC、算术运算逻辑、存储器和用于连接系统的标准接口(通常为I2C或SPI)。与传统方法相比,使用集成电路的优势在成本方面尤为明显,这是因为在一个集成电路中集成了能量测量所需的一切,使BOM和PCB尺寸显著降低。
主动能量监测的优势
凭借适合大多数用例的灵活配置,专用集成电路能够以极低的功耗在长时段内累加功率。通常,功率采样率最低为每秒8次采样,最高可达1 KSPS。例如,PAC1934以8 SPS运行时,可以累加超过36小时的功率,并且电流小于16 mA,同时4个通道全部有效且以16位的分辨率运行,无需软件干预。此方法允许采样率动态变化,从而可以扩大应用范围。例如在标准笔记本电脑中使用集成电路监测电源轨。当笔记本电脑处于运行和活动状态时,能够以1024 SPS的采样率进行监测,而当笔记本电脑处于挂起状态时,监测速度可能降到8 SPS,因为在挂起状态下,功耗不会有太大的波动。此外,降低采样率可以减少能量监测的功耗,而不会影响性能。
主动能量监测最常见的一个用例是电池电量计量。专用集成电路可监测电池的电压和电流,随时获知当前电池电量。更先进的电池电量计还可以检测到电池遇到了特定问题,例如电量计可以跟踪电池的电压与电量的关系,如果二者之间不再有对应关系,则意味着电池的总容量因老化或其他因素而缩减。主动能量监测也是标准电池管理系统(BMS)的核心。BMS是多节电池组所使用的电路,负责对电池组进行安全充电和放电,并主动测量其电压和电流,确保每节电池的参数都相同。BMS的功能还包括检测故障电池,或在电压过高或过低时断开电池组。
主动能量监测的另一个常见应用是与智能手机和平板电脑上的操作系统以及笔记本电脑、计算机和服务器上的Linux®或Microsoft Windows®搭配使用。对于智能手机和平板电脑,操作系统通过各种方法监测不同服务和应用程序所消耗的电量。在早期阶段,系统不直接测量能量,而是使用表格数据获取各个工作点的功耗,基于CPU、GPU和屏幕使用情况估算能量。估算出的能耗数据以统计数据的形式报告,便于用户决定如何进一步操作设备。自Windows 8起,Microsoft在笔记本电脑和个人计算机中引入了能量估计引擎(Energy Estimation Engine,E3)。E3早期阶段的工作原理与智能手机中的估算算法类似,能够根据各种资源的使用情况(处理器、图形、磁盘、存储器、网络和显示器等)来估算每项任务的功耗,从而实现功耗跟踪。E3还引入了能量计量接口(EMI),系统制造商可以通过该接口为系统添加实际可用的能量测量传感器,并进行相应声明。如果加入了此类传感器,E3会利用这些传感器准确地测量功率和能量,而不是只进行估算。某些笔记本电脑制造商已在其产品中实现了这些功能。此外,过去还存在一些其他的方法(例如Sony在Vaio笔记本中实现的能量监测),但没有支持这些方法的操作系统,只有专有应用程序才能访问相关数据。Linux尚未提供与Microsoft E3相当的工具,但据报道称,他们已着手进行相关工作。工业I/O子系统[1]支持在操作系统中加入各种传感器,为用户空间的应用程序提供非常简单且功能强大的接口(基于文件的接口)。然而,在本文撰写之时,工业I/O子系统仍是内核的扩展,而不是默认Linux架构的组成部分。Linux还支持能量监测调度[2]和智能功率分配,这是一种用于嵌入式Linux领域的算法,可帮助系统决定如何调度不同的任务,同时对热问题予以考量(能耗导致CPU/GPU发热)。
能量测量集成电路的另一个值得关注的应用,是对USB功率和能量(出于各种原因)[3]以及在服务器应用程序中的使用情况进行监测,如本文第一部分所述。由于服务器采用不间断运行的设计,因此监测能耗有很多好处,例如可通过主动服务控制提高总体电源效率,能满足越来越高的能效标准[4],允许系统管理员在服务器的某些部分出现功耗异常(表示未来可能发生故障)时执行预测性维护。
总结
就能量监测的需求以及系统需要执行的其他功能而论,某些方法可能比其他方法更适用。如果嵌入式系统是根据自身用途专门构建,并且需要了解自身功耗或估算能耗,则传统方法更适用。我们还建议在单片机中加入内部ADC,以便最大限度缩减能量监测功能的成本。采用这种方法,只需要使用进行电压和电流检测的外部模拟电路。如果需要非常高的测量精度而不计BOM成本和功耗,则传统方法比集成电路更适用。
但在很多情况下,更适合采用集成电路方法。例如,如果想要在操作系统中集成能量测量,就适合采用集成电路方法,因为集成解决方案就是为解决这一问题而构建,通过适当的驱动程序,系统能自动识别出能量测量并知道如何操作。能量测量集成电路通常可以测量多个通道(从而监测多条总线),因此,在需要监测大量总线时,集成解决方案具备明显优势。此外,同一条通信总线上可以使用多个集成电路(例如I2C或SPI)。另一个更适合采用集成解决方案的情形是,在系统处于功耗极低的睡眠模式或完全关闭的情况下,在较长的一段时间内测量能量。集成的能量监测芯片仅消耗极少的功率,并能在特定时段内自行累加能量,无需任何系统干预,而这正是实现集成解决方案的基础。
对于有较高尺寸要求的高度集成化和密集型PCB(例如手机、平板电脑或笔记本电脑的主板),与等效的分立元件相比,集成电路占用的空间显然更小。例如,在WLCSP(晶圆级芯片封装)尺寸的芯片(大小为2.225 x 2.17 mm)中,包含一个能同时监测四个通道的能量测量集成电路。