Перейти до змісту

Rail Driver - тренажер машиниста


Рекомендовані повідомлення

Дублёр очень хорош. Какая порода?
Посилання на коментар
Поділитись на інші сайти

  • 3 тижня через...
Обновился до версии 53.004, проблема все та же. При ручной передаче в терминал все отлично, но данные из сима не идут.
Посилання на коментар
Поділитись на інші сайти

проблема все та же

 

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

 

Тестовая сборка: http://my-files.ru/5x02r2

Посилання на коментар
Поділитись на інші сайти

Ну что-же, тест шаговых двигателей пройден, но результат немного не порадовал. Использовались двигатели 28byj-48.

1. Редуктор двигателей 1/64, что для приборов немного медленно.

2. Люфт двигателей дает вранье на 2-3 км/ч

3. 6 приборов, сидящих на 1-ой Atmega16, дают дрожание стрелок, играть конечно можно, но в идеале каждый прибор должен иметь свой контроллер, пускай даже Attiny2313. Быстродействие процессора тут ни к чему, потому-что он ждет паузы между шагами, у этого двигателя они составляют аж 3300 us в полношаговом режиме.

Ну а так вроде-бы ничего. Надо будет дособирать 2-ой блок с амперметрами и лампами и посмотрим.

видео https://drive.google.com/open?id=0BxL2Uty_fV1fV2F1VGpNcTQxU0U

фото https://drive.google.com/open?id=0BxL2Uty_fV1fMm9yNFJaRk5WVDA

примерная схема с исходником https://drive.google.com/open?id=0BxL2Uty_fV1fTTdTenE4bXNQMGM

Посилання на коментар
Поділитись на інші сайти

Отлично выходит!

Жаль, что редко появляетесь.

Я по своей наивности тоже обманулся с 28byj-48. Не проведя никаких тестов заказал 6 штук с Али. Один у меня валялся до этого. И вот пока они шли с Китая я начал тестить возможность их применения на одном таком двигателе. Крутил на полушаге согласно спецификации. Естественно убил меня первым делом люфт. На моей шкале это вылилось враньем в 0,2 кгс/см*2. Во воторых обязательное применение ULN2003 и ток потребления всего этого дела. На скорость пожаловаться не могу, т.к. крутил только одним мотором варьируя паузу между переключениями портов для коммутации обмоток. В итоге, почитав изыскания виртуальных пилотов, остановил свой выбор на шаговом двигателе X27.168 для приборных панелей автомобилей:

http://savepic.net/8438846m.jpg

 

Потребление в 20 мА дает возможность подключаеть его непосредственно к микроконтроллеру. Режим полушага состоит из 6 переключений портов (против 8 переключений у 28byj-48). Отсутствие люфта, подобного у 28byj-48. Размеры и масса меньше. Вал около 1 мм в диаметре, что удобно для насаживания стрелок.

Я заказал один на Али. Поэкспериментировал и мне он понравился. Заказал еще 6 штук. Пока идут прикидываю, как это всё дело будет управляться. Идея в том, что данные с компа приходят в головной контроллер по UART. На каждый мотор (читай МАНОМЕТР) будет свой контроллер на Atmega48pa. Головной контроллер раздербанивает строку, пришедшую с компа, на фрагменты с нужными параметрами, переводит эти параметры из формата строки в числовой формат и по SPI отсылает их в контроллеры управления шаговиками. Они в свою очередь по прерыванию SPI считывают эти параметры и в основном цикле крутят вправо или влево в зависимости от сравнения пришедшего параметра с переменной-счетчиком.

 

Еще у летчиков-виртуальщиков подглядел замечательную идею для датчиков начального положения. Идея в том, что датчиков этих НЕТ. Контроллер запитывается через обычный диод. За диодом ставим фильтрующий конденсатор на 4700 мкФ. Перед диодом шину питания заводим на ногу компаратора микроконтроллера через делитель. В итоге:

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

 

Поэтому 6 моторов 28byj-48 теперь пылятся на столе. Жду X27.168.

 

Вот тут пара тем с форума немецких коллег по цеху. Правда там речь об ихнем симулятору Zusi, но задачи ставят аналогичные. Тоже реализация на шаговиках:

http://forum.zusi.de...hp?f=25&t=13044

http://forum.zusi.de...hp?f=25&t=12360

 

Несколько вопросов:

 

Вы крутили на полношаговом режиме судя по

Быстродействие процессора тут ни к чему, потому-что он ждет паузы между шагами, у этого двигателя они составляют аж 3300 us в полношаговом режиме.

 

1. Почему не на полушаге? Плавность и точность значительно выше.

 

2. Я не силён в Cи, поэтому хочу спросить про алгоритм по обработке шаговиков. Шаговики обрабатываются последовательно в основном цикле?

 

3. Самый главный - Вы значение уравнительного резервуара брали из:

 

1.

http://savepic.net/8391742m.jpg

 

ИЛИ

 

2.

http://savepic.net/8390718m.jpg

 

Никак не могу найти адрес хранения значения УР, которое отображается на блоке индикации КЛУБ. Вот то, что на первом рисунке нашел. Но мне надо значение, которое на втором скрине. У Вас как с этим дела обстоят?

Змінено користувачем Vivan755
Посилання на коментар
Поділитись на інші сайти

Мне кажется напрямую к контроллеру не надо, все-таки индукция, пусть и не большая может дать глюк. А без датчиков нуля мне кажется не обойтись, иначе любой пропуск шагов, мусор в передаче данных, сбой EEPROM приведет к потере нуля. Кстати UART надо подтягивать к 5 В, иначе 3.3 В с переходника USB-UART на длинных проводах у меня глючили.

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

2.

3. В двух словах не скажешь, написал отдельно. https://drive.google.com/open?id=0BxL2Uty_fV1faldGM3VybDlsYzA

Посилання на коментар
Поділитись на інші сайти

Ещё раз просьба ко всем — вражеских обозначений не использовать. 4700 мкФ — это 4700 мкФ, 3,3 В — 3,3 В, с разделением пробелом и русскоязычными единицами. Основные языки форума — русский и украинский.

Никто не использует микроамперметры? Никаких нулей ловить не надо, на ШИМ цепляются отлично, пусть и погрешность определённая есть, но она ерундовая.

Посилання на коментар
Поділитись на інші сайти

Проблема как всегда с моей невнимательности, запускал не из Program Files и не под админом. Так что смело заявляю, работает все, система Win 8.1 x64, Arduino UNO R3, сим 53.004. Правда есть один нюанс, либо в дисплее, либо в коде ардуины. Не выводит старший разряд значения следующего ограничения скорости (на третьем скрине Sp3=43. вместо 143).

 

 

1.

http://savepic.net/8422493.jpg

 

 

2.

http://savepic.net/8425565.jpg

 

 

3.

http://savepic.net/8415325.jpg

 

 

P.S.

Если тут еще есть те, кто не знает формат вывода данных в UART, то вот что удалось расшифровать:

http://savepic.net/8425562.jpg

 

 

http://savepic.net/8405085.jpg

 

 

Единственное, что не могу понять, предназначение трех нулей в конце. В ходе поездки никак не менялись, на дисплей не выходят. Дело за "малым", разделить строку на переменные и строить приборную панель :rolleyes:

P.P.S Автору сего чуда огромное спасибо за возможность осуществить давнюю мечту!

Змінено користувачем moskal.il
Большие картинки прячьте под спойлер.
Посилання на коментар
Поділитись на інші сайти

Что уже на дисплее отображается скорость, давление и километраж? Где скачать код или программу? А то дисплей светится, но без показателей.
Посилання на коментар
Поділитись на інші сайти

Где скачать код или программу?

 

Все, что выводит и принимает данные взято отсюда

Тут версия, в которой организован вывод и на светодиоды и на дисплей. http://rghost.ru/7bR6yTSvD
Посилання на коментар
Поділитись на інші сайти

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

Я ничего не заметил при тестах. У в авиасимуляторщиков тоже напрямую подключены. Посмотрим...

 

В двух словах не скажешь, написал отдельно. https://drive.google...aldGM3VybDlsYzA

 

Благодарю за такой развернутый ответ!

 

if(UR>count_motor2)

{

motor2_right();

}

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

 

А вот с поиском ячеек памяти по Вашему описанию я так и не понял. Правда использую Artmoney. Ячейка ураванительного резервуара - динамическая. Ищем адрес указателя на нее. У меня находится на неё указатель с динамическим адресом. После перезапуска и его адрес уже не действителен. Приходится искать по-новому. Пробую покурить ваш мануал еще раз. Может таки дойдет. У меня в файле конфигурации адреса прописаны четко. Например:

&H90C1318

&H8FB4F18

&H7B4CB4

Как сюда добавить смещение в +30 при постоянно меняющемся указателе пока не догнал. Надо операцию вычисления добавлять в код?

 

Правда есть один нюанс, либо в дисплее, либо в коде ардуины. Не выводит старший разряд значения следующего ограничения скорости (на третьем скрине Sp3=43. вместо 143).

 

Похоже на сбой фрагментации строки. Если у других также, то надо будет посмотреть в чем дело.

 

 

Единственное, что не могу понять, предназначение трех нулей в конце. В ходе поездки никак не менялись, на дисплей не выходят.

 

Это указатель задатчика скорости на ЭП1М. Должен отображать заданную скорость, но не на дисплее, а на модуле вывода скорости, который подключается к Arduino.

 

Никто не использует микроамперметры? Никаких нулей ловить не надо, на ШИМ цепляются отлично, пусть и погрешность определённая есть, но она ерундовая.

 

Неспортивно. Для нас помимо результата еще сам процесс наступания на грабли с последующий сатисфакцией от решения проблемы важен. ШИМ колхозно будет выглядеть в виде миллиамперметров в качестве манометров. Я думаю даже штатные амперметры ТЭДов и напругу КС посадить на шаговики. Шкалы уже начал отрисовывать в ФШопе.

Змінено користувачем RUSHPIL
Посилання на коментар
Поділитись на інші сайти

Вдогонку тест манометра ТЦ на шаговике X27.168. Связь двух Arduino по SPI интерфейсу:

 

Alex-B, с какой периодичностью у Вас из компьютера программа отправляет данные?

Посилання на коментар
Поділитись на інші сайти

Еще заметил одну вещь, на тепловозах без КЛУБ-У ограничения скорости на дисплей не выходят, только текущая.
Посилання на коментар
Поділитись на інші сайти

Это условие для выхода на подпрограмму motor2_right()? После выполнения подпрограммы возвращаемся обратно, так?
Да, верно.

Значит по трейнеру:

Время до запуска - нужно для запуска трейнера до игры, чтобы не сворачивать её потом во избежании вылета

COM порт - выбираем порт нашего переходника UART

Скорость COM - должна быть такая же, как в прошивке контроллера

Задержка передачи - это как раз периодичность отправления данных в мсек

Настройки - там множители приборов для градуировки шкалы, например скорость 80*1,5=120 - на самом деле скорость 80, но на шкалу, по шагам она ляжет как надо. Необходимо использовать дробные числа. Задержка шагов приборов это пауза между шагами мксек (передается по буферу 57-ым и 58-ым байтом). Ну и лампа бдительности может для красоты мигать в мсек.

Теперь поиск данных. К каждой игре нужен свой подход, поэтому определенных правил нет. Например в MSTS вообще все адреса динамические, так что статические это скорее исключение. Давайте тогда с конца начнем, Вы находите динамичесий адрес значения, например ТМ - это 8-байтное число double с точкой. Оно находится в динамическом блоке (довольно маленьком или запиханном между других процессов), который винда предоставляет при запуске игры. Он каждый раз разный в зависимости от настроения винды. Но игра все-таки знает про него, точнее про адрес его начала. Он хранится в статических адресах процесса и для пневматики 0x05340e68(манометры), а для электрики 0x06622ec4(лампы компрессоров, вентиляторов,...).(Версия игры 53,005). Когда вы в редакторе памяти посмотрите на эти указатели, то увидите там 4-байтный адрес (который надо читать задом наперед) того динамического блока, который валяется на просторах оперативки. Он будет тем самым началом, от которого надо написать смещение. Неприятность в том, что смещения разные для каждого локомотива, поэтому сам локомотив, выбранный в настоящий момент игроком вам надо будет искать по сигнатуре (уникальной последовательности чисел в памяти), либо считывать его из окна "zdsimulator.exe". 1-ый вариант мне нравится больше. Все смещения в файле "zdsim503.txt". Я просто не понял на каком языке у вас трейнер для игры. А вообще может подойдет моя? Расшифровку буфера и сам трейнер я уже выкладывал.

Посилання на коментар
Поділитись на інші сайти

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

Повторю свой вопрос: с какой периодичностью у Вас из компьютера программа отправляет данные (в миллисекундах)?

 

Я просто не понял на каком языке у вас трейнер для игры.

 

Написан на VB 2010.

Посилання на коментар
Поділитись на інші сайти

Да, без привязки никак, отвязаться от версий игры с помощью "поиска сигнатур" для пневматики и электрики тоже не выход, т.к. они все дырявые с большим количеством нулей. Да, если у вас VB 2010, то мой исходник на C# наверное вам не поможет.

А по поводу программы я уже писал. Задержка передачи - это как раз периодичность отправления данных в мсек. Вам остается только вбить туда желаемое значение. Кстати, у вас моя программа запускается? А то у меня XP. Всё никак не переберусь на новый комп.

Посилання на коментар
Поділитись на інші сайти

Alex_B, есть мысли как ячейки памяти в тренажере сделать статическими вместо динамических с нужными нам параметрами? Держу связь с разработчиком тренажера Вячеславом и ищем путь сохраенения значений параметров при перезапуске тренажера. Вячеслав вывел для теста значение УР в информационную строку вверху, где отображаются обороты дизеля ТЭМ18Д, позиция контроллера и т.д. Ячейка памяти все равно динамической осталась :(
Посилання на коментар
Поділитись на інші сайти

Все же я думаю это ни к чему. Во первых помимо zdsimulator есть msts, World of Subway 1,2,3 (тоже кстати довольно неплохая игра про метро) и может какие-то еще игры. А там всё динамическое. Поэтому к этим играм тоже надо будет прикрутить пульт. А во вторых переход на новую версию не так страшен. Надо просто заново найти указатели на пневматику и электрику, и если есть новые локомотивы, то пробежаться по схемам и написать смещение. В принципе это не так сложно. И потом у меня есть мысль не только читать, а записывать ячейки памяти в процессе игры, например положение крана, контроллера напрямую. Это бывает полезно в случае резкого перемещения рукоятки скажем из 1-го в 5-ое, и если игра в этот момент слегка тормознет, то MCabMapper не отработает положение и будет сбой позиций. А так будет точная синхронизация ручки пульта и ручки в игре. Я вобщем-то не бог весть какой программист и практически 60% кода заимствовал из интернета. А делать из динамических статические это очень нагло вмешиваться в память процесса, как правило грозит синим экраном, без разработчика не вариант. Кстати лампы вентиляторв, компессоров и пр. тоже надо буде переводить в статические... Вобщем мне кажется вполне можно работать с динамикой.
Посилання на коментар
Поділитись на інші сайти

Видео законченного проекта https://drive.google.com/open?id=0BxL2Uty_fV1fMWFkU3MzVkE2SVU

Его лучше скачивать, а то Google Диск при просмотре урезает качество.

Схемы с прошивками и программа-трейнер https://drive.google.com/open?id=0BxL2Uty_fV1fMjZpRGVISHo5amc

Схемы скорее для ознакомления, собранные на Atmega8 и 16. Если у кого-то появится мысль повторить, то надо будет дорабатывать их "напильником" (заменять некоторые компоненты своими, подгонять под свои двигатели и.т.д).

Вобщем играть на этом пульте можно, но как я и думал 4 амперметра скажем на ЧС8 перемещаются довольно медленно. Но с другой стороны таких машин только 2 - ЧС7 и ЧС8. На остальных один или два амперметра, так-что терпимо. Основная проблема это как всегда корпуса. Поэтому пришлось остановиться на "ламинатно-гробообразном варианте".

Следующий этап теперь - допиливание программы под MSTS и World of Subway 1,2,3. и запись данных пульта напрямую в память, скорее всего через комбинации клавиш и MCabMapper.

Посилання на коментар
Поділитись на інші сайти

  • 3 тижня через...

Подскажите пожалуйста подробнее как подключить модуль скорости к ARDUINO. Какие компоненты помимо индикатора там применяются? Если можно, так же подробно как и подключение светодиодов к ARDUINO. Буду очень признателен.

 

 

http://savepic.net/7697219.jpg

 

 

Посилання на коментар
Поділитись на інші сайти

Схема модуля:

http://savepic.net/6452660m.jpg

 

Фьюзы конфигурации микроконтроллера:

http://savepic.net/6477239m.jpg

 

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

http://rgho.st/8tTCZJpcF

 

Схема соединения между модулями:

http://savepic.net/8498412m.jpg

 

Модуль скорости запитывается от Arduino.

 

Таким он получился у меня:

http://savepic.net/8492268m.jpg

Змінено користувачем RUSHPIL
Посилання на коментар
Поділитись на інші сайти

Приєднуйтесь до обговорення

Ви можете написати зараз та зареєструватися пізніше. Якщо у вас є обліковий запис, авторизуйтесь, щоб опублікувати від імені свого облікового запису.
Примітка: Ваш пост буде перевірено модератором, перш ніж стане видимим.

Гість
Відповісти на цю тему...

×   Вставлено із форматуванням.   Відновити форматування

  Дозволено використовувати не більше 75 емодзі.

×   Ваше посилання було автоматично вбудована.   Відображати як звичайне посилання

×   Ваш попередній контент було відновлено.   Очистити редактор

×   Ви не можете вставляти зображення безпосередньо. Завантажуйте або вставляйте зображення за посиланням.

×
×
  • Створити...

Важлива інформація

Ми розмістили cookie-файлы на ваш пристрій, щоб допомогти зробити цей сайт кращим. Ви можете змінити налаштування cookie-файлів, або продовжити без зміни налаштувань.