Power Savings - crestlinesoaring/ArduinoWeatherStation GitHub Wiki

  1. February 2020
    Several methods are used to conserve power.
    The Ubiquiti link to the internet and the Ethernet shield are turned on only when needed.
    The Mega itself is modded to reduce general consumption. During nights, the Mega is put into deep hybernation.
    A few other software and hardware solutions were implemented to save even more power.
    These 24/7 savings are crutial to maintain a week of (lowest reporting mode) operation during solar power failure (damage or extremely bad/dark weather).

Note: Percentages are in regards to the item's initial (100%) power.
M=Mega2560, Eth=Ethernet shield, Pboot= Power reboot, CC= Charge Controller.
italic means already implemented

A) Low-Power library. The nightly "hybernation mode" saves over 80% of M's general usage.

B) Using a $23 fan. The quality Papst fan runs much more efficient and saves 50%.

C) DC/DC reducer/controller for fan speed control seems not practical, the losses of regular DC/DC converters eat the savings. Driving the fan via PWM is would be great but needs extra effort.
A simple 180Ohm resistor reduces current from 28mA (@13V) to 22mA (@8.5V). Faster speeds (when needed) not yet implemented.
60% saved
Even more savings (ca.66%) possible by turning fan off, but that needs external circuitry.
When needed, to counter effects of humidity or high temp, M could make the fan spin faster.

D) A software Power_down of M's 16U2 USB bridge was implemented Jan 2018 so that if no active USB connection is detected for 10 seconds after boot, the 16U2 goes into deep sleep mode. Update Feb 2020, now consuming only 20uA(!), saves 99% (~20mA)
Fully implemented thanks to Nico's amazing hoodloader2!

https://github.com/NicoHood/HoodLoader2
The 2 RX/TX LEDs which the 16U2 USB bridge drives are passivated by the HoodLoader also.

E) Set unused Analog pins as digital and LOW, and unused Digital pins as OUTPUT and LOW. There are plenty

F) Disabled M's unused peripherals (ADC, SPI, UARTS, (WD)Timers, i2c)

G) Killed M's LED.
Mega: cut trace to Power LED, savings: ca 2mA for M

H) Even kill the CC LEDs? Difficult/messy/not worth it, low power LEDs consume just 1mA.

I) Isolate/Lift pin 1 of M's on-board 5V DC/DC linear regulator, saves up to 11mA

J) Reduce clock speed to 8MHz (will timing change??)

Ka) Reduce clock speed when night (only few measurements needed).
Use M's internal 8 MHz oscillator or even low-power 128 KHz internal clock at times.

Kb) 12V DC/DC to 3,3V converter to power every 3.3V unit directly and most efficiently. Eth shield V6 might still need 5V for reset?

Kc) Power different peripherals by different M pins. Shut off their power totally when not in use.

L) extend hourly Pboots to longer cycles.

change Pboot circuit (via input from solar panel?) to prevent default 10 second "on" state of U and Eth during hourly Pboots during nights.

M) Reduce the shunt resistors of the INAs from 50 to 8.333 milliohm. Range is now 4.8A. Worked really well!

N) Remove addressing pullup or pulldown resistors (f.i. INA219 A0) and consolidate i2c pullups.

O Remove "power" LEDs from all boards (relay, RTC, BME(?) etc).

P Remove Brown-out Detector setting, it's enabled in all sleep modes, always consumes power.

Q Now that the 3.3V W5500 is used, we could go system wide to 3.3V with 8MHz.

https://forum.arduino.cc/index.php?topic=442565.0
https://www.gammon.com.au/forum/?id=11497

As of June 2024 A)-G) and I) & M)-P) were implemented with Brain2 resulting in just 30mA (+20mA fan) total consumption in sleep mode.

Killing the Eth V5 LEDs (10mA for just a few seconds) is mechanically challenging (cutting traces) and expose the cut traces and thus might not be recommended for final production.
Those Eth LEDs will be only powered for a few seconds anyhow, but would consume much if due to some error Eth would stay on.

With all timers off, a power draw of roughly 1 mA was achieved for the ATMega2560 only.
If hooked up to the right interrupt pin, the RTC's alarm output can wake the M from deep sleeps.

Some measures can also help boosting incoming power:

Consider solar panel adjustment twice or 4 times a year, especially in winter, to maximize solar exposure.
Remove Plexiglass from solar panel. Exposes panel directly to low flying bushes etc. No significant scratches or damages were observed in August 2018.
Raise panel so sun can hit it earlier and later. Panel might be seen and not hidden anymore.
Use 12V 9Ah Battery. Same footprint but much more (must be good brand) expensive.
Turn fan on only when high Humidity or high Temperature (must not rely on BME280).
Use mirrors to deflect sunrise/set onto panel. Might be seen and not hidden anymore.
Use lower power APs (LoRa?).