US20180123358A1 - Usage Data Based Battery Charge Or Discharge Time Determination - Google Patents

Usage Data Based Battery Charge Or Discharge Time Determination Download PDF

Info

Publication number
US20180123358A1
US20180123358A1 US15/340,790 US201615340790A US2018123358A1 US 20180123358 A1 US20180123358 A1 US 20180123358A1 US 201615340790 A US201615340790 A US 201615340790A US 2018123358 A1 US2018123358 A1 US 2018123358A1
Authority
US
United States
Prior art keywords
computing device
capacity
energy storage
state
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US15/340,790
Other versions
US10903665B2 (en
Inventor
Sandeep Prabhakar
Iulian D. Calinov
Javier Nisim Flores Assad
Jihad Tafas
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to US15/340,790 priority Critical patent/US10903665B2/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CALINOV, IULIAN D., FLORES ASSAD, JAVIER NISIM, PRABHAKAR, SANDEEP, TAFAS, JIHAD
Publication of US20180123358A1 publication Critical patent/US20180123358A1/en
Application granted granted Critical
Publication of US10903665B2 publication Critical patent/US10903665B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • H02J7/0021
    • G01R31/3606
    • G01R31/3651
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/36Arrangements for testing, measuring or monitoring the electrical condition of accumulators or electric batteries, e.g. capacity or state of charge [SoC]
    • G01R31/367Software therefor, e.g. for battery testing using modelling or look-up tables
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/36Arrangements for testing, measuring or monitoring the electrical condition of accumulators or electric batteries, e.g. capacity or state of charge [SoC]
    • G01R31/382Arrangements for monitoring battery or accumulator variables, e.g. SoC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B15/00Systems controlled by a computer
    • G05B15/02Systems controlled by a computer electric
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/0047Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries with monitoring or indicating devices or circuits
    • H02J7/0048Detection of remaining charge capacity or state of charge [SOC]
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J7/00Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries
    • H02J7/0063Circuit arrangements for charging or depolarising batteries or for supplying loads from batteries with circuits adapted for supplying loads from the battery
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02JCIRCUIT ARRANGEMENTS OR SYSTEMS FOR SUPPLYING OR DISTRIBUTING ELECTRIC POWER; SYSTEMS FOR STORING ELECTRIC ENERGY
    • H02J9/00Circuit arrangements for emergency or stand-by power supply, e.g. for emergency lighting
    • H02J9/002Circuit arrangements for emergency or stand-by power supply, e.g. for emergency lighting in which a reserve is maintained in an energy source by disconnecting non-critical loads, e.g. maintaining a reserve of charge in a vehicle battery for starting an engine
    • H02J2007/0096

Definitions

  • Mobile computing devices provide various functionality to users, allowing users to interact with the devices to check email, surf the web, compose text messages, interact with applications, and so on.
  • users are oftentimes concerned with the battery life of their device.
  • it can be difficult for a user to know the remaining battery life of their device at any given time. This can result in batteries being depleted at times other than what the users expect, which can lead to user dissatisfaction with their devices.
  • state information for multiple different states of a computing device is monitored.
  • a record of computing device usage data is updated to keep track of energy storage device drain (or charge) by the computing device for each combination of state values.
  • Current state values of the computing device are determined, and based on the current state values and the record, a capacity drain rate (or capacity charge rate) of the energy storage device for the current state values of the computing device is estimated.
  • An estimated remaining time for discharge (or charging) of the energy storage device of the computing device is determined based on the estimated capacity drain rate, and feedback indicating the estimated remaining time for discharge of the energy storage device is provided.
  • FIG. 1 illustrates an example operating environment in which the usage data based battery charge or discharge time determination can be implemented in accordance with one or more embodiments.
  • FIG. 2 illustrates an example record of usage data recorded by the usage tracking module in accordance with one or more embodiments.
  • FIG. 3 is a flowchart illustrating an example process for usage data based battery discharge time determination in accordance with one or more embodiments.
  • FIG. 4 is a flowchart illustrating an example process for usage data based battery charge time determination in accordance with one or more embodiments.
  • FIG. 5 illustrates an example system that includes an example computing device that is representative of one or more computing systems and/or devices that may implement the various techniques described herein.
  • Usage data based battery charge or discharge time determination is discussed herein. Usage data of a computing device is maintained over some time period, such as a couple weeks or a couple months. This usage data reflects an amount of energy that is used or stored for a given combination of different state values of the computing device.
  • the state values include various device state information, such as a screen state (e.g., on or off), a power source state (e.g., battery or AC), a power mode state (e.g., active, connected standby, or off), a battery saver state (e.g., on or off), a processor consumption state (e.g., percentage of processor being used), and so forth.
  • a record is updated and an amount of power that is used or stored (e.g., how much the battery was drained or charged) until the next change of state is recorded. Over time, this provides a record of how much a battery is drained or charged while the computing device is being used for a given combination of the various state values.
  • the record of usage data is used to estimate an amount of time it will take until the battery is fully discharged or fully charged.
  • the computing device can determine the current state settings of the computing device.
  • the amount of power used or stored for the current state settings of the computing device can be determined from the record of usage data, and it is assumed that the amount of power used or stored for the computing device currently will be approximately the same as the amount of power previously used or stored for the current state settings. This assumed amount of power used or stored, in combination with a current remaining capacity of the battery, allows an estimated amount of time it will take until the battery is fully discharged or fully charged to be determined.
  • the techniques discussed herein provide an estimate of an amount of time it will take until a battery is fully charged or fully discharged that is based on prior usage of the computing device. This provides a more accurate estimation of the amount of time it will take until the battery is fully charged or fully discharged, providing more accurate information to the user of the computing device.
  • the techniques discussed herein allow the user to be provided with a better understanding of the amount of time he or she has remaining before the battery is fully charged or discharged, and allows the user to make more intelligent and informed choices regarding how to use the computing device.
  • FIG. 1 illustrates an example operating environment 100 in which the usage data based battery charge or discharge time determination can be implemented in accordance with one or more embodiments.
  • Operating environment 100 can be embodied as any suitable computing system and/or device such as, by way of example and not limitation, a gaming system, a desktop computer, a portable computer, a tablet or slate computer, a handheld computer such as a personal digital assistant (PDA), a cell phone, a set-top box, a wearable device (e.g., watch, band, glasses, augmented reality (AR) headsets, virtual reality (VR) headsets, etc.), and the like.
  • PDA personal digital assistant
  • AR augmented reality
  • VR virtual reality
  • the computing device 102 can be implemented as a television client device 112 , a computer 114 , and/or a gaming system 116 that is connected to a display device 118 to display media content.
  • the computing device may be any type of portable computer, mobile phone, Internet-of-Things (IoT) device, or portable device 120 .
  • Such a computing device 120 optionally includes an integrated display 122 .
  • a computing device may also be configured as a wearable device 124 that is designed to be worn by, attached to, carried by, or otherwise transported by a user. Examples of wearable devices 124 depicted in FIG. 1 include glasses, a smart band or watch, and a pod device such as clip-on fitness device, media player, or tracker.
  • wearable devices 124 include but are not limited to badges, a key fob, an access card, and a ring, an article of clothing, a glove, or a bracelet, to name a few examples.
  • a computing device may also be implemented as part of another device or product, such as an electric vehicles. Any of the computing devices can be implemented with various components, such as one or more processors and memory devices, as well as with any combination of differing components.
  • the computing device 102 includes a processing system 132 .
  • the processing system 132 may be configured to include a single processor with one or more processor cores included on the same chip or integrated circuit. Alternatively, the processing system 132 may be configured to include multiple independent processors configured in parallel or in series, each including one or more processor cores included on the same chip or integrated circuit. In one or more implementations, the processing system 132 may include multiple processing cores that provide a range of performance capabilities, processing efficiencies, and power usage characteristics.
  • the processing system 132 can execute various firmware and/or software instructions of various modules or components of the computing device 102 .
  • These firmware and/or software instructions can include programs of an operating system (OS) of the computing device 102 , programs run by the OS of the computing device 102 , and so forth.
  • OS operating system
  • the processing system 132 can execute programs that provide a wide range of functionality to the computing device 102 , including but not limited to gaming, office productivity, email, media management, printing, networking, web-browsing, and so forth
  • Computing device 102 also includes power circuitry 134 and battery cell(s) 136 , from which computing device 102 can draw power to operate.
  • power circuitry 134 may include firmware and/or hardware configured to enable computing device 102 to draw operating power from battery cells 136 or to apply charging power to battery cells 136 .
  • Battery cells 136 may include any suitable number or type of rechargeable battery cells, such as lithium-ion (Lion), lithium-polymer (Li-Poly), lithium ceramic (Li-C), and the like. Different battery cells 136 within the computing device 102 can be the same or different types of cells.
  • These different types of cells can have various different characteristics, such as different sizes/capacities, chemistries, battery technologies, shapes, state of charge (SOC), age, temperature, and so forth.
  • Various combinations of battery cell(s) may be utilized to provide a range of capacities, performance capabilities, efficiencies, and power usage characteristics.
  • battery cells(s) 136 Although discussed as battery cells(s) 136 , it should be noted that the techniques discussed herein can be implemented with other energy storage devices. Any devices that store energy, as opposed to being an external plug-in AC power source, can be used as battery cell(s) 136 , such as supercapacitors.
  • the computing device 102 also includes a usage tracking module 138 , a charge time determination module 140 , a discharge time determination module 142 , and a usage data store 144 .
  • the usage data store 144 can be implemented as any of a variety of different storage devices, such as a magnetic disk, optical disc, Flash memory, and so forth. Although illustrated as being part of the computing device 102 , the usage data store 144 can additionally or alternatively be implemented as a device separate from the computing device 102 .
  • the usage data store 144 can be a removable storage device that plugs into the computing device 102
  • the usage data store 144 can be an external storage device that uses a wired (e.g., universal serial bus (USB)) or wireless (e.g., wireless USB) connection to communicate with the computing device 102
  • the usage data store 144 can be an external storage device connects to the computing device 102 via a network (e.g., the Internet, a local area network (LAN), or other data network), such as a cloud storage service.
  • a network e.g., the Internet, a local area network (LAN), or other data network
  • the usage tracking module 138 maintains a record of usage data in the usage data store 144 .
  • the usage data includes state information for the computing device 102 as well as capacity information regarding the battery cells(s) 136 .
  • the state information for the computing device 102 is any of a variety of different settings that can affect draining or charging the battery cell(s) 136 , and/or any of a variety of different values that reflect a rate at which the battery cell(s) 136 are drained or charged.
  • the usage tracking module 138 maintains a record of usage data including values for power source state, power mode state, battery saver state, processor consumption state, screen state, and user present state. Each of these different states can have various different values at different times during operation of the computing device, as discussed in more detail below.
  • the power source state refers to source of power for the computing device 102 .
  • the power source state value can be battery power (e.g., battery cell(s) 136 ) or external power (e.g., AC power).
  • the usage tracking module 138 can obtain an indication of the source of power for the computing device 102 at any given time from various different sources, such as the power circuitry 134 , an operating system running on the computing device 102 , the battery cell(s) 136 , and so forth.
  • the power mode state refers to an operational mode that the computing device 102 is operating in.
  • the power mode state value can be active, connected standby, or off.
  • the active power mode state refers to the computing device 102 being powered on and running programs.
  • the off power mode state refers to the computing device 102 being powered off and thus running no programs.
  • the connected standby power mode state refers to the computing device 102 being in a low power mode where programs are not typically run, but that can be transitioned to the active power mode state in response to an input to the device (e.g., a user input, an incoming wireless message or signal (e.g., indicating a received phone call, text message, and so forth).
  • the usage tracking module 138 can obtain an indication of the power mode state for the computing device 102 at any given time from various different sources, such as the power circuitry 134 , an operating system running on the computing device 102 , and so forth.
  • the battery saver state refers to what power conservation mode the computing device 102 is in.
  • the computing device 102 can support one or more different power conservation modes in which the computing device 102 employs various different techniques to reduce power consumption in the computing device 102 , such as reducing a clock speed of a processor or core included as part of the processing system 132 , powering down certain components or hardware of the computing device 102 , and so forth.
  • the battery saver state value can be either on (power conservation is enabled in the computing device 102 ) or off (power conservation is not enabled in the computing device 102 ).
  • the battery saver state value can be off or one of multiple different power conservation states. Each of these multiple different power conservation states an reduce power consumption in the computing device 102 in different manners.
  • one power conservation state may reduce the clock speed of a processor that is part of the processing system 132
  • another power conservation state may reduce the clock speed of a processor that is part of the processing system 132 as well as power down one or more hardware components of the computing device 102
  • the usage tracking module 138 can obtain an indication of the battery saver state for the computing device 102 at any given time from various different sources, such as an operating system running on the computing device 102 .
  • the processor consumption state refers to utilization of the processors(s) and/or processor core(s) in the processing system 132 .
  • the processor consumption state is a value indicating how much of the processing capacity of the processing system 132 is being used at any given time, such as a percentage of the processing capacity (e.g., 5%, 12%, etc.).
  • the value indicating how much of the processing capacity of the processing system 132 is being used at any given time can optionally be rounded, such as to a closest integer value, to a closest one of a particular number (e.g., 20) of values (e.g., 0%, 5%, 10%, 15%, etc.).
  • the usage tracking module 138 can obtain an indication of the utilization of the processor(s) and/or processor core(s) in the processing system 132 at any given time from various different sources, such as an operating system running on the computing device 102 .
  • the processor consumption state can refer to other information reflecting the utilization of the processors(s) and/or processor core(s) in the processing system 132 .
  • the processor consumption state can include other available information regarding the processor utilization, such as an instruction count (e.g., how many instructions are executed over some duration of time) or a cycle count (the frequency of the processor(s) and/or processor core(s)).
  • the processor consumption state can include the power state that each processor and/or processor core is running in, a frequency or frequency bucket (e.g., which of multiple different frequency ranges or states) the processor(s) and/or processor core(s) are running in, and so forth.
  • the processing system 132 can include multiple processors and/or multiple processor cores as discussed above. In such situations, the utilizations of each of these different processors and/or cores are combined to generate the value indicating how much of the processing capacity of the processing system 132 is being used.
  • the utilizations of these different processors and/or cores can be combined in different manners, such as averaging the utilizations, performing a weighted averaging on the utilizations (e.g., processors and/or cores having greater processing capacity (e.g., as measured by some value, such as the number of instructions per second that can be executed) being given higher weights that processors and/or cores having less processing capacity), and so forth.
  • the screen state refers to whether the screen of the computing device 102 is turned on or turned off.
  • the screen of the computing device 102 refers to a screen (a display) that is powered by the battery cell(s) 136 when the computing device 102 is being powered by the battery cell(s) 136 (as opposed to, for example, AC power).
  • the screen state value can be on (the screen is powered on) or off (the screen is powered off).
  • the screen state values can include indications of screen brightness (e.g., as a percentage of a maximum supported screen brightness, as one of multiple different brightness settings (e.g., low, medium, or high), and so forth).
  • the usage tracking module 138 can obtain an indication of the screen state for the computing device 102 at any given time from various different sources, such as an operating system running on the computing device 102 , the screen of the computing device 102 , and so forth.
  • the user present state refers to whether a user is present at the computing device 102 .
  • the user present state value can be either present (a user is present at the computing device 102 ) or absent (a user is not present at the computing device 102 ).
  • the usage tracking module 138 can determine whether a user is present at the computing device 102 in a variety of different manners.
  • a user is determined to be present at the computing device 102 if user input (e.g., keyboard input, voice input, touchscreen input) has been received within a threshold amount of time (e.g., within the previous 20 seconds), and determined to be absent if user input has not been received within the threshold amount of time.
  • the computing device 102 can include a camera and use image (e.g., facial) recognition to detect faces within a threshold distance (e.g., 5 feet or 10 feet) of the computing device 102 . If a face is detected within a threshold distance then a user is present at the computing device 102 , and if a face is not detected within a threshold distance then a user is absent from (not present at) the computing device 102 .
  • image e.g., facial
  • the usage tracking module 138 also records a capacity drain or charge for a particular combination of state settings.
  • a capacity drain is generated by determining the difference between the remaining capacity of the battery cell(s) 136 at the start of the time duration and the remaining capacity of the battery cell(s) 136 at the end of the time duration (e.g., by subtracting the remaining capacity of the battery cell(s) 136 at the end of the time duration from the remaining capacity of the battery cell(s) 136 at the start of the time duration).
  • the remaining capacity of the battery cell(s) 136 at any given time can be readily determined in various manners.
  • an indication of the remaining capacity of the battery cell(s) over time is maintained by the battery cell(s) 136 , and thus can be readily obtained by the usage tracking module 138 querying the battery cell(s) 136 .
  • a capacity charge (also referred to as a capacity gain) is generated by determining the difference between the remaining capacity of the battery cell(s) 136 at the start of the time duration and the remaining capacity of the battery cell(s) 136 at the end of the time duration (e.g., by subtracting the remaining capacity of the battery cell(s) 136 at the start of the time duration from the remaining capacity of the battery cell(s) 136 at the end of the time duration, or by subtracting the remaining capacity of the battery cell(s) 136 at the end of the time duration from the remaining capacity of the battery cell(s) 136 at the start of the time duration and recording the capacity charge as a negative capacity drain).
  • the remaining capacity of the battery cell(s) 136 at any given time can be readily determined in various manners.
  • an indication of the remaining capacity of the battery cell(s) over time is maintained by the battery cell(s) 136 , and thus can be readily obtained by the usage tracking module 138 querying the battery cell(s) 136
  • the usage tracking module 138 monitors the different state settings at the computing device 102 , and generates a new record or entry in the usage data store 144 each time there is a change in the state settings for the computing device 102 .
  • the time duration over which the capacity drain or charge of the battery cell(s) is determined is thus not a fixed time—the time duration will vary based on how long it is until at least one of the state settings changes.
  • the usage tracking module 138 can monitor the different state settings and determine when a change is made to a state setting in a variety of different manners.
  • the usage tracking module 138 queries various components or programs (e.g., hardware components, operating system programs, etc.) at regular or irregular intervals to obtain the state settings.
  • the usage tracking module 138 can be configured to query the operating system running on the computing device 102 for the current processor utilization of the processors(s) and/or processor core(s) in the processing system 132 every five seconds.
  • the usage tracking module 138 can register with a program (e.g., of an operating system running on the computing device 102 ) to receive messages or notifications whenever there is a change to a particular one or more state settings of the computing device 102 , and the program sends a message or other notification to the usage tracking module 138 in response to a change in the particular one or more state settings of the computing device 102 .
  • a program e.g., of an operating system running on the computing device 102
  • the program sends a message or other notification to the usage tracking module 138 in response to a change in the particular one or more state settings of the computing device 102 .
  • the usage tracking module 138 can register with an operating system running on the computing device 102 to receive notifications of changes to the power conservation mode the computing device 102 is running in, and receive a message or other notification from the operating system in response to each change in the power conservation mode for the computing device 102 .
  • FIG. 2 illustrates an example record 200 of usage data recorded by the usage tracking module in accordance with one or more embodiments.
  • the record 200 includes multiple entries shown as rows in the record 200 .
  • Each row in the record 200 corresponds to a different time duration identified by values in the date column 202 and the time column 204 .
  • a time duration begins at the date and time of the entry, and ends at the date and time of the next entry.
  • the first entry shows a time duration that starts on Apr. 1, 2016 at 12:21:00 AM and ends on Apr. 1, 2016 at 12:56:12 AM.
  • the record 200 shows multiple different state settings as follows.
  • the power mode column 206 shows a power mode state value for each time duration.
  • the power source column 208 shows a power source state value for each time duration.
  • the battery saver column 210 shows a battery saver state value for each time duration.
  • the processor consumption column 212 shows a processor consumption state value for each time duration.
  • the screen column 214 shows a screen state value for each time duration.
  • the user present column 216 shows a user present state value for each time duration.
  • the record 200 also shows capacity information for the battery cell(s) for each time duration as additional columns.
  • the capacity % column 218 shows a percentage of the battery capacity that remains in the battery cell(s) at the beginning of the time duration.
  • the capacity remaining column 220 shows an amount of energy (e.g., in milliampere hours (mAh)) remaining in the battery cell(s) at the beginning of the time duration.
  • the capacity drain rate column 222 shows a value that is a rate of capacity (e.g., in milliampere (mA) per hour (mA/h)) drained during the time duration.
  • the value in the capacity drain rate column 222 for a given time duration can be determined by subtracting, from the value in the capacity remaining column 220 , the value in the capacity remaining column 220 for the next time duration, and dividing the difference by the amount of time in the time duration.
  • the time duration begins on Apr. 1, 2016 at 12:21:00 AM.
  • the power mode state value is “active”
  • the power source state value is “battery”
  • the battery saver state value is “on”
  • the processor consumption state value is “7%”
  • the screen state value is “on”
  • the user present state value is “yes”
  • the percentage of the battery capacity that remains in the battery cell(s) at the beginning of the time duration is 100.00%
  • the capacity remaining at the beginning of the time duration is 37,822 mAh
  • the capacity drain during the time duration (which ends at the beginning of the next row, on Apr. 1, 2016 at 12:56:12 AM) is 5497 mAh.
  • the capacity drain is generated by subtracting from the capacity remaining at the beginning of the time duration (37,822 mAh) the capacity remaining at the beginning of the next time duration (32,325 mAh), and dividing the difference (5497 mAh) by the amount of time in the time duration.
  • the time duration begins on Apr. 1, 2016 at 12:21:00 AM and ends on Apr. 1, 2016 at 12:56:12 AM, which is 35 minutes and 12 seconds, which is equal to 0.587 hours.
  • battery cell drain is shown by positive values and battery cell charge is shown by negative values.
  • a value of ⁇ 9519.39 for a time duration indicates that the battery cell(s) were charged at a rate of 9519.39 mA/h during that time duration.
  • charging rate can alternatively be shown in different manners, such as by a different column (e.g., a capacity charge rate column rather than a capacity drain rate column).
  • the illustrated example of FIG. 2 is an example, and that not all of the state values shown in FIG. 2 need be recorded by the usage tracking module 138 .
  • the user present state may not be determined and recorded in the usage data by the usage tracking module 138 .
  • the capacity drain rate 222 may be determined as needed based on the other values in the record 200 rather than being recorded in the record 200 .
  • additional values of additional states that can affect draining or charging the battery cell(s) 136 , and/or that affect any of a variety of different values that reflect a rate at which the battery cell(s) 136 are drained or charged, can be recorded in the usage data by the usage tracking module 138 .
  • the record 200 is illustrated as a table.
  • a table is an example of a data structure that can be used to record the usage data, and any of a variety of other data structures can additionally or alternatively be used to record the usage data.
  • the record may be listed as database entries, as elements of a linked list, and so forth.
  • FIG. 2 multiple different records can be maintained. For example, rather than a single record for draining and charging the battery cell(s), one record can be maintained recording usage data when draining the battery cell(s), and another record can be maintained recording usage data when charging the battery cell(s).
  • the computing device 102 includes the charge time determination module 140 and the discharge time determination module 142 .
  • the discharge time determination module 142 determines an estimated amount of time until the battery cell(s) 136 are fully discharged (e.g., dropping to or below a threshold capacity, such as 0 mAh or 50 mAh).
  • the discharge time determination module 142 determines the amount of time until the battery cell(s) 136 are fully discharged by determining the current capacity remaining of the battery cell(s) 136 and the current state values for the computing device 102 . These values can be obtained in a variety of different manners as discussed above with regard to usage tracking module 138 collecting usage data. Additionally or alternatively, the discharge time determination module 142 can access the entry in the usage data store 144 for the current time duration (e.g., the row in the record 200 of FIG. 2 that includes the current time) and obtain the state values from the record 200 .
  • the current time duration e.g., the row in the record 200 of FIG. 2 that includes the current time
  • the usage data in the usage data store 144 includes only a single previous time duration having the same state values as the current state values corresponding to the battery cell(s) discharging (e.g., having positive capacity drain rates), then the capacity drain rate for that single previous time duration is used as the current estimated capacity drain rate for the computing device 102 .
  • the current estimated capacity drain rate for the computing device 102 is generate by combining the capacity drain rates from multiple ones of those previous time durations.
  • the capacity drain rates from multiple ones of the previous time durations can be combined in a variety of different manners.
  • the capacity drain rates from all of the previous time durations are averaged to generate the current estimated capacity drain rate.
  • the capacity drain rates from a subset e.g., a threshold number, such as the previous 15
  • a subset e.g., a threshold number, such as the previous 15
  • a weighted averaging is applied so that the capacity drain rates from more recently occurring previous time durations have a heavier weighting than the capacity drain rates from older previous time durations. For example, the capacity drain rates from previous time durations in the preceding day can be given higher weights in the averaging process than capacity drain rates from previous time durations two weeks ago.
  • This averaging process giving heavier weights to more recently occurring previous time durations allows the capacity drain rates from more recent previous time durations, which more likely reflect the current configuration of the computing device 102 (e.g., the same programs, the same hardware, etc.), and thus can more accurately reflect the current capacity drain rate for the computing device 102 .
  • a weighted averaging can be applied so that the capacity drain rates from previous time durations occurring at times that correspond to the current time are given higher weights in the averaging process than capacity drain rates from previous time durations that occurred at times that do not correspond to the current time.
  • Whether a previous time duration corresponds to the current time can be determined in various different manners.
  • a previous time duration corresponds to the current time if the previous time duration includes the current time but on a different date. E.g., if the current time is 12:25:20 AM on Apr. 2, 2016, then a previous time duration spanning 12:21:00 AM to 12:56:12 AM on Apr.
  • a previous time duration corresponds to the current time if the previous time duration occurs on the same day of the week (or the same week of the month) as the current time duration. E.g., if the current time is 12:25:20 AM on Apr. 2, 2016 (and assuming Apr. 2, 2016 is a Saturday), then a previous time duration occurring on Mar. 19, 2016 (a Saturday) would be a corresponding previous time duration for the current time, but a previous time duration occurring on Apr. 1, 2016 (a Friday) would not be a corresponding previous time duration for the current time.
  • a previous time duration corresponds to the current time if the previous time duration includes the current time but on a different date and on the same day of the week as the current time.
  • the current time is 12:25:20 AM on Apr. 2, 2016 (and assuming Apr. 2, 2016 is a Saturday)
  • a previous time duration spanning 12:15:00 to 12:45:00 AM on Mar. 19, 2016 would be a corresponding previous time duration for the current time
  • a previous time duration spanning 12:15:00 to 12:45:00 AM on Apr. 1, 2016 (a Friday) would not be a corresponding previous time duration for the current time
  • a previous time duration spanning 1:15:00 AM to 1:35:14 AM on Mar. 19, 2016 would not be a corresponding previous time duration for the current time.
  • the averaging process giving higher weights to capacity drain rates from corresponding previous time durations than non-corresponding previous time durations can be implemented in a variety of different manners.
  • the capacity drain rates from corresponding previous time durations are given a weight of 1.0, and the capacity drain rates from non-corresponding previous time durations a weight of 0.5 or 0.0.
  • the averaging process can give higher weights to capacity drain rates from corresponding previous time durations than non-corresponding previous time durations and also give higher weights to capacity drain rates from more recently occurring previous time durations capacity drain rates from older previous time durations.
  • the averaging process can give the highest weight(s) to corresponding previous time durations that are most recent, and the lowest weight(s) to non-corresponding previous time durations that are several weeks in the past.
  • discharge time determination module 142 This averaging process giving heavier weights to corresponding previous time durations allows discharge time determination module 142 to take into account similar activities in determining the current capacity drain rate. For example, a user may have a weekly conference call that uses a Web conferencing client running on the computing device 102 every Wednesday morning from 9:00 to 9:30. If the current time is a Wednesday morning at 9:01, then the discharge time determination module 142 can assume that the current capacity drain rate will likely be approximately the same as the capacity drain rate during previous Wednesday mornings at 9:01, assuming the current state values of the computing device 102 are the same as during previous Wednesday mornings at 9:01.
  • the capacity drain rates of previous time durations can be used.
  • the capacity drain rates can be input to an equation producing a curved projection.
  • additional seed data can be provided to the discharge time determination module 142 .
  • This seed data can be stored in the usage data store 144 and/or in other storage devices or locations.
  • the seed data is additional data analogous to the user device, providing capacity discharge rates for different combinations of state values.
  • This seed data can be data provided by a manufacturer, developer, or distributor of the computing device 102 .
  • a computing device having the same hardware and software installed (or at least a threshold amount of the same software, such as 90 % of the same software) as the computing device 102 can be tested in a lab for various different combinations of state values that are expected to be common, the resultant capacity discharge rate can be determined, and that data can be seed data for the discharge time determination module 142 .
  • Such seed data can additionally or alternatively be crowd sourced information, such as from a cloud service.
  • Various different computing devices can provide their usage data to the cloud service, and the computing device 102 can obtain the usage data from the cloud service for other computing devices having the same hardware and software installed (or at least a threshold amount of the same software, such as 90% of the same software) as the computing device 102 .
  • the usage tracking module 138 can provide usage data for the computing device 102 to the cloud service, allowing the computing device 102 to participate in the crowd sourcing and making the usage data from the computing device 102 available to other computing devices.
  • the usage data provided by the computing device 102 can be stored as separate data that is provided to other devices, or alternatively is averaged or otherwise combined with the usage data from other computing devices maintained at the cloud service.
  • the seed data can be used in a variety of different manners.
  • the seed data is treated the same as the usage data generated by the usage tracking module 138 . This allows, for example, the discharge time determination module 142 to have access to usage data when the computing device 102 is new (fresh out of the box) and/or if the usage data in usage data store 144 were to be deleted (e.g., accidentally).
  • the seed data is treated as having a different importance than the usage data generated at the computing device 102 , such as being less important than the usage data generated at the computing device 102 , such as by giving the seed data a lower weight relative to the usage data of the computing device 102 maintained by the usage tracking module 138 .
  • the discharge time determination module 142 allows, for example, the discharge time determination module 142 to have access to usage data from other computing devices to supplement the usage data maintained by the usage tracking module 138 based on the operation of the computing device 102 , but still give the usage data of the computing device 102 maintained by the usage tracking module 138 more influence in the discharge time determination process than the crowd sourced data.
  • the charge time determination module 140 determines an estimated amount of time until the battery cell(s) 136 are fully charged (e.g., rising to or above a threshold capacity, such as the maximum capacity of the battery cell(s) 136 or within 50 mAh of the maximum capacity of the battery cell(s) 136 ).
  • a threshold capacity such as the maximum capacity of the battery cell(s) 136 or within 50 mAh of the maximum capacity of the battery cell(s) 136 .
  • the charge time determination module 140 determines the amount of time until the battery cell(s) 136 are fully charged based on the current capacity remaining of the battery cell(s) 136 , the maximum capacity of the battery cell(s) 136 , and the current state values for the computing device 102 . These values can be obtained in a variety of different manners as discussed above with regard to usage tracking module 138 collecting usage data. Additionally or alternatively, the charge time determination module 140 can access the entry in the usage data store 144 for the current time duration (e.g., the row in the record 200 of FIG. 2 that includes the current time) and obtain the state values from the record 200 .
  • the current time duration e.g., the row in the record 200 of FIG. 2 that includes the current time
  • the charge time determination module 140 operates similarly to the discharge time determination module 142 , but determines an amount of time until the battery cell(s) are fully charged rather than fully discharged.
  • the charge time determination module 140 identifies previous time durations from the usage data store 144 that had the same state values as the current state values and corresponding to the battery cell(s) charging (e.g., having negative capacity drain rates).
  • the capacity charge rates e.g., the capacity drain rates that are negative values
  • the charge time determination module 140 also generates a current desired charge amount, which is the difference between the maximum capacity of the battery cell(s) 136 and the current remaining capacity of the battery cell(s) 136 .
  • an estimated amount of time until the battery cell(s) 136 are fully charged can be readily generated.
  • the usage data in the usage data store 144 includes only a single previous time duration having the same state values as the current state values corresponding to the battery cell(s) charging (e.g., having negative capacity drain rates), then the capacity charge rate for that single previous time duration is used as the current estimated capacity charge rate for the computing device 102 .
  • the current estimated capacity charge rate for the computing device 102 is generate by combining the capacity charge rates from multiple ones of those previous time durations.
  • the capacity charge rates from multiple ones of the previous time durations can be combined in a variety of different manners, analogous to the discussion above regarding combining capacity drain rates.
  • capacity charge rates from previous time durations can be averaged together, a weighted averaging can be applied so that the capacity charge rates from more recently occurring previous time durations have a heavier weighting than the capacity charge rates from older previous time durations, a weighted averaging can be applied so that the capacity charge rates from previous time durations occurring at times that correspond to the current time are given higher weights in the averaging process than capacity charge rates from previous time durations that occurred at times that do not correspond to the current time, the capacity charge rates can be input to an equation producing a curved projection rather than a linear regression, and so forth.
  • the charge time determination module 140 also optionally uses seed data as discussed above.
  • the seed data can be data from a manufacturer, developer, or distributor of the computing device 102 , or crowd sourced data.
  • the usage data including capacity charge rates can also optionally be provided to a crowd sourcing service, analogous to the usage data including capacity discharge rates discussed above.
  • FIG. 3 is a flowchart illustrating an example process 300 for usage data based battery discharge time determination in accordance with one or more embodiments.
  • Process 300 is carried out by a computing device, such as computing device 102 of FIG. 1 , and can be implemented in software, firmware, hardware, or combinations thereof.
  • Process 300 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.
  • Process 300 is an example process for usage data based battery discharge time determination; additional discussions of usage data based battery discharge time determination are included herein with reference to different figures.
  • state information for multiple different states of a computing device is monitored (act 302 ).
  • the values of these different states can be obtained from various different sources, such as hardware of the computing device, firmware of the computing device, programs (e.g., the operating system) running on the computing device, and so forth.
  • These different states can include, for example, a power source state, a power mode state, a battery saver state, a processor consumption state, a screen state, and/or a user present state as discussed above.
  • a record of computing device usage data is updated in response to each change in a value of one or more of the multiple different states (act 304 ). This record allows the computing device to keep track of energy storage device (e.g., battery) drain by the computing device for each combination of state values.
  • energy storage device e.g., battery
  • a capacity drain rate of the energy storage device for the current state values is estimated (act 308 ). This estimated capacity drain rate is determined based on the current state values, the record of computing device usage, and a remaining capacity of the energy storage device, as discussed above. Various different capacity drain rates determined for previous time durations during which the computing device had the same state values as the current state values are used to determine the estimated capacity drain rate as discussed above.
  • An estimated remaining time for discharge of the energy storage device based is determined (act 310 ). This estimate is based on both the estimated capacity drain rate and the remaining capacity of the energy storage device as discussed above.
  • Feedback indicating the estimated remaining time for discharge of the energy storage device is provided (act 312 ).
  • This feedback can take various forms, such as displaying or audibly playing a number of hours and/or minutes until the energy storage device is estimated to be fully discharged.
  • This feedback can additionally or alternatively be provided to various other components or modules of the computing device to take various actions based on the estimated remaining time for discharge of the energy storage device.
  • FIG. 4 is a flowchart illustrating an example process 400 for usage data based battery charge time determination in accordance with one or more embodiments.
  • Process 400 is carried out by a computing device, such as computing device 102 of FIG. 1 , and can be implemented in software, firmware, hardware, or combinations thereof.
  • Process 400 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts.
  • Process 400 is an example process for usage data based battery charge time determination; additional discussions of usage data based battery charge time determination are included herein with reference to different figures.
  • state information for multiple different states of a computing device is monitored (act 402 ).
  • the values of these different states can be obtained from various different sources, such as hardware of the computing device, firmware of the computing device, programs (e.g., the operating system) running on the computing device, and so forth.
  • These different states can include, for example, a power source state, a power mode state, a battery saver state, a processor consumption state, a screen state, and/or a user present state as discussed above.
  • a record of computing device usage data is updated in response to each change in a value of one or more of the multiple different states (act 404 ). This record allows the computing device to keep track of energy storage device (e.g., battery) charge by the computing device for each combination of state values.
  • energy storage device e.g., battery
  • Current state values of the computing device are also determined (act 406 ).
  • the current state values can be determined in response to various events, such as an amount of time elapsing, a request from a user to display an amount of time until the computing device is fully charged, a request from another module or device, and so forth.
  • a capacity charge rate of the energy storage device for the current state values is estimated (act 408 ). This estimated capacity charge rate is determined based on the current state values, the record of computing device usage, a remaining capacity of the energy storage device, and a maximum capacity of the energy storage device as discussed above. Various different capacity charge rates determined for previous time durations during which the computing device had the same state values as the current state values are used to determine the estimated capacity charge rate as discussed above.
  • An estimated remaining time for charging of the energy storage device based is determined (act 410 ). This estimate is based on the estimated capacity charge rate, the remaining capacity of the energy storage device, and a maximum capacity of the energy storage device as discussed above.
  • Feedback indicating the estimated remaining time for charging of the energy storage device is provided (act 412 ).
  • This feedback can take various forms, such as displaying or audibly playing a number of hours and/or minutes until the energy storage device is estimated to be fully discharged.
  • This feedback can additionally or alternatively be provided to various other components or modules of the computing device to take various actions based on the estimated remaining time for charging of the energy storage device.
  • a particular module discussed herein as performing an action includes that particular module itself performing the action, or alternatively that particular module invoking or otherwise accessing another component or module that performs the action (or performs the action in conjunction with that particular module).
  • a particular module performing an action includes that particular module itself performing the action and/or another module invoked or otherwise accessed by that particular module performing the action.
  • FIG. 5 illustrates an example system 500 that includes an example computing device 502 that is representative of one or more computing systems and/or devices that may implement the various techniques described herein.
  • the computing device 502 may be, for example, a mobile device, a wearable device, an on-chip system, and/or any other suitable computing device or computing system.
  • the example computing device 502 as illustrated includes a processing system 504 , one or more computer-readable media 506 , and one or more I/O interfaces 508 that are communicatively coupled, one to another.
  • the computing device 502 may further include a system bus or other data and command transfer system that couples the various components, one to another.
  • a system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures.
  • a variety of other examples are also contemplated, such as control and data lines.
  • the processing system 504 is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system 504 is illustrated as including hardware elements 510 that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors.
  • the hardware elements 510 are not limited by the materials from which they are formed or the processing mechanisms employed therein.
  • processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)).
  • processor-executable instructions may be electronically-executable instructions.
  • the computer-readable media 506 is illustrated as including memory/storage 512 .
  • the memory/storage 512 represents memory/storage capacity associated with one or more computer-readable media.
  • the memory/storage 512 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth).
  • RAM random access memory
  • ROM read only memory
  • Flash memory optical disks
  • magnetic disks magnetic disks, and so forth
  • the memory/storage 512 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth).
  • the computer-readable media 506 may be configured in a variety of other ways as further described below.
  • Input/output interface(s) 508 are representative of functionality to allow a user to enter commands and information to computing device 502 , and also allow information to be presented to the user and/or other components or devices using various input/output devices.
  • input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone for voice operations, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to detect movement that does not involve touch as gestures), and so forth.
  • Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth.
  • the computing device 502 may be configured in a variety of ways as further described below to support user interaction.
  • modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types.
  • module generally represent software, firmware, hardware, or a combination thereof.
  • the features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
  • Computer-readable media may include a variety of media that may be accessed by the computing device 502 .
  • computer-readable media may include “computer-readable storage media” and “communication media.”
  • Computer-readable storage media refers to media and/or devices that enable storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Computer-readable storage media does not include signal bearing media, transitory signals, or signals per se.
  • the computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data.
  • Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.
  • Communication media may refer to signal-bearing media that is configured to transmit instructions to the hardware of the computing device 502 , such as via a network.
  • Communication media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism.
  • Communication media also include any information delivery media.
  • modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
  • communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
  • hardware elements 510 and computer-readable media 506 are representative of instructions, modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein.
  • Hardware elements may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware devices.
  • ASIC application-specific integrated circuit
  • FPGA field-programmable gate array
  • CPLD complex programmable logic device
  • a hardware element may operate as a processing device that performs program tasks defined by instructions, modules, and/or logic embodied by the hardware element as well as a hardware device utilized to store instructions for execution, e.g., the computer-readable storage media described previously.
  • software, hardware, or program modules including the usage tracking module 138 , the charge time determination module 140 , the discharge time determination module 142 , and other program modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements 510 .
  • the computing device 502 may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of modules as a module that is executable by the computing device 502 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 510 of the processing system.
  • the instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices 502 and/or processing systems 504 ) to implement techniques, modules, and examples described herein.
  • the example system 500 enables ubiquitous environments for a seamless user experience when running applications on a personal computer (PC), a television device, and/or a mobile device. Services and applications run substantially similar in all three environments for a common user experience when transitioning from one device to the next while utilizing an application, playing a video game, watching a video, and so on.
  • PC personal computer
  • television device a television device
  • mobile device a mobile device. Services and applications run substantially similar in all three environments for a common user experience when transitioning from one device to the next while utilizing an application, playing a video game, watching a video, and so on.
  • multiple devices are interconnected through a central computing device.
  • the central computing device may be local to the multiple devices or may be located remotely from the multiple devices.
  • the central computing device may be a cloud of one or more server computers that are connected to the multiple devices through a network, the Internet, or other data communication link.
  • this interconnection architecture enables functionality to be delivered across multiple devices to provide a common and seamless experience to a user of the multiple devices.
  • Each of the multiple devices may have different physical requirements and capabilities, and the central computing device uses a platform to enable the delivery of an experience to the device that is both tailored to the device and yet common to all devices.
  • a class of target devices is created and experiences are tailored to the generic class of devices.
  • a class of devices may be defined by physical features, types of usage, or other common characteristics of the devices.
  • the computing device 502 may assume a variety of different configurations, such as for computer 514 , mobile 516 , and television 518 uses. Each of these configurations includes devices that may have generally different constructs and capabilities, and thus the computing device 502 may be configured according to one or more of the different device classes. For instance, the computing device 502 may be implemented as the computer 514 class of a device that includes a personal computer, desktop computer, a multi-screen computer, laptop computer, netbook, and so on.
  • the computing device 502 may also be implemented as the mobile 516 class of device that includes mobile devices, such as a mobile phone, portable music player, portable gaming device, a tablet computer, a multi-screen computer, and so on.
  • the computing device 502 may also be implemented as the television 518 class of device that includes devices having or connected to generally larger screens in casual viewing environments. These devices include televisions, set-top boxes, gaming consoles, and so on.
  • schedule-based energy storage device selection system 126 may be supported by these various configurations of the computing device 502 and are not limited to the specific examples of the techniques described herein. This is illustrated through inclusion of the schedule-based energy storage device selection system 126 and the energy storage device system 128 on the computing device 502 .
  • the functionality represented by schedule-based energy storage device selection system 126 and other modules/applications may also be implemented all or in part through use of a distributed system, such as over a “cloud” 520 via a platform 522 as described below.
  • the cloud 520 includes and/or is representative of a platform 522 for resources 524 .
  • the platform 522 abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud 520 .
  • the resources 524 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from the computing device 502 .
  • Resources 524 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.
  • the platform 522 may abstract resources and functions to connect the computing device 502 with other computing devices.
  • the platform 522 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources 524 that are implemented via the platform 522 .
  • implementation of functionality described herein may be distributed throughout the system 500 .
  • the functionality may be implemented in part on the computing device 502 as well as via the platform 522 that abstracts the functionality of the cloud 520 .
  • a method comprising: monitoring state information for multiple different states of a computing device; updating a record, in response to each change in a value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device drain by the computing device for each combination of state values; determining current state values of the computing device; estimating, based on the current state values and the record, a capacity drain rate of the energy storage device for the current state values of the computing device; determining an estimated remaining time for discharge of the energy storage device of the computing device based on the estimated capacity drain rate; and providing feedback indicating the estimated remaining time for discharge of the energy storage device.
  • any one or combination of: the energy storage device comprising one or more battery cells; the multiple different states including a power source state and a power mode state; the power source state including values of battery or external power, the power mode state including values of active, connected standby, and off; the multiple states further including a battery saver state; the battery saver state including values of on or off; the multiple different states including a processor consumption state having a value that indicates a utilization of the processors and/or processor cores of the computing device; the multiple different states including a screen state with values indicating whether a screen of the computing device is powered on or powered off; the multiple different states including a user present state with values indicating whether a user is present at the computing device; the estimating the capacity drain rate of the energy storage device comprising combining the capacity drain rates from previous time durations in the record having the same state values as the current state values; the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighte
  • a method comprising: monitoring state information for multiple different states of a computing device; updating a record, in response to each change in value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device charge by the computing device for each combination of state values; determining current state values of the computing device; estimating, based on the current state values and the record, a capacity charge rate of the energy storage device for the current state settings of the computing device; determining an estimated remaining time for charging of the energy storage device of the computing device based on the estimated capacity charge rate; and providing feedback indicating the estimated remaining time for charging of the energy storage device; a computing device implementing any of the above described methods.
  • any one or combination of: the estimating the capacity charge rate of the energy storage device comprising combining the capacity charge rates from previous time durations in the record having the same state values as the current state values; the combining comprising applying a weighted averaging to the capacity charge rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity charge rates from more recent time durations than capacity charge rates from older time durations; the combining comprising applying a weighted averaging to the capacity charge rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity charge rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time.
  • a computing device comprising: one or more processors; and a computer-readable storage medium having stored thereon multiple instructions that, responsive to execution by the one or more processors, cause the one or more processors to: monitor state information for multiple different states of the computing device, the multiple different states including a processor consumption state having a value that indicates a utilization of the one or more processors; update a record, in response to each change in a value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device drain by the computing device for each combination of state values; determine current state values of the computing device; estimate, based on the current state values and the record, a capacity drain rate of the energy storage device for the current state values of the computing device; determine an estimated remaining time for discharge of the energy storage device of the computing device based on the estimated capacity drain rate; and provide feedback indicating the estimated remaining time for discharge of the energy storage device.
  • any one or combination of: wherein to estimate the capacity drain rate of the energy storage device comprises combining the capacity drain rates from previous time durations in the record having the same state values as the current state values, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from more recent time durations than capacity drain rates from older time durations; wherein to estimate the capacity drain rate of the energy storage device comprises combining the capacity drain rates from previous time durations in the record having the same state values as the current state values, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time.

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Emergency Management (AREA)
  • Charge And Discharge Circuits For Batteries Or The Like (AREA)
  • Automation & Control Theory (AREA)

Abstract

Usage data of a device is maintained over some time period, such as a couple weeks or a couple months. This usage data reflects an amount of energy that is used or stored for different time durations each having a various combinations of different state values of the device, such as a screen state, a power source state, a power mode state, a battery saver state, a processor consumption state, and so forth. This provides a record of a capacity drain rate or capacity charge rate for the battery for each combination of state values. At any given time, the device can determine the current state values of the device. The capacity drain rates or capacity charge rates for previous time durations having the same state values as the current state values are used to determine an estimated capacity drain rate or capacity charge rate for the device.

Description

    BACKGROUND
  • As technology has advanced, mobile computing devices have become increasingly commonplace. Mobile computing devices provide various functionality to users, allowing users to interact with the devices to check email, surf the web, compose text messages, interact with applications, and so on. With mobile computing devices, users are oftentimes concerned with the battery life of their device. However, it can be difficult for a user to know the remaining battery life of their device at any given time. This can result in batteries being depleted at times other than what the users expect, which can lead to user dissatisfaction with their devices.
  • SUMMARY
  • This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
  • In accordance with one or more aspects, state information for multiple different states of a computing device is monitored. In response to each change in a value of one or more of the multiple different states, a record of computing device usage data is updated to keep track of energy storage device drain (or charge) by the computing device for each combination of state values. Current state values of the computing device are determined, and based on the current state values and the record, a capacity drain rate (or capacity charge rate) of the energy storage device for the current state values of the computing device is estimated. An estimated remaining time for discharge (or charging) of the energy storage device of the computing device is determined based on the estimated capacity drain rate, and feedback indicating the estimated remaining time for discharge of the energy storage device is provided.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures may indicate similar or identical items. Entities represented in the figures may be indicative of one or more entities and thus reference may be made interchangeably to single or plural forms of the entities in the discussion.
  • FIG. 1 illustrates an example operating environment in which the usage data based battery charge or discharge time determination can be implemented in accordance with one or more embodiments.
  • FIG. 2 illustrates an example record of usage data recorded by the usage tracking module in accordance with one or more embodiments.
  • FIG. 3 is a flowchart illustrating an example process for usage data based battery discharge time determination in accordance with one or more embodiments.
  • FIG. 4 is a flowchart illustrating an example process for usage data based battery charge time determination in accordance with one or more embodiments.
  • FIG. 5 illustrates an example system that includes an example computing device that is representative of one or more computing systems and/or devices that may implement the various techniques described herein.
  • DETAILED DESCRIPTION
  • Usage data based battery charge or discharge time determination is discussed herein. Usage data of a computing device is maintained over some time period, such as a couple weeks or a couple months. This usage data reflects an amount of energy that is used or stored for a given combination of different state values of the computing device. The state values include various device state information, such as a screen state (e.g., on or off), a power source state (e.g., battery or AC), a power mode state (e.g., active, connected standby, or off), a battery saver state (e.g., on or off), a processor consumption state (e.g., percentage of processor being used), and so forth. Each time there is a change in value of a state a record is updated and an amount of power that is used or stored (e.g., how much the battery was drained or charged) until the next change of state is recorded. Over time, this provides a record of how much a battery is drained or charged while the computing device is being used for a given combination of the various state values.
  • The record of usage data is used to estimate an amount of time it will take until the battery is fully discharged or fully charged. At any given time, the computing device can determine the current state settings of the computing device. The amount of power used or stored for the current state settings of the computing device can be determined from the record of usage data, and it is assumed that the amount of power used or stored for the computing device currently will be approximately the same as the amount of power previously used or stored for the current state settings. This assumed amount of power used or stored, in combination with a current remaining capacity of the battery, allows an estimated amount of time it will take until the battery is fully discharged or fully charged to be determined.
  • The techniques discussed herein provide an estimate of an amount of time it will take until a battery is fully charged or fully discharged that is based on prior usage of the computing device. This provides a more accurate estimation of the amount of time it will take until the battery is fully charged or fully discharged, providing more accurate information to the user of the computing device. The techniques discussed herein allow the user to be provided with a better understanding of the amount of time he or she has remaining before the battery is fully charged or discharged, and allows the user to make more intelligent and informed choices regarding how to use the computing device.
  • FIG. 1 illustrates an example operating environment 100 in which the usage data based battery charge or discharge time determination can be implemented in accordance with one or more embodiments. Operating environment 100 can be embodied as any suitable computing system and/or device such as, by way of example and not limitation, a gaming system, a desktop computer, a portable computer, a tablet or slate computer, a handheld computer such as a personal digital assistant (PDA), a cell phone, a set-top box, a wearable device (e.g., watch, band, glasses, augmented reality (AR) headsets, virtual reality (VR) headsets, etc.), and the like. For example, as shown in FIG. 1 the computing device 102 can be implemented as a television client device 112, a computer 114, and/or a gaming system 116 that is connected to a display device 118 to display media content. Alternatively, the computing device may be any type of portable computer, mobile phone, Internet-of-Things (IoT) device, or portable device 120. Such a computing device 120 optionally includes an integrated display 122. A computing device may also be configured as a wearable device 124 that is designed to be worn by, attached to, carried by, or otherwise transported by a user. Examples of wearable devices 124 depicted in FIG. 1 include glasses, a smart band or watch, and a pod device such as clip-on fitness device, media player, or tracker. Other examples of wearable devices 124 include but are not limited to badges, a key fob, an access card, and a ring, an article of clothing, a glove, or a bracelet, to name a few examples. A computing device may also be implemented as part of another device or product, such as an electric vehicles. Any of the computing devices can be implemented with various components, such as one or more processors and memory devices, as well as with any combination of differing components.
  • The computing device 102 includes a processing system 132. The processing system 132 may be configured to include a single processor with one or more processor cores included on the same chip or integrated circuit. Alternatively, the processing system 132 may be configured to include multiple independent processors configured in parallel or in series, each including one or more processor cores included on the same chip or integrated circuit. In one or more implementations, the processing system 132 may include multiple processing cores that provide a range of performance capabilities, processing efficiencies, and power usage characteristics.
  • The processing system 132 can execute various firmware and/or software instructions of various modules or components of the computing device 102. These firmware and/or software instructions can include programs of an operating system (OS) of the computing device 102, programs run by the OS of the computing device 102, and so forth. For example, the processing system 132 can execute programs that provide a wide range of functionality to the computing device 102, including but not limited to gaming, office productivity, email, media management, printing, networking, web-browsing, and so forth
  • Computing device 102 also includes power circuitry 134 and battery cell(s) 136, from which computing device 102 can draw power to operate. Generally, power circuitry 134 may include firmware and/or hardware configured to enable computing device 102 to draw operating power from battery cells 136 or to apply charging power to battery cells 136. Battery cells 136 may include any suitable number or type of rechargeable battery cells, such as lithium-ion (Lion), lithium-polymer (Li-Poly), lithium ceramic (Li-C), and the like. Different battery cells 136 within the computing device 102 can be the same or different types of cells. These different types of cells can have various different characteristics, such as different sizes/capacities, chemistries, battery technologies, shapes, state of charge (SOC), age, temperature, and so forth. Various combinations of battery cell(s) may be utilized to provide a range of capacities, performance capabilities, efficiencies, and power usage characteristics.
  • Although discussed as battery cells(s) 136, it should be noted that the techniques discussed herein can be implemented with other energy storage devices. Any devices that store energy, as opposed to being an external plug-in AC power source, can be used as battery cell(s) 136, such as supercapacitors.
  • The computing device 102 also includes a usage tracking module 138, a charge time determination module 140, a discharge time determination module 142, and a usage data store 144. The usage data store 144 can be implemented as any of a variety of different storage devices, such as a magnetic disk, optical disc, Flash memory, and so forth. Although illustrated as being part of the computing device 102, the usage data store 144 can additionally or alternatively be implemented as a device separate from the computing device 102. For example, the usage data store 144 can be a removable storage device that plugs into the computing device 102, the usage data store 144 can be an external storage device that uses a wired (e.g., universal serial bus (USB)) or wireless (e.g., wireless USB) connection to communicate with the computing device 102, the usage data store 144 can be an external storage device connects to the computing device 102 via a network (e.g., the Internet, a local area network (LAN), or other data network), such as a cloud storage service.
  • The usage tracking module 138 maintains a record of usage data in the usage data store 144. The usage data includes state information for the computing device 102 as well as capacity information regarding the battery cells(s) 136. The state information for the computing device 102 is any of a variety of different settings that can affect draining or charging the battery cell(s) 136, and/or any of a variety of different values that reflect a rate at which the battery cell(s) 136 are drained or charged.
  • In one or more embodiments, the usage tracking module 138 maintains a record of usage data including values for power source state, power mode state, battery saver state, processor consumption state, screen state, and user present state. Each of these different states can have various different values at different times during operation of the computing device, as discussed in more detail below.
  • The power source state refers to source of power for the computing device 102. In one or more embodiments, the power source state value can be battery power (e.g., battery cell(s) 136) or external power (e.g., AC power). The usage tracking module 138 can obtain an indication of the source of power for the computing device 102 at any given time from various different sources, such as the power circuitry 134, an operating system running on the computing device 102, the battery cell(s) 136, and so forth.
  • The power mode state refers to an operational mode that the computing device 102 is operating in. In one or more embodiments, the power mode state value can be active, connected standby, or off. The active power mode state refers to the computing device 102 being powered on and running programs. The off power mode state refers to the computing device 102 being powered off and thus running no programs. The connected standby power mode state refers to the computing device 102 being in a low power mode where programs are not typically run, but that can be transitioned to the active power mode state in response to an input to the device (e.g., a user input, an incoming wireless message or signal (e.g., indicating a received phone call, text message, and so forth). The usage tracking module 138 can obtain an indication of the power mode state for the computing device 102 at any given time from various different sources, such as the power circuitry 134, an operating system running on the computing device 102, and so forth.
  • The battery saver state refers to what power conservation mode the computing device 102 is in. The computing device 102 can support one or more different power conservation modes in which the computing device 102 employs various different techniques to reduce power consumption in the computing device 102, such as reducing a clock speed of a processor or core included as part of the processing system 132, powering down certain components or hardware of the computing device 102, and so forth. In one or more embodiments, the battery saver state value can be either on (power conservation is enabled in the computing device 102) or off (power conservation is not enabled in the computing device 102). Alternatively, the battery saver state value can be off or one of multiple different power conservation states. Each of these multiple different power conservation states an reduce power consumption in the computing device 102 in different manners. For example, one power conservation state may reduce the clock speed of a processor that is part of the processing system 132, and another power conservation state may reduce the clock speed of a processor that is part of the processing system 132 as well as power down one or more hardware components of the computing device 102. The usage tracking module 138 can obtain an indication of the battery saver state for the computing device 102 at any given time from various different sources, such as an operating system running on the computing device 102.
  • The processor consumption state refers to utilization of the processors(s) and/or processor core(s) in the processing system 132. In one or more embodiments, the processor consumption state is a value indicating how much of the processing capacity of the processing system 132 is being used at any given time, such as a percentage of the processing capacity (e.g., 5%, 12%, etc.). The value indicating how much of the processing capacity of the processing system 132 is being used at any given time can optionally be rounded, such as to a closest integer value, to a closest one of a particular number (e.g., 20) of values (e.g., 0%, 5%, 10%, 15%, etc.). The usage tracking module 138 can obtain an indication of the utilization of the processor(s) and/or processor core(s) in the processing system 132 at any given time from various different sources, such as an operating system running on the computing device 102.
  • Additionally or alternatively, the processor consumption state can refer to other information reflecting the utilization of the processors(s) and/or processor core(s) in the processing system 132. For example, the processor consumption state can include other available information regarding the processor utilization, such as an instruction count (e.g., how many instructions are executed over some duration of time) or a cycle count (the frequency of the processor(s) and/or processor core(s)). By way of another example, the processor consumption state can include the power state that each processor and/or processor core is running in, a frequency or frequency bucket (e.g., which of multiple different frequency ranges or states) the processor(s) and/or processor core(s) are running in, and so forth.
  • It should be noted the processing system 132 can include multiple processors and/or multiple processor cores as discussed above. In such situations, the utilizations of each of these different processors and/or cores are combined to generate the value indicating how much of the processing capacity of the processing system 132 is being used. The utilizations of these different processors and/or cores can be combined in different manners, such as averaging the utilizations, performing a weighted averaging on the utilizations (e.g., processors and/or cores having greater processing capacity (e.g., as measured by some value, such as the number of instructions per second that can be executed) being given higher weights that processors and/or cores having less processing capacity), and so forth.
  • The screen state refers to whether the screen of the computing device 102 is turned on or turned off. The screen of the computing device 102 refers to a screen (a display) that is powered by the battery cell(s) 136 when the computing device 102 is being powered by the battery cell(s) 136 (as opposed to, for example, AC power). In one or more embodiments, the screen state value can be on (the screen is powered on) or off (the screen is powered off). Additionally or alternatively, the screen state values can include indications of screen brightness (e.g., as a percentage of a maximum supported screen brightness, as one of multiple different brightness settings (e.g., low, medium, or high), and so forth). The usage tracking module 138 can obtain an indication of the screen state for the computing device 102 at any given time from various different sources, such as an operating system running on the computing device 102, the screen of the computing device 102, and so forth.
  • The user present state refers to whether a user is present at the computing device 102. In one or more embodiments, the user present state value can be either present (a user is present at the computing device 102) or absent (a user is not present at the computing device 102). The usage tracking module 138 can determine whether a user is present at the computing device 102 in a variety of different manners. In one or more embodiments, a user is determined to be present at the computing device 102 if user input (e.g., keyboard input, voice input, touchscreen input) has been received within a threshold amount of time (e.g., within the previous 20 seconds), and determined to be absent if user input has not been received within the threshold amount of time. Additionally or alternatively, whether a user is present or absent can be determined in other manners. For example, the computing device 102 can include a camera and use image (e.g., facial) recognition to detect faces within a threshold distance (e.g., 5 feet or 10 feet) of the computing device 102. If a face is detected within a threshold distance then a user is present at the computing device 102, and if a face is not detected within a threshold distance then a user is absent from (not present at) the computing device 102.
  • The usage tracking module 138 also records a capacity drain or charge for a particular combination of state settings. In situations in which the battery cell(s) 136 are being used to power the computing device during some time duration, a capacity drain is generated by determining the difference between the remaining capacity of the battery cell(s) 136 at the start of the time duration and the remaining capacity of the battery cell(s) 136 at the end of the time duration (e.g., by subtracting the remaining capacity of the battery cell(s) 136 at the end of the time duration from the remaining capacity of the battery cell(s) 136 at the start of the time duration). The remaining capacity of the battery cell(s) 136 at any given time can be readily determined in various manners. In one or more embodiments, an indication of the remaining capacity of the battery cell(s) over time is maintained by the battery cell(s) 136, and thus can be readily obtained by the usage tracking module 138 querying the battery cell(s) 136.
  • In situations in which the battery cell(s) 136 are not being used to power the computing device during some time duration (e.g., the computing device 102 is running on AC power and the battery cell(s) 136 are being charged), a capacity charge (also referred to as a capacity gain) is generated by determining the difference between the remaining capacity of the battery cell(s) 136 at the start of the time duration and the remaining capacity of the battery cell(s) 136 at the end of the time duration (e.g., by subtracting the remaining capacity of the battery cell(s) 136 at the start of the time duration from the remaining capacity of the battery cell(s) 136 at the end of the time duration, or by subtracting the remaining capacity of the battery cell(s) 136 at the end of the time duration from the remaining capacity of the battery cell(s) 136 at the start of the time duration and recording the capacity charge as a negative capacity drain). The remaining capacity of the battery cell(s) 136 at any given time can be readily determined in various manners. In one or more embodiments, an indication of the remaining capacity of the battery cell(s) over time is maintained by the battery cell(s) 136, and thus can be readily obtained by the usage tracking module 138 querying the battery cell(s) 136
  • The usage tracking module 138 monitors the different state settings at the computing device 102, and generates a new record or entry in the usage data store 144 each time there is a change in the state settings for the computing device 102. The time duration over which the capacity drain or charge of the battery cell(s) is determined is thus not a fixed time—the time duration will vary based on how long it is until at least one of the state settings changes.
  • The usage tracking module 138 can monitor the different state settings and determine when a change is made to a state setting in a variety of different manners. In one or more embodiments, the usage tracking module 138 queries various components or programs (e.g., hardware components, operating system programs, etc.) at regular or irregular intervals to obtain the state settings. For example, the usage tracking module 138 can be configured to query the operating system running on the computing device 102 for the current processor utilization of the processors(s) and/or processor core(s) in the processing system 132 every five seconds. Additionally or alternatively, the usage tracking module 138 can register with a program (e.g., of an operating system running on the computing device 102) to receive messages or notifications whenever there is a change to a particular one or more state settings of the computing device 102, and the program sends a message or other notification to the usage tracking module 138 in response to a change in the particular one or more state settings of the computing device 102. For example, the usage tracking module 138 can register with an operating system running on the computing device 102 to receive notifications of changes to the power conservation mode the computing device 102 is running in, and receive a message or other notification from the operating system in response to each change in the power conservation mode for the computing device 102.
  • FIG. 2 illustrates an example record 200 of usage data recorded by the usage tracking module in accordance with one or more embodiments. The record 200 includes multiple entries shown as rows in the record 200. Each row in the record 200 corresponds to a different time duration identified by values in the date column 202 and the time column 204. A time duration begins at the date and time of the entry, and ends at the date and time of the next entry. For example, the first entry shows a time duration that starts on Apr. 1, 2016 at 12:21:00 AM and ends on Apr. 1, 2016 at 12:56:12 AM.
  • The record 200 shows multiple different state settings as follows. The power mode column 206 shows a power mode state value for each time duration. The power source column 208 shows a power source state value for each time duration. The battery saver column 210 shows a battery saver state value for each time duration. The processor consumption column 212 shows a processor consumption state value for each time duration. The screen column 214 shows a screen state value for each time duration. The user present column 216 shows a user present state value for each time duration.
  • The record 200 also shows capacity information for the battery cell(s) for each time duration as additional columns. The capacity % column 218 shows a percentage of the battery capacity that remains in the battery cell(s) at the beginning of the time duration. The capacity remaining column 220 shows an amount of energy (e.g., in milliampere hours (mAh)) remaining in the battery cell(s) at the beginning of the time duration. The capacity drain rate column 222 shows a value that is a rate of capacity (e.g., in milliampere (mA) per hour (mA/h)) drained during the time duration. The value in the capacity drain rate column 222 for a given time duration can be determined by subtracting, from the value in the capacity remaining column 220, the value in the capacity remaining column 220 for the next time duration, and dividing the difference by the amount of time in the time duration.
  • Thus, for example, looking at the first row (entry) in the record 200, the time duration begins on Apr. 1, 2016 at 12:21:00 AM. The power mode state value is “active”, the power source state value is “battery”, the battery saver state value is “on”, the processor consumption state value is “7%”, the screen state value is “on”, the user present state value is “yes”, the percentage of the battery capacity that remains in the battery cell(s) at the beginning of the time duration is 100.00%, the capacity remaining at the beginning of the time duration is 37,822 mAh, and the capacity drain during the time duration (which ends at the beginning of the next row, on Apr. 1, 2016 at 12:56:12 AM) is 5497 mAh. The capacity drain is generated by subtracting from the capacity remaining at the beginning of the time duration (37,822 mAh) the capacity remaining at the beginning of the next time duration (32,325 mAh), and dividing the difference (5497 mAh) by the amount of time in the time duration. The time duration begins on Apr. 1, 2016 at 12:21:00 AM and ends on Apr. 1, 2016 at 12:56:12 AM, which is 35 minutes and 12 seconds, which is equal to 0.587 hours. Dividing the difference of 5497 mAh by the amount of time 0.587 hours (h), results in a capacity drain rate of 9369.886 mAh (5497±0.587=9369.886).
  • In the illustrated example of FIG. 2, in the capacity drain rate column 222 battery cell drain is shown by positive values and battery cell charge is shown by negative values. For example, a value of −9519.39 for a time duration indicates that the battery cell(s) were charged at a rate of 9519.39 mA/h during that time duration. It should be noted that charging rate can alternatively be shown in different manners, such as by a different column (e.g., a capacity charge rate column rather than a capacity drain rate column).
  • It should be noted that the illustrated example of FIG. 2 is an example, and that not all of the state values shown in FIG. 2 need be recorded by the usage tracking module 138. For example, the user present state may not be determined and recorded in the usage data by the usage tracking module 138. By way of another example, the capacity drain rate 222 may be determined as needed based on the other values in the record 200 rather than being recorded in the record 200. Additionally or alternatively, it should be noted that additional values of additional states that can affect draining or charging the battery cell(s) 136, and/or that affect any of a variety of different values that reflect a rate at which the battery cell(s) 136 are drained or charged, can be recorded in the usage data by the usage tracking module 138.
  • It should also be noted that the record 200 is illustrated as a table. A table is an example of a data structure that can be used to record the usage data, and any of a variety of other data structures can additionally or alternatively be used to record the usage data. For example, the record may be listed as database entries, as elements of a linked list, and so forth. It should also be noted that although a single record 200 is illustrated in FIG. 2, multiple different records can be maintained. For example, rather than a single record for draining and charging the battery cell(s), one record can be maintained recording usage data when draining the battery cell(s), and another record can be maintained recording usage data when charging the battery cell(s).
  • Returning to FIG. 1, the computing device 102 includes the charge time determination module 140 and the discharge time determination module 142. The discharge time determination module 142 determines an estimated amount of time until the battery cell(s) 136 are fully discharged (e.g., dropping to or below a threshold capacity, such as 0 mAh or 50 mAh). The discharge time determination module 142 determines the amount of time until the battery cell(s) 136 are fully discharged by determining the current capacity remaining of the battery cell(s) 136 and the current state values for the computing device 102. These values can be obtained in a variety of different manners as discussed above with regard to usage tracking module 138 collecting usage data. Additionally or alternatively, the discharge time determination module 142 can access the entry in the usage data store 144 for the current time duration (e.g., the row in the record 200 of FIG. 2 that includes the current time) and obtain the state values from the record 200.
  • The discharge time determination module 142 identifies previous time durations from the usage data store 144 that had the same state values as the current state values and corresponding to the battery cell(s) discharging (e.g., having positive capacity drain rates). The capacity drain rates for those previous time durations are then used to determine a current estimated capacity drain rate for the computing device 102. Given a current estimated capacity drain rate and a current remaining capacity of the battery cell(s) 136, an estimated amount of time until the battery cell(s) 136 are fully discharged can be readily generated. For example, the current remaining capacity of the battery cell(s) 136 can be divided by the current estimated capacity drain rate. E.g., if the current remaining capacity of the battery cell(s) is 2000 mAh, and the capacity drain rate is 500 mA/hour, then the estimated amount of time until the battery cell(s) 136 are fully discharged is 2000±500=4 hours.
  • In situations in which the usage data in the usage data store 144 includes only a single previous time duration having the same state values as the current state values corresponding to the battery cell(s) discharging (e.g., having positive capacity drain rates), then the capacity drain rate for that single previous time duration is used as the current estimated capacity drain rate for the computing device 102.
  • However, if the usage data in the usage data store 144 includes multiple previous time durations each having the same state values as the current state values corresponding to the battery cell(s) discharging, then the current estimated capacity drain rate for the computing device 102 is generate by combining the capacity drain rates from multiple ones of those previous time durations. The capacity drain rates from multiple ones of the previous time durations can be combined in a variety of different manners. In one or more embodiments, the capacity drain rates from all of the previous time durations are averaged to generate the current estimated capacity drain rate. Alternatively, the capacity drain rates from a subset (e.g., a threshold number, such as the previous 15) of the previous time durations are averaged to generate the current estimated capacity drain rate.
  • Various other manners of combining the capacity drain rates of previous time durations can alternatively be used. In one or more embodiments, a weighted averaging is applied so that the capacity drain rates from more recently occurring previous time durations have a heavier weighting than the capacity drain rates from older previous time durations. For example, the capacity drain rates from previous time durations in the preceding day can be given higher weights in the averaging process than capacity drain rates from previous time durations two weeks ago. The weighted averaging can be implemented in any of a variety of different manners, such as assigning a weight equal to 1 divided by the number of weeks old the previous time duration is, so capacity drain rates from previous time durations in the past 0-6 days would be given a weight of 1+1=1.0, capacity drain rates from previous time durations 7-13 days in the past would be given a weight of 1+2=0.5, capacity drain rates from previous time durations 14-20 days in the past would be given a weight of 1+3=0.33, and so forth. This averaging process giving heavier weights to more recently occurring previous time durations allows the capacity drain rates from more recent previous time durations, which more likely reflect the current configuration of the computing device 102 (e.g., the same programs, the same hardware, etc.), and thus can more accurately reflect the current capacity drain rate for the computing device 102.
  • Additionally or alternatively, a weighted averaging can be applied so that the capacity drain rates from previous time durations occurring at times that correspond to the current time are given higher weights in the averaging process than capacity drain rates from previous time durations that occurred at times that do not correspond to the current time. Whether a previous time duration corresponds to the current time can be determined in various different manners. In one or more embodiments, a previous time duration corresponds to the current time if the previous time duration includes the current time but on a different date. E.g., if the current time is 12:25:20 AM on Apr. 2, 2016, then a previous time duration spanning 12:21:00 AM to 12:56:12 AM on Apr. 1, 2016 would be a corresponding previous time duration for the current time, but a previous time duration spanning 11:05:39 AM to 2:35:33 PM on Apr. 1, 2016 would not be a corresponding previous time duration for the current time. Additionally or alternatively, a previous time duration corresponds to the current time if the previous time duration occurs on the same day of the week (or the same week of the month) as the current time duration. E.g., if the current time is 12:25:20 AM on Apr. 2, 2016 (and assuming Apr. 2, 2016 is a Saturday), then a previous time duration occurring on Mar. 19, 2016 (a Saturday) would be a corresponding previous time duration for the current time, but a previous time duration occurring on Apr. 1, 2016 (a Friday) would not be a corresponding previous time duration for the current time.
  • In one or more embodiments, a previous time duration corresponds to the current time if the previous time duration includes the current time but on a different date and on the same day of the week as the current time. E.g., if the current time is 12:25:20 AM on Apr. 2, 2016 (and assuming Apr. 2, 2016 is a Saturday), then a previous time duration spanning 12:15:00 to 12:45:00 AM on Mar. 19, 2016 (a Saturday) would be a corresponding previous time duration for the current time, but a previous time duration spanning 12:15:00 to 12:45:00 AM on Apr. 1, 2016 (a Friday) would not be a corresponding previous time duration for the current time, and a previous time duration spanning 1:15:00 AM to 1:35:14 AM on Mar. 19, 2016 would not be a corresponding previous time duration for the current time.
  • The averaging process giving higher weights to capacity drain rates from corresponding previous time durations than non-corresponding previous time durations can be implemented in a variety of different manners. For example, in one or more embodiments, the capacity drain rates from corresponding previous time durations are given a weight of 1.0, and the capacity drain rates from non-corresponding previous time durations a weight of 0.5 or 0.0.
  • It should be noted that the averaging process can give higher weights to capacity drain rates from corresponding previous time durations than non-corresponding previous time durations and also give higher weights to capacity drain rates from more recently occurring previous time durations capacity drain rates from older previous time durations. For example, the averaging process can give the highest weight(s) to corresponding previous time durations that are most recent, and the lowest weight(s) to non-corresponding previous time durations that are several weeks in the past.
  • This averaging process giving heavier weights to corresponding previous time durations allows discharge time determination module 142 to take into account similar activities in determining the current capacity drain rate. For example, a user may have a weekly conference call that uses a Web conferencing client running on the computing device 102 every Wednesday morning from 9:00 to 9:30. If the current time is a Wednesday morning at 9:01, then the discharge time determination module 142 can assume that the current capacity drain rate will likely be approximately the same as the capacity drain rate during previous Wednesday mornings at 9:01, assuming the current state values of the computing device 102 are the same as during previous Wednesday mornings at 9:01.
  • Additionally or alternatively, other manners of combining the capacity drain rates of previous time durations can be used. For example, rather than a linear regression, the capacity drain rates can be input to an equation producing a curved projection.
  • In one or more embodiments, additional seed data can be provided to the discharge time determination module 142. This seed data can be stored in the usage data store 144 and/or in other storage devices or locations. The seed data is additional data analogous to the user device, providing capacity discharge rates for different combinations of state values. This seed data can be data provided by a manufacturer, developer, or distributor of the computing device 102. For example, a computing device having the same hardware and software installed (or at least a threshold amount of the same software, such as 90% of the same software) as the computing device 102 can be tested in a lab for various different combinations of state values that are expected to be common, the resultant capacity discharge rate can be determined, and that data can be seed data for the discharge time determination module 142.
  • Such seed data can additionally or alternatively be crowd sourced information, such as from a cloud service. Various different computing devices can provide their usage data to the cloud service, and the computing device 102 can obtain the usage data from the cloud service for other computing devices having the same hardware and software installed (or at least a threshold amount of the same software, such as 90% of the same software) as the computing device 102. Similarly, the usage tracking module 138 can provide usage data for the computing device 102 to the cloud service, allowing the computing device 102 to participate in the crowd sourcing and making the usage data from the computing device 102 available to other computing devices. The usage data provided by the computing device 102 can be stored as separate data that is provided to other devices, or alternatively is averaged or otherwise combined with the usage data from other computing devices maintained at the cloud service.
  • The seed data can be used in a variety of different manners. In one or more embodiments, the seed data is treated the same as the usage data generated by the usage tracking module 138. This allows, for example, the discharge time determination module 142 to have access to usage data when the computing device 102 is new (fresh out of the box) and/or if the usage data in usage data store 144 were to be deleted (e.g., accidentally). Additionally or alternatively, the seed data is treated as having a different importance than the usage data generated at the computing device 102, such as being less important than the usage data generated at the computing device 102, such as by giving the seed data a lower weight relative to the usage data of the computing device 102 maintained by the usage tracking module 138. This allows, for example, the discharge time determination module 142 to have access to usage data from other computing devices to supplement the usage data maintained by the usage tracking module 138 based on the operation of the computing device 102, but still give the usage data of the computing device 102 maintained by the usage tracking module 138 more influence in the discharge time determination process than the crowd sourced data.
  • The charge time determination module 140 determines an estimated amount of time until the battery cell(s) 136 are fully charged (e.g., rising to or above a threshold capacity, such as the maximum capacity of the battery cell(s) 136 or within 50 mAh of the maximum capacity of the battery cell(s) 136). Although a maximum capacity of the battery cell(s) is discussed herein, it should be noted that this maximum capacity can be an absolute maximum or a value within a threshold amount of the maximum (e.g., within 50 mAh of the theoretical maximum capacity of the battery cell(s) 136). The charge time determination module 140 determines the amount of time until the battery cell(s) 136 are fully charged based on the current capacity remaining of the battery cell(s) 136, the maximum capacity of the battery cell(s) 136, and the current state values for the computing device 102. These values can be obtained in a variety of different manners as discussed above with regard to usage tracking module 138 collecting usage data. Additionally or alternatively, the charge time determination module 140 can access the entry in the usage data store 144 for the current time duration (e.g., the row in the record 200 of FIG. 2 that includes the current time) and obtain the state values from the record 200.
  • The charge time determination module 140 operates similarly to the discharge time determination module 142, but determines an amount of time until the battery cell(s) are fully charged rather than fully discharged. The charge time determination module 140 identifies previous time durations from the usage data store 144 that had the same state values as the current state values and corresponding to the battery cell(s) charging (e.g., having negative capacity drain rates). The capacity charge rates (e.g., the capacity drain rates that are negative values) for those previous time durations are then used to determine a current estimated capacity charge rate for the computing device 102. The charge time determination module 140 also generates a current desired charge amount, which is the difference between the maximum capacity of the battery cell(s) 136 and the current remaining capacity of the battery cell(s) 136. Given a current estimated capacity charge rate and a current desired charge amount, an estimated amount of time until the battery cell(s) 136 are fully charged can be readily generated. For example, the current desired charge amount can be divided by the current estimated capacity charge rate. E.g., if the current desired charge amount of the battery cell(s) is 12,000 mAh, and the capacity charge rate is 4800 mA/hour, then the estimated amount of time until the battery cell(s) 136 are fully charged is 12,000±4800=2.5 hours.
  • In situations in which the usage data in the usage data store 144 includes only a single previous time duration having the same state values as the current state values corresponding to the battery cell(s) charging (e.g., having negative capacity drain rates), then the capacity charge rate for that single previous time duration is used as the current estimated capacity charge rate for the computing device 102.
  • However, if the usage data in the usage data store 144 includes multiple previous time durations each having the same state values as the current state values and corresponding to the battery cell(s) charging, then the current estimated capacity charge rate for the computing device 102 is generate by combining the capacity charge rates from multiple ones of those previous time durations. The capacity charge rates from multiple ones of the previous time durations can be combined in a variety of different manners, analogous to the discussion above regarding combining capacity drain rates. For example, capacity charge rates from previous time durations can be averaged together, a weighted averaging can be applied so that the capacity charge rates from more recently occurring previous time durations have a heavier weighting than the capacity charge rates from older previous time durations, a weighted averaging can be applied so that the capacity charge rates from previous time durations occurring at times that correspond to the current time are given higher weights in the averaging process than capacity charge rates from previous time durations that occurred at times that do not correspond to the current time, the capacity charge rates can be input to an equation producing a curved projection rather than a linear regression, and so forth. The charge time determination module 140 also optionally uses seed data as discussed above. The seed data can be data from a manufacturer, developer, or distributor of the computing device 102, or crowd sourced data. The usage data including capacity charge rates can also optionally be provided to a crowd sourcing service, analogous to the usage data including capacity discharge rates discussed above.
  • FIG. 3 is a flowchart illustrating an example process 300 for usage data based battery discharge time determination in accordance with one or more embodiments. Process 300 is carried out by a computing device, such as computing device 102 of FIG. 1, and can be implemented in software, firmware, hardware, or combinations thereof. Process 300 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts. Process 300 is an example process for usage data based battery discharge time determination; additional discussions of usage data based battery discharge time determination are included herein with reference to different figures.
  • In process 300, state information for multiple different states of a computing device is monitored (act 302). The values of these different states can be obtained from various different sources, such as hardware of the computing device, firmware of the computing device, programs (e.g., the operating system) running on the computing device, and so forth. These different states can include, for example, a power source state, a power mode state, a battery saver state, a processor consumption state, a screen state, and/or a user present state as discussed above.
  • A record of computing device usage data is updated in response to each change in a value of one or more of the multiple different states (act 304). This record allows the computing device to keep track of energy storage device (e.g., battery) drain by the computing device for each combination of state values.
  • Current state values of the computing device are also determined (act 306). The current state values can be determined in response to various events, such as an amount of time elapsing, a request from a user to display an amount of time until the computing device is fully discharged, a request from another module or device, and so forth.
  • A capacity drain rate of the energy storage device for the current state values is estimated (act 308). This estimated capacity drain rate is determined based on the current state values, the record of computing device usage, and a remaining capacity of the energy storage device, as discussed above. Various different capacity drain rates determined for previous time durations during which the computing device had the same state values as the current state values are used to determine the estimated capacity drain rate as discussed above.
  • An estimated remaining time for discharge of the energy storage device based is determined (act 310). This estimate is based on both the estimated capacity drain rate and the remaining capacity of the energy storage device as discussed above.
  • Feedback indicating the estimated remaining time for discharge of the energy storage device is provided (act 312). This feedback can take various forms, such as displaying or audibly playing a number of hours and/or minutes until the energy storage device is estimated to be fully discharged. This feedback can additionally or alternatively be provided to various other components or modules of the computing device to take various actions based on the estimated remaining time for discharge of the energy storage device.
  • FIG. 4 is a flowchart illustrating an example process 400 for usage data based battery charge time determination in accordance with one or more embodiments. Process 400 is carried out by a computing device, such as computing device 102 of FIG. 1, and can be implemented in software, firmware, hardware, or combinations thereof. Process 400 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts. Process 400 is an example process for usage data based battery charge time determination; additional discussions of usage data based battery charge time determination are included herein with reference to different figures.
  • In process 400, state information for multiple different states of a computing device is monitored (act 402). The values of these different states can be obtained from various different sources, such as hardware of the computing device, firmware of the computing device, programs (e.g., the operating system) running on the computing device, and so forth. These different states can include, for example, a power source state, a power mode state, a battery saver state, a processor consumption state, a screen state, and/or a user present state as discussed above.
  • A record of computing device usage data is updated in response to each change in a value of one or more of the multiple different states (act 404). This record allows the computing device to keep track of energy storage device (e.g., battery) charge by the computing device for each combination of state values.
  • Current state values of the computing device are also determined (act 406). The current state values can be determined in response to various events, such as an amount of time elapsing, a request from a user to display an amount of time until the computing device is fully charged, a request from another module or device, and so forth.
  • A capacity charge rate of the energy storage device for the current state values is estimated (act 408). This estimated capacity charge rate is determined based on the current state values, the record of computing device usage, a remaining capacity of the energy storage device, and a maximum capacity of the energy storage device as discussed above. Various different capacity charge rates determined for previous time durations during which the computing device had the same state values as the current state values are used to determine the estimated capacity charge rate as discussed above.
  • An estimated remaining time for charging of the energy storage device based is determined (act 410). This estimate is based on the estimated capacity charge rate, the remaining capacity of the energy storage device, and a maximum capacity of the energy storage device as discussed above.
  • Feedback indicating the estimated remaining time for charging of the energy storage device is provided (act 412). This feedback can take various forms, such as displaying or audibly playing a number of hours and/or minutes until the energy storage device is estimated to be fully discharged. This feedback can additionally or alternatively be provided to various other components or modules of the computing device to take various actions based on the estimated remaining time for charging of the energy storage device.
  • Although particular functionality is discussed herein with reference to particular modules, it should be noted that the functionality of individual modules discussed herein can be separated into multiple modules, and/or at least some functionality of multiple modules can be combined into a single module. Additionally, a particular module discussed herein as performing an action includes that particular module itself performing the action, or alternatively that particular module invoking or otherwise accessing another component or module that performs the action (or performs the action in conjunction with that particular module). Thus, a particular module performing an action includes that particular module itself performing the action and/or another module invoked or otherwise accessed by that particular module performing the action.
  • FIG. 5 illustrates an example system 500 that includes an example computing device 502 that is representative of one or more computing systems and/or devices that may implement the various techniques described herein. The computing device 502 may be, for example, a mobile device, a wearable device, an on-chip system, and/or any other suitable computing device or computing system.
  • The example computing device 502 as illustrated includes a processing system 504, one or more computer-readable media 506, and one or more I/O interfaces 508 that are communicatively coupled, one to another. Although not shown, the computing device 502 may further include a system bus or other data and command transfer system that couples the various components, one to another. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines.
  • The processing system 504 is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system 504 is illustrated as including hardware elements 510 that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. The hardware elements 510 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions.
  • The computer-readable media 506 is illustrated as including memory/storage 512. The memory/storage 512 represents memory/storage capacity associated with one or more computer-readable media. The memory/storage 512 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). The memory/storage 512 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). The computer-readable media 506 may be configured in a variety of other ways as further described below.
  • Input/output interface(s) 508 are representative of functionality to allow a user to enter commands and information to computing device 502, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone for voice operations, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to detect movement that does not involve touch as gestures), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth. Thus, the computing device 502 may be configured in a variety of ways as further described below to support user interaction.
  • Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The terms “module,” “functionality,” and “component” as used herein generally represent software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
  • An implementation of the described modules and techniques may be stored on or transmitted across some form of computer-readable media. The computer-readable media may include a variety of media that may be accessed by the computing device 502. By way of example, and not limitation, computer-readable media may include “computer-readable storage media” and “communication media.”
  • “Computer-readable storage media” refers to media and/or devices that enable storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Computer-readable storage media does not include signal bearing media, transitory signals, or signals per se. The computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.
  • “Communication media” may refer to signal-bearing media that is configured to transmit instructions to the hardware of the computing device 502, such as via a network. Communication media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Communication media also include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
  • As previously described, hardware elements 510 and computer-readable media 506 are representative of instructions, modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein. Hardware elements may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware devices. In this context, a hardware element may operate as a processing device that performs program tasks defined by instructions, modules, and/or logic embodied by the hardware element as well as a hardware device utilized to store instructions for execution, e.g., the computer-readable storage media described previously.
  • Combinations of the foregoing may also be employed to implement various techniques and modules described herein. Accordingly, software, hardware, or program modules including the usage tracking module 138, the charge time determination module 140, the discharge time determination module 142, and other program modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements 510. The computing device 502 may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of modules as a module that is executable by the computing device 502 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 510 of the processing system. The instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices 502 and/or processing systems 504) to implement techniques, modules, and examples described herein.
  • As further illustrated in FIG. 5, the example system 500 enables ubiquitous environments for a seamless user experience when running applications on a personal computer (PC), a television device, and/or a mobile device. Services and applications run substantially similar in all three environments for a common user experience when transitioning from one device to the next while utilizing an application, playing a video game, watching a video, and so on.
  • In the example system 500, multiple devices are interconnected through a central computing device. The central computing device may be local to the multiple devices or may be located remotely from the multiple devices. In one embodiment, the central computing device may be a cloud of one or more server computers that are connected to the multiple devices through a network, the Internet, or other data communication link.
  • In one embodiment, this interconnection architecture enables functionality to be delivered across multiple devices to provide a common and seamless experience to a user of the multiple devices. Each of the multiple devices may have different physical requirements and capabilities, and the central computing device uses a platform to enable the delivery of an experience to the device that is both tailored to the device and yet common to all devices. In one embodiment, a class of target devices is created and experiences are tailored to the generic class of devices. A class of devices may be defined by physical features, types of usage, or other common characteristics of the devices.
  • In various implementations, the computing device 502 may assume a variety of different configurations, such as for computer 514, mobile 516, and television 518 uses. Each of these configurations includes devices that may have generally different constructs and capabilities, and thus the computing device 502 may be configured according to one or more of the different device classes. For instance, the computing device 502 may be implemented as the computer 514 class of a device that includes a personal computer, desktop computer, a multi-screen computer, laptop computer, netbook, and so on.
  • The computing device 502 may also be implemented as the mobile 516 class of device that includes mobile devices, such as a mobile phone, portable music player, portable gaming device, a tablet computer, a multi-screen computer, and so on. The computing device 502 may also be implemented as the television 518 class of device that includes devices having or connected to generally larger screens in casual viewing environments. These devices include televisions, set-top boxes, gaming consoles, and so on.
  • The techniques described herein may be supported by these various configurations of the computing device 502 and are not limited to the specific examples of the techniques described herein. This is illustrated through inclusion of the schedule-based energy storage device selection system 126 and the energy storage device system 128 on the computing device 502. The functionality represented by schedule-based energy storage device selection system 126 and other modules/applications may also be implemented all or in part through use of a distributed system, such as over a “cloud” 520 via a platform 522 as described below.
  • The cloud 520 includes and/or is representative of a platform 522 for resources 524. The platform 522 abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud 520. The resources 524 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from the computing device 502. Resources 524 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.
  • The platform 522 may abstract resources and functions to connect the computing device 502 with other computing devices. The platform 522 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources 524 that are implemented via the platform 522. Accordingly, in an interconnected device embodiment, implementation of functionality described herein may be distributed throughout the system 500. For example, the functionality may be implemented in part on the computing device 502 as well as via the platform 522 that abstracts the functionality of the cloud 520.
  • In the discussions herein, various different embodiments are described. It is to be appreciated and understood that each embodiment described herein can be used on its own or in connection with one or more other embodiments described herein. Further aspects of the techniques discussed herein relate to one or more of the following embodiments.
  • A method comprising: monitoring state information for multiple different states of a computing device; updating a record, in response to each change in a value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device drain by the computing device for each combination of state values; determining current state values of the computing device; estimating, based on the current state values and the record, a capacity drain rate of the energy storage device for the current state values of the computing device; determining an estimated remaining time for discharge of the energy storage device of the computing device based on the estimated capacity drain rate; and providing feedback indicating the estimated remaining time for discharge of the energy storage device.
  • Alternatively or in addition to any of the above described methods, any one or combination of: the energy storage device comprising one or more battery cells; the multiple different states including a power source state and a power mode state; the power source state including values of battery or external power, the power mode state including values of active, connected standby, and off; the multiple states further including a battery saver state; the battery saver state including values of on or off; the multiple different states including a processor consumption state having a value that indicates a utilization of the processors and/or processor cores of the computing device; the multiple different states including a screen state with values indicating whether a screen of the computing device is powered on or powered off; the multiple different states including a user present state with values indicating whether a user is present at the computing device; the estimating the capacity drain rate of the energy storage device comprising combining the capacity drain rates from previous time durations in the record having the same state values as the current state values; the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from more recent time durations than capacity drain rates from older time durations; the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time; the method further comprising estimating, based on the current state values and the record, a capacity charge rate of the energy storage device for the current state settings of the computing device, determining an estimated remaining time for charging of the energy storage device of the computing device based on the estimated capacity charge rate, and providing feedback indicating the estimated remaining time for charging of the energy storage device; a computing device implementing any of the above described methods.
  • A method comprising: monitoring state information for multiple different states of a computing device; updating a record, in response to each change in value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device charge by the computing device for each combination of state values; determining current state values of the computing device; estimating, based on the current state values and the record, a capacity charge rate of the energy storage device for the current state settings of the computing device; determining an estimated remaining time for charging of the energy storage device of the computing device based on the estimated capacity charge rate; and providing feedback indicating the estimated remaining time for charging of the energy storage device; a computing device implementing any of the above described methods.
  • Alternatively or in addition to any of the above described methods, any one or combination of: the estimating the capacity charge rate of the energy storage device comprising combining the capacity charge rates from previous time durations in the record having the same state values as the current state values; the combining comprising applying a weighted averaging to the capacity charge rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity charge rates from more recent time durations than capacity charge rates from older time durations; the combining comprising applying a weighted averaging to the capacity charge rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity charge rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time.
  • A computing device comprising: one or more processors; and a computer-readable storage medium having stored thereon multiple instructions that, responsive to execution by the one or more processors, cause the one or more processors to: monitor state information for multiple different states of the computing device, the multiple different states including a processor consumption state having a value that indicates a utilization of the one or more processors; update a record, in response to each change in a value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device drain by the computing device for each combination of state values; determine current state values of the computing device; estimate, based on the current state values and the record, a capacity drain rate of the energy storage device for the current state values of the computing device; determine an estimated remaining time for discharge of the energy storage device of the computing device based on the estimated capacity drain rate; and provide feedback indicating the estimated remaining time for discharge of the energy storage device.
  • Alternatively or in addition to any of the above described computing devices, any one or combination of: wherein to estimate the capacity drain rate of the energy storage device comprises combining the capacity drain rates from previous time durations in the record having the same state values as the current state values, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from more recent time durations than capacity drain rates from older time durations; wherein to estimate the capacity drain rate of the energy storage device comprises combining the capacity drain rates from previous time durations in the record having the same state values as the current state values, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time.
  • CONCLUSION
  • Although the example implementations have been described in language specific to structural features and/or methodological acts, it is to be understood that the implementations defined in the appended claims are not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed features.

Claims (20)

What is claimed is:
1. A method comprising:
monitoring state information for multiple different states of a computing device;
updating a record, in response to each change in a value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device drain by the computing device for each combination of state values;
determining current state values of the computing device;
estimating, based on the current state values and the record, a capacity drain rate of the energy storage device for the current state values of the computing device;
determining an estimated remaining time for discharge of the energy storage device of the computing device based on the estimated capacity drain rate; and
providing feedback indicating the estimated remaining time for discharge of the energy storage device.
2. The method of claim 1, the energy storage device comprising one or more battery cells.
3. The method of claim 1, the multiple different states including a power source state and a power mode state.
4. The method of claim 3, the power source state including values of battery or external power, the power mode state including values of active, connected standby, and off.
5. The method of claim 3, the multiple states further including a battery saver state.
6. The method of claim 5, the battery saver state including values of on or off.
7. The method of claim 1, the multiple different states including a processor consumption state having a value that indicates a utilization of the processors and/or processor cores of the computing device.
8. The method of claim 1, the multiple different states including a screen state with values indicating whether a screen of the computing device is powered on or powered off
9. The method of claim 1, the multiple different states including a user present state with values indicating whether a user is present at the computing device.
10. The method of claim 1, the estimating the capacity drain rate of the energy storage device comprising combining the capacity drain rates from previous time durations in the record having the same state values as the current state values.
11. The method of claim 10, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from more recent time durations than capacity drain rates from older time durations.
12. The method of claim 10, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time.
13. The method of claim 1, further comprising:
estimating, based on the current state values and the record, a capacity charge rate of the energy storage device for the current state settings of the computing device;
determining an estimated remaining time for charging of the energy storage device of the computing device based on the estimated capacity charge rate; and
providing feedback indicating the estimated remaining time for charging of the energy storage device.
14. A method comprising:
monitoring state information for multiple different states of a computing device;
updating a record, in response to each change in value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device charge by the computing device for each combination of state values;
determining current state values of the computing device;
estimating, based on the current state values and the record, a capacity charge rate of the energy storage device for the current state settings of the computing device;
determining an estimated remaining time for charging of the energy storage device of the computing device based on the estimated capacity charge rate; and
providing feedback indicating the estimated remaining time for charging of the energy storage device.
15. The method of claim 14, the estimating the capacity charge rate of the energy storage device comprising combining the capacity charge rates from previous time durations in the record having the same state values as the current state values.
16. The method of claim 15, the combining comprising applying a weighted averaging to the capacity charge rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity charge rates from more recent time durations than capacity charge rates from older time durations.
17. The method of claim 15, the combining comprising applying a weighted averaging to the capacity charge rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity charge rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time.
18. A computing device comprising:
one or more processors; and
a computer-readable storage medium having stored thereon multiple instructions that, responsive to execution by the one or more processors, cause the one or more processors to:
monitor state information for multiple different states of the computing device, the multiple different states including a processor consumption state having a value that indicates a utilization of the one or more processors;
update a record, in response to each change in a value of one or more of the multiple different states, of computing device usage data to keep track of energy storage device drain by the computing device for each combination of state values;
determine current state values of the computing device;
estimate, based on the current state values and the record, a capacity drain rate of the energy storage device for the current state values of the computing device;
determine an estimated remaining time for discharge of the energy storage device of the computing device based on the estimated capacity drain rate; and
provide feedback indicating the estimated remaining time for discharge of the energy storage device.
19. The computing device of claim 18, wherein to estimate the capacity drain rate of the energy storage device comprises combining the capacity drain rates from previous time durations in the record having the same state values as the current state values, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from more recent time durations than capacity drain rates from older time durations.
20. The computing device of claim 18, wherein to estimate the capacity drain rate of the energy storage device comprises combining the capacity drain rates from previous time durations in the record having the same state values as the current state values, the combining comprising applying a weighted averaging to the capacity drain rates from the previous time durations, the weighted averaging giving a heavier weighting to capacity drain rates from previous time durations that correspond to a current time than to previous time durations that do not correspond to the current time.
US15/340,790 2016-11-01 2016-11-01 Usage data based battery charge or discharge time determination Active 2037-09-03 US10903665B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/340,790 US10903665B2 (en) 2016-11-01 2016-11-01 Usage data based battery charge or discharge time determination

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/340,790 US10903665B2 (en) 2016-11-01 2016-11-01 Usage data based battery charge or discharge time determination

Publications (2)

Publication Number Publication Date
US20180123358A1 true US20180123358A1 (en) 2018-05-03
US10903665B2 US10903665B2 (en) 2021-01-26

Family

ID=62021816

Family Applications (1)

Application Number Title Priority Date Filing Date
US15/340,790 Active 2037-09-03 US10903665B2 (en) 2016-11-01 2016-11-01 Usage data based battery charge or discharge time determination

Country Status (1)

Country Link
US (1) US10903665B2 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109034404A (en) * 2018-06-27 2018-12-18 上海擎测机电工程技术有限公司 A kind of thermal power plant's multi-person synergy examination and repair system based on AR glasses, method and a kind of AR glasses
CN109412240A (en) * 2018-12-20 2019-03-01 青岛海信移动通信技术股份有限公司 A kind of method and apparatus adjusting charging current
US10488905B2 (en) 2016-11-16 2019-11-26 Microsoft Technology Licensing, Llc Dynamic energy storage device discharging
US10725529B2 (en) 2017-06-26 2020-07-28 Microsoft Technology Licensing, Llc Target based power management
US10903665B2 (en) 2016-11-01 2021-01-26 Microsoft Technology Licensing, Llc Usage data based battery charge or discharge time determination
CN113056756A (en) * 2019-02-18 2021-06-29 深圳市欢太科技有限公司 Sleep recognition method and device, storage medium and electronic equipment
CN114816959A (en) * 2022-05-07 2022-07-29 深圳宇凡微电子有限公司 Method and device for displaying battery power of LCD screen
US11656666B2 (en) 2016-11-16 2023-05-23 Microsoft Technology Licensing, Llc Dynamic power source selection, charging, and discharging

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060156045A1 (en) * 2005-01-07 2006-07-13 Mike Galles Reducing power consumption in embedded systems by controlling voltage based on system state and partition designation
US20110166810A1 (en) * 2010-08-04 2011-07-07 Ford Global Technologies System And Method For Determining An Expected Vehicle Drive Range
US8179095B1 (en) * 2008-01-30 2012-05-15 Google Inc. Estimating remaining use time of a mobile device
US20120317432A1 (en) * 2011-06-07 2012-12-13 Microsoft Corporation Estimating and preserving battery life based on usage patterns
US20130231894A1 (en) * 2012-03-01 2013-09-05 Nokia Corporation Method and apparatus for providing battery information
US20160146899A1 (en) * 2014-11-20 2016-05-26 Upi Semiconductor Corp. Method and apparatus for measuring capacity of battery
US20160224648A1 (en) * 2015-01-30 2016-08-04 Apollo Education Group, Inc. Method and system for performing a synchronization operation
US20170346303A1 (en) * 2016-05-25 2017-11-30 Lenovo (Singapore) Pte. Ltd. Systems and methods to determine time at which battery is to be charged

Family Cites Families (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4743831A (en) 1986-09-12 1988-05-10 Troxler Electronic Laboratories, Inc. Apparatus and method for indicating remaining battery life in a battery powered device
US5270946A (en) 1988-03-30 1993-12-14 Kabushiki Kaisha Toshiba Method and apparatus for controlling selection of batteries
US5365160A (en) 1991-09-06 1994-11-15 Telxon Corporation Apparatus and method for charging batteries
US5656920A (en) 1992-10-13 1997-08-12 Gnb Battery Technologies, Inc. Method and apparatus for charging a lead-acid battery
US7388400B2 (en) 1993-01-07 2008-06-17 Elpida Memory, Inc. Semiconductor integrated circuits with power reduction mechanism
US5371682A (en) 1993-02-04 1994-12-06 At&T Corp. Method and apparatus for predicting battery reserve time to a specified end-voltage
US5565759A (en) 1994-12-15 1996-10-15 Intel Corporation Smart battery providing battery life and recharge time prediction
EP0727728A1 (en) 1995-02-15 1996-08-21 International Business Machines Corporation Computer system power management
US5757163A (en) 1995-09-29 1998-05-26 Black & Decker Inc. Battery Charger and method for simultaneously charging multiple batteries from a single power supply
JP3045981B2 (en) 1997-08-26 2000-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション Computer and parameter setting method
US6225780B1 (en) 2000-02-24 2001-05-01 General Motors Corporation Battery charge maintenance through opportunity equalization
US6288521B1 (en) 2000-09-08 2001-09-11 Stmicroelectronics, Inc. Intelligent power management for rechargeable batteries
GB2394926B (en) 2001-08-22 2005-03-23 Albert Hartman Mobile electrical power source
HK1045076A2 (en) 2001-09-03 2002-11-01 Gpe Internat Ltd An intelligent serial battery charger and charging block
US7557538B2 (en) 2001-09-03 2009-07-07 Gpe International Limited Intelligent serial battery charger
US6870349B2 (en) 2002-07-24 2005-03-22 International Business Machines Corporation Battery life estimator
US7145314B2 (en) 2003-05-23 2006-12-05 Hitachi Koki Co., Ltd. DC power source unit with battery charging function
US7081737B2 (en) 2003-06-19 2006-07-25 O2Micro International Limited Battery cell monitoring and balancing circuit
US7915860B2 (en) 2003-12-30 2011-03-29 Batterycorp, Inc. Battery management system with runtime reserve analysis
FR2871624B1 (en) 2004-06-14 2006-11-17 Commissariat Energie Atomique METHOD FOR MANAGING A PARK OF RECHARGEABLE BATTERIES
US20050275372A1 (en) 2004-06-14 2005-12-15 Crowell Jonathan C Power controller for managing arrays of smart battery packs
US7505795B1 (en) 2004-07-07 2009-03-17 Advanced Micro Devices, Inc. Power save management with customized range for user configuration and tuning value based upon recent usage
US7576517B1 (en) 2004-11-29 2009-08-18 Data Power Monitoring Corporation System and method for remote monitoring of battery condition
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
GB0510877D0 (en) 2005-05-27 2005-07-06 Aea Technology Battery Systems Battery monitor
JP2007102669A (en) 2005-10-07 2007-04-19 Toshiba Corp Information processing apparatus and operation control method
EP1814206A1 (en) 2006-01-27 2007-08-01 Berner Fachhochschule Hochschule für Technik und Architektur Biel Battery balancing apparatus
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US8135443B2 (en) 2006-08-31 2012-03-13 Qualcomm Incorporated Portable device with priority based power savings control and method thereof
US20080055311A1 (en) 2006-08-31 2008-03-06 Ati Technologies Inc. Portable device with run-time based rendering quality control and method thereof
US9431828B2 (en) 2006-11-27 2016-08-30 Xslent Energy Technologies Multi-source, multi-load systems with a power extractor
US7430675B2 (en) 2007-02-16 2008-09-30 Apple Inc. Anticipatory power management for battery-powered electronic device
WO2008124185A1 (en) 2007-04-09 2008-10-16 Live Data Systems, Inc. System and method for monitoring and managing energy performance
GB2448534B (en) 2007-04-19 2009-11-18 Vodafone Plc Mobile telecommunications device
US8010250B2 (en) 2007-06-05 2011-08-30 The Boeing Company Life-optimal power management methods for battery networks system
US7853735B2 (en) 2007-12-13 2010-12-14 Emulex Design & Manufacturing Corporation Efficient processing of groups of host access requests that may include zero length requests
US8059570B2 (en) 2008-01-11 2011-11-15 Apple Inc. Mobile network device battery conservation system and methods
US8581548B2 (en) 2009-12-28 2013-11-12 4 Peak Technology LLC Integrated cell balancing system, method, and computer program for multi-cell batteries
US20090249095A1 (en) 2008-03-26 2009-10-01 Rajesh Poornachandran User driven power conservation in processor-based systems
WO2009128082A1 (en) 2008-04-17 2009-10-22 Eran Ofek Dynamically configuring properties of battery packs
GB2461313A (en) 2008-06-27 2009-12-30 Symbian Software Ltd Managing services in a computer system to limit overall system cost
US8054962B2 (en) 2008-09-30 2011-11-08 International Business Machines Corporation Call processing based on call patterns and other criteria
US8250384B2 (en) 2009-01-05 2012-08-21 International Business Machines Corporation Optimizer mechanism to increase battery length for mobile devices
US8156358B2 (en) 2009-02-19 2012-04-10 Dell Products L.P. System and method for dynamic modular information handling system power distribution
US8291422B2 (en) 2009-05-11 2012-10-16 Bbn Technologies Corp. Energy-aware computing environment scheduler
US20110047552A1 (en) 2009-05-11 2011-02-24 Raytheon Bbn Technologies Corp. Energy-aware process environment scheduler
US8715875B2 (en) 2009-05-26 2014-05-06 The Invention Science Fund I, Llc System and method of operating an electrical energy storage device or an electrochemical energy generation device using thermal conductivity materials based on mobile device states and vehicle states
US8917061B2 (en) 2009-09-18 2014-12-23 Schneider Electric It Corporation System and method for battery cell balancing
CN102185164A (en) 2009-11-14 2011-09-14 佛山市顺德区汉达精密电子科技有限公司 Battery control device of notebook computer and battery control method of notebook computer
US8244311B2 (en) 2009-12-29 2012-08-14 International Business Machines Corporation Time-related power systems
KR101659018B1 (en) 2010-01-18 2016-09-23 엘지전자 주식회사 Mobile terminal and control method thereof
US8452353B2 (en) 2010-02-24 2013-05-28 Hewlett-Packard Development Company, L.P. Apparatus and methods for providing intelligent battery management
US20120072752A1 (en) 2010-09-22 2012-03-22 Sony Corporation Method and apparatus for providing power management enhancements
US20120144219A1 (en) 2010-12-06 2012-06-07 International Business Machines Corporation Method of Making Power Saving Recommendations in a Server Pool
US8380999B1 (en) 2010-12-20 2013-02-19 Amazon Technologies, Inc. Power management for electronic devices
US8665214B2 (en) 2010-12-29 2014-03-04 Qualcomm Incorporated Extending battery life of a portable electronic device
US9374787B2 (en) 2011-02-10 2016-06-21 Alcatel Lucent Method and apparatus of smart power management for mobile communication terminals using power thresholds
US20120210150A1 (en) 2011-02-10 2012-08-16 Alcatel-Lucent Usa Inc. Method And Apparatus Of Smart Power Management For Mobile Communication Terminals
US8949629B2 (en) 2011-04-01 2015-02-03 International Business Machines Corporation Predicting battery power usage
US8886976B2 (en) 2011-04-11 2014-11-11 Microsoft Corporation Management of background tasks
US8872481B2 (en) 2011-04-27 2014-10-28 General Electric Company Systems and methods for predicting battery power-delivery performance
US9652016B2 (en) 2011-04-27 2017-05-16 Nvidia Corporation Techniques for degrading rendering quality to increase operating time of a computing platform
CA2834654A1 (en) 2011-04-28 2012-11-01 Zoll Circulation, Inc. Battery management system for control of lithium power cells
KR101563066B1 (en) 2011-05-27 2015-10-23 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 Device battery management
US9152202B2 (en) 2011-06-16 2015-10-06 Microsoft Technology Licensing, Llc Mobile device operations with battery optimization
US8762756B1 (en) 2011-06-27 2014-06-24 Amazon Technologies, Inc. Statistical approach to power management for electronic devices
JP5772310B2 (en) * 2011-07-05 2015-09-02 富士通株式会社 Electronic device, charge control method and program
ES2733727T3 (en) 2011-09-27 2019-12-02 Nilfisk As Battery pack with a battery control system
US8872471B2 (en) 2011-10-13 2014-10-28 Ford Global Technologies, Llc Variable output current battery charger and method of operating same
JP5542781B2 (en) 2011-11-10 2014-07-09 株式会社日立製作所 Storage battery control system and storage battery control method
US8996113B2 (en) 2011-11-30 2015-03-31 Medtronic, Inc. Recommended replacement time based on user selection
GB201200220D0 (en) 2012-01-06 2012-02-22 Poweroasis Ltd Battery charging
US8793520B2 (en) 2012-01-25 2014-07-29 Apple Inc. Power management of electronic devices based on charging location
US9966780B2 (en) 2012-03-25 2018-05-08 Gbatteries Energy Canada Inc. Extended life battery
US20130257382A1 (en) 2012-04-02 2013-10-03 Apple Inc. Managing Cycle and Runtime in Batteries for Portable Electronic Devices
US20150227445A1 (en) 2012-04-23 2015-08-13 Google Inc. Systems and methods for correlating battery power draw and events in battery-operated computing devices
US9009502B2 (en) 2012-06-29 2015-04-14 Time Warner Cable Enterprises Llc System and method for managing battery usage of a mobile device
US8813177B2 (en) 2012-07-12 2014-08-19 Microsoft Corporation Background application management
US9189055B2 (en) 2012-07-17 2015-11-17 Mediatek Inc. Method for performing power consumption management, and associated apparatus
EP2696465B1 (en) 2012-08-09 2016-12-21 Samsung SDI Co., Ltd. Battery management system and cell balancing method
US9510290B2 (en) 2012-08-10 2016-11-29 At&T Mobility Ip, Llc Mobile battery consumption analysis system and method of operating on delta charge samples
US9385557B2 (en) 2012-08-23 2016-07-05 At&T Mobility Ii Llc Methods, systems, and products for charging of devices
US9529398B2 (en) 2012-09-10 2016-12-27 Apple Inc. Managing and revoking power allocated through bus interfaces
US8515499B1 (en) 2012-09-10 2013-08-20 Google Inc. Estimating remaining use time of mobile computing devices
CN103793040A (en) 2012-11-05 2014-05-14 神讯电脑(昆山)有限公司 Automatic power saving method of computer
WO2014078481A1 (en) 2012-11-15 2014-05-22 Violin Memory Inc. Memorty array with atomic test and set
US10025360B2 (en) 2013-01-09 2018-07-17 Google Llc Thermal adjustment in a computing device using distributed sensors
US9043085B2 (en) 2013-01-11 2015-05-26 Johnson Controls Technology Company Vehicle accessory load controller and method
FR3001089B1 (en) 2013-01-11 2016-09-09 Enerstone LOAD BALANCING IN AN ELECTRIC BATTERY
US9070273B2 (en) 2013-01-24 2015-06-30 Blackberry Limited Communications device having battery monitoring capabilities and performing pre-scheduled events
US9430280B1 (en) 2013-02-11 2016-08-30 Amazon Technologies, Inc. Task timeouts based on input data characteristics
US9620959B2 (en) 2013-03-15 2017-04-11 Accenture Global Services Limited Enhanced grid reliability through predictive analysis and dynamic action for stable power distribution
CN104133540A (en) 2013-05-02 2014-11-05 鸿富锦精密工业(深圳)有限公司 Power supply management system and method
US10236538B2 (en) 2013-05-31 2019-03-19 Laurence Lujun Chen Intelligent battery management system and method for optimizing battery set to the best performance
KR102194795B1 (en) 2013-08-29 2020-12-23 삼성전자주식회사 Electronic device and method for contolling power
WO2015047351A1 (en) 2013-09-27 2015-04-02 Pearl Capital Developments Llc Displaying use time remaining on fast charge devices
JP6301637B2 (en) 2013-11-20 2018-03-28 Necプラットフォームズ株式会社 Electronic device and charging method
US9377839B2 (en) 2013-12-02 2016-06-28 Verizon Patent And Licensing Inc. Dynamic battery management
KR101521585B1 (en) 2013-12-05 2015-05-20 정진호 The method and apparatus for providing use time information of mobile battery
JP6269106B2 (en) 2014-01-29 2018-01-31 株式会社リコー Electronic equipment
US9625890B2 (en) 2014-03-28 2017-04-18 Intel Corporation Coordinating control loops for temperature control
US9665157B2 (en) 2014-04-15 2017-05-30 Qualcomm Incorporated System and method for deferring power consumption by post-processing sensor data
US10117600B2 (en) 2014-04-15 2018-11-06 Apple Inc. Pacing activity data of a user
US9939868B2 (en) 2014-05-12 2018-04-10 Gary Stephen Shuster Device power and resource management
US9210662B1 (en) 2014-05-29 2015-12-08 Apple Inc. Adaptive battery life extension
CN105373419A (en) 2014-08-26 2016-03-02 阿里巴巴集团控股有限公司 Background application operation method and system
WO2016036155A1 (en) 2014-09-04 2016-03-10 Samsung Electronics Co., Ltd. Method of providing user with battery power notification in mobile device and mobile device therefor
US9898060B2 (en) 2014-09-16 2018-02-20 Integrated Device Technology, Inc. System and method for wireless power transfer using automatic power supply selection
US20160210174A1 (en) 2015-01-15 2016-07-21 Microsoft Corporation Hybrid Scheduler and Power Manager
US9696782B2 (en) 2015-02-09 2017-07-04 Microsoft Technology Licensing, Llc Battery parameter-based power management for suppressing power spikes
US20160248125A1 (en) 2015-02-19 2016-08-25 Microsoft Technology Licensing, Llc Heterogeneous Battery Cell Switching
US20160248266A1 (en) 2015-02-19 2016-08-25 Microsoft Technology Licensing, Llc Heterogeneous Battery Cell Charging
US10591979B2 (en) 2015-04-03 2020-03-17 Microsoft Technology Licensing, Llc Battery management in a device with multiple batteries
US10114440B2 (en) 2016-06-22 2018-10-30 Razer (Asia-Pacific) Pte. Ltd. Applying power management based on a target time
US10903665B2 (en) 2016-11-01 2021-01-26 Microsoft Technology Licensing, Llc Usage data based battery charge or discharge time determination
US20180136708A1 (en) 2016-11-16 2018-05-17 Microsoft Technology Licensing, Llc Dynamic Energy Storage Device Charging
US20180136709A1 (en) 2016-11-16 2018-05-17 Microsoft Technology Licensing, Llc Dynamic External Power Resource Selection
US11656666B2 (en) 2016-11-16 2023-05-23 Microsoft Technology Licensing, Llc Dynamic power source selection, charging, and discharging
US10488905B2 (en) 2016-11-16 2019-11-26 Microsoft Technology Licensing, Llc Dynamic energy storage device discharging
US20180267839A1 (en) 2017-03-20 2018-09-20 Microsoft Technology Licensing, Llc Controlled Energy Utilization In A Computing Device
US20180321731A1 (en) 2017-05-04 2018-11-08 Dell Products, Lp System and method for heuristics based user presence detection for power management

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060156045A1 (en) * 2005-01-07 2006-07-13 Mike Galles Reducing power consumption in embedded systems by controlling voltage based on system state and partition designation
US8179095B1 (en) * 2008-01-30 2012-05-15 Google Inc. Estimating remaining use time of a mobile device
US20110166810A1 (en) * 2010-08-04 2011-07-07 Ford Global Technologies System And Method For Determining An Expected Vehicle Drive Range
US20120317432A1 (en) * 2011-06-07 2012-12-13 Microsoft Corporation Estimating and preserving battery life based on usage patterns
US20130231894A1 (en) * 2012-03-01 2013-09-05 Nokia Corporation Method and apparatus for providing battery information
US20160146899A1 (en) * 2014-11-20 2016-05-26 Upi Semiconductor Corp. Method and apparatus for measuring capacity of battery
US20160224648A1 (en) * 2015-01-30 2016-08-04 Apollo Education Group, Inc. Method and system for performing a synchronization operation
US20170346303A1 (en) * 2016-05-25 2017-11-30 Lenovo (Singapore) Pte. Ltd. Systems and methods to determine time at which battery is to be charged

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10903665B2 (en) 2016-11-01 2021-01-26 Microsoft Technology Licensing, Llc Usage data based battery charge or discharge time determination
US10488905B2 (en) 2016-11-16 2019-11-26 Microsoft Technology Licensing, Llc Dynamic energy storage device discharging
US11656666B2 (en) 2016-11-16 2023-05-23 Microsoft Technology Licensing, Llc Dynamic power source selection, charging, and discharging
US10725529B2 (en) 2017-06-26 2020-07-28 Microsoft Technology Licensing, Llc Target based power management
CN109034404A (en) * 2018-06-27 2018-12-18 上海擎测机电工程技术有限公司 A kind of thermal power plant's multi-person synergy examination and repair system based on AR glasses, method and a kind of AR glasses
CN109412240A (en) * 2018-12-20 2019-03-01 青岛海信移动通信技术股份有限公司 A kind of method and apparatus adjusting charging current
CN113056756A (en) * 2019-02-18 2021-06-29 深圳市欢太科技有限公司 Sleep recognition method and device, storage medium and electronic equipment
CN114816959A (en) * 2022-05-07 2022-07-29 深圳宇凡微电子有限公司 Method and device for displaying battery power of LCD screen

Also Published As

Publication number Publication date
US10903665B2 (en) 2021-01-26

Similar Documents

Publication Publication Date Title
US10903665B2 (en) Usage data based battery charge or discharge time determination
US11966315B2 (en) Smart advice to charge notification
EP3278194B1 (en) Battery management in a device with multiple batteries
US10061366B2 (en) Schedule-based energy storage device selection
US10198059B2 (en) Adaptive doze to hibernate
US20170108906A1 (en) Single Fuel Gauge for Multiple Energy Storage Devices
US20180267839A1 (en) Controlled Energy Utilization In A Computing Device
US10847986B2 (en) Systems and methods to determine time at which battery is to be charged
US10488905B2 (en) Dynamic energy storage device discharging
US20180136708A1 (en) Dynamic Energy Storage Device Charging
US20180136709A1 (en) Dynamic External Power Resource Selection
US11656666B2 (en) Dynamic power source selection, charging, and discharging
US20180250122A1 (en) Biodegradable medical device for breast reconstruction and/or augmentation
US10795420B2 (en) Offline battery management in a device
EP3646139B1 (en) Target based power management
US11079827B2 (en) Cognitive battery state of charge recalibration

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PRABHAKAR, SANDEEP;CALINOV, IULIAN D.;FLORES ASSAD, JAVIER NISIM;AND OTHERS;SIGNING DATES FROM 20161028 TO 20161102;REEL/FRAME:040254/0633

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCF Information on status: patent grant

Free format text: PATENTED CASE