Режим энергосбережения в Arduino Nano

Тема в разделе "Технологии радиолюбителя", создана пользователем Mr_dsa1, 24 сен 2018.

  1. Mr_dsa1

    Mr_dsa1 Нерд

    Здравствуйте. Перед тем как начну сразу говорю что недавно начал заниматься Arduino и пока еще "зеленый" в этой теме, так что не судите строго. Ну а теперь перейду к самому вопросу, дело в том что я сделал умную подсветку (код и схема будут ниже), сама светодиодная лента питается от сети (с ней проблем нет), а от Ардуинка от батареек, ну так вот в этом и проблема, дело в том что батареек хватает примерно на 3 дня. А мне надо чтоб как минимум на 1 недельку хватало. Сразу скажу что читал о энергосбережении, sleepmode и т.п, но никак не могу до конца понять, возможно ли реализовать это на моей подсветке, дело в том что большинство примеров на кнопках и т.д, а можно ли пробуждать Ардуину по HIGH сигналу с ИК датчика движения ? И если да, то можете кинуть самый простой пример реализации, к примеру чтоб по HIGH сигналу от датчика движения включался светодиод, а когда движения нет, Ардуинка засылала и возможно ли это вообще ? Надеюсь на Вашу помощь.
    Схема - https://www.screencast.com/t/ry8m3aZez
    Код:
    Код (C++):
    bool IsMosfetOn = false;  // мосфет выключен
    // bool IsMosfetOff = false;  // мосфет включен
    #define move_sensor 8   // датчик движения
    #define mosfet 3   // мосфет модуль
    void setup() {
      pinMode(mosfet, OUTPUT); // Объявляем пин реле как выход
      digitalWrite(mosfet, HIGH); // Выключаем мосфет - посылаем высокий сигнал
      delay(1000);
      digitalWrite(mosfet, LOW);   //Выключаем мосфет - посылаем низкий сигнал (это для тестирования что всё хорошо)
      Serial.begin(9600);
    }

    void loop() {
      int light = analogRead(A0);
      Serial.println(light);

      if ((light < 75 ) && (digitalRead(move_sensor) == HIGH ))
      {
        if (!IsMosfetOn)
        {
          for (int i = 0; i <= 255; i++)
          {
            delay(5); // ставим задержку для эффекта
            analogWrite(3, i);
            delay(10); // ставим задержку для эффекта
            IsMosfetOn = true;
          }
        }
         }
      else if (digitalRead(move_sensor) == LOW)
      {
        if (IsMosfetOn)
        {
           for(int i=255;i>=0;i--)  
        {
          analogWrite(3, i);
          delay(5); // ставим задержку для эффекта
          IsMosfetOn = false;
        }
       }
      }
    }

     
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    Легко. Сигнал с датчика приходит на пин 2 или 3 - они могут пробуждать из сна.
    Но сначала узнай потребление самого датчика, а то может и нет смысла Ардуину усыплять.
     
  3. Mr_dsa1

    Mr_dsa1 Нерд

    Спасибо, узнаю. Но я никак до конца не могу понять режим сна, можно пример, в котором что то подобное будет осуществлено. И источник где поподробнее будет расписано о режиме сна, буду очень благодарен.
     
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    Спящий режим
    http://www.polesite.ru/?p=1273

    Использование режима сна для экономии энергии
    http://www.gammon.com.au/power

    3 года от одной батарейки
    http://jeelabs.org/2013/09/08/3-years-on-one-set-of-batteries/
    https://www.drive2.ru/b/1282902/

    Понижение тактовой частоты, режимы энергосбережения:
    http://student-proger.ru/2013/10/energopotreblenie-arduino/
    http://inet-deal.mpa.ru/articles/arduino-003.html
    https://www.reddit.com/r/arduino/comments/o5443/so_you_want_an_easy_way_to_save_power/
    http://arduino.ru/forum/apparatnye-voprosy/rezhim-energosberezheniya

    Пробуждение Arduino из спящего режима по нажатию кнопки (у тебя вместо кнопки сигнал с датчика)
    https://bigdanzblog.wordpress.com/2...-from-sleep-on-pin-state-change-code-example/
    https://sites.google.com/site/vanyambauseslinux/arduino/ispolzovanie-preryvanij-arduino#p5
    http://arduino.ru/forum/obshchii/spyashchii-rezhim
     
    ИгорьК и Mr_dsa1 нравится это.
  5. Любой пин может пробуждать.
     
    parovoZZ нравится это.
  6. Mr_dsa1

    Mr_dsa1 Нерд

    Вы уверены? Насколько я знаю только 2 и 3, откуда вы взяли информацию что любой ? (просто у меня как раз датчик движения припаян на 8 пин и если любой, то было бы хорошо)
     
  7. Mr_dsa1

    Mr_dsa1 Нерд

    Большое спасибо, буду изучать.
     
  8. В даташите есть таблица, pcint поднимает из любого сна. pcint есть на всех пинах.
     
  9. ZAZ-965

    ZAZ-965 Гуру

    @Mr_dsa1, а зачем питать часть схемы от батареек, а часть от сети? У HC-SR501 на плате есть место для подключения фоторезистора - возможно получится обойтись без ардуино.
     
    Mr_dsa1 и Пушной звер нравится это.
  10. DetSimen

    DetSimen Guest

    Хочешь энергосбережения - выкинь Ардуино, поставь голый контроллер. Там, на плате Ардуины, овердохрена вещей, которые в сон не загонишь, соотвецтвенно отправлять камень спать лишено всякого смысла.
     
    Mr_dsa1, Mitrandir, parovoZZ и ещё 1-му нравится это.
  11. тогда и атмегу тоже.
    или таки взять внешнее питание.
     
  12. parovoZZ

    parovoZZ Гуру

    инженерный бред.
     
    Mitrandir нравится это.
  13. DIYMan

    DIYMan Guest

    О, интересно! Если несложно - ткните пальцем, где оно там, и для чего это, собственно, можно поюзать. Вижу незапаянное место с маркировкой RT - это оно?
     
  14. DetSimen

    DetSimen Guest

    Помимо стандартных органов чувств пироэлектрического датчика на плате hc SR501 можно еще установить фоторезистор. Часто свободные контакты на плате для подключения имеются. На схеме ниже его контакты обозначены как RL.При подключении фоторезистора устройство будет работать только в темноте. При освещенном фоторезисторе, его сопротивление мало, и напряжение на входе А3 микросхемы DA1 будет недостаточным для включения устройства.
    Регулировать порог включения можно подключив параллельно резистору R9 подстроечный резистор. желательно подключить через сопротивление в 100 - 200 Ом чтоб не допускать замыкания при малых сопротивлениях фоторезистора.
     
    ИгорьК, Mr_dsa1 и DIYMan нравится это.
  15. DetSimen

    DetSimen Guest

  16. parovoZZ

    parovoZZ Гуру

  17. DetSimen

    DetSimen Guest

    Хде? О_О
    baba.jpg
     
  18. DIYMan

    DIYMan Guest

    Деда, спасибо!
     
  19. ZAZ-965

    ZAZ-965 Гуру

  20. https://ru.malwarebytes.com/ в помощь )