Как понизить энергопторебление Arduino с подключенными сенсорами и радиомодулем
- Войдите на сайт для отправки комментариев
Чт, 17/04/2014 - 21:16
Имею Arduino Pro Mini 3.3В c демонтированным светодиодом питания
Ток потребления в рабочем режиме около 10мА
В режиме сна:
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
Ток снижается до 200мкА
При подключенной модулей DS18B20, BMP085 и NRF24L01 ток в режиме сна не снижается ниже 1мА
Как кто брится с потреблением периферии?
Может запитать все через полевик и включать цифровым выход, потом заново инициализировать?
DS18B20, BMP085 не особо жручие , а вот NRF24L01 жрет -так-то там есть команды управления питанием,но говорят не сильно помогает ,если делать жоско,то его можно включать через ключ цифрового вывода ,но да,его необходимо каждый раз иницилизировать..
А кстати ,зачем тут нужен DS18B20 ,если BMP085 уже содержит термометр ?
А кстати ,зачем тут нужен DS18B20 ,если BMP085 уже содержит термометр ?
По всей видимости, для измерения отрицательных температур.
Тогда вообще не вижу смысла BMP085 на улицу вытаскивать , давление что в помещении,что на улице одинаково и проще этот датчик подключить к принимающей части этой всей конструкции
Да и есть подозрение, что у BMP085 термодатчик устанавливается для определения более точного давления и на улице при минус 20 он в этом случае будет врать.
DS18B20, BMP085 не особо жручие , а вот NRF24L01 жрет -так-то там есть команды управления питанием,но говорят не сильно помогает ,если делать жоско,то его можно включать через ключ цифрового вывода ,но да,его необходимо каждый раз иницилизировать..
А кстати ,зачем тут нужен DS18B20 ,если BMP085 уже содержит термометр ?
Вот вывожу я обе цифры, а они почти на градус отличаются 8-( )
NRF-ку прямо на цифровой ввод посатить по питанию?
Так-то и DS18B20 и BMP085 достаточно точные ,не понятно кто врет.
Можно попробовать напрямую подключить, но через ключ транзистор будет наверно получше.
Поишите поиском экономия питания, нет смысла тут все рекомендауии перечислять еще раз
из ориентиров - в активном режиме МК должен потреблять не больше 1ма, и то с запасом
в режиме power_down меньше 0.1мка
надо избавляться от кварца, снижать частоту, отключать АЦП, все неиспользуемые вводы выводы переводить на вывод и тд у атмела есть appnote на этот счет
у nrf24 есть команда включения режима экономии, но можно и принудительно гасить питая от вывода МК. От этого же вывода можно питать и датчики. Использовать мосфет лишнее, тем более при таком напряжении питания он не будет входить в насыщение и на нем будет падать несколько десятых вольта
Ds18b20 не предназначен для низкого потребления. Он сам много потребляет и если даже ему обрубать питание за необходимые ему 750мсек на измерение он все равно дофига сожрет. Есть куча куда более подходящих датчиков. Тот же bm085 расчитан на низкое потребление, но термометр в нем капризный, есть целый ряд требований по его правильной установке. И кстати у него несколько режимов точности.
у nrf24 есть команда включения режима экономии, но можно и принудительно гасить питая от вывода МК. От этого же вывода можно питать и датчики. Использовать мосфет лишнее, тем более при таком напряжении питания он не будет входить в насыщение и на нем будет падать несколько десятых вольта
Ds18b20 не предназначен для низкого потребления. Он сам много потребляет и если даже ему обрубать питание за необходимые ему 750мсек на измерение он все равно дофига сожрет. Есть куча куда более подходящих датчиков. Тот же bm085 расчитан на низкое потребление, но термометр в нем капризный, есть целый ряд требований по его правильной установке. И кстати у него несколько режимов точности.
С показаниями DS18b20 и BMP разобрался. Поставил датчики максимально близко - разница в показаниях не более 0.1С. Выкинуд DS из схемы
От вывода МК запитать всю периферию не удалось.
BMP085 работал норамльно, а NRF-ка перестала передавать пакеты
Попробовал radiop.powerDown() - работает
Добился тока в режиме сна 0.16мА
Меньше видимо не получится, так как использую Arduino Pro Mini со стабилизатором на плате, а он тоже кушает ток.
А тактовую "на ходу" без перепрошивки фьюз ведь не изменить?
Недавно про питание от пина была тема.
http://arduino.ru/forum/apparatnye-voprosy/pitanie-ot-pina-arduino-pro-m...
И как будто всё удалось сделать .....
Кварц отключить без перепрошивки фьюзов не получится, а частоту понизить можно. Посмотрите даташит в разделе system clock, там есть описание регистров и так называемый prescale. По умолчанию частота делится на 1. Можно выставить другое число максимально низкое, но достаточное. Нужен компромис между потреблением и временем работы в активном режиме. Помните, что срок работы от батареи зависит не от тока потребления, а от потребляемой мощности. Время так же важно как и ток.
странно, что nrf от пина не работает. Проверьте сколько она потребляет в режиме power off, может и не надо от пина питать
У bm085 есть два пина питания. Один напрямую, второй через стабилизатор. Вам нужно питать напрямую
режим у МК вы какой используете? Power down?
Еще. Стабилизатор для ардуины можно применить внешний, отключив тот что на плате. Хорошие стабилизатора потребляют единицы мка
отключите ADC и компоратор у МК
отключить не используемые таймеры
Все неиспользуемые входы ардуины надо в одном из варианте 1. Оставить в режиме входа и закоротить на gnd. 2. Перевести в режим вывода и оставить на них LOW
На используемых входах там где допустимо (где не возникнет утечки тока) перед сном переводить на вывод и ставить LOW. Помните, что состояние выводов у МК в режиме сна сохраняется и если там есть куда утекать току, он будет утекать. На линиях I2C подключенных к bmp085 стоят подтяжки к плюсу питания. На время сна их нужно ставить в режим ввода
смысл таких действий с входами описан у атмела. Чтобы снизить потребление нужно исключить случайное переключение транзисторов подключенных ко входам, для этого на входах должно быть однозначное состояние исключающее наведение помех. Поэтому или ставим на вход и цепляем к gnd или где. Gnd не подходит к vcc. Либо ставим на выход
Еще в копилку идей
у bm085 есть выход готовности данных.
Можно еще немного сэкономить если делать так:
- проснулись по watchdog, включили bm085, отправили команду на замер темп, заснули
- проснулись по INT0 от bm085 сняли темп и отправили запрос на давление, заснули
- проснулись от int0 сняли давление, выключили датчик, включили радио и отправили данные, все отключили, заснули
Кварц отключить без перепрошивки фьюзов не получится, а частоту понизить можно. Посмотрите даташит в разделе system clock, там есть описание регистров и так называемый prescale. По умолчанию частота делится на 1. Можно выставить другое число максимально низкое, но достаточное. Нужен компромис между потреблением и временем работы в активном режиме. Помните, что срок работы от батареи зависит не от тока потребления, а от потребляемой мощности. Время так же важно как и ток.
странно, что nrf от пина не работает. Проверьте сколько она потребляет в режиме power off, может и не надо от пина питать
У bm085 есть два пина питания. Один напрямую, второй через стабилизатор. Вам нужно питать напрямую
режим у МК вы какой используете? Power down?
Контроллер в PowerDown
ADC в OFF
BOD в OFF
NRF тоже в PowerDown. Померить ток не смог. На Ц-шке стрелка не откланяется на шкале 1.5мА. Судя под даташиту 0.1 мкА
Итого 0.16 мА в ежиме сна. Исходя из того, что сигналы посылаются редко (1раз в 3 минуты), а весь цикл работы меньше 0.5 сек средний потребляемый ток получается около 0.2 мА. При емкости AAA 500-800 - 3-4 месяца автономной работы.
Стабилизатор трогать не стал - приедут детальки, буду делать сенсор на МК без отладочной платы
Добрый день!
Вы могли бы скинуть скетч Вашей программы на мою электронную почту, а то я никак не могу разобраться с прерываниями и управлением.
zelinskij.i@yandex.ru