Would like to know if people here have experimented with getting the NANO-ARM down to very low current in sleep/standby mode? What was the lowest you could achieve?
So far, my best result is around 200~300uA, using this code, which spends 3 secs in normal mode followed by 3 secs in standby mode:
Code: Select all
#include <RTCZero.h>
RTCZero zerortc;
// Set how often alarm goes off here
const byte alarmSeconds = 3;
const byte alarmMinutes = 0;
const byte alarmHours = 0;
volatile bool alarmFlag = false; // Start awake
void setup()
{
Serial1.begin(115200);
delay(1000); // Wait for console
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
zerortc.begin(); // Set up clocks and such
resetAlarm(); // Set alarm
zerortc.attachInterrupt(alarmMatch); // Set up a handler for the alarm
}
void loop()
{
if (alarmFlag == true) {
alarmFlag = false; // Clear flag
digitalWrite(LED_BUILTIN, HIGH);
Serial1.println("Alarm went off - I'm awake!");
delay(3000);
}
resetAlarm(); // Reset alarm before returning to sleep
Serial1.println("Alarm set, going to sleep now.");
digitalWrite(LED_BUILTIN, LOW);
zerortc.standbyMode(); // Sleep until next alarm match
}
void alarmMatch(void)
{
alarmFlag = true; // Set flag
}
void resetAlarm(void) {
byte seconds = 0;
byte minutes = 0;
byte hours = 0;
byte day = 1;
byte month = 1;
byte year = 1;
zerortc.setTime(hours, minutes, seconds);
zerortc.setDate(day, month, year);
zerortc.setAlarmTime(alarmHours, alarmMinutes, alarmSeconds);
zerortc.enableAlarm(zerortc.MATCH_HHMMSS);
}
To make these measurements, I used a USB-serial adaptor to supply 5V to the NANO-ARM via the 5V pin and to receive serial data from D1 pin (=Serial1). This allowed me to insert my DMM in the 5V line to measure the current. (No other components involved.)
I was hoping for a significantly lower figure in standby mode, more like 20~30uA. The reason for my hope was the claimed low currents of similar boards like the Rocketscream Mini Ultra Pro V3 (http://www.rocketscream.com/blog/produc ... out-radio/) which claims 20uA, or the Low Power Lab Motino M0 (https://lowpowerlab.com/guide/moteino/moteinom0/) which claims 8uA.
Both these two boards are double the price of the NANO-ARM. Looking at the schematics for all three boards, I can't see much to explain why the NANO-ARM is drawing so much more current than those other boards claim (I don't have either to do a side-by-side comparison). The NANO-ARM's circuit is pretty basic with few/no other components to consume much current. Even the regulators seem to be on a par.
I am wondering if there could be anything different in the Arduino Cores for the 3 boards that could explain the difference. The NANO-ARM and the Rocketscream use the Zero's Board definition which gives maximum compatibility with Arduino Zero. The board requires different or extra board definition.
Any help or guidance on reducing the standby current, or anyone else's experiences along these lines would be great.
Paul
NANO-ARM Schematic: https://wiki.protoneer.co.nz/NANO-ARM#Schematic
Motino Schematic: https://lowpowerlab.com/wp-content/uplo ... ematic.png
Rocketscream Schematic: https://github.com/rocketscream/MiniUlt ... RA-PRO.pdf