RC to joystick adapter

Теория

Практика

Проблемы и недостатки

Условия распространения

Это адаптер предназначен для подключения интерфейса Тренер-Ученик передатчика радиоуправления (только PPM) к стандартному игровому порту PC. Цели при этом могут преследоваться разные, но обычно эта штука нужна для тренировок на симуляторах радиоуправляемых моделей.

Теория

Стандартный игровой порт представляет собой классический 555-ый таймер, включенный в режиме одновибратора. Конденсатор времязадающей цепи находится на территории игрового порта, а соответствующий переменный резистор, связанный с рукояткой управления, в джойстике. При записи в игровой порт происходит запуск одновибратора, конденсатор заряжается через резистор джойстика, при напряжении на конденсаторе около 2/3 напряжения питания срабатывает компаратор в таймере, конденсатор принудительно разряжается и т.д. PC измеряет длительность получающихся импульсов, которая в некоторой степени отражает отклонение управляющей рукоятки. Форма получающихся при этом на контактах игрового порта импульсов схематично представлена на рисунке:

Сигнал стандартного джойстика

Подавляющее большинство существующих адаптеров между передатчиком и портом джойстика используют цифровые потенциометры и микропроцессор для обработки сигнала передатчика и управления потенциометрами. Довольно тяжеловесное решение, и не дешевое ...
Хотелось бы чего попроще, тем более что от микропроцессора избавиться трудновато. Кстати, PC-то меряет время, а не сопротивление или напряжение...
Предлагаемый адаптер реализует попытку управления аналоговым входом джойстика чисто цифровыми методами, основываясь на особенностях работы 555-го таймера. А тут всего два ключевых момента: старт таймера и его останов по достижении напряжения на входе 2/3 напряжения питания. Все, что между, никого не интересует. Получается такой алгоритм работы адаптера:

Получаемый сигнал иллюстрирует такой вот рисунок:

Сигнал адаптера

Получившуюся схему, наверно, описывать незачем, там все очень прозрачно, номиналы элементов некритичны, но лучше ставить то, что нарисовано, во избежание :). Входной каскад должен обеспечивать работу с большинством современных передатчиков, хотя нарисован разъем от Hitec. Информацию о подключении других передатчиков можно найти на русской странице FMS, там где описываются интерфейсы.

Схема адаптера RC to Joystick

 

Практика

Адаптер поддерживает до 8 каналов управления, четыре из которых пропорциональные, а четыре других эмулируют кнопки джойстика. По другому никак нельзя, игровой порт больше не поддерживает. Просто втыкаем адаптер в игровой порт и передатчик и все должно работать. В виндах имеет смысл создать собственный джойстик (в панели управления это, игровые устройства и т.д.) на четыре степени свободы и четыре кнопки, обозвать его красиво, а уже в программах пользоваться только работающими координатами и кнопками. Вы увидите при калибровке, что у Вас реально работает. Кстати, независимо от Вашего передатчика, адаптер всегда показывает виндам все четыре координаты. И четыре кнопки, но их никто не проверяет. Неработающие координаты твердо стоят на середине.

Про кнопки: винды не дают возможности откалибровать джойстик не нажав одну из кнопок на нем. Поэтому, если у Вас всего четыре канала управления, обязательно поставьте нарисованную на схеме кнопку. Желающие могут совершенно безболезненно подключать кнопки и на другие кнопочные выводы адаптера, как на схеме, даже задействованные от передатчика. Это никому не повредит.
Отдельная тема - раскладка каналов и кнопок; направления перемещений. Соответствие ручек передатчика  координатам джойстика. Микропрограмма написана для Hitec'а (все реверсы выключены), и дает виндам то, что они хотят - правая ручка (каналы 1 и 2) - координаты 1 и 2 джойстика т.п., направления перемещений тоже совпадают. Пятый канал - это уже кнопка 1 на схеме и в разъеме, а в виндах вторая(?). Если Вас это не устраивает, и используемая Вами программа не дает возможности переопределять каналы как надо (одну я знаю - демо от Ripmax), то можно внести изменения в микропрограмму, надеюсь что там все достаточно понятно. Найдите в исходнике соответствующий участок программы, подредактируйте, откомпилируйте, прошейте и все.

Привязка каналов к координатам джойстика. X1, Y1, X2, Y2 - координаты джойстика, они же ноги на схеме. Расставьте их как надо.

       TestChannel     Ch1tmpL, Ch1tmpH, X1      ; Channel1 output
       TestChannel     Ch2tmpL, Ch2tmpH, Y1      ; Channel2 output
       TestChannel     Ch3tmpL, Ch3tmpH, Y2      ; Channel3 output
       TestChannel     Ch4tmpL, Ch4tmpH, X2      ; Channel4 output

Реверс каналов. DirectChannel - канал выводится напрямую, ReverseChannel - канал реверсируется.

       DirectChannel   Ch1tmpL,Ch1tmpH,1         ; Channel 1
       ReverseChannel  Ch2tmpL,Ch2tmpH,2         ; Channel 2
       ReverseChannel  Ch3tmpL,Ch3tmpH,3         ; Channel 3
       DirectChannel   Ch4tmpL,Ch4tmpH,4         ; Channel 4

Привязка каналов к кнопкам. Поиграйтесь с Button1-4. Это и есть кнопки джойстика / ноги на схеме.

       CheckButtons    5, Button1                ; Channel 5
       CheckButtons    6, Button2                ; Channel 6
       CheckButtons    7, Button3                ; Channel 7
       CheckButtons    8, Button4                ; Channel 8

Микропрограмму можно откомпилировать с помощью AVR Studio, ее дают совсем бесплатно на сайте http://www.atmel.com.

Программирование микроконтроллера тоже не должно вызывать никаких сложностей. Указаный на схеме J1 подключается к программатору AvReal. Эти пять проводков можно включить прямо в параллельный порт (см. доку AvReal) и прошивать адаптер сколько надо. Командная строка для ленивых будет приблизительно такой: "avreal -ew -p1 +90s2313 -! -o8000 rc2joy.hex".
Подключенный программатор не мешает работе адаптера (все будет правильно работать только после того, как Вы прошьете адаптер, иначе состояние выводов параллельного порта непредсказуемо и, скорее всего Reset будет в 0 - адаптер не запустится). 

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

Проблемы и недостатки

Таких не наблюдается :)
На самом деле:

Условия распространения

Схема, исходный текст микропрограммы, это описание устройства "RC to joystick adapter" распространяются совершенно бесплатно. Вы можете свободно использовать их в некоммерческих целях, равно как и бесплатно распространять дальше при условии сохранения целостности исходного архива. Любое коммерческое использование возможно только с согласия автора.

Юра Ванин

www.rcdesign.ru

© JIV 2001