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

Arduino Mega. Контроллер теплицы. Хроники - 3.0

Тема в разделе "Умный дом", создана пользователем Анкор Плюс, 27.04.17.

Статус темы:
Закрыта.
  1. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    У меня макет натурный, часть рамы с форточкой, мотор вал гайка. два геркона магнит
     
  2. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Ну тогда вам и карты в руки, что называется :) Надо вместе это дело доточить, хотя, конечно, по телефону гланды не вырезают - сложновато, руки в трубку не лезут :)]:aga: Но мы постараемся :)
     
  3. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Вроде как срабатывают концевики, двигатель останавливает, с момента срабатывания кнопки до стопа ~5 сек, много, у меня к примеру полный ход 31 сек
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Все промежутки настраиваются в прошивке - контроллер же не моментально рассылает пакеты по RS-485 ;) Он шлёт пакеты с состоянием контроллера раз в N секунд, всё настраивается. Также и опрос обратной связи - тоже не моментально, а раз в N времени - и такая настройка есть.
     
  5. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    это сложно :) я к тому что этому стремно доверять стоп мотору. А модулем нельзя вначале стоп, а потом слать что все стоим, в крайних точках
     
  6. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    С другой стороны для меня это не актуально, у меня при срабатывании геркона рвется цепь питания реле
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Настройка всё равно есть :) По поводу "модулем нельзя вначале стоп" - алгоритм простой: сначала контроллер опрашивает модули обратной связи, получая информацию с концевиков. Потом - посылает текущее состояние контроллера. Всё это делается не постоянно, а через настраиваемые промежутки времени. Т. е. как только контроллер запросит модуль информацию с концевиков - он её получит. Как только контроллер отправит на модуль состояние каналов окон - модуль её получит. И вот эти "как только" - они не сиюминутно, а с настраиваемыми промежутками.

    Можно в прошивке модуля принудительно делать стоп, если вы об этом, я допилю.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @Shelllonn, обновил прошивку исполнительного модуля. Сейчас работает так: например, контроллер попросил нас открыть окно - мы смотрим - если окно не двигалось до этого - то мы запускаем его на движение, при этом игнорируя положение концевиков N времени (чтобы дать окну отъехать от концевика). При этом сообщаем контроллеру по его запросу, что ни один концевик не сработал. Как только проходит N времени - начинаем проверять концевики, и как только любой из них сработал - тут же глушим мотор, при этом, как только контроллер запросит у нас информацию по концевикам - он получит уже актуальную информацию, без её маскирования.

    В общем, обмен положением концевиков от модуля к контроллеру идёт с небольшой хитростью - модуль не сообщает о сработавших концевиках, пока не отъедет с крайнего положения. Это нужно потому, что контроллер просто тупо посылает своё состояние в шину через промежутки времени, и т. к. контроллер считает, что окно ещё открывается (не прошло время работы мотора) - ему не надо знать о положении концевика, пока окно от него не отъедет.

    На практике попробовал - сейчас диод гаснет быстро, практически сразу после нажатия на концевик. При этом в конфигураторе видно, что окно меняет свой статус, не отработав полное время открытия/закрытия.

    Надеюсь, в этот раз учёл всё, но, поскольку код уже немного запутанный - не исключены косяки мелкие, потихоньку выловим ;) Гонял окно, пока не надоело - сходу не заметил никаких вещей, типа мигания светодиода (что сигнализировало бы о неправильной работе логики), ни неотработки состояния каналов.

    Я уже сам начинаю путаться с этими модулями, привязками состояния контроллера к слотам и т. п. :) Полчаса вдуплял в коде, что к чему, пока не дошло, что у нас хитрая система, и при желании можно так привязать настройки модуля, что он будет только левые каналы окон отрабатывать :)]:aga: А в ситуации с обратной связью по концевикам ждётся как бы прозрачной настройки, когда окна привязаны последовательно и попарно. Короче - веселуха :)

    И да - надо уже заканчивать с проектом. Вот допилим обратную связь - и будем подводить итоги, кмк. Конечно, пока не поправим все нюансы - никто бросать не будет, но в целом - уже хочется финиша :)
     
  9. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    @DIYMan, теперь загоняет в крайнее положение, срабатывает концевик, мотор останавливается. далее включаешь в противоположную сторону, мотор не включается, отключаешь в ручную концевик, мотор запускается. Настройки дефолтные, правлю только пины реле
     
  10. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Хочется :)
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Поменяйте настройки времени игнорирования концевиков в прошивке, поставьте там больше секунды. Я же на кнопках тестирую, там всё пальчиками, тонкостей не поймаешь. У вас, возможно, за секунду не успевает отъехать от концевика, вот и останавливается.
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @Shelllonn, я сейчас попробую переписать прошивку, чтобы не надо было задержки игнорирования указывать, и всё бы работало в противоход - как только концевик сработал, при последующем движении в противоположную сторону чтобы его значение игнорировалось.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Фуухх! Обновил конфигуратор, основную прошивку, и прошивку исполнительного модуля. С введением обратной связи появилось очень много тонкостей, постараюсь объяснить на примере:

    1. Контроллер держит внутри себя состояние, типа "10" - это значит, что первое окно открывается, "01" - первое окно закрывается, "00" - первое окно никуда не движется;

    2. Периодически контроллер пхает состояние в шину RS-485, чтобы интересующиеся - продублировали его у себя;

    3. Периодически контроллер опрашивает обратную связь, чтобы понять - сработали ли концевики на конкретном окне, и если сработали - то окну выставляется внутренняя позиция согласно сработавшему концевику;

    4. Конфигуратор с помощью пользователя посылает команды контроллеру, например - открыть первое окно.

    Вводные понятны, теперь к тонкостям: допустим, мы послали контроллеру команду "открыть первое окно". Контроллер выставил у себя в статусе "10", выставил на своих пинах нужные уровни - и отдыхает. Далее пришло время опрашивать обратную связь, или - посылать слепок состояния, причём что будет первым, а что вторым - не формализуется, ибо промежутки между опросом того и другого - настраиваются.

    Теперь представьте: окно открывается, статус "10". На текущий момент настало время опрашивать обратную связь. Опросили - а там сработавший концевик закрытия. Вывод? Окно закрыто, всё вроде верно. Однако - мы ЕЩЁ НЕ ОТОСЛАЛИ модулю команду на выполнение - время не пришло. По итогу - юзер открывает окно, и в конфигураторе видит статус "закрыто", зашибись.

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

    Что касается исполнительного модуля с обратной связью: переписал так, что сразу отрубается мотор по срабатыванию одного из концевиков, при этом контроллеру правильно отдаётся статус концевиков (при открытии - не сообщаем статус концевика закрытия, при закрытии - наоборот) - это позволило избавиться от ненужной настройки "время игнорирования положения концевиков".

    Гонял долго, на кнопочках и светодиодах - отрабатывает. @Shelllonn, пробуйте - теперь всё должно быть ок, я надеюсь. Ибо все эти нововведения только усложняют отладку - вот отладим мы обратную связь, а потом окажется, что где-то в другом месте сломалось, не дай бог. Скажем, модуль без обратной связи я ещё не тестировал, а надо бы, после стольких изменений.

    Очень жду хороших новостей - что всё, мол, работает нормально. А пока пойду тестировать модуль без обратной связи ;)

    Правка - точно, модуль без обратной связи не отзывается, что-то поломалось. Чиню.
     
    Последнее редактирование: 20.02.18
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Всё норм с исполнительным модулем - забыл принудительно ногу DE чипа RS-485 посадить на землю при выключенной обратной связи, уже крыша шуршит потихоньку :)
     
  15. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
Статус темы:
Закрыта.