Just rolling some ideas around in my mind. Supposing you have a mcu (Arduino in this case) that has to conserve battery power. The power supply is a battery with a variable voltage regulator, something that works like an LM317 as shown in the diagrams below (I realize that an LM317 is not practical for low-power applications…). The resistor divider that controls the voltage regulator output is tied to an mcu GPIO. The idea is that when a person is not actively using the device, then the mcu can set the system voltage to a low value (say 2.0v) and scale-down the clock while it runs some things in the background (data logging, time keeping, ect). When it needs to update the screen or such, then it can switch to high voltage (3.3v) so that it can run at full speed.
I realize that the attached diagram is fairly hypothetical. in a real circuit the input wouldn’t be 12V, and a LM317 wouldn’t be ideal. I’m just wondering if the there would be any problems with this idea. I understand the usual power-saving techniques, and this would be an additional step to reduce power consumption.
In the attachment, on the left side, then the mcu switches the high side of the resistor divider. Setting the pin to HI-Z would set the low voltage, and setting the pin to HIGH would set the high voltage.
On the right side, then the mcu switches the low side of the resistor divider. Setting the pin to HI-Z would set the high voltage, and setting the pin to LOW would set the low voltage.
Would this work satisfactorily? is there a preference to the high-side or low-side switch?
A linear regulator is a poor choice.
If you look at the SAM3x datasheet (Due) or MK20 (Teensy) you will see that there are actually different parts of the processor powered from different pins. Both of those chips have a low power "clock" mode that just keeps time with a watch crystal (watches run for years on tiny batteries) and then you have a choice which parts of the processor you power up.
So the voltage regulators for those other parts should be turned off.
A AVR chip (most other Arduinos) can run at different speeds on different voltages, so yes you could save power by switching to a low clock speed and then reducing the input voltage. It's not done very often though. The switchable power supply must consume too much power or something.
The key isn't to lower the voltage as that would actually waste more power to heat through the regulator. The key is to draw less current and you can do that by using the various low power and sleep modes of the processor as @MorganS described.
The reason why it’s a linear regulator is because at tiny current draws (< 50ua) then a switching regulator is far less efficient (as low as 40%). Like I said, I understand the usual power-saving techniques, and this would be an additional step to reduce power consumption.
I was just wondering if the idea would work. Maybe I just need to wire something up and try. Perhaps it’s not worth the hassle either…
It's not worth it. Lower the current draw if you want to conserve power.
Laptop CPUs run at different voltages depending on what they’re doing. It’s entirely feasible for AVR Arduinos to run at different voltages. But it requires great engineering to make it worthwhile.
40% efficiency at micro-Amps and nano-Amps power is pretty good. A standard Arduino UNO voltage regulator running on 12V is only 40% efficient too.