PDA

Просмотр полной версии : Джоестроителям посвящается... >>>



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

EJG<M>_Doctor
21.12.2004, 09:06
Сегодня весь день занимался прочтением постов на форумах на эту тему.
18.07.2004
==========================
Видать не все прочел, а точнее - НИ ОДНОГО!
За мыши (всех видов) разговор был - практически отвергнуто.
USB-девайс уж боле, чем пол-года создан Миндогом.
Мапперы еще писать никто не взялся.
Максикс Собрал девайсину на СОМ-порт.
С резюками вообще проблем никаких нет - либо замажь неиспользуемые участки токопроводящим клеем, а лучше пользуй оптику или магнитные датчики с ВКБ.
Ну и т.д. Ничего нового ты по сути не предложил.

USSR_Rik
21.12.2004, 11:02
Не согласен практически ни с чем (даже с постановкой исходной задачи) -
"Итак, задача либо усовершенствовать электронику имеющегося агрегата, либо предложить что-то принципиально новое, но с сохранением механики или только корпуса."

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

Выкинуть из "суперэргономичного" джоя (кстати, это что имеется в виду? из таких я знаю только РУС от Су-27 :) ) начинку и использовать его механику - тоже обсуждалось, имхо - стартовать надо именно с точной механики. Другое дело, что начать с электроники проще - см. пост =AGD=Doctor и ветку про USB контроллер. Но все равно, к необходимости хорошей механики придем мгновенно, как только электроника станет хорошей - вылезут наружу все люфты, скрипы и прочее.

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

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

Вообще же - "...через одно место получилось..." - извини, но это твои же слова.
"Вот такие вот извращенские идеи…" Вот с этим согласен.

Все, что я тут написал, ессно, личное мнение. Но оно подкреплено тем, что делал сам (ту же электронику от MeanDog) и тем, что видел и "шшупал" сам - механику UIV. Ну и электронным своим образованием и радиолюбительским стажем.

Orion33
21.12.2004, 12:49
Да не, все нормуль! Просто завалялась статья на компутере, решил выкинуть на суд общественности. У меня ж ведь как, даже если ценная идея родится, то вскоре все равно умрет. Потому что вечно лом поперек дороги лежит %)

USSR_Rik
21.12.2004, 12:53
А, то-то я не понял, к чему дата 18.07.2004 в твоем посте.