Measuring current consumption of WiSense nodes
When a WiSense node is operating as an RFD (reduced function device) and its energy source is very limited (usually a non rechargeable 3 V lithium coin cell), it is supposed to keep its current consumption as low as possible. RFDs are usually in sleep mode most of the time and only wake up now and then to sense and communicate. In sleep mode all the components on the node are put in their lowest power consumption modes. This includes the microcontroller, the radio, the eeprom and all the different sensors on the node.
The sleep mode current consumption can be as low as a few microamps. In an earlier post, I mentioned that when the duty cycle is low, the life time of the battery powering the RFD depends entirely on the sleep mode current consumption. Duty cycle is the fraction of time spent sleeping.
It is therefore very important to measure the sleep mode current consumption of an RFD before deploying it. Suppose you add a sensor to an RFD but forget to put the sensor in its low power mode before the RFD is put to sleep. Your coin cell will be useless in no time (depending on the sensor’s current consumption). Good lithium coin cells are not cheap. One small bug in the code can burn a big hole in your pocket.
I am not getting good Lithium coin cells in Bangalore. I have tried many shops for Sony coin cells but I only get bad quality Maxell coin cells. These burn out pretty fast.
Time to get to the point. How do we measure DC microamps ? The easiest way is to get a top brand multimeter which has a DC “microamp” range.
I have a Agilent U1242B which has a “microamp” measurement function. It has two ranges within this function.
Range 1 : 0 to 1000.0 uA with a resolution of 0.1 uA
Range 2: 0 to 10000 uA with a resolution of 1 uA
The U1242B also has a “milliamp” measurement function. It has two ranges within this function.
Range 1: 0 to 100 mA with a resolution of 0.01 mA.
Range 2: 0 to 440 mA with a resolution of 0.1 mA
You can select the required range by pressing the “Range” button on the multimeter and stepping through the available ranges within the selected measurement function. The selected range appears on the LCD screen.
You need to hook up the multimeter leads such that the positive multimeter lead is connected to the positive terminal of the coin cell or any other battery you may be using. The COM/ground lead of the multimeter needs to be connected to the positive supply input of the WiSense node. The ground pin of the WiSense node should be connected to the negative terminal of the battery. Make sure that the multimeter leads are plugged in to the proper ports on the multimeter before connecting to the coin cell and the sensor node. These will be the uA/mA port and the COM (ground) port. The relevant measurement function must also be selected before connecting to the coin cell and the sensor node.
There is one important aspect to be aware of when making the current measurement. When the WiSense node is active (sensing or communicating), its current consumption can be as high as 30 mA. When the node is sleeping, the current consumption can be as as low as a few microamps. As mentioned above, the U1242B has a 0 to 1000 uA range with a resolution of 0.1 uA. Obviously, we want to use this range to measure the node’s current consumption. The problem is that measurement will be proper only when the node is sleeping. When the node wakes up, its current consumption will go up and you will see that the node is not working properly. To get the node to work properly, you would be forced to change the measurement function to “mA”. What is happening here ? How can the multimeter interfere with the proper functioning of the sensor node !!!.
The problem is because of the mechanism used by these multimeters to measure currents. Multilmeters measure current by measuring the voltage drop across a shunt resistance through which the current (which needs to be measured) flows. The voltage drop across this shunt resistance is referred to as the burden voltage.
Voltage_supplied_to_node = Supply_Voltage – Burden_Voltage
The U1242B has a shunt resistance value of around 60 ohms in the 0 to 1000 uA range. If the sensor node consumes 5 uA in sleep mode, the burden voltage will be 60 * 5 * (10^-6) -> .30 milliVolts. This is hardly anything compared to the supply voltage from the coin battery (3.0 Volts). When the node wakes up and starts consuming current in milliAmps, the burden voltage will increase. Let us assume that the node consumes say 2 mA while it is sampling the sensors. The burden voltage will be 60 * 2 * (10 ^ -3) -> .12 Volts. The voltage seen by the node will drop from 3.0 V to (3.0 – 0.12 -> 2.88 V). This is still ok since the MSP430 and the radio (CC1101 / CC2520) can work at a voltage as low as 1.8 V. When the node switches on it’s radio to transmit/receive, the current consumption will increase to around 30 mA. Now the burden voltage will increase to 60 * 30 * (10 ^ -3) -> 1.8 V !!!. The voltage supplied to the node will drop to (3.0 – 1.8 -> 1.2 V). This is too low. The MSP430, the radio and the sensors will abruptly stop working. The node will not work properly until you change the measurement function to mA or A.
One way out is to configure the RFD’s sleep interval to a large value (say above 30 seconds). Start off with the multimeter in mA measurement function. This function (on the U1242B) has a 0 to 440 mA range in which the shunt resistance value is 1.8 ohms. Assuming worst case current of 40 mA, the burden voltage will be only 1.8 * 40 * (10 ^ -3) -> 72 mV. Power up the RFD and wait for it to join and finally go to sleep. Now, change the measurement function to uA and monitor the sleep mode current consumption (which should be a few microamps). Wait until at least 5 seconds are left in the sleep interval and then change the measurement function to mA. This will ensure that the node keeps working after waking up and goes back to sleep subsequently after sensing/communication.