Logitech® Momo Racing: переделка под свои нужды
- Войдите на сайт для отправки комментариев
Возникла задача, используя готовую механику и датчики игрушки Logitech® Momo Racing Force Feedback Wheel, переделать симулятор из приставки для компьютерных игр, в пульт управления самодельными радиоуправляемыми моделями.
Поехали ...
1. Внешний осмотр
Игрушка состоит из двух частей, рулевого блока и блока педалей.
На рулевом блоке имеется:
- рулевое колесо, поворачивающееся примерно на 270-300 градусов;
- шесть кнопок без фиксации;
- два подрулевых переключателя без фиксации;
- два светодиода;
- ручка переключения передач на три положения (среднее, вперёд и назад) тоже без фиксации (в смысле будучи свободной, всегда находится в среднем положении).
Из рулевого блока выходит провод с разъёмом USB для подключения к компьютеру. Также на рулевом блоке имеется разъём для подключения внешнего питания (24V / 750mA DC, «+» в центре) и семипиновый разъём похожий на D-SUB для подключения педального блока.
На педальном блоке имеются:
- две педали;
- провод с семипиновым разъёмом для подключения к рулевому блоку (ответная часть к разъёму, похожему на D-SUB, который упоминался при описании рулевого блока).
Больше ничего интересного при внешнем осмотре не обнаружилось.
2. Вскрытие. Рулевой блок
Вот как выглядит рулевой блок, со снятой крышкой.
В центре всего этого великолепия находится плата контроллера зелёного цвета. Вся периферия подсоединена к ней.
Слева и справа расположены блоки кнопок рычага переключения передач (на рисунке обозначены цифрами 1 и 1а). Рычаг-то у устройства один, но блоков кнопок два, видимо, для того, чтобы можно было легко переставить рычаг, если играющий, например, левша. Сразу отмечу, что поставить два рычага, и использовать оба не получится (без переделок), т.к. провода от них соединены параллельно и входят в контроллер одним трёхпиновым разъёмом.
На оси рулевого колеса находится небольшой металлический предмет (2b) и, напротив того места, где он оказывается когда руль стоит прямо, плата с датчиком (2a). Разумно предположить, что это датчик центрального положения руля, что и подтвердилось при более детальном рассмотрении (ниже).
Обращает на себя внимание внушительных размеров электродвигатель постоянного тока, подключённый к рулевому колесу через редуктор. Им можно устанавливать колесо в среднее положение после включения питания, возвращать рулевое колесо в среднее положение после поворота, передавать на него вибрации от дороги и т.д. Двигатель вращается не только сам по себе, но и при вращении рулевого колеса руками. К двигателю подсоединён оптический энкодер (3) с помощью которого контроллер может получать информацию о вращении рулевого колеса.
Разъём для подключения педального блока (4) распаян на плате контроллера. Также на плату заводится провод для подключения к компьютеру по USB (5).
3. Проектное решение
По результатам осмотра внутренностей рулевого блока был сделан предварительный вывод о том, что, наверное, не имеет смысла делать свой USB-Host для расшифровки команд и передачи их по радио. Во-первых, внятной документации по высокоуровневому протоколу игрушки найти не удалось, а во-вторых, конструкция в которой информация собирается с обычных кнопок и цифровых датчиков, кодируется для USB, затем декодируется обратно, чтобы быть отправленной по радио выглядела бы слишком надуманной.
Вместо этого было решено: делать собственную плату контроллера с радиопередатчиком на борту, а все датчики и прочую периферию подключать к ней через точно такие же, как на оригинальной плате, разъёмы. Таким образом, сохраняется возможность вернуть игрушку в изначальное состояние путём замены контроллера на оригинальный (на случай, если хозяин передумает и решит ещё поиграть на компьютере).
4. Осмотр периферии
Поскольку данное решение предполагает детальное знакомство с подключаемой к контроллеру периферией (иначе как мы будем с нею работать), продолжаем осмотр.
4.1 Блок кнопок рычага переключения передач
Блок кнопок (на рис. №№ 1 и 1а) состоит из двух кнопок и диодной сборки BAV70. К контроллеру подсоединяется тремя проводами. Схема такая:
Мы планируем подключать эту плату к контроллеру по стандартной для кнопок схеме, а потому диодная сборка нам не нужна, но и мешать не будет.
4.2 Датчик среднего положения руля
Датчик среднего положения руля (2) - цифровой датчик на основе датчика отражающей способности, предположительно QRE1113. Подключается по трём проводам - красному. зелёному и чёрному.
На красный и чёрный провода подаётся питание. На зелёном проводе нормально высокий уровень, который сменяется на низкий, когда руль установлен по центру, т.е. металлический предмет (2b) находится напротив платы датчика (2a).
4.3 Энкодер - датчик вращения руля
На двигателе установлен оптический энкодер (3) состоящий из двойного светодиода, приёмника и колёсика между ними. Никаких других деталей на плате нет. Отверстия на колёсике расположены достаточно часто, количество их пока не подсчитывалось, присоединим к контроллеру - само посчитается.
Провода, подходящие к плате энкодера:
- Жёлтый – GND
- Зелёный – питание (5В)
- Красный – питание светодиода (5,5мА, падение напряжения на сетодиоде – 1,16В)
- 5. Чёрный и Белый – А и В каналы энкодера.
4.4 Жгут проводов рулевого колеса
Из рулевого колеса выходит многожильный провод, оканчивающийся 10-типиновым разъёмом. Всего на рулевом колесе 10 элементов управления – 6 кнопок без фиксации, два подрулевых переключателя без фиксации и два светодиода. Для удобства дальнейшего изложения, пронумеруем все элементы:
Для того чтобы точно знать назначение проводов, рулевое колесо было разобрано и изучена схема соединений внутри него.
Видно, что ничего, кроме тактовых кнопок, светодиодов и четырёх диодных сборок BAV70 (D9-D12) здесь нет. На отдельных маленьких платах расположены тактовые кнопки подрулевых переключателей.
Принципиальная схема (номера, проставленные возле обозначений деталей соответствуют рисунку внешнего вида рулевого колеса выше):
Легко заметить, что разработчики использовали диодную развязку, чтобы сэкономить пины и повесили восемь кнопок на шесть пинов разъёма. Для того, чтобы использовать такую конструкцию, нам будет необходимо правильно её подключить и запрограммировать.
Подключать будем так (в объяснении используются номера пинов разъёма, обозначенные на схеме):
- пины №№ 1-4 подключаем к цифровым пинам контроллера и конфигурируем как INPUT_PULLUP;
- пины №5 и №6 подключаем к цифровым пинам контроллера и конфигурируем как OUTPUT.
Программно работаем так:
- подаём HIGH на пин №5 и LOW на пин №6;
- опрашиваем пины №№ 1-4. Если на каком-то пине LOW, то соответствующая ему кнопка нажата, а если HIGH, то отпущена. Соответствие пинов кнопкам приведено в таблице ниже;
- теперь, наоборот, подаём HIGH на пин №6 и LOW на пин №5;
- и снова опрашиваем пины №№ 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 провода. Все провода, кроме чёрного соединены сразу с двумя пинами разъёма, т.е. свободных пинов на разъёме нет.
Потенциометры расположены «зеркально» - спиной друг к другу, а потому на одной педали (тормоза) при нажатии напряжение в средней точке делителя увеличивается, а на другой (газа) уменьшается. При этом, потенциометры не находятся в крайних положениях, ни при отпущенной педали, ни при полностью нажатой.
Подали напряжение 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.
ждём продолжения))))
У меня такой руль есть, обратная связь в нем посредственная - сильно чувствуется ступеньки сопротивления коллекторного двигателя(а может энкодера) в общем нет плавного сопротивления руля. Руль крутится на 270- градусов где-то. И ещё у этих рулей геморрой с резисторами педалей, из-за люфтов нет стабильных показаний , но прорезиненный руль шикарный:)).
ждём продолжения))))
Разве что совсем нескоро, это не мой проект, а внука, а ребёнок - он человек занятой, школа, кружки, олимпиады всякие, чёрте что. Ко мне приходит в лучшем случае пару раз в неделю.
Правильно и я понял, что в Европе и Америке - все правши, а в Британии и Японии, - наоборот, левши?
Правильно.
В Австралии тоже. Но там у них вообще, даже солнечные часы не в ту сторону идут :)
НЕ могу найти электросхему руля MOMO Racing, сдохли диоды - 608 и стекло 437 (может стабилитрон) оба пропускают в обе стороны, но, точную маркировку на подмену найти не смог. Руль работает, но нет обратной связи.
Уточню схему главной платы...