I am working on a board with an ARM9 (SAM9X25). On this board there is a 3.3V lithium button-cell battery powering the VDDBU power rail. It is also used with a 100kOhm pull-up resistor for WKUP with a BP. But when my board is powered off the button-cell loses 0.001V/second, so after a few time my battery is dead...

Is it because my board is not configured for working in low power mode?


simulate this circuit – Schematic created using CircuitLab

The 3V3 comes from a buck regulator. The ARM never sleeps, but when it is powered-off (main power connector disconnected) and when SW1 is "on" the battery discharged very quickly.

Thank you for your help

  • \$\begingroup\$ Show schematic! How does the ARM sleep? \$\endgroup\$ – winny Jun 8 '17 at 12:46
  • 2
    \$\begingroup\$ If it were me, since you can easily disconnect the battery, bypass the switch with a multimeter and measure the actual current, likely should be in the 10 uA range if everything is working as expected if not see where the current is going. \$\endgroup\$ – sstobbe Jun 8 '17 at 13:34
  • \$\begingroup\$ Thank you for your help. I have a consumption of 0.2mA.. Is it possible that the problem come from current leakage due to the PCB ? \$\endgroup\$ – Tagadac Jun 8 '17 at 14:15
  • \$\begingroup\$ 200 uA is too much for a PCB unless its covered in salt and goo. Is the wakeup polarity correct are you always trying to have the processor wake up? \$\endgroup\$ – sstobbe Jun 8 '17 at 14:23
  • \$\begingroup\$ Is this a custom made PCB? You would appear to have a 15k load on the battery somewhere if you've got 200µA load current. \$\endgroup\$ – Barleyman Jun 8 '17 at 14:45

I would suspect the diode. Try disconnecting the 3.3 volts from your buck regulator and see if your problem goes away. If D1 is shorted, the battery would be heavily loaded.

You should put a resistor in series with the battery to limit the instantaneous current when you close the switch. The BAT diodes only handle small currents. 10K would be about right. As a bonus, you can then use the resistor to measure the current from the battery in case your VDDBU input is damaged, which is the less likely possibility.

Failing those two, it would have to be leaky caps, and you can remove them one at a time and use the resistor to help you figure it out. But you need the resistor in any case.

  • \$\begingroup\$ Thank you for your help. I already tried removing the diodes, but I have the same problem. I'll try with the resistor and hunt that leaky c(r)ap. \$\endgroup\$ – Tagadac Jun 8 '17 at 14:21
  • \$\begingroup\$ I know you have already checked this, but if you are using an electrolytic 1uf check the polarity and the specs. I have put them in backwards myself a time or two. \$\endgroup\$ – John Birckhead Jun 8 '17 at 14:50
  • \$\begingroup\$ It's not an electrolytic capacitor. \$\endgroup\$ – Tagadac Jun 12 '17 at 9:43
  • \$\begingroup\$ @Tagadac So wait a second. You have battery drain if you disconnect the diode? The only thing connected to the battery would then be the 100nF capacitor? \$\endgroup\$ – Barleyman Jun 12 '17 at 11:48
  • \$\begingroup\$ @Barleyman There is a misunderstanding, I do have removed the diodes but I directly connected the battery to Vbat by connecting the two pins of the package. (so without the diodes and without the connection to 3V3) \$\endgroup\$ – Tagadac Jun 12 '17 at 13:45

Getting the power down on embedded processors is not trivial! And, on most ARM core processors, there are ways of turning off many individual parts of the chip. You can save even more power if you slow the clocks down. There are usually many ways to do this in an ARM core chip.

(Don't stop reading at the end of the processor vendor's specifications. Determine if the ARM core specifications provide more insight into how to control the internal workings of the chip.)

Permanent pull up resistors are never a good idea when power consumption is of a concern. Consider removing the permanent external pull up resistor. Then consider using a pin with a programmable pull up resistor which you only engage when testing the external switch.

In this case, you are using the external signal to wake up the processor. Consider using an internal timer to wake up the processor and check the state of the switch. Many vendors have multiple power level options where periodically waking up and checking the status of a switch consumes a trivial amount of power.

Many power consumption problems can be solved through proper hardware design. But clever software will be the final battle ground for reducing the average current down through the last few mAmps down into the uAmps and even the nAmmps range.

  • \$\begingroup\$ Thank you for you help. My aim is not really to put my board in Low power mode, I just want to keep up to date (clock, date etc.) my board when main power is off. So because of my current loss, I thought I may test putting my board in low power board and then disconnect the main power to see if the problem remains. \$\endgroup\$ – Tagadac Jun 12 '17 at 13:48
  • \$\begingroup\$ A good project. But, as I said, ARM cores can be tricky to configure because they are flexible. Consider a Real Time Clock hardware solution as they are designed specifically for a low power battery backed up solution. \$\endgroup\$ – st2000 Jun 12 '17 at 13:57
  • \$\begingroup\$ Thank you for your help, I think I'm going to dive into the datasheet a little bit more because the software part is my only hope for resolving this issue. \$\endgroup\$ – Tagadac Jun 12 '17 at 14:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.