Почему на разных моделях Arduino Pro Mini время разное?

Я работаю над проектом, использующим 5-вольтовую плату Arduino Pro Mini. Для экономии энергии я выключаю и просыпаюсь каждые 15 минут, чтобы проверить уровень заряда батареи, а затем снова выключаю. Этот цикл повторяется 8 раз, когда я просыпаюсь, а затем запускаю мой основной код, проверяя датчики и передавая показания на ESP8266-1 для отправки информации в Adafruit. Я собрал три устройства, используя одни и те же компоненты/конфигурацию и абсолютно одинаковый код. На одной плате Arduino Pro Mini время выполнения составляет около 1 часа 55 минут, на другой — около 1 часа 56 минут 30 секунд, а на третьей — около 1 часа 59 минут 50 секунд. Почему между этими тремя значениями есть разница? Я могу понять разницу в несколько секунд, исходя из того, как быстро ESP8266-1 подключается к интернету и передает данные, но разницу в 4 минуты я не понимаю. Может кто-нибудь объяснить, почему так происходит? Или мне стоит опубликовать это где-нибудь в другом месте? Спасибо.

, 👍0

Обсуждение

вероятно, зависит от кода, @jsotola

Что вы используете для пробуждения? Не могли бы вы свести свой набросок к минимальному, воспроизводимому и полному примеру? Пожалуйста, [редактируйте] свой вопрос, чтобы добавить новую информацию., @the busybee

Сканирование Wi-Fi занимает от 6 секунд, а иногда и более 10 секунд... Подключение к серверу также может зависеть от сетевого трафика и готовности сервера... Если вы запрограммируете Arduino Pro Mini на включение только раз в 2 часа, вы всё равно увидите разницу в 4 минуты? Кроме того, используете ли вы внешний кварцевый резонатор в режиме отключения питания или внутренний генератор (8 МГц или 128 кГц) вашего Pro Mini?, @hcheung


1 ответ


2

Arduino Mini Pro использует процессор ATMEGA328. Этот процессор поддерживает шесть режимов сна (описано в этом техническом описании).

Кроме того, существуют методы, которые можно использовать для повышения энергосбережения до уровня в несколько мА и ниже. Один из таких методов — использование сторожевого таймера (WDT), работающего на внутреннем генераторе, для пробуждения процессора.

Из технического паспорта:

Atmel ® ATmega328P имеет усовершенствованный сторожевой таймер (WDT). WDT — это таймер, подсчитывающий циклы отдельного встроенного в кристалл Генератор 128 кГц

Более медленный генератор, вероятно, позволит сэкономить на энергопотреблении. Однако маловероятно, что такой генератор будет столь же точным, как высокочастотный кварцевый генератор, используемый в ATMEGA328 при нормальной работе.

Если требуется более точная продолжительность сна, рассмотрите возможность корректировки времени сна для компенсации различий между процессорами. Обратите внимание, что внутренний генератор ATMEAG328 128 кГц может быть менее стабильным при изменении температуры, чем кварцевый генератор.

,

Этот генератор с частотой 128 кГц действительно известен своей неточностью и нестабильностью... но он потребляет очень мало энергии., @Edgar Bonet