Доработки
ЧАСТЬ 1:
конструктивно братьями-китайцами сделано питание усилителей LC напрямую от питания USB (5В), а stm32 понятно питается от линейного стабилизатора на 3.3В - и как следствие - прямая зависимость уровней осей от напряжения на USB шине
проявляется: падают уровни педалей при подключении USB девайсов, поднимаются уровни педалей при подключении активных USB хабов
что интересно - от активного USB хаба у меня педаль газа даже зашкаливала за диапазон уже на 2/3 своего хода и дальше была метрвая зона
предлагаю доработку: перевести всю плату на одно напряжение 3.3В - для этого я разрезал родной USB шнурок и в разрыв цепи питания встаил линейный стабилизатор:
а на плате выпаял стабилизатор и замнул его вход и выход (2 и 3я нога)
! Внимание ! после удаления стабилизатора использование USB кабеля без понижающего стабилизатора убъет микроконтроллер!
итак, теперь у нас все компоненты платы питаются от 3.3В и плате не важно (в пределах 4.5-12В) что там подается на нее от ПК.
Этой манипуляцией мы снижаем рабочий диапозон значений педалей, и для восстановлении ситуации необходимо вмещательство в резисторы обвязки усилителей
Работать будем со схемами газа и сцепления
- удаляем с платы резисторы R19 и R7 (это верхние плечи делителя напряжения Vref, теперь Vref = 0)
- меняем резисторы R6, R9, R18, R20 с маркировкой 01B (1кОм) на 510 Ом (типоразмер SMD 0603)
этим мы изменили (увеличиили) коэффициент усиления усилителей и увеличили диапазон напряжения для оцифровки микроконтроллером
ЧАСТЬ 2:
выбрасываем с платы китайский микроконтроллер с кривой прошивкой и ставим туда неурезанную версию STM32F103C8T6
в качестве донара пойдет bluepill
а все это делается для того, чтобы устаивить сюда FreeJoy https://github.com/FreeJoy-Team/FreeJoy
процесс установки подоробно описывать не буду, все можно почитать в русскоязычной версии https://github.com/FreeJoy-Team/FreeJoyWiki
для этого подключаемся програматором ST-link V2 так:
PA13 соответветствует SWDIO
PA14 соответствует SWCLK
запускаем freejoy:
и конфигурируем входы A0, A1, A2 как аналоговые оси (к ним соответственно подключены усилители газа, тормоза, сцепления)
нажимаем запись конфига (по факту это является "применением" настроек)
на вкладке оси нам необходимо назначить аналоговые оси A0/A1/A2 на они контролера (в моем случае это Rx, Ry, Rz)
не забываем после каждого изменения перезаписывать конфиг
так же тут их можно сразу откалибровать и применить фильтры (по желанию)
на следующей вкладке нам доступно изменение линейности поведения осей в виде графика, тут есть говые демонстрациооные пресеты, которые если нужно - можно заменить своими... вдруг кому пригодится)
ну в доп настройках есть возможность выбрать язык и изменить название контроллера в системе
подведем итог:
1й этап нам дает стабильность поведения осей педалей питающего напряжения, оси перестают плавать, нет необходимости их перекалибровывать
2й этап с заменой ПО:
- увеличивает количество отсчетов педалей до 12 бит 0-4095 (почему то в штатной прошивке данные передаются с разрядностью 10 бит 0-1023)
- позволяет на уровне контроллера откалибровать оси, а не в среде Windows (например iRacing не берет данные калибровки из Windows а калибрует их по низкоуровневым данным)
- появляется возможность инвертировать педали (может пригодится для старых игр)
- стает доступно изменять линейность оси посредством графика
итого вместе с 1м этапом по итогу получились следующие диапазоны:
газ 1675 положений (до этого было 340)
тормоз 3585 положений (зависит от преднатяга стойки)
сцепление 1460 положений
... но можно еще поиграться с резисторами, но далее результат вряд ли будет заметен невооруженным взгядом поставил те что были под рукой в этом размере
P.S. пробовал считать сущесутвующую прошивку из МК, но она почему то 64 кб взялась
ну и по понятным причинам не захотела залетать обратно (флеш памяти то 32кб)
вдруг кому пригодится... https://disk.yandex.ru/d/PXswYW2hWpQ6Wg