Как перевести Arduino Nano в спящий режим с низким энергопотреблением (<0,05 мА)
Я пытаюсь перевести Arduino Nano в режим низкого энергопотребления, используя это руководство: Arduino Low Power - Как запустить ATmega328P в течение года на батарее Coin Cell.
В статье предлагается 3 вещи: используйте маломощную библиотеку от Rocketscream, отключите питание светодиода питания и снимите регулятор напряжения.
До сих пор я делал только первые два и уменьшил тактовую частоту до 8 МГц.
Важная часть исходного кода, которая погружает Arduino в глубокий сон, выглядит следующим образом:
void setup() {
CLKPR = 0x80; // (1000 0000) включить изменение тактовой частоты
CLKPR = 0x01; // (0000 0001) используйте коэффициент деления часов 2 для уменьшения частоты с 16 МГц до 8
}
void loop() {
// Перейти в спящий режим до следующего запланированного пробуждения
int32_t waitSeconds = 60;
while (waitSeconds > 0) {
period_t waitFor = SelectWaitTime(waitSeconds);
LowPower.powerDown(waitFor, ADC_OFF, BOD_OFF);
waitSeconds -= PeriodToSeconds(waitFor);
}
}
period_t SelectWaitTime(int32_t secondsToWait) {
if (secondsToWait >= 8)
return SLEEP_8S;
else if (secondsToWait >= 4)
return SLEEP_4S;
else if (secondsToWait >= 2)
return SLEEP_2S;
else if (secondsToWait >= 1)
return SLEEP_1S;
}
По сути, спите до 8 секунд, уберите секунды со счетчика, затем снова спите.
До сих пор я только соскреб след со светодиода питания и не снял регулятор напряжения. Согласно приведенной выше статье, это должно снизить энергопотребление примерно до 0,05 мА, но я получаю около 1,7 мА, что более чем в 30 раз больше!
Электрически у меня есть только MOSFET в качестве переключателя питания, подключенного к одному из аналоговых выводов (я использую его как цифровой выход) и другому контроллеру, подключенному к выводам I2C (Arduino действует как ведомый). Другой контроллер выключается через МОП-транзистор, когда я делаю измерения. Физическое удаление соединений не изменяет потребление, поэтому я не думаю, что это как-то связано.
Я что-то сделал не так? Что я могу сделать, чтобы добиться энергопотребления, аналогичного тому, что описано в статье?
@Alex, 👍3
1 ответ
Лучший ответ:
Оказывается , регулятор напряжения был AMS1117, а не MIC5205-KB50/KB33/KBAA, как в статье. Разрыв его дал мне ток холостого хода 0,026 мА, что даже лучше, чем я надеялся.
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Питание светодиодной ленты - Сколько ампер?
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- Самая низкая мощность, возможная в Arduino
- Альтернатива мосфету IRF520 в схеме выключения Arduino
- Что произойдет, если мы соединим GND и +5v?
- MAX30100 не работает
- Ведомое устройство Arduino с двумя мастерами, использующими одну и ту же шину I2C?