New Driver for electrical energy measurement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Microchip is planning to introduce a driver for a new companion chip series
capable of electical energy measurement. However, we are not sure which
location in the source tree is the most suitable. First thought was to put
it into /drivers/powercap. But now we are in discussions whether it would
make even more sense to introduce a new driver for electrical energy
measuring or monitoring.

Following is a rough overview of the part we want the driver for. Any
input on this will be appreciated.

thanks,
Chris

=== Introduction

Following the recent focus on low-power systems, Microchip has designed a
companion chip series capable of measuring the electrical energy flow of an
electrical system.  The series in question, EM Chip  is capable of
measuring the energy flow (in or out) of an electrical system by monitoring
one or more power rails.  The 1st chip of the series, EM Chip is able to
measure the net energy flow over 4 different power rails.  The chip itself
is a small QFN16 (4mm x 4mm x 0.5mm) or WLCSP16 (2.25mm x 2.2mm) package.

=== Theory of Operation

In order to measure the amount of energy entering/exiting a system, a small
shunt resistor is interleaved on a power rail. By measuring the small
voltage drop across the shunt resistor (a known value), the electrical
current is measured.

	I = U/R

Depending on whether the system is consuming or producing energy, the
measured current value can be either a positive or negative number.

To get the instantaneous power figure we will have to measure the power
rail’s voltage and multiply it with the measured value for the current

	P = V * I = V * U_shunt/R

Knowing the instantaneous power and by making a high enough sample rate
(for measuring the current and the power rail voltage), we can assume the
measured value for power is equal to the average power figure for the
amount of time between 2 sampling moments.

Now that we also know the average power for a given time interval (dt_x =
time between 2 sampling moments; sampling speed is known), we can measure
the energy amount entering or exiting the system between 2 sampling moments

	E_partial_x = P * dt_x

Having the energy information available, we can continue to add the
subsequent energy values for as long as the system is active. The amount of
energy is the sum of all the partial energy values measured for each time
interval E = Sum (E_partial_x), where x can take values from 0 till
infinite.


=== Chip Operation

The EM Chip chip uses the same principles of operation as presented in the
“Theory of Operation” and it does so for a number of 4 channels. 4
independent power rails can be energy monitored in the same time.  The chip
is controlled over I2C/SMBus by an I2C/SMBus master.

In order to reduce the amount of information traffic between the EM Chip
and the entity asking for its information, the chip features large
accumulator energy registers for the accumulated energy values. It can
accumulate up to 2^24 power values. Depending on the selected chip’s
sampling speed, such a number of samples are produced in about 4.5 hours
(fastest sampling speed) up to 582.5 hours or more than 24 days (lowest
sampling speed).

EM Chip measures the power as a 28-bits number. The 28-bits number is the
multiplication result of the 16-bits number used to measure the power rail
voltage and the 12-bits number used for measuring the voltage drop across
the power rail shunt resistor. 

If bidirectional energy flow is required, the power is measured as a
27-bits number and 1 bit for the sign. When no bidirectional flow is
needed, the power value is measured as an unsigned 28-bits number.

Due to the relatively large size of the accumulated energy registers inside
the chip (48 bits), in the worst case scenario (power values are full scale
numbers), a number of 2^20 full-scale power values can be measured before
energy register’s overflow. Using the fastest sampling speed, the
accumulated energy registers overflows only after a bit over 17 minutes,
while at the lowest sampling speed, it would overflow in over 36 hours.

Thus, the chip requires infrequent reads of the accumulated energy
registers. Even in the worst case scenario, the time between 2 consecutive
energy accumulator reads can be over 17 minutes !

In order to keep a longer history of energy measurements, an I2C/SMBus
master (e.g. SoC) would read the accumulated energy register values and
then use larger “soft” accumulated energy registers to extend the maximum
overflow period.

The EM Chip chip can monitor rails up to 32V. It can monitor the energy
amounts used by various sub-components of a system (e.g. CPU, GPU, memory,
hard-drives, USB ports, backlight, wireless adapters, cameras, displays, …)

EM Chip is able to start operating immediately after power-up with no CPU
intervention at all. Such a feature is useful, because it can show the
amount of energy consumed by a system before the latter finished booting
its operating system.

The chip’s own current draw is around 20uA (in low-power mode, lowest
sampling speed - 8 samples/sec) to 675uA (for the highest sampling speed -
1024 samples/sec)

When operated in low-power mode, it can be used to monitor the stand-by
energy draw of the system. As an example, such a mode is useful when a
system is suspended to RAM or to measure the energy usage from the power on
till the booting process is finished.

=== Linux Driver

While the chip is due to be publicly released in Q3 2017, a selected number
of PC OEM manufacturers will include one or more EM Chip chips on their
systems.  We would like to include a driver for EM Chip chip and its
follow-up products, such that Linux Kernel will be able to provide the
energy information as soon as computing systems using this series of chips
will become available.

By providing accurate energy measurements, the computing systems along with
their operating systems will be able to run more efficiently.

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel




[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux