Computing stuff tied to the physical world

Flashback – Anatomy of a transmission

In Hardware on Oct 5, 2013 at 00:01

One of the really fun things I always like to work on, is to push the envelope on power savings in the JeeNode.

It all started long ago, but over the years, I did refine the measurement process as my insight and instruments both got better. Here’s the most primitive approach, inserting a multimeter in series with the power supply to measure the static current consumption:


The big problem with this is that a multimeter is far too slow to really see what’s going on. Only static idle current can be measured this way.

Another approach was to use a second JeeNode as power consumption tracker with some extra circuitry, to measure the voltage drop repeatedly:


This design can capture spikes by performing lots of repeated measurements, and in this particular case it even had a fairly large measurement range of 1 µA to 60 mA. This was done by using two separate sensing circuits and switching between them as needed.

But the real breakthrough came mid 2010, when Jörg Binkele sent me an oscilloscope snapshot of the voltage over a small series resistor. Here is one of the last ones, after lots of power saving techniques had already been applied:


As you can see from the annotations, there is an incredible amount of information one can glean from such oscilloscope traces.

This was one of the main reasons for me to learn more about oscilloscopes and eventually to buy a modern one myself – as described in a couple of posts, such as this one.

The capabilities of a modern digital storage oscilloscope (DSO) are truly phenomenal – and much of it is not even that much affected by the actual price range, although their cost does tend to keep them out of reach for occasional hobby use.

After many days of tinkering, it became possible to produce a very detailed map of the current consumption of a sensor acquisition + packet transmission cycle, as seen here:


The “haircomb” is the power consumption while sending individual bytes over SPI to the RFM12B module (and the received ACK after that), whereby the ATmega is even going to sleep between those bytes. For reference: the entire trace on this last screen is similar to the little blip marked “RFM12B transmission” on the previous screen. It’s not only considerably more detailed, but actually calibrated in 5-mA steps on the vertical axis.

Fascinating stuff, and no doubt a major reason why JeeNodes can perform so well nowadays in terms of ultra-low power consumption. If you had asked me this in 2008, I honestly would never have thought such a level of insight and performance to be attainable by anyone without access to a big research lab!

  1. I am using a TCS34725 light sensor that can either be polled or can send data via an interrupt. I have ordered a JeeNode and JeeLink. I will attach the TCS34725 to the JeeNode.

    Is there a simple way for me to measure via a multimeter the difference in power consumption when I use polling versus being sent an interrupt? Also – the difference when not powering down the chip in between data sends?

    My thoughts are you are doing an incredible job with power savings on a JeeNode. However, your customers (e.g.: me) are doing a less than stellar job conserving power consumption with the sensors we attach to the JeeNodes.

    My goal then is to see if I can understand and apply some pragmatic learnings that will compliment saving power thus prolonging the battery life when coupled with a JeeNode.

    My challenge is my n00b status to circuits (although I am following your other posts on learning electricity).

    Thank you.

  2. @Margaret,

    Several interesting options there – the sensor’s programmable sleep state could be used to bring the JeeNode out of deep sleep for example.

    Measuring the different approaches is a little beyond a basic multimeter however – you may be able to see the low microamp currents with reasonable accuracy (remember that some deltaV is lost across the multimeter) but you really need the integral of the current drawn over time. Be careful that the multimeter can tolerate ~35mA for the transmission blip when it is on the most sensitive setting.

    You might get more ideas and responses if you pose the question on the Forum.

Comments are closed.