After trying to power my project from two 3v coin cells in series (need 3.5V min for my sensor), and getting only 2 transmissions out of it (1min apart) before it became unresponsive due to voltage drop, I found and read this thread:
https://lowpowerlab.com/forum/index.php?topic=1340.0I'm a newb and am probably trying to do stuff that is more advanced than I'm currently able to... So I have some followup questions!
1) Is the R4 a practical platform to achieve a low duty cycle coin-cell powered sensor? The other PCB designs in that thread are more optimized for compactness, but I feel like there are hardware-based power optimizations going on. If so can someone try to explain them?
2) My sleeping current in listenmode is 20uA with BOD and ADC off. There are big spikes in current consumption once per second that account for much of this. Is this normal?
3) I read the recommendation to use BOD in place of a cap/supercap. I assume this doesn't mean to avoid BOD_OFF in LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF), but means BOD should be ON while awake. Do I need to explicitly turn BOD on after listenModeEnd() or does it come on by default?
4) The thread mentions setting BOD "bits" to 1.8V. Can the moteino actually survive voltage drops as low as 1.8V without impacting execution? If not, what's the benefit to this over the default BOD setting (2.7V?)
5) What battery voltage is considered "acceptable" to send a transmission without killing the supply voltage?
6) It's mentioned that no ACKs are used in communication, but I understand sendWithRetry is necessary to use ATC, correct? Is lower transmit power worth giving up for the shorter transmit time that no ACKs gives?
7) I haven't observed an issue with startup voltage dips yet, but the thread mentions running at 1MHz instead of 8Mhz during startup to keep consumption low, and I think says it upclocks to 8Mhz afterwards. Is this something that can be controlled via software dynamically? I see there are "fuse settings" for clock rate but they seem like static settings... Are there code examples of how to do this?
Thanks in advance!
Dave