Arduino Nano ATmega328P не засыпает ни с <LowPower>, ни с <avt/sleep.h>
Я работаю над проектом Arduino Nano с батарейным питанием. Мне действительно нужно, чтобы это экономило энергию в течение нескольких часов подряд, поэтому я обратился к библиотеке Arduino LowPower и avr / sleep.h, чтобы выполнить эту работу.
Однако, что бы я ни делал, не похоже, что правление не собирается спать. У меня есть образец скетча, который пытается перевести плату в спящий режим, а затем переключает реле, когда оно просыпается, но оно всегда переключает реле сразу после загрузки, так что это означает, что оно не перешло в спящий режим.
Я также измерил ток, поступающий на плату, и он постоянно составляет 14 мА. Я бы ожидал увидеть гораздо меньшую ничью, пока он спит.
Вот два фрагмента кода, которые я пробовал, один с низкой мощностью, а другой с avr / sleep.h
void setup(){
pinMode(relayPin, OUTPUT);
}
void loop(){
// Этот вызов, похоже, ничего не делает
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
toggleRelay(); // Это выполняется непрерывно, без указания времени ожидания
}
Вот другой с низкой мощностью
void setup(){
pinMode(relayPin, OUTPUT);
}
void loop(){
// Этот вызов, похоже, ничего не делает
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
// Это выполняется непрерывно, без указания времени ожидания.
// Я бы ожидал, что он будет переключаться только каждые 8 секунд
toggleRelay();
}
Наверное, я делаю что-то глупое, но не могу понять, что именно... Какая-нибудь помощь? Большое спасибо!
@Santanor, 👍2
1 ответ
Лучший ответ:
Я не знаю о библиотеке LowPower. Однако в вашем
тесте на основе avr-libc вы забыли перевести устройство в спящий
режим с помощью sleep_mode()
:
void loop() {
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // выбираем режим глубокого сна
sleep_mode(); // теперь переходим в спящий режим
toggleRelay(); // выполняется при пробуждении
}
Помните, что если вы не включили источник пробуждения, который активен в выбранном вами режиме, микроконтроллер может находиться в режиме ожидания до тех пор, пока не будет отключено питание или не будет выполнен внешний сброс.
- Самая низкая мощность, возможная в Arduino
- Как перевести ATtiny/ATmega в режим глубокого сна (чтобы годами работать от батарей), но при этом обнаруживать нажатие кнопки?
- Как запрограммировать чип ATmega328 au tqfp32 (SMD)?
- Использование Arduino Nano для программирования (как ISP) автономного 328p
- Кнопка сброса работает без питания?
- Случайно закоротил 5 В на GND на Arduino Nano. Могу ли я повторно использовать ATmega328p?
- Разница в загрузчике между Atmel328p (сквозное отверстие) и Atmel328p au (smd)
- Пронуться после отключения питания чтобы проверить датчик а затем снова заснуть
О, это было оно, да! Тяга упала прямо до 5 мА. Спасибо! Я знал, что это должно быть что-то глупое, о чем я забыл., @Santanor