1 2 3 4 5 6 7 8 9 10 5.5/10 5,50оценок: 4

Контроллер для теплицы на Arduino - 2

Тема в разделе "Теплицы и парники", создана пользователем Cofessor, 27.04.18.

  1. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    В этом наборе мне непонятно зачем там часы DS3231. Сама Атмега время считает ненамного хуже, чем эти часы, поскольку уход обычного кварца всего раз в 5-10 больше. Будет время на полминуты в месяц уходить или на минуту в год - для теплицы-то какая разница?

    Спецификация интерфейса I2C не ограничивает число устройств на шине. Она ограничивает максимальную емкость шины, несколько сотен пФ. Каждое I2C устройство добавляет грубо говоря примерно 10 пФ, так что десяток-другой устройств - не проблема. Проблема в кабелях.

    Погонная емкость кабеля может достигать порядка 100 пФ на метр. Ранние версии стандарта I2C прямым текстом требовали, чтобы длина линии связи была не больше 3 м. Для того, чтобы обеспечить связь на больших расстояниях, есть разнообразные буферы, при помощи которых можно связать между собой "островки I2C" на расстоянии до нескольких сотен метров.

    Стандартная величина подтягивающих резисторов I2C равна 4.7 кОм. Без проблем можно ставить и 2.2 кОм, особенно если емкость шины приближается к пределу.
     
  2. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376
    Адрес:
    Брянск
    Это для простоты, я же не программист. С программированием я повозился некоторое время чтобы освоить азы, сделать элементарное меню, реакцию на нажатие клавиш, на датчики, выдачу управляющих воздействий на ИМ и оставил. Прошлой весной начал эксперименты с исполнительными механизмами, но там всё равно управление ИМ даже по комбинированным условиям, примитивное по сути, вроде нет стимула изучать язык глубоко.
    DS3231 у меня на плате, шнурок до дисплея тоже будет очень короткий. Остаются 2 датчика: Si7021 и BH1750 - нет смысла делать их длинными, полагаю длина будет в пределах метра. У какого кабеля меньше ёмкость - симметричного, витой пары или коаксиального? Полагаю, коаксиального. Или же можно взять симметричный 3-х жильный и среднюю жилу не использовать.
    Общая ёмкость определяется как, сложением ёмкостей всех подключённых кабелей?
    Для длинных кабелей датчиков DS18B20 я использовал вот такие фильтры:
    222222.jpg Может и на I2C такие поставить?
     
  3. Лифтанутый
    Регистрация:
    11.04.08
    Сообщения:
    4.648
    Благодарности:
    13.632

    Лифтанутый

    УВЕРЕННЫЙ

    Лифтанутый

    УВЕРЕННЫЙ

    Регистрация:
    11.04.08
    Сообщения:
    4.648
    Благодарности:
    13.632
    Адрес:
    Москва
    Это не ошибка, а недоразумение. У меня две версии ArduinoIDE (1.6 и 1.8) и такое пишет только новая 1.8.8. Не обращайте внимания.
    Сигнал RTS (reset) -это выход UART и служит для аппаратного сброса. Как бы сообщает что передачу скетча на плату закончил - теперь перехожу на прием данных:aga:
    по поводу пинов мини Д1 скажу так: напрямую у меня D0,D5,D6,D7 - работают как выходы а D2 - вход для трех DS18B20. Еще остается D1, но если подключаться к I2C, то D1 и D2 будут заняты. Но еще есть SPI D8. но его без бубна никак не использовать. Есть один аналоговый А0. Остальные тоже никак.
    5f91a1.png
     
  4. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    Как ни смешно, но все кабели (кроме коаксиала) примерно одинаковы. Если изоляция имеет большую диэлектрическую проницаемость (как ПВХ), так ее делают толще, тож на тож получается. Но коаксиал ставить - это перебор, неоправдано. На 1 м годится любой инструментальный кабель, годится телефонный Cat3, годится Эзернетовский Cat5/Cat6, и т. п. Если использовать дешевый и доступный Cat5/Cat6, то для уменьшения емкости можно использовать каждую пару как один провод. Емкостная связь между соседними парами Cat5/Cat6 довольно мала, такова конструкция кабеля, емкость между проводами в одной паре существенно больше.

    Считается емкость между сигнальным проводом и земляным. Из двух сигналов, SCL и SDA, берется та емкость, какая больше - но обычно они одинаковые, если не делать каких-то извращений.
     
  5. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372
    Адрес:
    Ногинск
    От 5ти штук на https://jlcpcb.com/
    если первый заказ то 2 бакса, далее 4 бакса, но доставка все портит - 8-9 долларов
    Хотя если посчитать в сравнении с самодельной то не так у ж и дорого, зато плата промышленного производства и отличного качества. Маски, переходные отверстия металлизированные, это то что дома за такие деньги не сделаешь.
    Если делать схему в https://easyeda.com/ то очень удобно, рисуешь плату, плату можно отобразить в 3D если компонентам присвоить 3D модели то можно убедиться что никто никому не мешает. И сразу и заказать.
     
  6. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372
    Адрес:
    Ногинск
    Максимально количество I2C микросхем ограничивается максимальной емкостью шины 400 пФ. А так же адресацией, адрес каждого устройства должен быть уникальным на шине. У меня прекрасно работают DS3231, дисплей на SSD1309, расширитель портов MCP23017, сенсор Si7021, "удлиннитель" p82b715 к нему через кабель КПСВ 4х0.5 длинной 20 метров подсоеденяется такая же p82b715 а за ней стоят BMP280 и TSL2561.
     
  7. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376
    Адрес:
    Брянск
    Но всё-таки, суммарную ёмкость то как правильно считать? Допустим подключены 2 датчика: Si7021 и BH1750 длиной по 1 м. В любой момент времени работает только один из датчиков. Правильно ли я понимаю, что общая ёмкость будет равна сумме емкостей всех датчиков, т. е. в данном случае определяться длиной шины 2 м?
    Или можно поставить разделительные диоды и отсечь ёмкость от не работающих датчиков?
    2-3 м - это не много, но запас надёжности никогда не лишен.
     
    Последнее редактирование: 22.12.19
  8. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372
    Адрес:
    Ногинск
    Да, суммарной емкостью провода и датчиков. У на меня трех мерах КПСВ 4х0.5 BME180 и TSL2561 работали стабильно, на пяти метрах уже начинались проблемы.
     
  9. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376
    Адрес:
    Брянск
    А правильно я понимаю что максимальная ёмкость больше зависит не столько от того что использован интерфейс I2C, сколько от того, как устроен входной каскад МК? Т. е. МК не может считывать заваленные фронты? Я когда делал фильтры для DS18B20, то поставил там между сигнальной линией и землёй небольшой конденсатор - фронты завалились (смотрел по эмулятору осциллографа в Proteus) и сигнал перестал считываться. Уменьшал ёмкость - сигнал принимал постепенно прямоугольную форму, в конце концов конденсатор вообще выбросил. Т. е. паразитная ёмкость влияет без разницы какой протокол обмена, разве что частоты у них могут быть разные.
     
  10. __AK__
    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407

    __AK__

    сноб

    __AK__

    сноб

    Регистрация:
    19.10.15
    Сообщения:
    951
    Благодарности:
    407
    Положим, емкость каждого датчика 10 пФ, емкость 1 м кабеля 100 пФ. Суммарная емкость составит 220 пФ. Спецификация I2C требует макс. емкость не более 400 пФ.

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

    Если нужно большое расстояние, то, как я упоминал выше, есть специальные буферы, позволяющие связать две (или более) шины I2C в одно целое на расстоянии до нескольких сотен метров.

    Не в МК дело, а в устройствах I2C. В них физический уровень всегда реализован аппаратно, на заваленных фронтах они просто не будут работать. А в МК (т.е. в мастере шины) реализация I2C может быть и аппаратная, и программная (бит-банг), в последнем случае ограничений на длительность фронтов для мастера вообще никаких нет, можно хоть раз в час менять сигнал на линии и раз в полчаса проверять, какой там на линии уровень установился.
     
  11. Лифтанутый
    Регистрация:
    11.04.08
    Сообщения:
    4.648
    Благодарности:
    13.632

    Лифтанутый

    УВЕРЕННЫЙ

    Лифтанутый

    УВЕРЕННЫЙ

    Регистрация:
    11.04.08
    Сообщения:
    4.648
    Благодарности:
    13.632
    Адрес:
    Москва
  12. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372
    Адрес:
    Ногинск
    Чуть выше подробнейший ответ от __AK__
    Протеус покажет идеальный вариант, я бы на него не ориентировался. Можно прикупить недорогой осциллограф с логическим анализатором, если интересно смотреть что же реально происходит, вот там уже будет реальная картина.
    Для длинных линий использовать p82b715, отлично работает, проверил.
     
  13. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376
    Адрес:
    Брянск
    В идеальном варианте мы на экране итог видим, где всё смешано, а по идеальному понятней что от чего и как зависит.
    Впрочем, пришёл к выводу что для моих двоих датчиков с метровыми проводами о ёмкости можно не беспокоиться.
     
  14. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.548
    Благодарности:
    3.372
    Адрес:
    Ногинск
    Получил наконец то корпуса для датчиков.
    2020-01-02 21-30-08.JPG

    Но сразу скажу, воду они пропускают, то есть если поместить датчик в таком корпусе в воду, то датчик зальет водой.
    Для моих целей они подгадят хорошо, замер температуры и влажности в курятнике, от пыли защитят.
     
  15. Cofessor
    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376

    Cofessor

    Виталий

    Cofessor

    Виталий

    Регистрация:
    23.06.13
    Сообщения:
    9.127
    Благодарности:
    8.376
    Адрес:
    Брянск
    Привет! Можно узнать как твой проект по разработке универсального контроллера продвигается?
    У меня же не задался этот год. Нарисовал 2 варианта плат на 8 выходов, уж и пакеты с фотошаблонами собрал для экспозиции, да в приступе дурного настроения выкинул. Ещё 2 недели думал чего хочу и решил: полный набор, как все делают - приводы форточек, полив, окна, обогрев и т. п. - это не мой путь. Надо добивать что-то одно, для этого не нужно 8 силовых выходов, нужно добавить сбор данных. Но как? - Это же локальная WiFi сеть и я в этом ничего не смыслю.
    Короче, вернулся к разработке контроллера на ESP. С прошивкой по WiFi в прошлом году решил - в скетч для этого добавляется всего 3 строчки - работает безукоризненно. Пару датчиков и дисплей LCD1602 не без труда, но добавил, а на сборе данных, естественно, сел - описалово не мог найти, что да как должно делаться. В конце концов нашёл в Вики, хоть немного понимать начал: нужно научиться передавать байты из ESP в компьютер и обратно.
    Как я понял, для передачи данных нужны, как минимум, две библиотеки: ESP8266WiFi.h и ESP8266WebServer.h, а в компе их нужно собирать в файл и представлять в удобном виде с помощью языков JavaScript, CSS и HTML.
    В общем, охренеть, но без этого я не буду знать есть ли эффект от моего управления, поэтому никуда не денешься, это надо как-то сделать, хотя бы в примитивном виде, а тогда уже внедрять, обладая полной информацией.