Контроллер с минимальным потреблением

10mills
Offline
Зарегистрирован: 17.02.2018

Всем доброго дня.

Для начала опишу свой проект и трудности с ним.

Собственно это простой автоматический ночник, но есть нюанс :)

Логика его следующая, он включается на минуту только если в комноте потушили свет, при очень плавном затемнении он не сработает. И второе, он работает на батарейках, это важно.

В борьбе за микроамперы сделал на аттини85, думал будет меньше чем атмега, но нет, в чистом виде при 5В есть 8 мА, что очень много. Хотелось бы, чтоб на одном комплекте АА он мог протянуть не меньше года.

Вопросы вот какие, можно ли уменьшить потребение без режим сна.

Будет ли смысл от сна на 250 мсек, ночник мониторит ошвещение раз в 250 мсек. в полсекунды уже появляется неприятная задержка. 

Или может возможно собрать подобное без МК?

ВН
Offline
Зарегистрирован: 25.02.2016

попробуйте уточнить, что занчит "потушили быстро"

т.е. это должно быть Время за которое сигнал с датчика изменился от сих до сих 

Bront
Offline
Зарегистрирован: 05.04.2016
Наверное как-то можно.
Вы потребляемый ток всего устройства замеряли?
 
Speed Grade
– ATtiny25V/45V/85V: 0 – 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
– ATtiny25/45/85: 0 – 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
• Industrial Temperature Range
• Low Power Consumption
– Active Mode:
• 1 MHz, 1.8V: 300 µA
– Power-down Mode:
• 0.1 µA at 1.8V
triac
triac аватар
Offline
Зарегистрирован: 03.05.2018

10mills пишет:

можно ли уменьшить потребение без режим сна.

1. Поставьте на микроконтроллер часовой кварц 32 КГц и сделайте это частоту системной тактовой частотой.

2. Поставьте микромощный линейный регулятор с током потребления порядка 1 мкА на 2...2.5В и сделайте это напряжение основным напряжением питания.

Ток потребления пропорционален тактовой частоте и напряжению питания. Выполнив пп. 1 и 2, вы получите ток потребления порядка 20..50 мкА.

10mills
Offline
Зарегистрирован: 17.02.2018

ВН пишет:

попробуйте уточнить, что занчит "потушили быстро"

т.е. это должно быть Время за которое сигнал с датчика изменился от сих до сих 

Да, он срабатывает только если свет был выключен и стало достаточно темно.

triac пишет:

1. Поставьте на микроконтроллер часовой кварц 32 КГц и сделайте это частоту системной тактовой частотой.

2. Поставьте микромощный линейный регулятор с током потребления порядка 1 мкА на 2...2.5В и сделайте это напряжение основным напряжением питания.

Ток потребления пропорционален тактовой частоте и напряжению питания. Выполнив пп. 1 и 2, вы получите ток потребления порядка 20..50 мкА.

Спасибо, выглядит обещающе, ток в 50 мкА был бы отличным результатом.

Уже просто снизив нитание до 3.3В и понизив частоту до 1МГц я получил 1.5 мА

Просто я использую Ардуино IDE с готовыми настройками для тини85, а там минимальная 1МГц.

Тогда вопрос, можно ли в качестве этого регулятора использовать цепочку диодов, потому как с 1117 снижения тока нет, видимо он что то "подъедает"?

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

10mills пишет:
Тогда вопрос, можно ли в качестве этого регулятора использовать цепочку диодов, потому как с 1117 снижения тока нет, видимо он что то "подъедает"?


Что подъедает?
Вы когда-нибудь что-нибудь слышали про падение напряжения?

b707
Offline
Зарегистрирован: 26.05.2017

10mills пишет:

Тогда вопрос, можно ли в качестве этого регулятора использовать цепочку диодов, потому как с 1117 снижения тока нет, видимо он что то "подъедает"?

а зачем вам вообще регулятор? - питайте напрямую от батарейки

triac
triac аватар
Offline
Зарегистрирован: 03.05.2018

10mills пишет:

Тогда вопрос, можно ли в качестве этого регулятора использовать цепочку диодов

Не советую. Купите малопотребляющий регулятор, их множество: MIC5265, AP2138, MCP1711, STLQ020, XC6215, NCP553SQ, TPS78225, и т.д. и т.п.

b707 пишет:

а зачем вам вообще регулятор? - питайте напрямую от батарейки

Тоже вариант. Две свежие батарейки АА как раз дадут 3В, а разряженные - не менее 2В.

Logik
Offline
Зарегистрирован: 05.08.2014

А я бы сразу посчитал, что больше скажется на сроке жизни батарей - потребление контроллера в режиме ожидания или потребление светодиодов за время свечения подсветки. Еще не понял это "Будет ли смысл от сна на 250 мсек, ночник мониторит ошвещение раз в 250 мсек. в полсекунды уже появляется неприятная задержка. " Откуда полсекунды? Мы спим 250мсек, проснулись, отмониторили состояние датчика и сново спим. Кстати если датчик показывает что темно, то можна спать и подольше, резко свет не выключат;)

Собрать на рассыпухе вполне возможно, нужен одновибратор, например на 555, запускаемый сигналом с дифференцирующей цепочки.

b707
Offline
Зарегистрирован: 26.05.2017

10mills пишет:

Просто я использую Ардуино IDE с готовыми настройками для тини85, а там минимальная 1МГц.

вот только что собрал датчик на Тиньке85, настройки из Ардуино ИДЕ, 1МГц.  Потребление в спящем режиме порядка 8-10 мкА. Это я к тому, что Ардуино ИДЕ не мешает делать экономичные девайсы.

10mills
Offline
Зарегистрирован: 17.02.2018

b707 пишет:

вот только что собрал датчик на Тиньке85, настройки из Ардуино ИДЕ, 1МГц.  Потребление в спящем режиме порядка 8-10 мкА. Это я к тому, что Ардуино ИДЕ не мешает делать экономичные девайсы.

Согласен, просто я говорил о том, что минимально я могу выставить 1МГц, но с засыпанием все должно работать. Должно, а вот не работает. Тут очевидно недостаток моих знаний, я очень слабо разбираюсь в МК и биты, делители, сдвиги регистров- мне сложно понять.

Вот к примеру попробовал это скетч https://github.com/enjoyneering/Arduino_Deep_Sleep/blob/master/arduino_deep_sleep.ino

Думал, сейчас подставлю свою функцию и будет как надо. Но почему то н зарабтало. Если я ставлю множетель 1

while (watchdogCounter < 4) //wait for watchdog counter reached the limit, WDTO_8S * 4 = 32sec.

то оно работает, но время почти в два раза дольше, а если 4 или 8 то вообще не работает.

Далее, не работает delay(), то есть там где всетодиод должен гореть три секунды, он загорается на секунду, а если выстовить частоту 16МГц, то просто мигнет. Причем, даже если я поставлю delay(100000) все равно горит секунду.

там есть две закоментированные строчки

wdt_disable();            //disable & stop wdt timer

wdt_enable(WDTO_1S);      //enable wdt timer

вот с ними delay() работает как надо

Правильно ли  я понимаю, что в этом месте

ISR(WDT_vect)
{
  watchdogCounter++;
}

мне нужно вызывать мою функцию, в главном цикле оставить arduino_sleep(); а строчку с счетчиком просто убрать и использовать сторожевой таймер с нужной мне (250мс) задержкой?

Но минимально у меня получилось 250мкА, и то, пришлось, пока, убрать фоторезистор, с ним еще +200мкА, поменяю на 100кОм. 

 

10mills
Offline
Зарегистрирован: 17.02.2018

Logik пишет:

А я бы сразу посчитал, что больше скажется на сроке жизни батарей - потребление контроллера в режиме ожидания или потребление светодиодов за время свечения подсветки. Еще не понял это "Будет ли смысл от сна на 250 мсек, ночник мониторит ошвещение раз в 250 мсек. в полсекунды уже появляется неприятная задержка. " Откуда полсекунды? Мы спим 250мсек, проснулись, отмониторили состояние датчика и сново спим. Кстати если датчик показывает что темно, то можна спать и подольше, резко свет не выключат;)

Собрать на рассыпухе вполне возможно, нужен одновибратор, например на 555, запускаемый сигналом с дифференцирующей цепочки.

Смысл есть, за сутки он срабатывает раза 2-3 максимум.

Я имел в виду, что если спать подольше, скажем полсекунды, то он сработает примерно с этой же задержкой.

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

 

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

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Что бы на фото резистор не сильно реагировало потребление - пин в режиме входа без подтягивающего резистора?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А wdt на 250 мсек к бывает?

ss7
Offline
Зарегистрирован: 30.06.2018

Кстати, интересна схожая тема. Видел библиотеку, которая вводит плату в глубокий сон и просыпается по датчику, линк не могу найти.

ss7
Offline
Зарегистрирован: 30.06.2018

Нашёл, на английском правда.

"How to Run an Arduino for Years on a Battery"

https://openhomeautomation.net/arduino-battery/

Вкратце, предлагается использовать чип Atmega328PU (P - низкое энергопотребление) без адруины, но можно и на любом. И библиотеку JeeLib для оптимизации. Он использует датчик движения для активации и получились следующие цифры:

  • LED off, without the JeeLib library: 6.7 mA
  • LED on, without the JeeLib library: 8.8 mA
  • LED off, with the JeeLib library: 43 uA (!)
  • LED on, with the JeeLib library: 2.2mA
b707
Offline
Зарегистрирован: 26.05.2017

ss7 пишет:

Кстати, интересна схожая тема. Видел библиотеку, которая вводит плату в глубокий сон и просыпается по датчику, линк не могу найти.

для этого не нужна никакая особая библиотека, это штатный режим микроконтроллера. Открываете даташит, страница 367 - и видите в табличке: Atmega328, VCC 3v, PowerDown mode -от 4 до 15мкА

А библиотека ваша расходует примерно в 5-10 раз больше.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Да проще все - читаем тему про attiny13 - там примеров спящего режима вагон.