Orion33
20.12.2004, 19:43
Сегодня весь день занимался прочтением постов на форумах на эту тему. Вернее, не как построить джойстик с нуля, а как поднять класс ширпотребовского оборудования. Плотным обмозгованием идеи занялся в метро, благо ехать в нем мне более получаса.
Итак, задача либо усовершенствовать электронику имеющегося агрегата, либо предложить что-то принципиально новое, но с сохранением механики или только корпуса.
Первое, что пришло на ум: выкинуть хитрые потенциометры с маленьким рабочим углом /как правило, 60 градусов/ и засунуть обычные, чтобы потом было легко их заменять. Но тогда резко сократится точность отслеживания положения движка, потому как напруга, подаваемая на вход АЦП, будет меняться не на всем диапазоне питания, а в маленькой ее части. Точнее, в 60 / 270 = 2/9. Т.е. всего лишь 22%. Мало, товарищи, чтобы принципиально улучшить класс устройства…
Электричка едет. Думаю дальше. А что, если на этот резюк повесить еще и операционник? Ведь питание на геймпорт подводится. Тогда можно будет «вытянуть» этот диапазон на весь от нуля до напряжения питания! Уже радостно потираю руки.
Хорошо, а сколько я смогу повесить осей на такой джой? На каждом порту – по 4 оси. Всего у меня два геймпорта /ну, повезло мне ;-)/. Итого – 8. Предел? Не люблю это слово, потому что не люблю себя в чем-либо ограничивать.
Электричка едет… Какой-то пьяный протягивает мне руку, хочет поздороваться. Делаю вид, что сильно задумался. Ну действительно, хочется всего и много! А как же разработчики всяких кульних USBёвых джоев поступают? Наверное, геймпорты они эмулируют /догадался Штирлиц ;-)/. Тогда правда, сколько захочу – столько и будет. Замечательно! Потому, что в нашем институте есть лаборатория по производству лабораторного оборудования, где Главный как раз освоил технологию использования FTDI-драйвера /это когда USBёвый девайс COM-портом прикидывается/. По логике вещей, ему можно приказать не только СOM-ом быть, но и геймом. Тогда мы исключаем влияние всяких наводок, потому что оцифровка будет происходить внутри джоя и передаваться в компутер уже в цифровом удобоваримом виде.
Электричка едет дальше… А как же Трусты, например, умудрились так завыёживаться с кнопками? Шифты там разные… Очевидно, они геймпорты программно эмулируют /догадался Штирлиц ;-)/. Т.е. данные передаются в какую-нить софтину на компутере /а пусть даже по тому же COMу/, тот ее обрабатывает всякими своими кривыми отклика и выдает потом на сэмулированный геймпорт. Почему так сложно? Потому что игрушки по стандарту только его видють. Надо их обдуривать. Вот и обдуривают, как могут. Не плохо могут некоторые, кстати…
Итак, к чему приехали? Берем какой-нить суперэргономичный джой, выкидываем из него всю «начинку», при необходимости дорабатываем механику, лепим «с нуля» электронику, пишем USB-драйвер, софтину, эмулирующую этот долбаный порт… Хм… А с чего все начиналось? ;-) Не спортивно…
Электричка уже почти приехала: осталась одна остановка. Надо уже родить какое-то решение. И тут меня осеняет! Что же такое потенциометр? Строго говоря, это не вещчь, а схема включения переменного резистора, который уже вполне материален. ;-) А какая его основная задача? Изменять коэффициент деления напруги в зависимости от положения движка. Т.е. тому АЦП, на который он вешается /на геймпорт или куда-то внутри USBёвого джоя/, нужно от него только напряжение. Т.е. эмулировать надо … ПОТЕНЦИОМЕТР! Т.е. «дурить» не «Мокрый софт», а сам джой.
Ну тут-то я совсем пришел в восторг, потому как вариантов для фантазии тут масса. Даже если просто использовать самый первый вариант с «растягиванием» рабочей зоны, можно получить легкозаменяемый резюк, потому как резюк с рабочим углом в 270-300 градусов можно купить в любом магазине радиодеталей /ну, из приемника старого, советского скрутить на худой конец/, то вот эти специфичные с 60-ю градусами я так и не нашел ;-(( /искал в Симметроне, Платане, даже в Фарнеле!/
Но это не самое главное! Сие устройство можно наделить мозгой, которая с цифирками работает! Как реализован обычный роликовый мышъ? Роликом крутятся колесики с дыгочками, по разные стороны которых стоят светодиод и пара фототранзисторов /если ниразу не разбирали мыша, срочно за отвертку!/. Два фототранзистора, чтобы отслеживать направление вращения. Во! То, что нужно! Сажаем эту хренацию на какой-нибудь микроконтроллер, от Analog Devices, например, потому что у них есть встроенные ЦАПы. Он умный, считает с частотой 85 МГц наши вращательные прерывания луча /это то, отчего курсор по дисплею бегает/, а ЦАП преобразует эти цифирки в постоянное напряжение, аки резюк! Всё! Да, через одно место получилось, но это однозначно проще, чем делать всю схему заново, писать дрова…
Но тут все нелюбители роликовых мышей вспомнят все их недостатки… Да, проскальзывают. А из-за чего? Потому что она круглые сутки по коврику ездит, всякую грязь собирает, а потом она на те стерженёчки пластмассовые налипает. А тут же всё закрыто будет, при желании даже загерметизировать можно! Или устроить зубчатую передачу. Да, от люфта не деться. Но при грамотном подборе коэффициента передачи /а напрямую оси на эти колёсики сажать низя/ погрешность от люфта будет меньше цены деления /определяется размерами решётки колёсика/.
Ага, вот и электричка приехала! ;-)
Уже дома, глядя на своего «мокрософтовского интеллектуального» мыша, сообразил еще одно решение. Можно егоный датчик жёстко прикрепить ко дну джоя, а на ось его нацепить поверхность вида сегмента сферы… Никакого дрожания не будет! На оптических мышах оно возникает исключительно из-за неровности поверхности – положите его на лист бумаги, и он пойдет как по маслу!
Вот такие вот извращенские идеи… А начиналось все с того, что я увидел, как можно оглядываться микростиком от геймпада…
18.07.2004
Итак, задача либо усовершенствовать электронику имеющегося агрегата, либо предложить что-то принципиально новое, но с сохранением механики или только корпуса.
Первое, что пришло на ум: выкинуть хитрые потенциометры с маленьким рабочим углом /как правило, 60 градусов/ и засунуть обычные, чтобы потом было легко их заменять. Но тогда резко сократится точность отслеживания положения движка, потому как напруга, подаваемая на вход АЦП, будет меняться не на всем диапазоне питания, а в маленькой ее части. Точнее, в 60 / 270 = 2/9. Т.е. всего лишь 22%. Мало, товарищи, чтобы принципиально улучшить класс устройства…
Электричка едет. Думаю дальше. А что, если на этот резюк повесить еще и операционник? Ведь питание на геймпорт подводится. Тогда можно будет «вытянуть» этот диапазон на весь от нуля до напряжения питания! Уже радостно потираю руки.
Хорошо, а сколько я смогу повесить осей на такой джой? На каждом порту – по 4 оси. Всего у меня два геймпорта /ну, повезло мне ;-)/. Итого – 8. Предел? Не люблю это слово, потому что не люблю себя в чем-либо ограничивать.
Электричка едет… Какой-то пьяный протягивает мне руку, хочет поздороваться. Делаю вид, что сильно задумался. Ну действительно, хочется всего и много! А как же разработчики всяких кульних USBёвых джоев поступают? Наверное, геймпорты они эмулируют /догадался Штирлиц ;-)/. Тогда правда, сколько захочу – столько и будет. Замечательно! Потому, что в нашем институте есть лаборатория по производству лабораторного оборудования, где Главный как раз освоил технологию использования FTDI-драйвера /это когда USBёвый девайс COM-портом прикидывается/. По логике вещей, ему можно приказать не только СOM-ом быть, но и геймом. Тогда мы исключаем влияние всяких наводок, потому что оцифровка будет происходить внутри джоя и передаваться в компутер уже в цифровом удобоваримом виде.
Электричка едет дальше… А как же Трусты, например, умудрились так завыёживаться с кнопками? Шифты там разные… Очевидно, они геймпорты программно эмулируют /догадался Штирлиц ;-)/. Т.е. данные передаются в какую-нить софтину на компутере /а пусть даже по тому же COMу/, тот ее обрабатывает всякими своими кривыми отклика и выдает потом на сэмулированный геймпорт. Почему так сложно? Потому что игрушки по стандарту только его видють. Надо их обдуривать. Вот и обдуривают, как могут. Не плохо могут некоторые, кстати…
Итак, к чему приехали? Берем какой-нить суперэргономичный джой, выкидываем из него всю «начинку», при необходимости дорабатываем механику, лепим «с нуля» электронику, пишем USB-драйвер, софтину, эмулирующую этот долбаный порт… Хм… А с чего все начиналось? ;-) Не спортивно…
Электричка уже почти приехала: осталась одна остановка. Надо уже родить какое-то решение. И тут меня осеняет! Что же такое потенциометр? Строго говоря, это не вещчь, а схема включения переменного резистора, который уже вполне материален. ;-) А какая его основная задача? Изменять коэффициент деления напруги в зависимости от положения движка. Т.е. тому АЦП, на который он вешается /на геймпорт или куда-то внутри USBёвого джоя/, нужно от него только напряжение. Т.е. эмулировать надо … ПОТЕНЦИОМЕТР! Т.е. «дурить» не «Мокрый софт», а сам джой.
Ну тут-то я совсем пришел в восторг, потому как вариантов для фантазии тут масса. Даже если просто использовать самый первый вариант с «растягиванием» рабочей зоны, можно получить легкозаменяемый резюк, потому как резюк с рабочим углом в 270-300 градусов можно купить в любом магазине радиодеталей /ну, из приемника старого, советского скрутить на худой конец/, то вот эти специфичные с 60-ю градусами я так и не нашел ;-(( /искал в Симметроне, Платане, даже в Фарнеле!/
Но это не самое главное! Сие устройство можно наделить мозгой, которая с цифирками работает! Как реализован обычный роликовый мышъ? Роликом крутятся колесики с дыгочками, по разные стороны которых стоят светодиод и пара фототранзисторов /если ниразу не разбирали мыша, срочно за отвертку!/. Два фототранзистора, чтобы отслеживать направление вращения. Во! То, что нужно! Сажаем эту хренацию на какой-нибудь микроконтроллер, от Analog Devices, например, потому что у них есть встроенные ЦАПы. Он умный, считает с частотой 85 МГц наши вращательные прерывания луча /это то, отчего курсор по дисплею бегает/, а ЦАП преобразует эти цифирки в постоянное напряжение, аки резюк! Всё! Да, через одно место получилось, но это однозначно проще, чем делать всю схему заново, писать дрова…
Но тут все нелюбители роликовых мышей вспомнят все их недостатки… Да, проскальзывают. А из-за чего? Потому что она круглые сутки по коврику ездит, всякую грязь собирает, а потом она на те стерженёчки пластмассовые налипает. А тут же всё закрыто будет, при желании даже загерметизировать можно! Или устроить зубчатую передачу. Да, от люфта не деться. Но при грамотном подборе коэффициента передачи /а напрямую оси на эти колёсики сажать низя/ погрешность от люфта будет меньше цены деления /определяется размерами решётки колёсика/.
Ага, вот и электричка приехала! ;-)
Уже дома, глядя на своего «мокрософтовского интеллектуального» мыша, сообразил еще одно решение. Можно егоный датчик жёстко прикрепить ко дну джоя, а на ось его нацепить поверхность вида сегмента сферы… Никакого дрожания не будет! На оптических мышах оно возникает исключительно из-за неровности поверхности – положите его на лист бумаги, и он пойдет как по маслу!
Вот такие вот извращенские идеи… А начиналось все с того, что я увидел, как можно оглядываться микростиком от геймпада…
18.07.2004