Logitech® Momo Racing: переделка под свои нужды

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Возникла задача, используя готовую механику и датчики игрушки Logitech® Momo Racing Force Feedback Wheel, переделать симулятор из приставки для компьютерных игр, в пульт управления самодельными радиоуправляемыми моделями.

Поехали ...

1. Внешний осмотр

1.jpg

Игрушка состоит из двух частей, рулевого блока и блока педалей.

На рулевом блоке имеется:

  1. рулевое колесо, поворачивающееся примерно на 270-300 градусов;
  2. шесть кнопок без фиксации;
  3. два подрулевых переключателя без фиксации;
  4. два светодиода;
  5. ручка переключения передач на три положения (среднее, вперёд и назад) тоже без фиксации (в смысле будучи свободной, всегда находится в среднем положении).

Из рулевого блока выходит провод с разъёмом USB для подключения к компьютеру. Также на рулевом блоке имеется разъём для подключения внешнего питания (24V / 750mA DC, «+» в центре) и семипиновый разъём похожий на D-SUB для подключения педального блока.

На педальном блоке имеются:

  1. две педали;
  2. провод с семипиновым разъёмом для подключения к рулевому блоку (ответная часть к разъёму, похожему на D-SUB, который упоминался при описании рулевого блока).

Больше ничего интересного при внешнем осмотре не обнаружилось.

2. Вскрытие. Рулевой блок

Вот как выглядит рулевой блок, со снятой крышкой.

2.jpg

В центре всего этого великолепия находится плата контроллера зелёного цвета. Вся периферия подсоединена к ней.

Слева и справа расположены блоки кнопок рычага переключения передач (на рисунке обозначены цифрами 1 и 1а). Рычаг-то у устройства один, но блоков кнопок два, видимо, для того, чтобы можно было легко переставить рычаг, если играющий, например, левша. Сразу отмечу, что поставить два рычага, и использовать оба не получится (без переделок), т.к. провода от них соединены параллельно и входят в контроллер одним трёхпиновым разъёмом.

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

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

Разъём для подключения педального блока (4) распаян на плате контроллера. Также на плату заводится провод для подключения к компьютеру по USB (5).

3. Проектное решение

По результатам осмотра внутренностей рулевого блока был сделан предварительный вывод о том, что, наверное, не имеет смысла делать свой USB-Host для расшифровки команд и передачи их по радио. Во-первых, внятной документации по высокоуровневому протоколу игрушки найти не удалось, а во-вторых, конструкция в которой информация собирается с обычных кнопок и цифровых датчиков, кодируется для USB, затем декодируется обратно, чтобы быть отправленной по радио выглядела бы слишком надуманной.

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

4. Осмотр периферии

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

4.1 Блок кнопок рычага переключения передач

Блок кнопок (на рис. №№ 1 и 1а) состоит из двух кнопок и диодной сборки BAV70. К контроллеру подсоединяется тремя проводами. Схема такая:

Lever_circuit.gif

Мы планируем подключать эту плату к контроллеру по стандартной для кнопок схеме, а потому диодная сборка нам не нужна, но и мешать не будет.

4.2 Датчик среднего положения руля

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

WheelCenter.gif

На красный и чёрный провода подаётся питание. На зелёном проводе нормально высокий уровень, который сменяется на низкий, когда руль установлен по центру, т.е. металлический предмет (2b) находится напротив платы датчика (2a).

4.3 Энкодер - датчик вращения руля

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

Провода, подходящие к плате энкодера:

 

  1. Жёлтый – GND
  2. Зелёный – питание (5В)
  3. Красный – питание светодиода (5,5мА, падение напряжения на сетодиоде – 1,16В)
  4. 5. Чёрный и  Белый  – А и В каналы энкодера.

 

4.4 Жгут проводов рулевого колеса

Из рулевого колеса выходит многожильный провод, оканчивающийся 10-типиновым разъёмом. Всего на рулевом колесе 10 элементов управления – 6 кнопок без фиксации, два подрулевых переключателя без фиксации и два светодиода. Для удобства дальнейшего изложения, пронумеруем все элементы:

wheel.jpg

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

WheelBoard.jpg

WheelBoard-back.jpg

Видно, что ничего, кроме тактовых кнопок, светодиодов и четырёх диодных сборок BAV70 (D9-D12) здесь нет. На отдельных маленьких платах расположены тактовые кнопки подрулевых переключателей.

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

WheelSchematic.jpg

Легко заметить, что разработчики использовали диодную развязку, чтобы сэкономить пины и повесили восемь кнопок на шесть пинов разъёма. Для того, чтобы использовать такую конструкцию, нам будет необходимо правильно её подключить и запрограммировать.

Подключать будем так (в объяснении используются номера пинов разъёма, обозначенные на схеме):

 

  1. пины №№ 1-4 подключаем к цифровым пинам контроллера и конфигурируем как INPUT_PULLUP;
  2. пины №5 и №6 подключаем к цифровым пинам контроллера и конфигурируем как OUTPUT.

 

Программно работаем так:

 

  1. подаём HIGH на пин №5 и LOW на пин №6;
  2. опрашиваем пины №№ 1-4. Если на каком-то пине LOW, то соответствующая ему кнопка нажата, а если HIGH, то отпущена. Соответствие пинов кнопкам приведено в таблице ниже;
  3. теперь, наоборот, подаём HIGH на пин №6 и LOW на пин №5;
  4. и снова опрашиваем пины №№ 1-4. Если на каком-то пине LOW, то соответствующая ему кнопка нажата, а если HIGH, то отпущена. Соответствие пинов кнопкам приведено в таблице ниже.

 

Таблица соответствия пинов кнопкам. Строки соответствуют пинам 1-4, в ячейках находятся номера кнопок, которым этим пины соответствуют:

№ пина пин №5 = HIGH
пин №6 = LOW
пин №5 = LOW
пин №6 = HIGH
1 кнопка 4 кнопка 3
2 кнопка 8 кнопка 5
3 кнопка 9 кнопка 6
4 кнопка 10 кнопка 7

 

 

5. Вскрытие. Блок педалей

Конструктивно каждая педаль представляет собой потенциометр (переменный резистор) сопротивлением 4,7кОм, включённый по схеме делителя напряжения. Крайние выводы обоих резисторов соединены параллельно (красный и чёрный провода), а центральные выводы выходят на разъём самостоятельно (белый и зелёный провода).

Таким образом на семипиновый разъём педалей выходит 4 провода. Все провода, кроме чёрного соединены сразу с двумя пинами разъёма, т.е. свободных пинов на разъёме нет.

 

tmp1.gif

pedals.gif

 

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

Подали напряжение 5В на черны и красный провода и замеряли напряжение на выходах делителей (белом и зелёном проводах). Результат:

 

 

Отпущена

Нажата

Педаль газа

4,8В

0,6В

Педаль тормоза

0,9В

4,8В

 

6. Выводы

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

 

Узел Нужно пинов Примечания
Блок кнопок рычага переключения передач 2  
Датчик среднего положения руля 1  
Энкодер - датчик вращения руля 2  
Рулевое колесо 8  
Педали 2 ADC пины
Приёмник/передачик FS1000A 2  
Приёмник/передачик nRF24L01+ 4(6) SPI
Управление двигателем (TA7291) 3 1 пин - ШИМ
Контроль тока двигателя 1 ADC пин
ИТОГО:  21, 23 или 25
в зависимости от приёмника
Из них 3 ADC и 1 ШИМ

 

Если реализовывать логику питания так, как она реализована в оригинальном устройстве, то потребуется ещё один пин для индикации факта наличия питания мотора. Хотя, его, наверное, можно как-то совместить с пином контроля тока.

Рассматривались два варианта контроллера: ATMega32A и ATMega328P без кварца, с использованием пинов PB6 и PB7 как GPIO. Именно эти микросхемы рассматривались в основном потому, что они имеются под рукой. В случае ATMega32A предполагалось свободные пины вывести на разъёмы и оставить на случай возможно расширения устройства. У ATMega328P же свободных пинов не остаётся. В результате принято решение использовать ATMega328P.

vvadim
Offline
Зарегистрирован: 23.05.2012

ждём продолжения))))

evgta
Offline
Зарегистрирован: 02.09.2016

У меня такой руль есть, обратная связь в нем посредственная - сильно чувствуется ступеньки сопротивления коллекторного двигателя(а может энкодера) в общем нет плавного сопротивления руля. Руль крутится на 270- градусов где-то. И ещё у этих рулей геморрой с резисторами педалей, из-за люфтов нет стабильных показаний , но прорезиненный руль шикарный:)).

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

vvadim пишет:

ждём продолжения))))

Разве что совсем нескоро, это не мой проект, а внука, а ребёнок - он человек занятой, школа, кружки, олимпиады всякие, чёрте что. Ко мне приходит в лучшем случае пару раз в неделю.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Правильно и я понял, что в Европе и Америке - все правши, а в Британии и Японии, - наоборот, левши?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Правильно.

В Австралии тоже. Но там у них вообще, даже солнечные часы не в ту сторону идут :)

fed99
Offline
Зарегистрирован: 19.06.2018

НЕ могу найти электросхему руля MOMO Racing, сдохли  диоды  - 608 и стекло 437 (может стабилитрон) оба пропускают в обе стороны, но, точную маркировку на подмену найти не смог.  Руль работает,  но нет обратной связи.  

fed99
Offline
Зарегистрирован: 19.06.2018

Уточню схему главной платы...