Игровой джойстик

Резисторы, транзисторы, конденсаторы, микросборки, чип компоненты ...
Вопросы согласования управляющих модулей с периферией.

Игровой джойстик

Сообщение alex_avr » 18 мар 2007, 18:21

Решия я использовать для управления роботом стандартный компьютерный игровой джойстик и столкнулся с рядом проблем:
Я взял джойстик подключаемый к game порту на звуковой карте. Как выяснилось, такие джойстики никакой электронной начинкии вообще не имеют. На каждой оси стоит по одному подстроечному резистору, таким образом, что при сдвиге джойстика сопротивление меняется примерно от 0 до 100КОм. Эти резисторы подключены непосредственно к разъему.

С помощью АЦП на АВР контроллере научился считывать данные о сопротивлении(данные с ац - числа примерно от 0 до 600).
Основная проблема с которой столкнулся - крайне низкое качество получаемых данных. Джойстик "скачет", управлять таким не представляется возможным...
попробовал брать среднее значение нескольких измерений для большей точности и плавности - помогло но не сильно...

Собственно хотел спросить, использовал ли кто-то аналогичный джойстик, как результаты?

И еще - существуют аналогичные USB джойстики, конечно их использовать былобы удобнее, да и качество там скорее всего лучше.
Но как подключить их к микроконтроллеру я без понятия...
alex_avr
 
Сообщения: 11
Зарегистрирован: 18 мар 2007, 02:16
Откуда: Московская область

Сообщение Vooon » 18 мар 2007, 18:35

вот зто настораживает:
(данные с ац - числа примерно от 0 до 600)


По нормальному должно быть 0-1023,
как подключен резистор джойстика к вашей плате?
Так?
Код: Выделить всё
 +------- +5V
 |
 П
 П<------ ADC_IN
 П
 |
 +------- GND


Что используете в качестве опорного напряжения АЦП?
Данные всеравно будут скакать, но не должно превышать 1ого (макс 2х) разряда(ов)
Иначе у вас какойто косяк, да и телепатов тут нет, код в студию :)
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение alex_avr » 18 мар 2007, 18:51

Vooon писал(а):вот зто настораживает:
(данные с ац - числа примерно от 0 до 600)


По нормальному должно быть 0-1023,
как подключен резистор джойстика к вашей плате?
Так?
Код: Выделить всё
 +------- +5V
 |
 П
 П<------ ADC_IN
 П
 |
 +------- GND


Что используете в качестве опорного напряжения АЦП?
Данные всеравно будут скакать, но не должно превышать 1ого (макс 2х) разряда(ов)
Иначе у вас какойто косяк, да и телепатов тут нет, код в студию :)

нет, подключается не так,
Код: Выделить всё
 +------- +5V
 |
 П
 П<--
 П   |
      |
  --------- ADC_IN
 |
 #
 # резистор около 100Ком
 #
 |
 +------- GND


Такое подключение, потому что с джойстика на каждый резистор идет только 2 провода, между которыми меняется сопротивление.

Опорное напряжение - напряжение питания 5В.

В выкладывании кода смысла не вижу, тк проблема не в нем.
Если я подключаю вместо джойстика обычный подстроечный резистор, то все меняется достаточно плавно - как надо.
Основной вопрос - всели джойстики такие или у меня он просто очень низкого качества? Если все, то как боротся?
Ну и вопрос с USB остается открытым...
alex_avr
 
Сообщения: 11
Зарегистрирован: 18 мар 2007, 02:16
Откуда: Московская область

Сообщение Vooon » 18 мар 2007, 19:12

тогда вам лучше уменьшить опорное, например запитать от внутреннего ИОН (если он есть в вашем чипе)
и подобрать номинал нижнего резистора (заменить думаю не проблнма)
Чтобы код ацп изменялся от 0 до 1023 (несколько вырастет чувствтельность)
проверьте питание, попробуйте загонять проц в слип на время измерения

На счет USB скажу лиш - а оно вам надо???
подрубить к КПК/ноуту/ПК легко а вот к АВРке это проблема, хотябы
потому что нужно сделать USB-хост, да еще с HID разобраться! Вы к
этому готовы?
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Сообщение alex_avr » 18 мар 2007, 19:37

Vooon писал(а):тогда вам лучше уменьшить опорное, например запитать от внутреннего ИОН (если он есть в вашем чипе)
и подобрать номинал нижнего резистора (заменить думаю не проблнма)
Чтобы код ацп изменялся от 0 до 1023 (несколько вырастет чувствтельность)
проверьте питание, попробуйте загонять проц в слип на время измерения

Да точности хватает...
Не хватает качества джойстика...
Vooon писал(а):На счет USB скажу лиш - а оно вам надо???
подрубить к КПК/ноуту/ПК легко а вот к АВРке это проблема, хотябы
потому что нужно сделать USB-хост, да еще с HID разобраться! Вы к
этому готовы?

Коенчно не надо, но если уже есть готовое решение, то не откажусь  :wink:
alex_avr
 
Сообщения: 11
Зарегистрирован: 18 мар 2007, 02:16
Откуда: Московская область

Сообщение alex_avr » 21 мар 2007, 00:17

Взял другой джойстик, он оказался намного качественее, впринципе его точности более чем достаточно.
Если кто заинтересован могу чуть позже выложить коды
alex_avr
 
Сообщения: 11
Зарегистрирован: 18 мар 2007, 02:16
Откуда: Московская область


Вернуться в Электроника, электротехника

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18