RC to joystick adapter
Это адаптер предназначен для подключения интерфейса Тренер-Ученик передатчика радиоуправления (только PPM) к стандартному игровому порту PC. Цели при этом могут преследоваться разные, но обычно эта штука нужна для тренировок на симуляторах радиоуправляемых моделей.
Теория
Стандартный игровой порт представляет собой классический 555-ый таймер, включенный в режиме одновибратора. Конденсатор времязадающей цепи находится на территории игрового порта, а соответствующий переменный резистор, связанный с рукояткой управления, в джойстике. При записи в игровой порт происходит запуск одновибратора, конденсатор заряжается через резистор джойстика, при напряжении на конденсаторе около 2/3 напряжения питания срабатывает компаратор в таймере, конденсатор принудительно разряжается и т.д. PC измеряет длительность получающихся импульсов, которая в некоторой степени отражает отклонение управляющей рукоятки. Форма получающихся при этом на контактах игрового порта импульсов схематично представлена на рисунке:
Подавляющее большинство существующих адаптеров между передатчиком и портом
джойстика используют цифровые потенциометры и микропроцессор для обработки сигнала
передатчика и управления потенциометрами. Довольно тяжеловесное решение, и не
дешевое ...
Хотелось бы чего попроще, тем более что от микропроцессора избавиться трудновато.
Кстати, PC-то меряет время, а не сопротивление или напряжение...
Предлагаемый адаптер реализует попытку управления аналоговым входом джойстика
чисто цифровыми методами, основываясь на особенностях работы 555-го таймера.
А тут всего два ключевых момента: старт таймера и его останов по достижении
напряжения на входе 2/3 напряжения питания. Все, что между, никого не интересует.
Получается такой алгоритм работы адаптера:
Получаемый сигнал иллюстрирует такой вот рисунок:
Получившуюся схему, наверно, описывать незачем, там все очень прозрачно, номиналы элементов некритичны, но лучше ставить то, что нарисовано, во избежание :). Входной каскад должен обеспечивать работу с большинством современных передатчиков, хотя нарисован разъем от Hitec. Информацию о подключении других передатчиков можно найти на русской странице FMS, там где описываются интерфейсы.
Практика
Адаптер поддерживает до 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" распространяются совершенно бесплатно. Вы можете свободно использовать их в некоммерческих целях, равно как и бесплатно распространять дальше при условии сохранения целостности исходного архива. Любое коммерческое использование возможно только с согласия автора.
© JIV 2001