Светофорная сигнализация на Arduino

Рубрика «Мастерим сами» (показываем наработки, делимся опытом, обсуждаем, ищем оптимальные решения)

Доброго здоровья всем адептам дачжелдора, энтузиастам, сочувствующим и на огонек заходящим!)))

Тема светофорного регулирования дачных железнодорожных перевозок, начатая нами в прошлом году плавно перетекает в новый, обрастая новыми участниками и новыми взглядами на эту проблему. И вот сегодня целое исследование на эту тему выносит на суд общественности Анатолий из Москвы. Постоянные читатели знают его по комментариям, которые он публикует у нас под ником Accelero.

Честно скажу, что мы – Сергей (nashpoezd) и Ваш покорный слуга – немного проконсультировали автора относительно потребностей дачжелдора, по тому опыту, который мы с Сергеем имеем в плане эксплуатации дорог, и по тем замыслам, которые у нас есть относительно дальнейшего их развития.

Слово автору:

Здравствуйте, уважаемые дачжелдоровцы!

Сам пока только приобщаюсь к данному движению и своя железная дорога ещё в планах, но тем не менее решил начать с того, что могу осуществить, не дожидаясь весны. Выбор пал на светофорную автоматику. Поскольку являюсь радиолюбителем и последнее время конструирую разные приборчики на достаточно широко известных модулях arduino, то за основу были взяты именно они. Выбор пал на arduino nano, так как он наиболее подходит для наших целей, удобен в монтаже и имеет на борту адаптер USB-TTL (я в основном использую arduino pro mini, но там адаптер отсутствует, что не очень удобно, зато цена ниже на треть).

Состояние занятости путей моя система определяет последовательным замыканием двух контактов, которые могут быть и в виде концевых выключателей, и в виде герконов, а могут быть просто контактными штырями, которые замыкаются корпусом вагонетки. На макете у меня просто контакты из скрепок. К моменту написания статьи уже испытал вариант с герконами — работает все отлично. Суть использования именно двух контактных групп в определении направления движения подвижного состава (далее ПС), т. е. Вне зависимости от того, сколько раз ПС проедет в одном направлении (допустим сцепка и каждый вагон замыкает контакты) светофор будет показывать нужный сигнал. Главное достоинство именно такой системы в том, что установить её можно практически на любую ЖД — от игрушечной до промышленной, в отличие от классической системы с замыканием рельс колесными парами, что накладывает целый ряд ограничений.

Перед тем как продолжить настоятельно рекомендую желающим собрать себе нечто подобное почитать про ардуино и/или посмотреть видео о том, что это такое, с чем его едят, как подключить к компьютеру, как прошивать, как пользоваться средой разработки Arduino IDE и т. д.

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

Итак, в первом видео речь пойдет о простейшем варианте — одном двухцветном светофоре. Понятно, что настолько примитивную схему можно было бы реализовать на одном реле, но нужно это для понимания логики работы программы, чтобы в дальнейшем Вы могли дополнить её под свои конкретные нужды. Я не являюсь программистом, поэтому уж сильно не пинайте — объясняю как могу=))

Простой двухцветный светофор

Надеюсь логику работы я донести сумел)) Дальнейшие «усложнения» всего лишь надстройки над первой программой, поэтому разобравшись с ней Вы сможете адаптировать её работу под свою ЖД. А теперь перейдём к следующему варианту. В нем присутствуют уже два светофора, которые имеют ещё и желтый сигнал, т. е. первый по ходу движения светофор показывает занятость второго светофора.

Два трёхцветных светофора

Как видите программа уже порядком усложнена, но это может показаться на первый взгляд — когда редактируешь самостоятельно все намного проще. Ну и третий вариант «развития событий» — стрелочный перевод и светофоры. Тут все уже повеселее, т. к. путь разделяется на два и надо увязать логику работы для них обоих. Три дня я ломал голову над тем, как заставить это хозяйство хоть сколь-нибудь приемлемо работать и в итоге придумал! Не без шероховатостей, но всё же!

Светофоры и стрелочный перевод

Как видите, пришлось первый светофор программно разделить на два (хотя надо бы и физически это сделать), но, тем не менее, схема рабочая.

 

Как я упомянул в первом видеоролике — для коммутации чего-то более мощного чем маленький светодиод нам нужны внешние модули/детали, такие как реле и транзисторы. Лучше всего использовать релейные модули, которые уже рассчитаны на работу с уровнями данного контроллера. В случае с arduino nano, да и практически со всей линейкой — это 5 вольт. В моих программах для управления используется высокий уровень (т. е. на выходах появляется напряжение), поэтому модули необходимо использовать с положительным управлением, но даже если под руками модуль, который работает по отрицательному уровню (логический ноль, на выходе — масса/минус), то тоже не беда — надо немного подредактировать программу. Релейные модули продаются в разных исполнениях — по одному реле, по два, четыре, восемь, десять, шестнадцать, даже 32 есть. Для управления двухцветным светофором достаточно одного реле. В случае с трёхцветным светофором лучше использовать три реле чтобы можно было реализовать мигание, но можно обойтись и двумя, т. к. реле имеют три контакта — центральный и два выходных, один из которых нормально замкнут с центральным, другой — нормально разомкнут и это можно использовать для экономии выводов контроллера, опять же с модернизацией программы.

Для ардуино существуют великое множество так называемых шильдов (плат расширения) с различными наборами датчиков, модулей, под пайку и под разъемы — на любой вкус и цвет. Можно паяться напрямую (что предпочтительнее, т. к. штырьевые контакты со временем начинают «капризничать»), а можно просто соединить модули и контроллер шлейфом. Автоматизация ограничивается лишь фантазией и умением программировать (к сожалению для меня последнее даётся с трудом) — можно сделать и шлагбаумы и барьеры, даже заставить вагонетки ездить самим и соблюдать сигналы светофоров, но как говориться «это уже совсем другая история!»

 

Надеюсь, данный материал будет полезен. Как появится что-то новое — тему буду дополнять. Всем удачи в реализации своих, даже самых безумных (в рамках закона=)) идей!

14 комментариев к “Светофорная сигнализация на Arduino”

  1. Доброе время суток.

    Насчёт светофоров…
    Советую поиграть в OpenTTD или что-то подобное — я с детства считал себя знатоком ЖД (от деда на память осталась инструкция по железнодорожной сигнализации, светофоры там, флажки, гудки и прочее, куда-то я её протерял по малолетству), безапелляционно что-то там рисовал (мечтая о реванше узкоколеек и трамваев или хотя бы о протяжённом макете в личном владении), а тут поигрался в старую детскую игрушку — и кое-что в голове вдруг решительно сместилось, в том числе и касаемо светофорной сигнализации, я вдруг ощутил застарелую свою неправоту. Теперь вот поглядываю, как там дела с «Transport Fever» (вроде та же команда разработчиков решила тряхнуть стариной), мечтаю о новом компе…

    Насчёт «Ардуино»…
    Возможно, это лишнее усложнение (для восприятия и для поиска ошибок), разве что можно уподобить садовую ЖД цифровому макету ЖД, подключая датчики, светофоры и механизмы стрелочных переводов (что уже опасно) через плату сопряжения к общему четырёхжильному кабелю (пара на питание и пара на инфообмен, как нынешние охранные сигнализации), не разводя «аналоговую» паутину и полчища релейных шкафов (как оно и было на реальных ЖД, была у деда такая фотография — он на фоне стены, выложенной снизу доверху «релюшками» размером с хороший кирпич), вот тут экономия от «цифры» реально есть (стоимость работ и собственно кабелей — при «аналоге» их много надо)…

    Ещё польза от познаний в электроники (с точки зрения дилетанта) — как-то проще самому слепить светофорные головки (с драйверами), чтоб получились надёжные и экономичные, плюс (нечаянно окунулся тут) возможность светофорного узла (характерно для автомобильных перекрёстков) дать сигнал «центру» через шину управления в случае неисправности светофорных головок и, в ожидании подмоги, перекрыть движение (красный во все стороны) или включить «аварийку» (минающий жёлтый во все стороны)…

    Ладно, извините, что так язвлю…

    Кстати, как там у «Ардуино» с защитой от взлома и добрых соседских шуток? Если плохо, то «Ардуино» — так, средство для обкатки идеи, потом придётся «платформу» посерьёзнее поискать, типа «Болида», «Парадокса» (масштабируемые охранные сигнализации с кучей опций, с возможностью удалённого контроля и управления, со специальными исполнительными платами и модулями, которым пофигу, что именно управляется через реле) или собственно светофорных систем — наверняка уже есть такие, расчитанные на уличную работу, вандалов и шаловливых хакеров…

    Короче, успехов…

    С уважением, Денис.

    Ответить
    • Доброе время суток.

      БЛИННН…

      Снова всё самое интересное вспоминается опосля…

      Есть вполне себе «взрослые» светофорные системы для подземных гаражей, возможно, что даже сопрягаемые с «Болидом» (работал монтажником слаботочных систем в фирме, которая строила большой комплекс с трёхэтажной парковкой, жильём и торговыми площадями) или управляемые им, для обезпечения безопасности в узких местах типа межэтажных пандусов и коридоров с «глухими» поворотами, чтобы избежать лобовых столкновений и заторов там. Причём принцип работы почти железнодорожный — пока первая заехавшая машина опасный участок не покинет, он будет перекрыт для следующих участников движения…

      С уважением, Денис.

      Ответить
  2. Здравствуйте! Да «взрослые» светофорные системы наверно хороши и влаго-помехозащищенность и проработанность схемных решений. Представляете цену и доступность этого оборудования. Это не лучший вариант на мой взгляд. К автору статьи: в качестве датчиков наверняка рациональнее использовать бесконтактные, а именно ультразвуковые (они есть в номенклатуре «Ардуино»). Ультразвуковой датчик вполне можно использовать для определения направления движения.С уважением Вячеслав.

    Ответить
  3. Denver_24,
    Приветствую! По поводу «общения» светофоров по шине была мысль сразу ещё до постройки макета, но это на перспективу, т.к. опыта соединения ардуин по ней у меня пока нет. По радиоканалу соединял — была необходимость, но приверженец всё же проводов. Плюсом самая сложность — разработать протокол общения, чтобы потом не переделывать все программы, а просто добавлять узлы.
    С центром управления задумка ещё только в зачатии, правда нужны такие сложности больше для автоматического подвижного состава, типа моделей как на выставках. В планах такое есть, только «моделька» будет под декавильку и лучше ей дорогу не перебегать))
    Про взлом от соседей прям доставило, говоря современным интернет-сленгом=))) У всех ли такие умные соседи?)) В этой схеме максимум как можно пошутить — контактор стрелки замкнуть, а её не трогать и вагонетка сойдет с путей, а в кустах будет слышен добрый соседский «МУ-ХА-ХАА»))
    Готовые светофорные системы есть, правда цены там на 2-3 нолика больше. Здесь себестоимость комплектующих для управления светофорами на момент написания ~400 рублей вместе с блоком реле. Самодельный светофор выйдет от 300р и до бесконечности (ну может кто из платины сделает и брильянты вместо линз).

    Вячеслав,
    Схема рассчитана под герконы — надёжнее и дешевле придумать трудно. Оптические, ультразвуковые и прочие сенсоры срабатывать будут на все подряд — будь-то лист пролетающий, птица, кошка, человек и т.д., а геркон сработает только на магнит или иной источник сильного магнитного поля, причем он может быть и пылью припорошен и снегом — сработает все равно. Дистанцию между магнитом и герконом можно подобрать от нескольких миллиметров, до 20см и больше, взяв магнит по мощнее и разнеся герконы между собой подальше.

    Ответить
    • Доброе время суток.

      ——————————
      Denver_24,

      Про взлом от соседей прям доставило, говоря современным интернет-сленгом=))) У всех ли такие умные соседи?)) В этой схеме максимум как можно пошутить — контактор стрелки замкнуть, а её не трогать и вагонетка сойдет с путей, а в кустах будет слышен добрый соседский «МУ-ХА-ХАА»))

      ——————————
      Зря смеёшься…

      Мне вот с соседями везло по жизни, даже в пьяных коммуналках, а вот от других товарищей понаслушался историй… Отравленные собаки, куры, кошки, подпёртая снаружи калитка или дверь дома — мелочи, печальная проза жизни. А вот покрышка на личном грузовичке, так мастерски надрезанная, чтобы порвалась до конца и рванула не на грунтовке возле дома, а где-нибудь на трассе на скорости за сотню…
      Объектом ненависти стать просто, тут даже без личного паровоза можно обойтись, достаточно порой хорошего волкодава или новой куртки, уж как «повезёт», опасно сей вопрос игнорировать, тем более в частном секторе, где все и всё на виду…

      —————————

      Самодельный светофор выйдет от 300р и до бесконечности (ну может кто из платины сделает и брильянты вместо линз).

      —————————
      Тут согласен, достаточно взять корпус попрочнее, трубу для стойки потолще, диоды и драйвера от именитых поставщиков — и цена сразу станет совсем другой…
      В своё время пришлось рукодельничать, платы делать на коленках, намучился, потом, когда снова припёрло (причём с деньгами было получше), сразу «Дремеля» купил — жизнь сразу стала другой. А при поточном производстве плат или фрезерный ЧПУ можно изобрести, или вдруг обнаружить, что таковой у соседей уже есть и может работать с файлами от Corel Draw…

      Ещё раз повторюсь — на светофорах и прочей СЦБ экономить можно и нужно, но стоит помнить (так, на всякий случай), что от них будет зависеть здоровье личное и всей родни, включая детей…

      Ладно, успехов.

      С уважением, Денис.

      Ответить
  4. Добрый день. Спасибо автору за подготовленный материал. Теперь вопрос чисто практический ко всем. Как бы жёлтый мигающий реализовать? Что думает сообщество? Какие есть варианты?

    Ответить
    • Немного подредактировать программу надо. Мигать он должен при какой ситуации? Т.е. стрелка переведена и он сразу мигает или загорается жёлтый, а когда заезжает вагонетка начинает мигать? И ещё интервал миганий интересен.

      Ответить
    • Доброе время суток.

      А как мигание диодов в налобном фонарике реализуется? Через ту же микросхему, через которую они в другом режиме просто и обыкновенно светят ещё на два-три режима…
      Сам, увы, ещё только мечтаю в эту область прорасти, просто читал про потуги разных радиолюбителей слепить что-нибудь такое-эдакое для велосипеда (аккамуляторный съёмный фонарик с кучей опций и режимов), есть для этого специальные программируемые микросхемы (так и называются — драйвера для светодиодов), их можно подбирать под конкретные диоды (напряжение, мощность), программировать разные режимы, в том числе «вполсилы» и «стробоскоп». Для светофоров (головок) тоже особые микросхемы есть, подороже и с дополнительными фенечками…

      Успехов.

      С уважением, Денис.

      Ответить
      • Никаких дополнительных микросхем не нужно в данном случае — все делает программа, просто добавляется пара переменных, ну и немного усложняется вывод. Эти микросхемы в фонарях и есть те же самые контроллеры, что и ардуино (сама микросхема Atmega, в данном случае 328я), но намного проще с уже зашитыми аппаратно функциями.
        Фонариков для велосипеда сейчас в Китае настолько полно, что на любой абсолютно вкус и цвет и с любыми режимами — самому делать дороже выйдет)

        Ответить
    • Как раз таки на ардуино реализовать мигание проще простого. Вводится переменная времени, которая в основном цикле программы периодически сравнивается с текущим программным временем и в зависимости от этого выдаёт 0 или +5v на цифровой выход подключенный к реле.

      От себя добавлю что разводить это всё проводами — не вариант. Надо брать ардуинку со встроенным вайфаем, например WEMOS и релейные модули со встроенным вайфаем и подружить их друг с другом.

      И ещё, замыкатели лучше аппаратно защитить от дребезжащего контакта, например при помощи триггера Шмидта.

      Ответить
      • замыкатели или рельсовые цепи в первую очередь надо защитить от статики и наводок оптронами,
        обвеска оптронов rc цепочками и с дребезгом поборется и с помехами и с убивающей статикой, и частично или полностью с дребезгом.
        оптрончики с встроенным триггером шмитта подороже будут и их ещё поискать придётся, но в ардуине легко реализуется программнвя защита от дребезга.

        Ответить
        • Да, оптроны- отличный вариант. О статике и наводках я что-то даже и не подумал, казалось откуда этому взяться «в полях». Если бы я ставил электронику ж/д- я бы ещё и заземлил сами рельсы. Чтобы не было наводок рекомендуется избегать неэкранированных проводов длиннее метра, а для этого всё по месту надо ставить.

          Ответить
  5. Сейчас веду работы над созданием большого маршрутного светофора (не макета светофора, как в первые разы) , а уже именно светофора. Занятость пути, пока склоняюсь к идеи Александра, инфракрасными датчиками. Мне это важно на совмещенном участке, где может оказаться не рельсовое транспортное средство.

    Ответить

Добавить комментарий для nashpoezd Отменить ответ