Посылать короткий сигнал каждые 10 секунд на Arduino
Чтобы снизить энергопотребление, я хочу выводить Arduino из режима ожидания каждые 10 секунд. Для этого необходимо аппаратное прерывание.
Есть ли такое устройство, которое может создать быстрый импульс для запуска этого прерывания? Это может быть что угодно от 10 мс до 2 секунд; неважно. Моей первой мыслью было использовать таймер 555, но этот может быть включен только 10 секунд и выключен на такое же время.
Лучшим решением для меня было бы уже собранное устройство, которое мне просто нужно было бы подключить к моему Arduino, поскольку мои познания в электронике очень низки. Или подробный план сборки, тогда я смогу собрать его сам, я полагаю?
ОБНОВЛЕНИЕ: Теперь я смог перевести Arduino в режим ожидания с помощью библиотеки Low-Power. Сначала казалось, что это не работает, потому что я хотел распечатать текст через последовательное соединение. Вместо этого я попробовал заставить внутренний светодиод мигать каждые 8 секунд, и это отлично работает.
@Cowboy_Patrick, 👍4
Обсуждение4 ответа
555 не обязательно должен генерировать 50% рабочий цикл. Даже если вы хотите использовать 50% рабочий цикл, фронт может быть RC-связан с прерыванием, чтобы уменьшить ширину импульса.
Arduino может использовать медленный тактовый генератор, например, часовой кристалл на 32 кГц, тогда он действительно потребляет очень мало энергии. Этот медленный генератор можно использовать для пробуждения вашего более энергоемкого Arduino.
Самым экономичным и аккуратным внешним решением было бы использование CD4060. Они разработаны как устройства с очень низким энергопотреблением и очень длительным периодом синхронизации.
Правильный способ сделать это — использовать внутренний сторожевой таймер для пробуждения себя от сна. Он использует независимый внутренний аппаратный генератор с низким энергопотреблением 128 кГц. Максимальное время ожидания, которое можно запрограммировать, составляет 8 секунд. Однако, если вы запрограммируете его на 5 секунд, то Arduino сможет выбирать, выполнять работу или сразу же возвращаться в режим сна снова при каждом прерывании.
Лучшим решением для вас будет использование библиотеки LowPower, которая не требует никаких внешних частей. Она поддерживает сон до 8 секунд. Если вам нужно ровно 10 секунд, вы можете написать цикл с 5 циклами и вызвать powerDown с сонностью 2 секунды.
Если вы все еще хотите использовать внешнее прерывание, см. здесь для некоторых вариантов микросхем.
Также ознакомьтесь с этой статьей, где вы найдете несколько хороших идей по снижению энергопотребления, и с этой статьей о том, как запустить Arduino на батарейке-таблетке в течение года.
Я считаю, что LTC2956 был создан именно для этой цели. Прямо из технического описания:
LTC2956 — это микромощный прибор с широким диапазоном входного напряжения, настраиваемый таймер пробуждения с кнопочным управлением.
Он периодически просыпается и включает подключенную систему для выполнения задач, таких как мониторинг температуры или захват изображений. После завершения задачи LTC2956 выключает систему для экономии энергии. Период таймера пробуждения можно настроить от 250 мс до 39 дней с использованием резисторов конфигурации
Вы можете найти техническое описание здесь: LTC2956. Вероятно, он считается дорогим по цене 1,98$ за партию 1000+.
В соответствии с ответом mr_sunshine, еще одна микросхема, которую вы могли бы использовать, широко известна как таймер 556 — это два таймера 555 в одном корпусе. Запустите один таймер на обычном рабочем цикле 50% (нестабильный) и заставьте его запустить другой таймер в моностабильном режиме для отправки короткого импульса напряжения. Найдите схему для сервоконтроллера на основе 556 или двух 555 и измените значения, чтобы получить задержку в 10 секунд. Вот ссылка на одну из таких страниц, найденную с помощью поиска в Google: Servo Exerciser
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Питание светодиодной ленты - Сколько ампер?
- Как запомнить значения переменных после перезагрузки платы Arduino Uno R3
- Power Bank самопроизвольно отключается
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- Если USB дает 5 В, как Arduino может подавать 5 В на контакт 5 В? (И еще вопрос)
- Могу ли я иметь резервное питание для устройства Arduino?
- Клон Digispark не распознается при подключении
В вашем вопросе не говорится, почему вы просто не запрограммируете второй Arduino, чтобы сделать это. Это указывает мне на то, что в вашем вопросе, возможно, отсутствуют некоторые важные детали о ваших требованиях., @Dampmaskin
Ну, общая цель — снизить энергопотребление. Поэтому второй ардуино не очень подходит, поскольку он потребляет столько же энергии, пока другой находится в состоянии ожидания., @Cowboy_Patrick
Вам следует обновить вопрос, включив в него эту информацию., @Dampmaskin
Да, это важный аспект. Я обновил его., @Cowboy_Patrick
Рассмотрите возможность подключения кварцевого RTC для использования в качестве таймера пробуждения, см., например: https://steemit.com/science/@techlife/how-to-use-a-quartz-clock-for-real-time-clock-in-avr-microcontroller, @JimmyB
Хотя это и не является предметом вопроса, имейте в виду, что типичный "Arduino" потребует модификации и удаления ненужных деталей для достижения низкого энергопотребления в режиме ожидания. Возможно, вам лучше начать с ATmega и построить именно то, что вам нужно., @Chris Stratton
это хорошее замечание... вы имеете в виду что-то вроде bareduino?, @Cowboy_Patrick