Столкнулся со странной проблемой. В наличии несколько xduino Uno. Все с Китая. Делаю проект, где важна экономия (термодатчик и радиоканал). Ожидаю потребление меньше 1 мА в режиме ожидания (опрос каждые 8 секунд, в остальное время POWERDOWN и WATCHDOG). С Nano довёл до 6.7 мА в режиме сна (около 3 мА берёт светодиод POW). Дошёл, наконец, до замены Nano ATmeg'ой на внутреннем кварце, ожидая увидеть суперезультаты. Но попал впросак - 80 мА в режиме сна на пяти вольтах питания! Дальше интересней - при 4.5 В питания потребление резко падает до 60 мА. А вот при 3 В получаем то, что и требовалось. (Правда озвучить точный результат не могу - оба имеющихся в наличии мультиметра начинают одинаково глючить - в режиме 20 мА показывают 0.01, а в режиме 2000 мкА показывают 1200. Уж как-то сильно отличаются данные?! Видимо, сильное влияние самого мультиметра? Предполагаю, что второй вариант более правдоподобен, т.е. 1.2 мА.) Замерял также отдельно в составе Uno (питание к Vin и Gnd) - там показывает при тех же условиях 30 мА! А вот другая дешёвая китайская xduino Uno, где чип НЕ в DIP-корпусе, с тем же скетчем показывает как и Nano - около 6 мА. Все замеры делал и без какой-либо обвязки, и в готовом проекте - результат одинаков. Но что может быть за прикол на 5 вольтах? Китайская подделка ATmega328p? Или какая-то неучтённая мной особенность? Скетч для тестов простой. Может из тех, кто уверен в оригинальности своей Arduino или ATmeg'и проверит? Код (Text): #include "LowPower.h" boolean led = false; void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, led ? HIGH : LOW); led = !led; LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF); } Спасибо!
А вы как питаете устройство? Чтобы получить максимум экономии нужно питать через +5В и GND, но с UNO даже в этом случае ещё будет впустую сливаться энергия на стабилизатор +3.3В.
Ну, оптимизироать Uno по энергозатратам мне даже не приходило в голову. Это как-то жестоко всё-таки. Даже Nano у меня тут только в качестве тестов. Мне нужная чистая ATmega. С ней одной голой и проблема. А вот как раз, когда ATmega стоит внутри Uno, амперметр показывает 30 мА, питаясь от 9В. А когда стоит отдельно, без какой-либо обвязки, выдаёт 80 мА, питаясь от 5В (AVCC и GND). С моей точки зрения это какой-то бред. Т.е. винить Uno тут как раз не приходится. Но может я где-то чего-то не понимаю и не учитываю? Мне надо как-то решить проблему, потому что в проекте я собирался питать от одной батарейки АА через повышающий преобразователь на 5В, либо от трёх АА напрямую (рабочий диапазон устройства - 3.0-5.5В). А такой расклад по затратам портит всю картину. Это всего на пару дней работы устройства. Жду ещё партию ATmega328 - проверю на них. Хотя они тоже с Китая. Адекватного теста не получится. Ну а пока буду ориентироваться на 3В (от кроны через понижающий преобразователь). Просто крона мне совсем не нравится - и запас энергии небольшой, и в наших краях они могут спокойно исчезнуть из магазинов (деревня вдали от цивилизации). Надо ещё потестить. Никак в голове не умещается - что здесь не так? Ну а кто-нибудь может просто свою итальянскую Arduino Uno потестить амперметром на этом скетче? Сколько покажет?
Я всё равно не понял, как вы питали atmega. Я бы на вашем месте попробовал запитать atmega от 3 батареек (или 4 аккумуляторов) формата АА, и при этом подключил бы GND и VCC (как минимум). Возможно ещё подключил бы AVCC к VCC.
Спасибо. Та же картина. Я писал наверху, что другая UNO с чипом ATmega328p-AU (не знаю точно, как корпус называется - маленький, квадратный, 32 ножки) показала 6 мА. Нет держателя для трёх батареек (заказал, идут почтой. У нас тут только так - сходить в ближайший магазин не получится ), поэтому на них не проверял. Но сейчас попытаюсь что-нибудь смастерить. Подключал от импульсного блока питания (в Амперке брал) к AVCC, так как от VCC не запустилась. Это я всё методом тыка, к сожалению, а надо бы в даташит залезть - выяснить, чем они отличаются. Но в общем, буду разбираться сейчас, где я что намудрил. Спасибо.
Всё, разобрался! Сам виноват! Первый раз, когда подключал, запитал только через VCC, но почему-то atmega не запустилась. (Сейчас уже не понимаю - почему? Делаю тоже самое, и всё работает!) И я не долго думая (и не смотря в даташит) запитал через AVCC. Чип заработал, но и выдал те самые и 80 мА, и 60 мА. (Ну а это оказалось питание для АЦП! А я через него питал весь чип "Шарик, ты балбес" (c).) Запитал нормально через VCC и AVCC и всё пошло на ура! Результат лучше, чем я ожидал. В режиме сна: +5 В - 7 мкА; +3 В - 4 мкА. Ну вот, случилось мне счастье. Теперь можно и в проект. Благодарю за помощь. Заставили головой работать и читать, наконец-то, даташит
Здравствуйте. Я очень мало разбираюсь в Ардуинах, по этому прошу помощи у Гуру. У меня простой скейч. ШД крутит 5 секунд и простой 55 секунд. Эти 55 секунд Ардуино жрет 25мА, что не есть хорошо. Ардуино НАНО. Как уменьшить потребление? Мой скейч. Что не так делаю, подскажите пожалуйста. Код (C++): #include <LowPower.h> #include <CustomStepper.h> // Подключаем библиотеку управления шаговым двигателем. По умолчанию настроена на двигатель 28BYJ-48-5V CustomStepper stepper(8, 9, 10, 11); // Указываем пины, к которым подключен драйвер шагового двигателя int example = 1; // Переменная, отвечающая за смену режимов void setup() { stepper.setRPM(10); // Кол-во оборотов в минуту stepper.setSPR(4096); // Кол-во шагов на полный оборот. } void loop() { { LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); // Enter power down state for 8 s with ADC and BOD module disabled } if (stepper.isDone() and example == 1) { delay(55000); example = 2; } if (stepper.isDone() and example == 2) { stepper.setDirection(CW); stepper.rotateDegrees(216); // Поворот вала в градусах example = 1; } stepper.run(); }
войти в спячку, просыпаться раз в полсекунды и смотреть сколько прошло времени. Если меньше 55 сек, то спать дальше.
смотреть примеры, которые должны быть к библиотеке LowPower, которая у вас используется. Если там примеров нет, это займет больше времени - придется гуглить "LowPower Arduino examples".
Отличный тутор http://www.gammon.com.au/power По нему тренировался на 328 камне. Во время сна с подключенными nRF, 18b20 у меня что-то меньше микроампера. От двух АА с замером температуры и выходом в эфир раз в десять секунд - пошёл четвертый месяц, напруга на батарейках - 2.88В. Но там всё жестко - если нужна пауза (между командами на замер температуры и её получением, например), то в сон. Пробуждаем nRF из сна - а сами в сон.