I'm building a simple circuit that takes data from an IMU (using MPU6050), sends it to a microprocessor (Arduino Pro Mini 5V) to apply data smoothing and averaging, and then this data is sent using an HC-08 BLE module for the data to be further processed on a mobile. The circuit is powered by a 9V battery (6LR61) connected to RAW (Vin on other Arduino boards).

When I build this circuit on a breadboard, it works well, but the Arduino is power hungry as expected. It runs for over an hour in this setting (I haven't tested it for longer), but I've build this circuit twice using protoboards and it can't stay on. One circuit is able to send data for a while, but the LED on my BLE module dims and eventually turns off after ~5m, and requires me to wait 30+m before I try to power the circuit again. The other circuit has all LEDs shine when power is switched on, but the IMU doesn't send any data (an LED on the Pro Mini blinks whenever I2C data is received).

The shitty thing is that, whenever I power these circuits via USB, they work as intended, just like when I power them using 9V to RAW on the breadboard.

I tested the circuit on the breadboard later and after BLE has connected and is sending data, the whole circuit draws 42.9mA, the BLE module draws 1.5mA, and the IMU draws 5.4mA.

What is the most effective way to fix this problem? Should I focus on finding a different battery, or focus on power-savings within the circuit?

These are my ideas so far:

  • replace all boards with 3.3V versions
  • reduce clock speed (might not be viable, I need a lot of IMU data?)
  • use external voltage regulator, connect Vout from regulator to 5V of pro mini
  • replace 9V battery with Lithium Ion battery
  • replace Pro Mini with an ATtiny85

I'd like to take the least time to maximize power savings, so while I could go through all these ideas, I just need the circuit to work at the end of the day.

  • 1
    Where do the other 36mA’s go? Try doing some more measurements. My guess is that it’s mostly due to the regulator(s), on the pro mini. If so using a separate voltage regulator would help. Also ditch the 9V. Those are just 6 AAAA batteries in a packed together, and can only supply 400mAh. Lastly, the might be an issue with not having enough bypass capacitors. Breadboard have some capacitance due to how the are constructed. Switch to protoboard, glitches may occur due to no longer having bypass capacitors. Not sure if that’s the case here, but that immediately came to mind reading only the title
    – Gerben
    Feb 23 '18 at 22:00
  • 36mA sounds about right for an Arduino.
    – Majenko
    Feb 23 '18 at 23:19

I have a page about power saving.

To summarize some of the techniques you can use:

  • Run the processor at a lower frequency
  • Run the processor at a lower voltage
  • Turn off unneeded internal modules in software (eg. SPI, I2C, Serial, ADC)
  • Turn off brownout detection
  • Turn off the Analog-to-Digital converter (ADC)
  • Turn off the watchdog timer
  • Put the processor to sleep
  • Don't use inefficient voltage regulators - if possible run directly from batteries
  • Don't use power-hungry displays (eg. indicator LEDs, backlit LCDs)
  • Arrange to wake the processor from sleep only when needed
  • Turn off (with a MOSFET) external devices (eg. SD cards, temperature sensors) until needed

I've got a temperature and humidity sensor which has been running for years on 3 x AA batteries.

The circuit is powered by a 9V battery (6LR61) connected to RAW (Vin on other Arduino boards).

That's not a great choice for a start, as the voltage regulator has to turn the 9V into 5V (in the form of wasted heat). You'd be better off with 3 x AA batteries (around 4.5V) and put them straight into the 5V pin.

Those 9V batteries have notoriously low mAh because they are basically 6 coin cells stacked on top of each other.

  • What Nick said about wasted heat sound very much like the issue you are having. The tiny little regulator on the board has to drop ~4 volts (=9-5) at 50mA or 0.2 watts which is fine for a while, but then the heat builds up, it goes into thermal overload protection, and won't run until it cools down. The 30 minutes seems excessive, as it should cool faster than that, but perhaps you meant 30 seconds? Could be something else. Feb 24 '18 at 2:04

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.