[Из песочницы] Строим motion simulator из палок и синей изоленты

997c755358a7d56f02cfdbfdcc768524.jpgОбычно первый комментарий к статье про какую-то неведомую технологию выглядит так: «Вы бы перед тем как углубляться сначала рассказали что это и зачем нужно». Итак, сия чуднАя периферия призвана при игре в автомобильные симуляторы имитировать воздействие перегрузок на игрока. В данном случае это обеспечивается наклоном кресла по двум осям, следовательно получился симулятор движения с двумя степенями свободы.Наглядная демонстрация:[embedded content]

Кусочек истории Несколько лет назад увидел в Интернетах этот ролик. Захотелось построить что-то похожее. Рассудив, что такую конструкцию я не осилю, решил сделать просто качающееся кресло. Погуглил, оказалось Америку я не открыл и такие устройства бывают. Девайс, описанный в топике реализован по схеме racingseat, когда кресло закреплено на карданной передаче или её функциональном аналоге. Это уже вторая попытка реализации. Первой была схема joyrider, при которой кресло вращается на двух перпендикулярных осях в идеале пересекающихся в центре масс платформы. Также я исходил из того, что денег нет. Поэтому между хорошим, дешевым, плохим и дорогим пришлось выбирать хорошее и дешевое.Комплектующие Двигатель. Изучая тематические ресурсы на предмет выбора, так и не смог найти четкий ответ какой мощности двигатель нужен. В предыдущей версии я использовал двигатель от аккумуляторного шуруповерта, результат был не очень. Обычно для таких целей используют мотор-редукторы для стеклоочистителей автомобилей. Рекомендуют использовать узлы от автомобилей с большими лобовыми окнами (большие легковушки, автобусы, грузовые автомобили), поскольку электромоторы там мощнее. И даже несмотря на это симоводы обычно жалуются на малую мощность. Оценив бюджет я решил забить на рекомендации, смириться с малой мощностью и сделать дешево и сердито — прикупил два мотор-редуктора от Ланоса по $20 каждый. Двигатель маркирован как 30Ваттный. Я полагал пластиковая ведомая шестерня редуктора проживет недолго. К счастью я ошибся, спустя пол года использования не появилось даже люфта. Могу сказать, что по ощущениям мощности этих двигателей вполне достаточно. При желании можно поднять напряжение питания и получить еще немного динамики.Карданная передача использована от карданного вала ВАЗ-2101. ~$20Блок питания 12В 350Вт заказан в Китае, поскольку в ATX’овом блоке питания чуть меньшей мощности срабатывала защита даже при работе одного двигателя. Думаю эту защиту при желании можно легко отключить, но не стал заморачиваться. Китайский же тянет оба двигателя не напрягаясь. ~$30Шарниры ball joint — шарниры, передающие усилие мотор-редукторов на кресло. Не знаю как этот шарнир называется по-русски. Возможно шаровой шарнир. Первая мысль была использовать рулевые наконечники от автомобиля. Купил, попробовал — оказались слишком тугие и громоздкие. Затем решил сколхозить самодельные — оказались слишком большими зазоры. В результате заказал в том же Китае по $3 за штуку. Забавно, что когда я пытался найти такие шарниры в оффлайн, в конторе, специализирующейся на продаже подшипников, надо мной малость посмеялись и сказали что такое найти невозможно.Пара автоматических выключателей для защиты от КЗ.Автомобильное кресло с неизвестной родословной, и совершенно точно нелегкой судьбой.Метизы, железо, провода, всякие мелочи вроде вениляторов, ХЗ сколько.Игровой контроллер aka Logitech G25, компьютер, монитор и остальное уже было в наличии.Несколко фотографий для понимания механической части. Крепление карданного шарнира и двигателей с упомянутыми выше ball joint. Заодно можете посмеяться над над моими скилами сварщика и маляра: d70582eafd696e3983057b2a396d989b.jpg5a33c924648765ba0c20e91c91bf256b.jpg

Электроника. Был бы я поумнее, купил или скопировал китайские драйвера двигателей и подключил бы к Arduino, благо реализации есть в открытом доступе. Но нет, я надумал пойти своим путем. И чтобы в пути было не скучно, я решил во время похода потащить на своей спине свежеизобретенный велосипед с квадратными колесами. Да, я забубенил свои драйвера и контроллер с прошивкой. Причем драйверов я сделал, наверное, больше десятка версий, а количество сгоревших полевиков впору измерять на вес. Итак, смертельный номер, не рекомендуемые к повторению схемы: контроллера a53cf2e34cf545cab1d47b1fb6e6724e.png драйвера двигателя 4646b67d133d1d11a7b4919d2f31abe2.png Некоторые места в схемах были исправлены уже на текстолите, так что не рекомендую повторять. Рисуем платы, расчехляем лазерный утюг, тапок для съемки. Получаем следующее: 9d69e9ff99855eb003818927df76f1f1.jpgи упаковываем все в элегантный корпус: 0a5525fddea4b132cc20f0f82a6542dd.jpgСамо собой не обошлось без косяков и в некоторых местах плату пришлось исправлять.Необходимая для работы информация (задание положения двигателя) передается через переходник USB-Serial TTL на микросхеме cp2102 в контроллер. Контроллер реализован на МК atmega88 с минимальной обвязкой. Для удобства добавлен четырехразрядный семисегментный индикатор. Контроллер по сигналу обратной связи, датчиком которой выступает переменный резистор на оси мотор-редуктора, определяет фактическое положение двигателя и при необходимости вносит в него коррективы. В контроллере реализован пропорциональный регулятор. Прошивкой скорее всего не поделюсь, т. к. не люблю бэкапы. В драйверах двигателей реализован H-мост. Контроллер имеет возможность открыть любой из транзисторов моста, что в данном случае избыточно. Из-за этого пришлось городить логическую защиту от КЗ. Достаточно было бы передать из контроллера в драйвер сигналы направления и разрешения.

Рисуем остальные части совы Как то так все это выглядит если собрать вместе: 004f8a9e99fd75b42d3de2ac16e66d21.jpg

d43c186eec96ba4c19078196f3e4591f.jpg

Софт для компьютера. Для меня было откровением, что многие игры реализуют вывод телеметрии. Раньше я думал, что получить данные о физической модели игры можно только с помощью черной магии и метода научного тыка в память процесса. Оказывается нет, часто разработчики игр заморачиваются над выводом соответствующих данных через сокет. Отличное место чтобы изобрести еще один велосипед, а то я уже почти оправился от предыдущего. Но тут что-то пошлО не так и я решил посмотреть готовые варианты. А их есть как минимум два бесплатных: X-Sim напичкана массой свистелок вроде можно прикручивания плагинов, перехватывания состояние джойстиков, но сложна для старта.SimTools относительно новая программа, значительно проще первой, но обладает меньшим функционалом. Для старта самое оно.Обе программы допускают вывод необходимой информации через последовательный порт (в данном случае виртуальный). Поддерживаются практически все более-менее известные преимущественно автомобильные, но есть также и авиационные симуляторы.Думаю в комплект к этому девайсу неплохо бы поиметь Oculus Rift. Только вероятно понадобится вторая версия, поскольку у первой гироскопы с ума сойдут.

Хочу извиниться перед теми, кто просмотрел все картинки, но так и не увидел синюю изоленту, и перед читателями, кто сюда дочитал, за пост вида КакНарисоватьСову.jpg. Изначально он не планировался, поэтому не вся информация о процессе изготовления сохранилась. Но по крайней мере статья расскажет о подобных устройствах тем, кто не задумывался об их существовании. Еще несколько видео с этой железкой есть в этом плейлисте.

© Habrahabr.ru