Как сделать руль для компьютера
РУЛЬ ДЛЯ ПК СВОИМИ РУКАМИ
• 17.07.19 Версия 1.0: первоначальная, вроде бы стабильная версия
- Энкодер в оси руля
- Педали-потенциометры
- Функция калибровки
- Сброс позиции руля кнопкой
ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ
В данном видео показан полный и максимально подробный процесс разработки и изготовления устройства, а также обзор его возможностей и функций.
Понятные схемы, OpenSource прошивки с комментариями и подробные инструкции это очень большая работа. Буду рад, если вы поддержите такой подход к созданию Ардуино проектов! Основная страница пожертвовать – здесь.
ИНСТРУКЦИИ ПО ЭКСПЛУАТАЦИИ
Отладка
- Поставить DEBUG 1, прошить
- Открыть монитор порта
- Дёргать за дёргалки, тыкать тыкалки, смотреть на значения. Должны меняться
- Если всё ок, поставить DEBUG 0 и прошить
Калибровка
- Установить руль и педали в “минимальное” положение
- Зажать кнопку на D3
- Подключить питание
- Подождать пару секунд
- Отпустить кнопку на D3
- Вжать педали в пол, держать
- Повернуть руль вбок на свой угол, держать
- Кликнуть по кнопке
- Можно отпускать руль/педали
Сброс позиции руля
Во время работы клик по кнопке на D3 сбрасывает позицию руля в 0 (если вдруг он “уплыл”)
СХЕМЫ, ПЕЧАТНЫЕ ПЛАТЫ
МАТЕРИАЛЫ И КОМПОНЕНТЫ
Ссылки на магазины, с которых я закупаюсь уже не один год
Вам скорее всего пригодится:
- Arduino Pro Micro – искать
- https://ali.ski/kjiB8
- https://ali.ski/8dXb9
- Энкодер дешёвый
- https://ali.ski/V1rz0
- https://ali.ski/HQ1xII
- Энкодер лучше (брать 360)
- https://ali.ski/j1W3bc
- https://ali.ski/-x1Tx
- Потенциометры 10k
- https://ali.ski/17LCP
- https://ali.ski/MXXoMI
- Кнопка-концевик https://ali.ski/lhvmNQ
- Труборез https://ali.ski/IhufHZ
ЗАГРУЗКА ПРОШИВКИ
Загружать прошивку желательно до подключения компонентов, чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз, плата должна спокойно прошиться. В проектах с мощными потребителями в цепи питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.) необходимо подать на схему внешнее питание 5V перед подключением Arduino к компьютеру, потому что USB не обеспечит нужный ток, если например лента его потребует. Это может привести к выгоранию защитного диода на плате Arduino. Гайд по скачиванию и загрузке прошивки можно найти под спойлером на следующей строчке.
ИНСТРУКЦИЯ ПО ЗАГРУЗКЕ ПРОШИВКИ
1. Если это ваше первое знакомство с Arduino, внимательно изучите гайд для новичков и установите необходимые для загрузки прошивки программы.
2. Скачайте архив со страницы проекта. Если вы зашли с GitHub – кликните справа вверху Clone or download, затем Download ZIP. Это тот же самый архив!
3. Извлеките архив. Содержимое папки libraries перетащите в пустое место папки с библиотеками Arduino C:/Program Files (x86)/Arduino/libraries/
4. Папку с прошивкой из firmware положите по пути без русских букв . Если в папке с прошивкой несколько файлов – это вкладки, они откроются автоматически.
5. Настройте прошивку (если нужно), выберите свою плату, процессор. Подключите Arduino к компьютеру, выберите её COM порт и нажмите загрузить.
6. При возникновении ошибок или красного текста в логе обратитесь к 5-ому пункту гайда для новичков – “Разбор ошибок загрузки и компиляции“.
Делаем руль и педали к компьютеру
Чтобы изготовить руль и педали, достаточно купить несколько деталей, прочитать инструкции и советы и немного поработать руками. Как же все это работает. Большинство персональных компьютеров, используемых для игр, имеет звуковую карту. На этой карте есть геймпорт, в который можно подключать джойстики, геймпады, рули и прочее. Все эти устройства используют возможности игрового порта одинаково – разница лишь в конструкции устройства, а человек выбирает такое, какое является наиболее подходящим и удобным для той игры, в которую он играет. Геймпорт персонального компьютера поддерживает 4 переменных сопротивления (потенциометра) и 4 мгновенных кнопки-выключателя (которые включены, пока нажаты). Получается, что можно в один порт подключить 2 джойстика: по 2 сопротивления (одно – влево/вправо, другое – вверх/вниз) и по 2 кнопки на каждый.
Если посмотреть на звуковую карту, то можно без труда разглядеть геймпорт, как на этом рисунке. Синим цветом указано, каким иголкам в порту соответствуют функции джойстика: например j1 Х означает “джойстик 1 ось Х” или btn 1 – “кнопка 1”. Номера иголок показаны черным цветом, считать надо справа налево, сверху вниз. при использовании геймпорта на звуковой плате нужно избегать подключений к иголкам 12 и 15. Саундкарта использует эти выходы для midi на передачу и прием соответственно. В стандартном джойстике потенциометр оси Х отвечает за движение рукоятки влево/вправо, а сопротивление оси Y – вперед/назад. Применительно к рулю и педалям, ось Х становится управлением, а ось Y соответственно дросселем и тормозом. Ось Y должна быть разделена и подключена так, чтобы 2 отдельных сопротивления (для педалей газа и тормоза) действовали как одно сопротивление, как в стандартном джойстике. Как только станет ясна идея геймпорта, можно начинать проектировать любую механику вокруг основных двух сопротивлений и четыех выключателей: рулевые колеса, рукоятки мотоцикла, контроль тяги самолета. насколько позволяет воображение.
Рулевой модуль . В этом разделе будет рассказано, как сделать основной модуль руля: настольный кожух, содержащий почти все механические и электрические компоненты руля. электрическая схема будет пояснена в разделе “проводка”, здесь же будут охвачены механические детали колеса.
На рисунках: 1 – рулевое колесо; 2 – ступица колеса; 3 – вал (болт 12мм x 180мм); 4 – винт (держит подшипник на валу); 5 – 12мм подшипник в опорном кожухе; 6 – центрирующий механизм; 7 – болт-ограничитель; 8 – шестерни; 9 – 100к линейный потенциометр; 10 – фанерная основа; 11 – ограничитель вращения; 12 – скоба; 13 – резиновый шнур; 14 – угловой кронштейн; 15 – механизм переключения передач.
На рисунках вверху показаны общие планы модуля (без механизма переключения передач) сбоку и в виде сверху. Для придания прочности всей конструкции модуля используется короб со скошенными углами из 12мм фанеры, к которому спереди прикреплен 25мм выступ для крепления к столу. Рулевой вал сделан из обычного крепежного болта длиной 180мм и диаметром 12мм. Болт имеет два 5мм отверстия – одно для болта-ограничителя (7), ограничивающего вращение колеса, и одно для стального пальца механизма центрирования, описанного ниже. Используемые подшипники имеют 12мм внутренний диаметр и прикручены к валу двумя винтами (4). Центрирующий механизм – механизм, который возвращает руль в центральное положение. Он должен работать точно, эффективно, быть простым и компактным. Есть несколько вариантов, здесь будет описан один из них.
Механизм (рис. слева) состоит из двух алюминиевых пластин (2), толщиной 2мм, через которые проходит рулевой вал (5). Эти пластины разделены четырьмя 13мм вкладышами (3). В рулевом валу просверлено 5мм отверстие, в которое вставлен стальной стержень (4). 22мм болты (1) проходят через пластины, вкладыши и отверстия, просверленные в концах стержня, фиксируя все это вместе. Резиновый шнур накручивается между вкладышами на одной стороне, затем по вершине рулевого вала, и, наконец, между вкладышами с другой стороны. натяжение шнура можно менять, чтобы регулировать сопротивление колеса. Чтобы избежать повреждений потенциометра, необходимо сделать ограничитель вращения колеса. Практически все промышленные рули имеют диапазон вращения 270 градусов. Однако здесь будет описан механизм поворота на 350 градусов, уменьшить который будет не проблема. Стальной г-образный кронштейн, длиной 300мм (14) прикрепляется болтами к основе модуля. этот кронштейн служит для нескольких целей:
– является местом крепления резинового шнура центрирующего механизма (два болта m6 по 20мм в каждом конце);
– обеспечивает надежную точку останова вращения колеса;
– усиливает всю конструкцию в момент натяжения шнура.
Болт-ограничитель (7) м5 длиной 25мм вкручивается в вертикальное отверстие в рулевом валу. Непосредственно под валом в кронштейн вкручивается болт 20мм m6 (11). Для уменьшения звука при ударе на болты можно одеть резиновые трубочки. Если нужен меньший угол поворота, тогда в кронштейн надо вкрутить два болта на необходимом расстоянии. Потенциометр крепится к основанию через простой уголок и соединяется с валом. Максимальный угол вращения большинства потенциометров составляет 270 градусов, и если руль разработан для вращения в 350 градусов, то необходим редуктор. Пара шестерен с поломанного принтера подойдут идеально. Нужно только правильно выбрать количество зубов на шестернях, например 26 и 35. В этом случае передаточное число будет 0.75:1 или вращение на 350 градусов руля даст 262 градуса на потенциометре. Если руль будет крутиться в диапазоне 270 градусов, то вал соединяется с потенциометром напрямую.
Педали. Основа модуля делается аналогично модулю руля из 12мм фанеры с поперечиной из твердой древесины (3) для крепления пружины возврата. Пологая форма основы служит подставкой для ног. Стойка педали (8) сделана из 12мм стальной трубки, к верхнему концу которой крепится болтами педаль. Через нижний конец стойки проходит 5мм стержень, который держит педаль в монтажных кронштейнах (6), прикрученных к основанию и сделанных из стального уголка. Поперечина (3) проходит через всю ширину педального модуля и надежно (должна выдерживать полное растяжение пружин) приклеивается и привинчивается к основанию (2). Пружина возврата (5) крепится к стальному винту с ушком (4), который проходит через поперечину прямо под педалью. Такая конструкция крепления позволяет легко регулировать натяжение пружины. Другой конец пружины цепляется к стойке педали (8). Педальный потенциометр установлен на простом L-кронштейне (14) в задней части модуля. Тяга (11) крепится к приводу (12) на втулках (9, 13), позволяя сопротивлению вращаться в диапазоне 90 градусов.
Ручка переключения передач. Рычаг коробки передач представляет собой алюминиевую конструкцию, как на рисунке слева. Стальной стержень (2) с нарезанной резьбой крепится к рычагу через втулку (1) и проходит через отверстие, просверленное в Г-образном кронштейне на основании модуля руля. С обеих сторон отверстия в кронштейне на стержень установлены две пружины (1) и затянуты гайками так, чтобы создавалось усилие при движении рычага. Две большие шайбы (4, 2) располагаются между двумя микровыключателями (3), которые прикручены один на другом к основанию. Все это хорошо видно на рисунках слева и снизу.
Справа на рисунке показан альтернативный механизм переключения передач – на руле, как в болидах формулы 1. Здесь используется два маленьких шарнира (4), которые установлены на ступицу колеса. Рычаги (1) крепятся к шарнирам таким способом, чтобы они могли двигаться только в одном направлении, т. е. к колесу. В отверстия в рычагах вставляются два маленьких выключателя (3), так, чтобы при нажатии они упирались в резиновые подушечки (2), приклеенные к колесу и срабатывали. Если выключатель имеет недостаточно жесткое давление, то возврат рычагов можно обеспечить пружинами (5), установленными на шарнир.
Проводка. Немного о том, как работает потенциометр. Если снять с него крышку, то можно увидеть, что он состоит из изогнутой токопроводящей дорожки с контактами А и С на концах и бегунка, соединенного с центральным контактом В (рис 11). Когда вал вращается против часовой стрелки, то сопротивление между А и В увеличится на то же самое количество, на какое уменьшается между С и В. Подключается вся система по схеме стандартного джойстика, имеющего 2 оси и две кнопки. Красный провод всегда идет на средний контакт сопротивления, а вот фиолетовый (3) может быть подключен на любой из боковых, в зависимости от того, как установлено сопротивление.
С педалями не так все просто. Поворот руля эквивалентен движению джойстика влево/вправо, а нажатие педалей газ/тормоз соответственно – вверх/вниз. И если сразу нажать на обе педали, то они взаимно исключат друг друга, и ни какого действия не последует. Это одно-осевая система подключения, которую поддерживает большинство игр. Но многие современные симуляторы, типа GP3, F1-2000, TOCA 2 и т.д., используют двух-осевую систему газ/тормоз, позволяя применять на практике методы управления, связанные с одновременным использованием газа и тормоза. Ниже показаны обе схемы.
Схема подключения одно-осевого устройства. Схема подключения двух-осевого устройства
Так как много игр не поддерживают двойную ось, то будет разумно собрать коммутатор (рис. справа), который позволит переключаться между одно- и двух-осевой системой переключателем, установленным в педальном модуле или в “приборной панели”.
Деталей в описываемом устройстве не много, и самые главные из них – потенциометры. Во-первых, они должны быть линейными, сопротивлением в 100к, и ни в коем случае не логарифмическими (их иногда называют аудио), потому что те предназначены для аудио-устройств, типа регуляторов громкости, и имеют нелинейную трассу сопротивления. Во-вторых, дешевые потенциометры используют графитовую трассу, которая износится весьма быстро. В более дорогих используются металлокерамика и токопроводящий пластик. Такие проработают намного дольше (примерно – 100,000 циклов). Выключатели – любые какие есть, но, как было написано выше, они должны иметь мгновенный (то есть незапирающий) тип. Такие можно достать из старой мыши. Стандартный разъем джойстика D-типа с 15 иголками продается в любом магазине, где торгуют радиодеталями. Провода любые, главное, чтобы их можно было легко припаять к разъему.
Подключение и калибровка. Все тесты должны проводиться на отключенном от компьютера утройстве. Сначала надо визуально проверить паяные соединения: нигде не должно быть посторонних перемычек и плохих контактов. Затем надо откалибровать рулевой потенциометр. Так как используется сопротивление 100к, то можно измерить прибором сопротивление между двумя соседними контактами и настроить на 50к. Однако, для более точной установки, нужно замерить сопротивление потенциометра, повернув руль до упора влево, затем до упора вправо. Определить диапазон, затем разделить на 2 и прибавить нижний результат измерений. Полученное число и надо выставить, используя прибор. За неимением измерительных приборов, нужно выставить потенциометр в центральное положение, насколько это возможно. Потенциометры педалей при установке должны быть слегка включены. Если применяется одно-осевая система, то сопротивление педали газа должно быть установлено в центр (50к на приборе), а сопротивление тормоза быть выключено (0к). Если все сделано правильно, то сопротивление всего педального модуля, измеренное между иголками 6 и 9, должно уменьшиться, если нажать на газ, и увеличится – если на тормоз. Если это не случится, тогда надо поменять местами внешние контакты сопротивлении. Если применяется схема двух-осевого подключения, то оба потенциометра могут быть установлены на ноль. Если есть переключатель, то проверяется схема одно-осевой системы.
Перед соединением с компьютером, необходимо проверить электрическую цепь, чтобы не возникло короткого замыкания. Здесь потребуется измерительный прибор. Проверяем, что нет контакта с питанием +5v (иголки 1, 8, 9 и 15) и землей (4, 5 и 12). затем проверяем, чтобы был контакт между 4 и 2, если нажать кнопку 1. Тоже самое между 4 и 7, для кнопки 2. Далее проверяем руль: сопротивление между 1 и 3 уменьшается, если повернуть колесо влево, и увеличивается, если вправо. В одно-осевой системе сопротивление между иголками 9 и 6 уменьшится, когда нажата педаль газа, и увеличивается, когда нажат тормоз.
Последний этап – подключение к компьютеру. Подключив штекер к саундкарте, включаем компьютер. Заходим в “Панель управления – Игровые устройства” выбираем “добавить – особый”. Ставим тип – “джойстик”, осей – 2, кнопок 2, пишем имя типа “LXA4 Super F1 Driving System” и давим OK 2 раза. Если все было сделано правильно и руки растут от куда надо, то поле “состояние” должно измениться на “ОК”. Щелкаем “свойства”, “настройка” и следуем инструкциям на экране. Остается запустить любимую игрушку, выбрать в списке свое устройство, если потребуется, дополнительно его настроить, и все, в добрый путь!
Игровой руль на Arduino с напечатанной механикой
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Данная история взяла свое начало с прочтения статьи ‘Классный игровой руль за копейки’ https://3dtoday.ru/blogs/mell2010/a-cool-gaming-steering-wheel-for-peanuts/ нашего коллеги MELL2000. Имея такой же, руль загорелся я идеей тоже его переделать. Списался с MELL2000 и оказалось что модели утрачены в виду гибели жесткого диска. Ну думаю, ладно, смоделирую сам, хотя стоп, а может сделать полностью с нуля?
По принятию решения сделать руль собственной конструкции встали два основных вопроса:
Методом научного гугления достаточно быстро нашел простую схему изготовления механической части, которая при наличии 3D-принтера упрощается до предела. А вот мозги для проекта с ходу найти не удалось. Изначально я понимал, что надо искать проект на Arduino, а точнее даже на Arduino Leonardo так как она определяется как HID устройство (вроде клавиатуры или мыши), пришлось прочитать несколько десятков страниц разных форумов пока я не нашел то что нужно. Проект MMJoy Виталия “mega_mozg” Найденцева. Это бесплатное ПО для не коммерческого использования. https://sites.google.com/site/mmjoyproject/ работает как раз на чипах компании ATMEL at90usb646, at90usb1286, atmega32u4 (в развязке 5 вольт питания и 16 МГц кварц) к которым как раз и относятся Arduino Leonardo и pro-micro. Поддерживается до 8 осей и до 128 кнопок. Не буду углубляться в возможности прошивки MMJoy, кому интересно тот сам все прочитает, скажу лишь что поддерживается куча всякой всячины. Единственный минус проекта – это скудная информация на его страничке. Вся информация раскрыта на страницах форумов и там мне пришлось провести не мало времени, прежде чем найти требуемые мне схемы подключения.
Прошу прощения за длинную преамбулу, далее постараюсь более кратко и по делу.
Что было приобретено:
– плата Arduino pro-micro 350 руб.
– Датчик Холла 5в 1150 руб. Вместо него можно использовать потенциометр на 10 кОм, но у него ограниченный срок службы и малая точность позиционирования. Или можно купить датчик Холла без корпуса и магнит, но я решил не заморачиваться и сделать максимально быстро пока есть запал.
– Б/У «спортивный» руль от Жигулей на Avito за 400 руб.
– Шпилька М12 х 1000, плюс куча болтиков, гаечек и шайб в общей сложности на 150-200 руб.
– 2 Подшипника с внутренним диаметром 12мм по 50 руб. за штуку
– 2 подшипника 626z 6 мм x 19 мм x 6 мм, были в загашнике, а так стоят рублей по 10.
– Б/У левый подрулевой переключатель от приоры на Avito за 200 руб.
Итого: имеющаяся на настоящий момент конфигурация обошлась мне в 2420 рублей, но повторюсь можно уложиться и в ощутимо меньшую сумму при использовании другого датчика.
– ступица крепления руля на шпильке. Дырка под гайку со стороны руля, смоделирована чуть меньшего размера и гайка вплавляется в нее намертво, чтобы было удобно накручивать руль вместе с прикрученной ступицей.
Крепление pro-micro и соединительная муфта напечатано из черного ABS от FD-plast, все остальные детали печатались белым PET-G от АБС Мейкер. Все детали распечатаны соплом 0,4 слоем от 0,1 (шестерни) до 0,3 (крепления подшипников) со 100% заполнением на скорости 65мм/сек, слайсер Simplify 3D.
К столу вся конструкция крепится обычными струбцинами через распечатанные подкладки.
Сборка механической части.
Во время изготовления фотографий я не делал, но тут в общем-то все открыто, все и так видно.
1. В качестве основы я взял обрезок 18мм мебельного щита размерами 11х22 см. Посередине него закрепил 2 крепления для подшипников.
2. Собрал и установил рулевую ось с ведущей шестерней на место.
3. Собрал приемную шестерню и датчик Холла на креплении, установил ограничители поворота. Ось крепления ведомой шестерни вращается на подшипниках и соединена с валом датчика муфтой.
4. Плотно прижал крепление приемной шестерни к шестерне рулевого вала, разметил отверстия, просверлил и закрепил.
5. Выставил ведомою шестерню в ноль (ограничитель поворота вверх) и прикрутил руль также выставив его ровно.
Сборка электронной части.
На данной схеме (взято с сайта MMJoy) показано какие ноги для каких целей могут использоваться.
Для подключения 8 кнопок мы использовали 9 контактов
Во втором варианте мы подключим те же 8 кнопок, но уже в 4 столбца и 2 строки.
Здесь для подключения 8 кнопок мы использовали не 9, а всего 6 контактов.
Если подключить 4 оси для подключения руля и трех педалей, то у нас останется 14 контактов для подключения кнопочной матрицы, а это ТА-ДАМ 7х7 целых 49 кнопок. Но пока в моем проекте только руль и подрулевой переключатель с четырьмя «кнопками», поэтому подключаю его в 4 столбца и 1 строку.
Не буду останавливаться на прошивке pro-micro поскольку подробная инструкция есть на сайте проекта, а вот на настройке подключенных кнопок и датчика остановлюсь подробнее.
Запускаем MMJoySetup. В списке контроллеров выбираем MMJoy и считываем настройки из контроллера. Выбираем настройку осей. В качестве источника выбираем внутренний датчик, порт МК в моем случае будет F4 (см. по схеме подключения и маркировке MMJoy), так как это руль выбираем в качестве назначения ось X. Точность в битах выбираем эмпирически исходя из чувствительности датчика, в моем случае более 12 бит выставлять оказалось бессмысленно. Автокалибровку поставил сохранять с центром. Остальное не трогал.
После этого переходим к настройке джойстика через Панель управления WINDOWS, калибруем как обычный джойстик и запускаем игру.
C этим рулем я уже намотал не один десяток тысяч виртуальных километров в Euro Truck Simulator 2, руль работает на отлично. Педали пока от старого руля, скоро их тоже переключу на MMjoy.
Если хватит душевного порыва хотелось бы все это дело окультурить и еще реализовать педальный блок на 3 педали и КПП 8+1 с переключателем демультипликатора и прочие плюшки, но а пока наслаждаюсь тем что уже есть.
Если кому-то будет интересно, модели выложу или скину на почту.
Всем спасибо за внимание, жмем палец вверх. На все вопросы с удовольствием отвечу в комментариях.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Источники:
https://alexgyver.ru/gyverwheel/
https://cxem.net/comp/comp1.php
https://3dtoday.ru/blogs/hockey/gaming-steering-wheel-for-arduino-with-printed-mechanics/