The Power Profiler Kit

Many developers might be familiar with the problems that may arise when wanting to measure current consumption, especially with applications using from a couple of µA to some mA. You most probably have to have some very expensive equipment that takes up quite a lot of space on your desktop. This often means that it is stowed away at a lab, or actually too expensive to buy. Since we have created the nRF52 Online Power Profiler, this can solve some issues, but what if the application has forgotten to turn off unnecessary power consumers, has wrong intervals between events or is sampling the ADC more than needed?

Usually, a developer uses most of his or her time in front of a computer, and when finalizing the product, walks into a lab where the large, expensive equipment is kept. At this time in the development phase, it’s often too late to take care of the power consuming bugs discovered. The architecture of the software may not support the needed fixes, or there is simply no time left to take the necessary actions.

To solve this, we wanted a tool that is both small, fairly priced and able to measure the lowest of sleep currents in typical Bluetooth Low Energy applications. A tool that can be used continuously by the developer without taking up unnecessary space at the desk. The Power Profiler Kit does exactly that! We at Nordic’s application group have twisted our brains to bring forth a tool that meets a middle ground between physical size, accuracy and price.

The User Guide explains all the details, but I want to elaborate a bit about how the PPK will help developers in their day to day job. Let’s start by looking at the simplest setup for using the PPK.

Typical Setup

The PPK on top of a DK

The PPK plugs directly on top of our nRF51 and nRF52 development kits to get you quickly measuring the application you have already developed. There are some switches on the PPK to take notice of, especially the DUT select and Power select. The PPK is able to power and measure any external application or directly measure the DK, so for this example you should set this to DK. The Power select switch allows for using either power from the DK, on board regulator or any external source. When using the regulator, the voltage can be adjusted by the software from 1.8V to 3.6V. This is great for analyzing different source voltages, but when measuring the applications running on the DK, the switch should be set to DK to avoid any leakage currents caused by the on board debugger.

When everything is set up according to the user guide, you can start the software. The software will first do a small calibration routine before giving you control over all functions. The PPK will then meet the user with this interface:

The PPK UI

Measurement examples

KeySight N6705B

To give an example of how much detail you can expect to see from the application, I have here connected an nRF Beacon. First to a Keysight N6705B that we often use for characterization of our applications, and then to the external DUT connector of the PPK. Both setups are powering the DUT (device under test) with 3V.

keysight measuring average

Here we measure over 10 seconds and read an average current consumption of 33.484µA.

To measure the sleep current, we simply zoom in and place the measurement markers in an area where the nRF51 is idle.

keysight measuring idle state

With instruments like these, we have the possibility to inspect the radio events, look at the ramp up time, preprocessing etc. Here we catch the radio event by setting the instrument to trigger on the rising edge at a couple of milliamps.

keysight measuring beacon event

This is often useful, since we can measure how long time the radio is active and for example if we have both TX or RX events (like in the beacon case, we only have TX).

The Power Profiler Kit

Now, let’s try the exact same device on the PPK. To do this, we simply plug it in to the external DUT connector, and set the Select DUT switch to External. The on board regulator is used as power source, to set the voltage to exactly 3V as with the Keysight instrument. The window size for the average area is set to 10 seconds.

ppk measuring a beacon

Notice that we know have data from a 10 second average, and a plot showing extreme detail after the trigger level is reached (2500µA in this case). The average number is calculated over the 10 second frame, and shows 33.24µA, which is fairly close to the Keysight measurement of 33.484µA. Since we now have both plots we don’t need to set up another measurement, but simply stop the data acquisition and zoom in to the areas we want to look closer at, for instance, the sleep current.

ppk measuring ide state

Keysight gave us 3.876µA, where the PPK measures an average of 3.82µA. We can also look at the trigger window, where we clearly see that we only have TX events. The average calculations for the events are close to identical. The PPK measures 5.95mA, Keysight shows 5.92mA.

ppk measuring a beacon eventk

How it works

Automatic switching

Often when using small, cheap instruments for measuring current, the user needs to set a specific range to enhance resolution for the desired measurement area. One of the major benefactors of the PPK is that the range is automatically switched by hardware, so you will keep a great resolution all the way from sub microamps to several milliamps. This comes with the caveat that if your measurement is stable around any of the switching points, the switches will work really fast and may distort the measurement. Therefore, the switching points can be adjusted from software if necessary.

Software

The software is written in Python, thus it’s source is freely available for anyone. The choice of using Python came from the fact that the developers of the PPK are primarily firmware and hardware developers, thus Python seemed to be the best choice. Also, since we have an interface to the nrfjprog tools from Nordic, pynrfjprog, this makes it even more convenient to use. The software will be updated on a regular basis, to improve stability, user interface and add more features. By giving you the Python source files, this means that you can fiddle around with it and create what you want. We are planning on also making a Python API that developers can use to create their own automated tests by using this hardware. By using the trigger capabilities of the PPK, such tests can be quite extensive, with automated firmware swapping and current analysis at specific times or consumption levels.

The PPK uses the on board debugger of the DK to transfer measurement data through Real Time Transfer (RTT). This way, we don’t need any USB handling on the PPK’s nRF52 or use UART which is much slower. Still, the RTT capabilities of the on board debugger is not able to handle all data raw, hence, we have divided the plots in to two. The top plot shows data that is averaged by a factor of ten. This way, the PPK is able to push continuous data to the software for this window. The bottom plot is plotting all samples the PPK can produce for a shorter amount of time, and only when the trigger point has been reached. This way, you can trigger at levels that shows interest in the average plot to further inspect these events on a very detailed level.

Hardware

The brain of the PPK is the nRF52. Combining its ADC, PPI and GPIOTE abilities, we are able to sample an averaged sample (to reduce noise etc) every 13µs, while also keeping watch of the hardware switches state to know what measurement range we are currently in. Having access to a CPU with great performance also allows the nRF52 to do calculations and packaging of data fast enough.

The current is measured as the voltage drop across three resistors in parallel. Two of these resistors have a switch in series so they can be connected / disconnected from the circuit. There are analog comparators monitoring the voltage across the resistors. Together with some digital logic and reference voltages, these controls at which current level each of the two resistors shall be connected / disconnected.

Each Power Profiler Kit has its actual resistance measured in production and stored in an EEPROM. The resistance of each measurement resistor is shown in the software. These numbers are unique to every Power Profiler Kit due to component variations etc., so the numbers in the screenshots seen here might not be similar to the values you have in your software when using the kit. If you for any reason adjust these resistors, you can always go back to the ones stored during production.

For more information about the product and where to buy, visit the product page.

Parents
  • That's not stupid :) BLE advertises on three channel, hence you can always see three radio distinct radio pulses per event. If you do a submit here devzone.nordicsemi.com/.../, you'll se that with a regular advertisement, it looks for connection requests (also on all three channels), and you have an extra radio pulse right after each TX pulse which is slightly lower on average.

    So, since we see three distinct radio pulses, it is only TX. If we have seen two on each event, then it is TX and RX. If scan response was enabled on this beacon advertisement, we'd also see that the events current profile will change, showing you that it is doing RX in case it needs to adjust the packet for a scan response.

Comment
  • That's not stupid :) BLE advertises on three channel, hence you can always see three radio distinct radio pulses per event. If you do a submit here devzone.nordicsemi.com/.../, you'll se that with a regular advertisement, it looks for connection requests (also on all three channels), and you have an extra radio pulse right after each TX pulse which is slightly lower on average.

    So, since we see three distinct radio pulses, it is only TX. If we have seen two on each event, then it is TX and RX. If scan response was enabled on this beacon advertisement, we'd also see that the events current profile will change, showing you that it is doing RX in case it needs to adjust the packet for a scan response.

Children
No Data