Как перевести 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 действует как ведомый). Другой контроллер выключается через МОП-транзистор, когда я делаю измерения. Физическое удаление соединений не изменяет потребление, поэтому я не думаю, что это как-то связано.

Я что-то сделал не так? Что я могу сделать, чтобы добиться энергопотребления, аналогичного тому, что описано в статье?

, 👍3


1 ответ


Лучший ответ:

3

Оказывается , регулятор напряжения был AMS1117, а не MIC5205-KB50/KB33/KBAA, как в статье. Разрыв его дал мне ток холостого хода 0,026 мА, что даже лучше, чем я надеялся.

,