Как понизить энергопторебление Arduino с подключенными сенсорами и радиомодулем

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Имею Arduino Pro Mini 3.3В c демонтированным светодиодом питания
Ток потребления в рабочем режиме около 10мА

В режиме сна:
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
Ток снижается до 200мкА

При подключенной модулей DS18B20, BMP085 и NRF24L01 ток в режиме сна не снижается ниже 1мА

Как кто брится с потреблением периферии?

Может запитать все через полевик и включать цифровым выход, потом заново инициализировать?

 
 
 
MaksMS
Offline
Зарегистрирован: 11.03.2013

 DS18B20, BMP085 не особо жручие , а вот NRF24L01 жрет -так-то там есть команды управления питанием,но говорят не сильно помогает ,если делать жоско,то его можно включать через ключ цифрового вывода ,но да,его необходимо каждый раз иницилизировать..

А кстати ,зачем тут нужен DS18B20 ,если BMP085 уже содержит термометр ?

Jek
Offline
Зарегистрирован: 05.01.2014

MaksMS пишет:

А кстати ,зачем тут нужен DS18B20 ,если BMP085 уже содержит термометр ?

 

По всей видимости, для измерения отрицательных температур.

MaksMS
Offline
Зарегистрирован: 11.03.2013

Тогда вообще не вижу смысла BMP085 на улицу вытаскивать , давление что в помещении,что на улице одинаково и проще этот датчик подключить к принимающей части этой всей конструкции

Да и есть подозрение, что у BMP085 термодатчик устанавливается для определения более точного давления и на улице при минус 20 он в этом случае будет врать.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

MaksMS пишет:

 DS18B20, BMP085 не особо жручие , а вот NRF24L01 жрет -так-то там есть команды управления питанием,но говорят не сильно помогает ,если делать жоско,то его можно включать через ключ цифрового вывода ,но да,его необходимо каждый раз иницилизировать..

А кстати ,зачем тут нужен DS18B20 ,если BMP085 уже содержит термометр ?

Вот вывожу я обе цифры, а они почти на градус отличаются 8-( )

NRF-ку прямо на цифровой ввод посатить по питанию?

 

MaksMS
Offline
Зарегистрирован: 11.03.2013

Так-то и  DS18B20  и BMP085 достаточно точные ,не понятно кто врет.

Можно попробовать напрямую подключить, но через ключ транзистор будет наверно получше.

axill
Offline
Зарегистрирован: 05.09.2011

Поишите поиском экономия питания, нет смысла тут все рекомендауии перечислять еще раз

из ориентиров - в активном режиме МК должен потреблять не больше 1ма, и то с запасом

в режиме power_down меньше 0.1мка

надо избавляться от кварца, снижать частоту, отключать АЦП, все неиспользуемые вводы выводы переводить на вывод и тд у атмела есть appnote на этот счет

у nrf24 есть команда включения режима экономии, но можно и принудительно гасить питая от вывода МК. От этого же вывода можно питать и датчики. Использовать мосфет лишнее, тем более при таком напряжении питания он не будет входить в насыщение и на нем будет падать несколько десятых вольта

Ds18b20 не предназначен для низкого потребления. Он сам много потребляет и если даже ему обрубать питание за необходимые ему 750мсек на измерение он все равно дофига сожрет. Есть куча куда более подходящих датчиков. Тот же bm085 расчитан на низкое потребление, но термометр в нем капризный, есть целый ряд требований по его правильной установке. И кстати у него несколько режимов точности.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

axill пишет:

у nrf24 есть команда включения режима экономии, но можно и принудительно гасить питая от вывода МК. От этого же вывода можно питать и датчики. Использовать мосфет лишнее, тем более при таком напряжении питания он не будет входить в насыщение и на нем будет падать несколько десятых вольта

Ds18b20 не предназначен для низкого потребления. Он сам много потребляет и если даже ему обрубать питание за необходимые ему 750мсек на измерение он все равно дофига сожрет. Есть куча куда более подходящих датчиков. Тот же bm085 расчитан на низкое потребление, но термометр в нем капризный, есть целый ряд требований по его правильной установке. И кстати у него несколько режимов точности.

С показаниями DS18b20 и BMP разобрался. Поставил датчики максимально близко - разница в показаниях не более 0.1С. Выкинуд DS из схемы

От вывода МК запитать всю периферию не удалось.
BMP085 работал норамльно, а NRF-ка перестала передавать пакеты
Попробовал radiop.powerDown() - работает

Добился тока в режиме сна 0.16мА

Меньше видимо не получится, так как использую Arduino Pro Mini со стабилизатором на плате, а он тоже кушает ток. 

А тактовую "на ходу" без перепрошивки фьюз ведь не изменить?
 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Недавно про питание от пина была тема.

http://arduino.ru/forum/apparatnye-voprosy/pitanie-ot-pina-arduino-pro-m...

И как будто всё удалось сделать .....

axill
Offline
Зарегистрирован: 05.09.2011

Кварц отключить без перепрошивки фьюзов не получится, а частоту понизить можно. Посмотрите даташит в разделе system clock, там есть описание регистров и так называемый prescale. По умолчанию частота делится на 1. Можно выставить другое число максимально низкое, но достаточное. Нужен компромис между потреблением и временем работы в активном режиме. Помните, что срок работы от батареи зависит не от тока потребления, а от потребляемой мощности. Время так же важно как и ток.

странно, что nrf от пина не работает. Проверьте сколько она потребляет в режиме power off, может и не надо от пина питать

У bm085 есть два пина питания. Один напрямую, второй через стабилизатор. Вам нужно питать напрямую

режим у МК вы какой используете? Power down?

axill
Offline
Зарегистрирован: 05.09.2011

Еще. Стабилизатор для ардуины можно применить внешний, отключив тот что на плате. Хорошие стабилизатора потребляют единицы мка

отключите ADC и компоратор у МК

отключить не используемые таймеры

Все неиспользуемые входы ардуины надо в одном из варианте 1. Оставить в режиме входа и закоротить на gnd. 2. Перевести в режим вывода и оставить на них LOW

На используемых входах там где допустимо (где не возникнет утечки тока) перед сном переводить на вывод и ставить LOW. Помните, что состояние выводов у МК в режиме сна сохраняется и если там есть куда утекать току, он будет утекать. На линиях I2C подключенных к bmp085 стоят подтяжки к плюсу питания. На время сна их нужно ставить в режим ввода

смысл таких действий с входами описан у атмела. Чтобы снизить потребление нужно исключить случайное переключение транзисторов подключенных ко входам, для этого на входах должно быть однозначное состояние исключающее наведение помех. Поэтому или ставим на вход и цепляем к gnd или где. Gnd не подходит к vcc. Либо ставим на выход

axill
Offline
Зарегистрирован: 05.09.2011

Еще в копилку идей

у bm085 есть выход готовности данных. 

Можно еще немного сэкономить если делать так:

- проснулись по watchdog, включили bm085, отправили команду на замер темп, заснули

- проснулись по INT0 от bm085 сняли темп и отправили запрос на давление, заснули

- проснулись от int0 сняли давление, выключили датчик, включили радио и отправили данные, все отключили, заснули

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

axill пишет:

Кварц отключить без перепрошивки фьюзов не получится, а частоту понизить можно. Посмотрите даташит в разделе 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@yan...
Offline
Зарегистрирован: 24.05.2016

Добрый день!

Вы могли бы скинуть скетч Вашей программы на мою электронную почту, а то я никак не могу разобраться с прерываниями и управлением.

zelinskij.i@yandex.ru

Condensator
Offline
Зарегистрирован: 02.06.2017

sav13 пишет:
NRF-ку прямо на цифровой ввод посатить по питанию?
Проблема с NRF , помогите решить   http://arduino.ru/forum/apparatnye-voprosy/nrf-ne-peredaet-redkie-pakety