Настройка энергосбережения

Тема в разделе "Arduino & Shields", создана пользователем ORLENOK, 13 фев 2018.

  1. ORLENOK

    ORLENOK Гик

    Добрый день!

    Интересует несколько вопросов:
    1) Может быть создать тему в которой будет подробно описано о энергосбережении в ардуино? Я находил много разных тем в интернете, в том числе и на зарубежных сайтах. Большинство из них сводится к тому, что нужно выкинуть (в буквальном смысле) всё лишнее и использовать только то, что вам необходимо. Мне, как человеку с железом работающему гораздо меньше, чем с программным кодом это сделать не очень удобно. И когда я ищу информацию о энергосбережении на ардуино я хочу узнать, как настроить именно ардуино, а не остатки от него.
    2) В какое состояние приходит ардуина после пробуждения? Например:
    Код (C++):
    void goSleep()
    {
      power_adc_disable();
      set_sleep_mode(SLEEP_MODE_PWR_DOWN);
      cli();
      sleep_enable();
      sleep_bod_disable();
      sei();
      sleep_cpu();
      sleep_disable();
    }
    Будет ли после sleep_disable() включен BOD и ADC? Почему-то в интернете есть информацию, что нужно писать строки выключения, но нигде не видел строк включения.
    3) BOD, я так понимаю выключает плату, если напряжение питания упало ниже определенного уровня?
    4) Что будет если в режиме сна сильно упадёт напряжение питания?
    5) Я использую arduino nano + nrf24l01 + dht11. Сейчас сон сделан так, как в коде выше. Прерывание по IRQ от NRF. Что можно ещё отключить, чтобы уменьшить энергопотребление? И в правильной ли последовательности указаны команды?
     
  2. b707

    b707 Гуру

    Правда такова, что все, что вы обсуждаете выше - имеет смысл только на голом микроконтроллере и абсолютно бессмысленно, к примеру, на Ардуино Нано. Дело в том, что регулятор напряжения, переходник USB-UART и светодиод питания на Нано потребляют около 4-7 мА НЕЗАВИСИМО от того, уходит МК в сон или нет. На фоне этого экономить микроамперы, выключая к примеру ADC - абсолютно смешно. Это все равно что бороться за экономию топлива. имея в бензобаке огромную дыру :)
    И именно поэтому все статьи на эту тему начинаются с того, что с ардуины должно быть выкинуто лишнее. Если вас интересует энергосбережение - забудьте о готовых ардуино, поставьте в свою поделку отдельный микроконтроллер АТМЕГА328. Это совсем не сложно освоить, программировать его можно точно так же как Уно или Нано - в Ардуино ИДЕ
     
    Airbus нравится это.
  3. ORLENOK

    ORLENOK Гик

    Так в том то и вопрос, как уменьшить эту дыру, без несения координальных изменений.
    Я согласен, диод можно убрать - это не паять плату заново.
    Читал пост где-то, что просто режиме set_sleep_mode(SLEEP_MODE_PWR_DOWN) потребление энергии падает в 2 раза. Это существенно в любом случае. Что ещё можно изменить?
    В пером сообщении есть ещё вопросы) Может на них кто нибудь ответить?
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Вам же уже ответили?Снести нах все диоды СН-340 резисторы.А лучше вообще взять голую Мегу-328 без кварца на внутреннем Гене и написать код на С++ или Асме с работой из прерываний а в основном цыкле sleep. Я даже несколько дней одному челу код на Си под Т-13 выкладывал. И чего это весь народ так озаботился экономией электричества?Все чтоли в Зелёные подались?Или деньги на батарейки кончились?Вот и ответы на большинство Ваших вопросов.
     
    b707 нравится это.
  5. b707

    b707 Гуру

    Без внесения кардинальных изменений это в принципе невозможно.
    В 2 раза это просто ничто. В принципе, не куроча плату - можно без особых проблем уменьшить потребление в 5-10 раз. Но это тоже полная ерунда. Сравните - взяв отдельный контроллер, можно получить потребление в 10 тысяч раз меньше.
    Возьмем вашу схему " arduino nano + nrf24l01 + dht11". Без спящего режима оно проработает от батарейки часов 5. Со спящим режимом - сутки. А если вместо Нано взять голый МК - год и больше.

    Поэтому и мало статей о том, как сделать "энергоэффективную Ардуино Нано" - потому что это никому не интересно. А так, в принципе, все рекомендации, исложенные в статьях для голых МК - подходят и для Нано, можете изучать и пробовать.
     
    DetSimen и Airbus нравится это.
  6. Airbus

    Airbus Радиохулиган Модератор

    Это два термина (энергоэффективная и Ардуино) взаимоисключающие.
    п.1 Огромное количество бесполезной и жрущей периферии.
    п.2 Неоптимально установленые фьюзы без которых Ардуино не Ардуино.
    п.3 Неоптимальный софт-непрерывно выполняемый цЫкл Void(loop) выполняемый непрерывно и заставляющй МК потреблять электроэнергию на ненужные операции.
     
  7. ORLENOK

    ORLENOK Гик

    Лично для меня - не удобно тянуть провод до места расположения платы. Проще сделать небольшую коробку в которую всё спрятать.
    Можно подробнее?
    Это если не отправлять в сон. А если выполнить и уснуть - что выполняется в цикле?
     
  8. b707

    b707 Гуру

    ORLENOK - в этих пунктах главное - п.1 Он обуславливает 99.99% потребления платы.
    Последний раз повторяю - вы заходите не с того конца. Не удалив всего лишнего с платы - вы просто не заметите эффекта от большинства настроек спящего режима.

    Не тратьте время впустую.
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Подробнее-смотрите сами Кварц16 мГц-не самый экономичный режим.Без него (режима) Ардуино не будет работать должным образом в среде IDE или будет с глюками.Это первое что пришло на ум.Подробнее читайте про фьюзы.Ещё есть SUT1 и SUT0 определяющие время старта в.т.ч. и после просыпания МК а также СКРОТ определяющий размах тактирующего сигнала.всё выставлено по-максимуму оно и понятно чтоб 100% работало.
    Можно в цыкле спать-да но всё равно это будет выполняться не так как в Ассемблере или С++ это надстройка всё равно будет крутиться и жить своей жизнью.И потом работа в прерываниях в IDE Ардуино очень ограничена это только INT0 и INT1.Чего Вы зацепились за Ардуинью?Что Вам мешает взять Чип Мега-328 и на асме или на Си написать код?Я например так и делаю-пишу на асме простые програмки чтоб МК меньше жил своей жизнью и меньше кушал.Другово способа я не знаю.
     
    Последнее редактирование: 13 фев 2018
  10. b707

    b707 Гуру

    Орленок, для уменьшения потребления нужно снижать частоту чипа и напряжение питания. Это делается фьюзами. И конечно же, это невозможно на готовой плате.
    Насчет Ардуино ИДЕ Airbus не вполне прав - чип можно программировать и в Ардуино ИДЕ и не обязательно на ассемблере.
    Не понятно, чего вы так держитесь на Нано? Я первую атмегу328 перешил на второй месяц работы с ардуино, не имея ни малейшего "железячного" опыта в прошлом. Там всего-то надо освоить пару несложных операций. Это ничуть не сложнее работы с готовыми платами. программировать переучиватся не нужно - можно продолжать работать в ИДЕ.
     
  11. Airbus

    Airbus Радиохулиган Модератор

    А я люблю на Асме иногда тряхнуть стариной.Типа есть ещё порох.И всё видно куда и что.И никаких непонятных библиотек.Но это когда есть время и желание и несложные задачи.b707 ну её эту IDE както всё сложно в ней вне Ардуиньи.Вот Кодвижн для жЫрных и ленивых котов-как я.
     
    parovoZZ нравится это.
  12. mcureenab

    mcureenab Гуру

    А что сразу ATMega328? У AVR есть куча других хороших и разных моделей микроконтроллеров.
     
  13. b707

    b707 Гуру

    я не спорю, но атмега328 - стандрт де факто и если человек боится оторваться от Нано - ему проще будет начать с 328-ого
     
    Airbus нравится это.
  14. ImrDuke

    ImrDuke Гик

    Можно еще взять "arduino pro mini 168 3.3v"
    У меня удаленный датчик температуры от аккумулятора нокии работает несколько месяцев без подзарядки.
    Раз уж хочется взять готовую плату.
     
  15. Airbus

    Airbus Радиохулиган Модератор

    Например?Т-13 хороший МК но мало памяти и ног Т-2313/4313 без ADC да и памяти тоже маловато а Мега8/168/328 то что надо самый оптимальный вариант по функционалу да и по цене.Есть огромная линейка у AVR бесспорно но либо инвалиды типа Т-13/45/85 Т-26 туда же и Т-2313 иже с ними либо навороченые (и жрущие!) МК.
     
    Последнее редактирование: 14 фев 2018
  16. parovoZZ

    parovoZZ Гуру

    Поэтому все дружно переходим на L от STM. Либо TI.
     
  17. DetSimen

    DetSimen Guest

    Tiny85 прекрасно подходят для автономных датчиков "первой линии". Там где особых ресурсов не надо, обработать 1-2 даччика и дать команду 1-2 устройствам или передать данные "командиру" и уснуть. Для этих задач, IMHO, они идеальны. Например, датчик уровня - насос в бочке. Датчик влажности - пищалка в цветочном горшке, датчик дыма - вентилятор. Или DS18B20 за окном. И памяти хватает для программирования в IDE, и ног, чтобы включить исполнительный механизьм.
    IMHO.
     
  18. Sencis

    Sencis Гик

    В больших проектах можно попробовать использовать "энергетический процессор" контроллер который управляет питанием вашего проекта ну и сам конечно должен потреблять минимуму энергии)) В таком случае можно использовать и достаточно мощное железо в тоже время эффективно экономить энергию включая его по времени или событиям.
     
  19. Airbus

    Airbus Радиохулиган Модератор

    Друзья мои!Всё это хорошо но важные элементы должны питаться всегда и бесперебойно ибо смысл в них отпадает.Был у меня датчик протечки на Тини-13.Работал сцуко в супер пупер мега режиме.Лет 5 от одной батарейки.И вот в тот самый момент когда я полетел в Иркутск батарейка села (она ж не вечна правда?)и сразу видимо почуяв это лопнул шланг холодной подводки.Хорошо дочка случайно пришла кота покормить и вовремя заметила быстро убрала и вниз ничего не протекло.И спрашивается накуя такая экономия?И запитал я датчик от 220 вольт адаптера с резервным аккумом 7Д01.И стал жить поживать и горя не знать.По сведениям из инета кетайская зарядка для Мабилы нечувствительна для электросчётчика.Вот такой режим энергосбережения у меня.А сейчас хочу поставить электроклапан на ХВ и ГВ.И спать спокойно.Там какая экономия....Зато спокойствие
     
    b707 нравится это.
  20. b707

    b707 Гуру

    согласен с Airbus - не надо этих крайностей... какой-то "энергетический процессор"...

    Устройство должно питаться от батареек в двух случаях:
    - если нужна мобильность
    - если в месте установки нет розетки

    Все остальное - "от лукавого". Прежде чем думать о экономии элетроэнергии - прикиньте потребление типичной электронной самоделки - это же миллиамперы или чуть больше. Сколько денег на этом вы собрались наэкономить? 2-3 рубля в месяц? А во сколько обойдутся батарейки? :)
     
    Airbus нравится это.