Нано, сеть 220, наличие напряжения

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем yden, 28 ноя 2018.

  1. yden

    yden Гик

    Здравствуйте.
    Подскажите пожалуйста. Нужно ардуинкой передавать по mqtt статус наличия 220в в сети. Использую нано, 4 пин цифра, реле с катушкой 220в. При наличии 220в реле замыкается и на 4 пин ардуинки приходит +5в. Она в свою очередь шлет по mqtt статус 1. 4 пин притянул 10 кОм к земле, использую библиотеку Bounce.
    Ардуинка работает очень нестабильно. Очень часто пропускает вкл\выкл наблюдаемой 220 сети.
    Вот код:
    Код (C++):
    void loop()
    {
    //проверка состояния Кситала
      if ( bouncer3.update() )
      {
        if (bouncer3.read() == HIGH)
        {
          client.publish("ihouse/security", String(0).c_str());
        }
        else
        {
          client.publish("ihouse/security", String(1).c_str());
        }
      }
    }
    Может есть более рациональный способ решения этой задачи?

    благодарю
     
  2. Vovka

    Vovka Гик

    Т.е. вы считаете нормальным постоянно "долбить" клиента???
    Может нужно сделать периодический опрос? Как считаете?
     
  3. Airbus

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

    А может лучше по событию?С использованием attachinterapt?Сразу посылаем что то.В цикле ничего не делаем.Или мигаем светодиодом.
     
  4. Во-первых, есть bounce2, которая лучше. Во-вторых, отправлять сообщения надо по фронту, а не по состоянию. Это называется bouncer3.rise(), или как-то так. В-третьих, не String(0).c_str(), а просто "0".
     
  5. yden

    yden Гик

    bouncer3.update срабатывает при обновлении на пине.
     
  6. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Вообще притягивать к земле надо через резистор менее 1 ком. А вот к плюсу - ради бога и через 10 ком. Старайтесь активным сигналом всегда делать - ноль.
     
    Последнее редактирование: 28 ноя 2018
  7. Чушь полная. И про резисторы и про микросхемы. И речь идет про конкретную микросхему, построенную без использования биполярных транзисторов вообще (не считая паразитных). Ладно, черт с ним, может внутри и есть, но входы-выходы полевые.
     
    Последнее редактирование: 28 ноя 2018
    Belkin, parovoZZ и DetSimen нравится это.
  8. parovoZZ

    parovoZZ Гуру

    обоснуй

    с какой целью?
     
    Belkin нравится это.
  9. Belkin

    Belkin Гик

    Насчет "всегда" можно и поспорить... ;)
    Там, где возможны помехи для полезного сигнала - согласен, а в остальных случаях - дело вкуса...
     
  10. parovoZZ

    parovoZZ Гуру

    мы это уже разбирали. Без привязки карты гистерезиса входного триггера МК - все эти разговоры не более, чем вилами по воде.
     
  11. KindMan

    KindMan Гик

    А зачем вообще эта библиотека? Если нужно прям кратковременные отключения регистрировать, то как сказали выше, прерывания. Иначе просто перечитывать статус с некоторой задержкой.
     
    Airbus нравится это.
  12. SergeiL

    SergeiL Оракул Модератор

    А если вставить
    Код (C++):
    Serial.print(" что-то ");
    там где стоит публикация и посмотреть в мониторе порта?
     
  13. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Дело вкуса ... - это не дело.
    Базовый элемент схемотехники микрухи - инвертор. 2 последовательных инвертора - повторитель. И тд. Висящий вход инвертора само-притягивается к плюсу, и на выходе инвертора выходит ноль. Я это видел на деле всегда.. А коль такая несиметрия присутствует, отсюда и совет по "притяжкам".
     
    Последнее редактирование: 28 ноя 2018
  14. Belkin

    Belkin Гик

    Начнем с того, что вход никуда не "самопритягивается", логическое значение на нем определяется порогом 0 и 1.
    Если вход "висящий", то считается (всегда), что его значение "неопределенО". Это одно из правил.
    Поэтому рекомендуется незадействованные пины МК устанавливать внешним обвесом в какое-либо логическое состояние принудительно. Лучше в "0" - менее энергозатратно.

    В плане используемых в работе (программе) пинов абсолютно фиолетово, какой уровень будет считаться активным. Я сам, бывает, даже в пределах одного порта использую разные активные уровни.
    Главное, чтоб программист не запутался... ;)
     
  15. parovoZZ

    parovoZZ Гуру

    поясни
     
  16. Ну на досуге посмотрите на атмегу, вместо TTL-схемотехники из 1980х.
    Только что придуманное.
    Вообще чушь.
     
  17. Belkin

    Belkin Гик

    Уже и не вспомню сейчас источник... :(
    Но не "из интернета", его у нас тогда еще не было... ;)
    Но "вбилось" навсегда, как "правило".
     
  18. Airbus

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

    О!Я тоже хотел спросить.Но есть кодеры которые без библиотек шаг не сделают
     
  19. parovoZZ

    parovoZZ Гуру

    тогда и AVR не было. А притягивать тогда к сейчас как-то неправильно)
     
  20. parovoZZ

    parovoZZ Гуру

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