Приведу свои пять копеек.
Подчеркну, что это всего лишь идея. Идея сделать дешевый и точный ОПТИЧЕСКИЙ датчик. При всем уважении к магниторезисторам - их очень сложно оцифровывать - требуется АЦП или хотя бы простейший ШИМ (электронный народ меня поймет о чем я).
Предлагались темы с подсчетом импульсов как на мышке. Но - тут требуется механическая передача с оси джоя на датчик - а это ВСЕГДА люфт - пусть не сразу, но со временем. Этот люфт например создает мне много проблем в джое Saitek Cyborg 3D Force - там передача идет через шестеренки. Пассик со временем растянется и будет требовать замены. Кроме того - ось "мышиной" шторки надо будет ставить на подшипники - опять люфт.
В общем предлагаю конструкцию, в которой требуются следующие покупные изделия: ДВЕ оптопары работающие на отражение (переделывается из обычных мышиных) и один стандартный 80-мм корпусной кулер (цена вопроса 100 р.). Иллюстрация идеи прилагается.
На одну из лопастей кулера наклеивается кусочек алюминиевой фольги. На противоположной лопасти наклеивается балансир, дабы кулер не болтало. Включаем кулер на 5-7 вольт - так он не будет шуметь. Обороты для стандартного кулера будут примерно от 1200 до 1500 оборотов в минуту.
За каждый оборот фольга пробегает через оптопары два раза - один раз через оптопару А, другой раз - через Б. Оптопара А закреплена на неподвижной части (н-р станине джоя). Оптопара Б закреплена через рычаг на оси джоя (например вертикальной)
Для микроконтроллера это будет выглядеть как два импулься - один с фотодиода А, второй - с фотодиода Б. При нейтральном положении датчика время АБ будет равно времени БА. При повороте оси оптопары Б например против часовой стрелки имеем АБ<БА и соответственно наоборот. Время можно подсчитать или таймером или числом циклов - как кому нравится.
Нестабильность оборотов кулера при питании например шиной питания 5 вольт от стандартного компьютерного БП составляет около одного процента - т.е. практически обороты очень стабильны - здесь это критично для нелинейности и точности датчика.
Число разрядов (т.е. отсчетов на ось) с такого датчика - сколько микроконтроллер сможет натикать, столько и будет.
При 1500 rpm например имеем время АБ около 20 миллисекунд. За это время современный микроконтроллер, например AVR на частоте скажем 8 мегагерца сможет усчитать аж до 40000 отсчетов (это пятнадцать разрядов). Стоит учесть что угол отклонения джоя не превышает +/-15 градусов - 30 градусов в общей сложности - это двенадцатая часть окружности. Обычно ось джоя отклоняется еще меньше (особенно для напольных конструкций, для которых такие размеры датчика в принципе не помеха). Будем считать 1/16 часть окружности - 15 разрядов минус 4 разряда - имеем 11 разрядов. Минус один разряд на дребезг и прочие погрешности - имеем 10 разрядов (1024 отсчета на ось).
Датчики можно опрашивать параллельно, так как процесс медленный - при 1500 rpm имеем частоту опроса 25 герц.
При износе кулера (года эдак через два) ставим другой такой же за 100 рублей и не паримся.
Недостаток датчика - довольно большие размеры и довольно низкая частота опроса - всего 25 герц. Можно разогнать кулер до 3000 rpm (правда шуметь будет) - и получить 50 герц. И взять микроконтроллер на 16 Мгц - и получить 11 разрядов (2048 отсчетов).
Плюсы: питание требуется только пять вольт (как и электронике USB и самому микроконтроллеру) - единственное что на восемь таких кулеров может не хватить тока шины USB - но никто не мешает вывести питаниеи +5 вольт дополнительно с БП.
И основной плюс: за такие деньги (150 рублей на датчик максимум) и такую точность - 10 разрядов ни один другой датчик предложить не сможет. Да и плюс к такой надежности - даже самый раскитайский кулер в режиме 1500 rpm сможет проработать как минимум два года. (а так у меня в БП от 286-го такой кулер уже 15 лет трудится без чистки и смазки - не гудит, не дребезжит и вообще весь из себя работает)




) - и получить 50 герц. И взять микроконтроллер на 16 Мгц - и получить 11 разрядов (2048 отсчетов).
)
Ответить с цитированием