Powering dwm1001 (module only) with a 3V CR2032

I am trying to create a circuit where I can power a DWM1001 module which is in:

  • Low power mode
  • No stationary detection
  • BLE off
    I have made these settings through the android app. The battery connected is a 3V CR2032, with a recommendation not to draw more than 10mA. Given the module won’t work below 2.8V the usable battery life will be shortened. I am fine with that, but how to handle surge currents during Tx/Rx. (say using a capacitor)

Given the module requires high current during Tx/Rx what would be the ideal circuit to do this.

A battery with higher pulse current capability.

Failing that, lots of capacitance on the module power pin. Your maximum receive duration will be limited by the capacitance.

For example, assume starting at 3.2 volts, ending at 2.9 volts, and using 10 mA from the battery, the time duration is:

t = 0.3 volts * C / i

For 130 uF (roughly what the module has built in), and typical receive power, this is about 300 us. That is, you can’t be in receive longer than 300 us or you are overtaxing your battery. With 1000 uF, this increases to maybe 2.5 ms. You then have to have a significant time of little to no current for the battery to “relax”. If you node does any sort of longer listen (say to find a network or for over the air bootload), this will be a problem.

Also, it can be frustrating to debug such a node while writing software. Any event which leaves the node drawing high power causes it to brown out and lose state. Best to augment the power during development.

If you use electrolytic capacitors, be aware of leakage currents. That can kill your battery run time due to the constant loss of power. Ceramics are better, but costly when getting into high values.

The CR series of batteries really aren’t compatible with DW1000 designs. Even if you make it work, the high drain events yield far less than nominal capacity for energy delivery. Finding a battery that does high pulse currents would be a better move.

Mike Ciholas, President, Ciholas, Inc
3700 Bell Road, Newburgh, IN 47630 USA
+1 812 962 9408

Thanks Mike, this is very insightful. Would putting a bigger capacitor say of 2mF and having an update rate of 2 seconds would work out? I am trying to create the circuit in a small form factor and hence the attempt to use a coin cell. Also as I mentioned earlier I will have this as a tag permanently no other actions will be performed on it or its configuration once plugged into the battery and it will permanently stay in low power and BLE off mode.


For a tag that only transmits, every 2 +/- seconds, a short packet, then I think it will work. You probably don’t need 2 mF to do that. The module capacitance might be enough at 130 uF, but adding another 100 uF should do it. If you are using a long packet (say over 200 us), then you will need to add more, but TX is not as power hungry as RX.

You don’t have much margin from cell voltage to 2.8 minimum the DW1000 requires. You can easily dip to this level during a transmit event. So brown outs will determine your battery life. More capacitance will delay that somewhat. A brown out may manifest itself mostly by poor performance than and actual reset or other distinctive behavior.

Do you know if the DWM1001C module adjusts transmit power register settings for module voltage? I suspect it doesn’t, in which case, the FCC/EU power limits were likely set by max input voltage and you will be near the minimum, so range performance will likely be poor. If you are modifying the firmware, then it isn’t clear the regulatory approvals of the DWM1001C still apply to your use case, so perhaps you will need to go through regulatory approval on your own regardless which will allow you to set power based on your lower voltage.

A DW3000 design would be much better, both from lower current usage and from lower input voltage requirements, but DW3000 parts and modules are not yet available.

Mike Ciholas, President, Ciholas, Inc
3700 Bell Road, Newburgh, IN 47630 USA
+1 812 962 9408

Thanks Mike, this is very helpful. Will try this out and also consider other battery options.

Hi @mciholas, I am working on the recommendations you made. The API doc mentions a function to control Tx Power and Tx duration. Do we have a similar control on the Rx, where we can configure both Rx Power (peak current consumption value) and Rx duration. Also, I am using low power sniff mode to ensure least amount is spent in Rx ON state.

I haven’t been able to find a function in API docs which does that.

TX_POWER is output RF power, not battery usage. Lowering RF power does not necessarily lower battery power usage, and it certainly isn’t linear (half RF power is not half battery TX power).

TX duration is controlled by the packet length and data rate.

There is no direct way to lower the RX power other than time cycling the receiver, which is what sniff mode does, but at the expense of less receiver performance.

The best way to lower RX power is to know very precisely when you need to receive and to be off at other times. This is more about protocol design than anything else.

It isn’t there because you can’t adjust it. The receiver circuits simply use the power they use.

Mike Ciholas, President, Ciholas, Inc
3700 Bell Road, Newburgh, IN 47630 USA
+1 812 962 9408

Hi @mciholas, Thanks for your inputs. I was able to get some improvement in peak current and avg current consumption (few mAs) by altering Tx pulse delay and power. But wasn’t too significant to improve battery life (rate limiting step for coin cell being peak current draw/duration and I wanted to decrease that). For Rx what you says makes sense from first principles too. Thanks for your inputs, very helpful.