В принципе тема вполне даже для всех, просто создана для обсуждения одного момента, связанного с кривыми Х52. Назвал так, чтобы ни у кого не возникало желание заходить в тему с мыслью "а сейчас я ему посоветую ту темку, где паяют вон ту схемку и детище Сайтека становится практически идеальном в своей линейности"
Дело вот в чем. На Х52 старательно борятся с нелинейностью и пытаются для ощущения мира и покоя на душе нарисовать круг в джойтестере. Это факт довольно известный. Вплоть до того, что в результате получают обратную нелинейность, когда ромб вместо круга начинает превращаться в подобие квадрата с закругленными углами.
Дело вот в чем. Я пытаюсь понять, почему проблема нелинейности не решается выставлением кривых отклика... Например, с кривыми 10-20-30-и т.д. типовой линейный джойстик в Иле фактически рисует этот самый ромб. Т.е. джойстик становится более мягким в центре за счет ужесточения крайних положений. Это, вроде как, то, что имеется на Х52, но в усиленном варианте и усугубляется тем фатком, что джойстик имеет больший ход по сравнению с большенством других, т.е., чем больше ход рукоятки, тем меньше нужно смягчение кривых в центральном положении, т.к. джойстик уже имеет достаточный ход для получения должной точности прицеливания в центре.
Я рассмотрел типовой ромб, нарисованный на Х52 в джойтестере, принял его за условный круг, т.е. в качестве допущения принял, что самой рукояткой был нарисован именно круг и провел анализ кривых отклика для данного девайса. Как я думаю понятно, джойстик требует выставления кривых из стандартных 10-20-30... во что-то более резкое типа 50-55-60... для увеличения резкости отклика рукоятки в центре.
Так вот, с помощью небольшой самодельной софтины я просто начал подбирать такое "искривление" кривых, чтобы нарисованные виртуальной палкой круги стали как можно точнее повторять исходные, нарисованные в джойтестере, ромбы. После этого я сделал обратный пересчет так, чтобы получились значения для отклика такие, чтобы в Иле джойстик стал "рисовать" круги или что-то достаточно к ним близкое.
Вот, что у меня получилось:
Стандартные линеризованные кривые Ила - 10,20,30 и т.д.:
26 39 49 58 67 74 81 88 94 100
Линеризованные кривые "все по 100" (выставлять вручную в
conf.ini):
258 194 164 146 133 123 116 110 104 100
Промежуточные кривые различной степени мягкости, начиная от наиболее
мягких к наиболее жестким:
41 54 63 70 76 82 87 92 96 100
65 74 80 84 88 91 94 96 98 100
163 141 129 122 116 111 108 105 102 100
205 165 145 133 124 117 112 108 103 100
К слову говоря, из-за большого хода Х51 для некоторых, возможно, были бы предпочтительны кривый с "обратной нелинейностью" - когда центр станосится более чувствительным, чем на линейном джойстике, но этот вариант я не просчитывал (можно и его просчитать).
Данный пост уже имел место быть на Желтом, где мне в частости сказали, что нечто подобное уже пробовали сделать, основываясь на расчетах движения датчиков Холла, но более конкретной инфы я не нашел (скажу честно, не так уж и искал, т.к. обсуждений Х52 было довольно много и перелопачивать их большого желания не возникло).
Данные кривые, в большинстве своем придется выставлять вручную в Conf.ini, т.к. их значения превышают 100, но это, думаю, не слишком страшно
Далее, может появиться вполне законный вопрос вот по какому поводу: дело в том, что когда производится обратная компрессия значений, особенно, если эти значения начинают подбираться к 300, при этом, при выравнивании, снижается точность джойстика в центральных положениях. Т.е. по идее начинает проявляться дискретность показаний микросхемы. На это у меня соображение довольно простое: Х52 имеет, прямо скажем, избыточную точность по осям (2048, если не ошибаюсь). Даже при слижении точности в 3 раза (кривые порядка 300), эта точность продолжает составлять порядка 600-700 значений, что вполне достаточно, т.е. говорить при этом, что точность значительно снижается, было бы не совсем верным. Еще одним вопросом может быть то, что, мол, это лишь приблизительный подбор, он не позволит точно высчитать значения "круга", т.к. за основу был взят вполне неточный вариант попытки "нарисовать" его рукояткой. На это могу сказать, что
точный круг, вообще говоря, не слишком нужен, т.е. джойстик вполне может иметь некоторую нелинейность в том или ином направлении (после аппаратной линеризации возможен эффект того, что сигнал начинает иметь "обратную нелинейность", то, что было описано в начале поста), главное, чтобы эта нелинейность не выходила за рамки разумного.
Но вполне понимаю, что вопросы все равно остаются. Дело в том, что в центральных положения датчик фиксирует очень малые "значения", т.е. вполне возможно, что в районе слабого сигнала имеет место быть шум. Я не знаком с датчиками Холла и их реализацией в Х52 (например, может влиять цепь питания) и не знаю, имеют ли они свойство "шуметь". Второй момент: уже не раз встречал информацию, что оцифровывающая микросхема тоже неидеальна. Она вполне может сама давать шум, выдавая, например, постоянный шум +/-4 значения. Это, естесственно, уменьшит точность в районе центра и центр может стать достаточно "шумным", чтобы такой метод решения данной проблемы становился довольно нереальным. Но этого я на данный момент не знаю.
Что касается аппаратного решения проблемы схемой Гогоблина, установке гвоздей на магните
и прочего, понятно, что такое решение лучше именно по причине того, что при этом не будут проявляться возможные шумы в центре. Плюс, это несомненно поможет в играх, где нет возможности выставления кривых отклика.
И тем не менее вопрос остается: не решается ли проблема хотя бы на условно достаточном уровне таким методом. Просто уже не раз встречал ситуацию, когда, просто например, от обратки отказывались просто по причине того, что ее нужно было вначале грамотно настроить через fedit и, как вариант, вообще удалить эффекты пулеметов и пушек, и в результате чего писали, что обратка "своими детскими эффектами только снижает точность"; или когда РУД 45 называли неудобным из-за неважного расположения качалки (сам РУД кроме качалки, ИМХО, вполне даже удобен), ну и прочего в таком роде.
Предлагаю обсудить.