Оживляем электронный кран машиниста от электровоза

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

9ywtggcsvcdanc70cpmh2egmcxe.jpeg

Итак, в сегодняшней статье поговорим про такой артефакт наших железных дорог как кран машиниста №130. Узнаем, как устроен его контроллер и попробуем его восстановить. Традиционно будет много интересного.

Суть такова


51o9lbdju2pm31mlqf7vb7ffqbq.jpeg

Так получилось, что основными приборами управления тормозами на нашем подвижном составе являются краны машиниста №394 и №395. В плане пневматики это по сути один и тот же кран, единственное отличие заключается в наличии у триста девяносто пятого контроллера управления электропневматическим тормозом (та самая круглая коробочка сверху). Также на фото виден маленький кран вспомогательного тормоза №254, служащий для управления тормозами локомотива.

2o6jssavvqc-k8didzt8n1x2uzc.jpeg

Само собой, этими двумя моделями список не ограничивается. Вот, например, кран №334, применяющийся на вагонах метро (а ещё раньше — на локомотивах и МВПС). Модель очень старая, по найденным сведениям, выпускался он аж с 1904 года и ставился ещё на паровозы.

sq0n0yymqvu9lubljmfqqvk7qcg.jpeg

Кран №013, устанавливающийся на практически все новые вагоны метро, а также рельсовые автобусы РА1.

w-o2tbpexrdgru2dtlfmucqbvew.jpeg

А вот довольно экзотический кран №172 (он же 4ВК), применяющийся в частности на трамваях с пневмотормозом (ЛМ-68М, ЛВС-86К, РВЗ-6М2…).

Что же это за кран №130?


9wymmi5yqtyjjdp667wiq3pjcva.gif

Предмет сегодняшнего обзора — так называемый кран с дистанционным управлением. В отличие от предыдущих экземпляров, этот — электронный, состоящий из контроллера крана машиниста в кабине и пневмопанели в аппаратном отсеке. По части положений это всё тот же кран №395. Вообще, про то, как работают краны №394 и №395, отлично рассказывал maisvendoo в своём посте про приборы управления, так что не вижу особого смысла повторяться тут.

6msgp2iuhfweujyen9plgqmygnq.jpeg

Эти устройства ставятся на новый подвижной состав. Вот, например, этот кран в кабине электрички ЭП2Д.

bv2y8z_vzwigqfwug8t4bg7nmic.jpeg

А вот он же в электровозе ЭП20.
По сравнению с более старыми кранами непосредственного действия, разработанными полвека назад, этот — совсем новый, его внедрение началось лишь в нулевые годы.

ee6tghklsuvgftjx2-lvmqrkwuq.jpeg

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

Обзор оборудования


w4xv1zxlp2cy4h8ul29cnhvm97s.jpeg

А вот и мой экземпляр. Он был снят с какого-то электровоза по причине его выхода из строя. Впрочем, внешнее его состояние очень неплохое, что не может не радовать.

zkgept7uxzf3tquvv9podkx2yew.jpeg

Шкала с положениями. Они здесь всё те же, что и в кране №395. Ручка приятно тугая, переключается с характерным щелчком.

21n7rbne9on-lmqtfxc6du5pakw.jpeg

Заводская табличка. Делает эти устройства АО МТЗ-Трансмаш. На табличке почему-то не заполнено ни одно из полей.

-niiytjprhx_i053ltmqs1-lmos.jpeg

Снизу ничего интересного, только крышка, в которую некогда был вставлен разъём.

Внутренности


Давным-давно я писал про контроллер машиниста. Там код позиции задавался кулачками, нажимавшими на самые обычные микрики. Этот же контроллер — бесконтактный.

qyivrewzzmg4frldo7bggqebidq.jpeg

Заглянем внутрь. Самое печальное — плату до меня уже вытащили и до наших дней она не дожила. Так что для подключения этого девайса придётся собирать свою.

cnypt_ssttxbk3fmzd4zsgsfaay.jpeg

Самая главная часть контроллера — вот этот рычаг, на конце которого закреплён магнит. Соответственно, на плате находятся датчики Холла, считывавшие его положение.

2z0-rimuiqnum30rtueu9lkehym.jpeg

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

Собираем плату управления


Штатная плата была выкинута, так что единственным вариантом подключить такой кран будет сборка своей собственной.

mhjuitxsxlanp_eoouteeo49ola.png

Дома завалялась целая куча вот таких вот побитых жизнью макетных плат, выпущенных в ныне несуществующей ГДР. Какие-то были совершенно пустыми, а какие-то всё ещё хранили наследие былой эпохи вроде раритетных радиодеталей или остатков монтажа навивкой. Как мне подсказали, это остатки от ЗИПа к какой-то модели Robotron, впрочем, состояние позволяло использовать эти платы исключительно как обычные макетки.

7chzaql3hxkzrsnwl8xhbm3lkxg.jpeg

Для того, чтобы считывать позиции, были взяты датчики Холла. Это те самые SS495A, оставшиеся у меня после экспериментов с магнитными ключами домофонов «Факториал». Датчиков нужно семь штук — на каждую из позиций по одному.

ohpa7opnvcf44qi-snlhhkyow3u.jpeg

Также использовал MAX485 для передачи данных (почему именно её — расскажу чуть позже) и видавшую виды Arduino на базе чипа от LGT для управления.

wx11pzdfiskuov-brjkbfgcp0be.jpeg

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

70hvf2tlj5uzpckjmhl1wmw0znc.jpeg

Теперь ищем подходящий обломок макетной платы, засовываем его в недра крана и отмечаем на нём позиции.

vhysb8nyoy9xyinoewmydvrctac.jpeg

И в соответствии с метками запаиваем датчики. Припаиваем провода.

Прошивка контроллера


Теперь очередь софта. Само собой, кран оживлялся для сборки домашнего пульта машиниста. И у меня была идея повесить все составляющие тренажёра на RS-485, чтобы не переделывать каждый раз плату, а просто модифицировать прошивку. Поэтому пишем такой скетч:

#define RX 9
#define TX 8
#define MAX485 7

#define SEND 1
#define RECEIVE 0

#define DEVICE_ID 0x82

#define MIN_SENSOR_VALUE 100

#include 

SoftwareSerial host(RX, TX); // RX, TX

uint16_t hallReadings[7];

uint8_t getAbsolutePosition() {
  for (int i = 0; i < 7; i++) {
    hallReadings[i] = analogRead(i);
    Serial.print("Channel ");
    Serial.print(i + 1);
    Serial.print(" ");
    Serial.println(hallReadings[i]);
  }
  Serial.println();
  for (int i = 0; i < 7; i++) {
    if (hallReadings[i] <= MIN_SENSOR_VALUE) return i + 1;
  }
  return 0;
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  host.begin(4800);
  pinMode(MAX485, OUTPUT);
  digitalWrite(MAX485, RECEIVE);
}

void loop() {
  // put your main code here, to run repeatedly:
  uint8_t currentPosition = 0, previousPosition = 0;
  currentPosition = getAbsolutePosition();
  if (currentPosition != 0) {
    previousPosition = currentPosition;
  }
  if (host.available()) {
    if (host.peek() == DEVICE_ID) {
      host.read();
      digitalWrite(MAX485, SEND);
      host.write(previousPosition);
      digitalWrite(MAX485, RECEIVE);
    }
    else host.read();
  }


Тут всё просто — считываем код позиции и, если он не равен нулю (что бывает в момент переключения крана), сохраняем его. Попутно слушаем шину и в случае поступления байта 82h (что и есть 130 в десятичной системе) отправляем в ответ код позиции.

Собираем


С железом почти покончили, время уместить все железки внутри крана.

nra-ayl_zdtdxhctloirrtae7wi.jpeg

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

o-xq0ehysbmp1dol_05rlj3zt7w.jpeg

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

Ещё раз про контроллер


Как оказалось, использованная изначально Raspberry Pico для такой задачи подошла так себе, в частности, несмотря на то, что USB HID с виду работал нормально, в некоторых играх (например, Metrostroi) контроллер либо в принципе не работал, либо работал неадекватно (перескакивая позиции или вообще зависая). С чем это связано, понять так и не вышло.

hiqk8cyk4lclbemcduoh5pdz9i8.jpeg

Поэтому в качестве контроллера ввода была взята Arduino Micro (на которую залит скетч на базе библиотеки Joystick.h), с которой проблем не наблюдалось. На плате разместился чип 74HC165 для приёма сигналов с контроллера и два DIP-переключателя, пока что зарезервированных. Также там была установлена та самая MAX485, к которой будет подключено всё остальное железо, включая этот кран.

Софт


Изначально я подключал контроллер к Trainz. Но товарищи, уже имевшие опыт в создании пультов машиниста, подсказали, что лучше всего использовать ZDSimulator.

_rmctfmezl0ivuh3bdaxhmd81oe.png

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

mv_hb_cdu7qagwau5ijabhngic8.png

Назначаем позиции джойстика на кран машиниста, запускаем игру, и всё, можно трогаться.

Вот как-то так


Вот так удалось вернуть к жизни очередной девайс из мира ЖД, попутно приблизив ещё на шаг готовый тренажёр машиниста дома.
Само собой, я уже попробовал кататься с этим краном, ощущения непередаваемые. Никакой джойстик и уж тем более клавиши не смогут обеспечить того же.
Такие дела.

Ссылки



Возможно, захочется почитать и это:

Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале


b5pjofdoxth14ro-rjsrn7sbmiy.png

© Habrahabr.ru