понедельник, 25 мая 2015 г.

Адаптация оптических мышей для Амиги

Пошаговая инструкция по доступной для каждого адаптации


Варианты адаптации

  • Немецкий: подключение квадратурных выходов сенсора к порту Амиги напрямую. Автор MastaTabs, апрель 2014
  • Русский: подключение квадратурных выходов сенсора через буферные инверторы. Автор StarCat, февраль 2014
  • Чешский: изготовление собственной печатной платы методом ЛУТ. Автор EXA, март 2014

Как можно видеть, идея родилась впервые у Жиржи Резека из домашнего чешского сервис-центра Servis EXA, а затем была творчески переосмыслена в России (AiC), и наконец Германии (a1k.org). На изначального автора никто конечно не ссылался (первый ссылаюсь) или всех осенило одновременно (весна же). К вопросу о том откуда что берётся. =)

Наглядно покажу чем отличаются практические реализации, а Вы уже выберите по вкусу. Я буду описывать дальше свою (русскую) реализацию - те кому она не подходит (привет, Useless ;) могут дальше не читать.

Немецкая Русская Чешская
Чисто немецкая педантичность Мышь на гусеничном ходу витой паре Кнедлики

Схема подключения


StarCat был немногословен в своём сообщении, поэтому пришлось хорошо изучить вопрос. Схемы рисовать не мастак, чисто по-менеджерски нарисовал схемку в LibreOffice Draw (кликабельно). Можно опять же брать и делать. Ошибки распайки в исходной картинке StarCat были проверены на практике и исправлены, в остальном те же яйца - вид сбоку.


Для тех кто хочет указать свой копирайт (в фантазии не ограничиваю) - исходный файл.

Шаг 1 - Покупаем необходимое


Если что-то из нижеперечисленного у Вас уже есть, себестоимость будет ещё ниже. Цены приведены по состоянию на май 2015 г.

МатериалСтоимость
Оптическая мышь
(PS/2 или PS/2+USB)
от 100 р.
Мягкий патч-корд 1,5-2 м
(или любой тонкий кабель
на 8-10 solid-жил)
до 250 р.
Микросхема К561ЛН2
(аналог CD4049AE)
29 р.
DIP-панель SCS-16 8 р
Гнездо DIN DB-9F 13 р.
Корпус DP-9C 21 р.

ИТОГО: 421 р.


Необходима оптическая мышка построенная на сенсоре обладающем квадратурными выходами (Xa, Xb, Ya, Yb). Мне известны 10 таких сенсоров: ADNS-2001, ADNS-2051, ADNS-2030, PAN3201DH (1,8V!), PAN3601DH, PAN3601DH-NF, PAW3602DH, PAW3602DH-NF, PAW3603DH, GL603USB-B. Из них наиболее предпочтительны рассчитанные на напряжение 5В. Микросхема К561ЛН2 имеет рабочий диапазон от 3 до 15 В и обеспечивает согласование уровней (за что её собственно и любят). Полный аналог К561ЛН2 - микросхема CD4049AE имеет другую распиновку, причём встречается как в корпусе DIP-14, так и DIP-16. Она также подойдёт, стоит дороже.

Идеально подходят мышки Logitech M-BJ58 и M-BJ69. Если верить Google должны подойти также Logitech M-BD69, A4Tech BW-26, Oklick 710L, 725L, Cherry M-BD70, двухсенсорная мышка Logitech Mouseman Dual Optical, уникальный манипулятор RTR-720 Mark II, элитарные трекболы Kensington серии Optical Expert Mouse. Самые буйные могут попытаться сделать из беспроводных Apacer M811 и M821 проводные оптические для Амиги (это без меня).

Косвенным показателем подходящей мышки является указание производителем PS/2+USB, что требует дополнительной интерфейсной микросхемы т.к. в большинстве мышек сегодня поддержка USB интегрирована в сам сенсор, а его корпус на выводах усох до минимума необходимого USB (D+, D-, земля и питание). Стоят универсальные мышки дороже, а квадратурные сенсоры для них продолжают изготавливать и в Китае, и на Тайване.

Большой проблемой является кабель. Минимально нам необходимо 8 жил, если хотим добавить 3-ю кнопку - 9 жил. Можно использовать мягкий патч-корд UTP Cat 5e отрезав ~ 1,5 м. Его мягкости не вполне хватает хотя он и лучше шлейфа. Гениальные идеи насчёт кабелей ШТЛП-8 и КСПВ-10 посещали меня и моих друзей. Это ещё хуже. Часто используют промышленный кабель от амижной мышки, но это даёт нам только 2 кнопки и потерю родной ретро-мыши. Встречается гибкий монтажный кабель на 9 жил и я даже нашёл себе такой, но марку не знаю. Ищущий - да обрящет.

Внимание на панельку. Лучше использовать SCS-16, хотя у микросхемы всего 14 ног. Во-первых, CD4049(AE) чаще встречается всё-таки в корпусе DIP-16 (если не найдётся К561ЛН2 в DIP-14). Во-вторых, нам необходимы вырез между контактными группами и вырезы по бокам панельки со стороны платы. Последнее встречается по моим наблюдениям начиная с SCS-16.


Шаг 2 - Выпаиваем интерфейсную микросхему


Разбираем нашу мышку (у меня Logitech M-BJ58).


Достаём плату и смотрим на неё спереди (снимаем скобу). Интерфейсный чип CP5928AM занимается согласованием для PS/2 + USB. Вся часть схемы касающаяся его подключения к сенсору нам не нужна и более того - м.б. вредна.


Переворачиваем плату. Нам предстоит взять паяльник, оловоотсос и отпаять интерфейсный чип. Он прекрасно отпаивается при температуре ~ 350 °C. Если из паяльников у Вас кочерга, а оловоотсоса вообще нет, прежде чем продолжать - купите. Паяльник с керамическим нагревателем и регулятором 30-50 Вт типа этого стоит 500-750 руб, тут говорить вообще не о чем. Оловоотсос для этой операции также абсолютно необходим. У меня Solomon SH-817B.


Да! Мы сделали это! =)


Шаг 2 - Разводим питание и кнопки


На краю платы любой мышки есть разъём на 4-5 pin к которому подключается мышиный кабель. 5 pin в Logitech M-BJ58 как раз хватает для подключения +5В, GND и 3 кнопок мыши. Используем существующую распайку по GND и +5В, а pin относящиеся к +Data, -Data и Shield аккуратно отделим от дорожек скальпелем - к ним мы позже припаяем перемычки. Распайка разъёма:

Сигнал Цвет
+Data зелёный
-Data белый
+5V красный
Shield чёрный
GND чёрный

Подключаем GND и +5V - светодиод не загорается. Питание зависимо от интерфейсного чипа который мы выпаяли. Заводить питание через дорожки этого чипа не будем, чуть позже мы их вообще уничтожим. Гарантировано +5В доходит до штатной перемычки W1 с которой удобно бросить свою перемычку на 13-ю ногу сенсора A2051.


Аналогичным образом перемычками заводим левую, правую и среднюю (нажимаемую колёсиком) кнопки на этот разъём. Если у нас будет всего 2 кнопки - бросаем перемычку между левой и средней, они удобно находятся рядом. У Вас будет два способа нажать левую кнопку когда микрик на левой раздолбается. =)

Шаг 3 - Разделываем кабель


Сейчас мы можем разделать кабель и подключить к мышиному порту Амиги чтобы посмотреть что у нас уже получается. Для этого нам необходима программа Advanced Amiga Analyzer by Wilcom ходящая по народу под названием Full Test (скачать). Она позволяет визуализировать обращения к портам, нас пока интересуют кнопки. Поскольку мы используем витую пару будет удобным расписать по цветам сигналы, чтобы подключая к мышиной плате знать куда какой идёт. Я сделал это так:

Pin Сигнал Цвет
1 Vp синий
2 Hp бело/синий
3 VQp зелёный
4 HQp бело/зелёный
5 M btn -
6 L btn бело/оранжевый
7 +5V оранжевый
8 GND коричневый
9 R btn бело/коричневый

Со стороны порта (лучше использовать кембрики, а не как на фотографии).


Со стороны платы. У нас выделились две линии: 1) питание, земля и кнопки и 2) квадратуры которые пойдут отдельно.


Смотрим что получается в тесте - нажимаем кнопки. Имеем ввиду что после запуска теста курсор находится в верхнем левом углу и нажатие левой кнопки закроет окно. Я не сразу понял почему программа закрывается. Лучше предварительно отогнать куда-нибудь курсор старой мышкой, по горячему.. =)


Шаг 4 - Подключаем согласование


Микросхему будем ставить на панельку SCS-16 и подключать согласно схеме в начале статьи. Все дорожки на плате касающиеся интерфейсного чипа нам не нужны. Поэтому обводим скальпелем все его контакты на обратной стороне платы. Также нам не нужны все SMD-компоненты которые там напаяны. Грубо говоря, сенсор будет "висеть в воздухе", получать свои +5В и GND, управлять светодиодом и отдавать нам квадратуры.

Будем аккуратны и не повредим дорожки необходимые для управления светодиодом. К светодиоду подключаются 6-я нога (XY_LED - управление светодиодом) и 14-я нога (R_BIN - текущий резистор) сенсора A2051. Для изменения яркости свечения светодиода он просто запитывается через разные сопротивления. На 13-ю ногу (Vdd) сенсора A2051 подаётся +5V, а на 12-ю и 10-ю ноги (GND) - земля. Вот дорожки с этих ног/выводов - жалеем. Всё остальное уничтожается. Затем запаиваем панельку.

Прошу не падать со стула: нам понадобится шуроповёрт и острое тонкое сверло. Запаяв панельку надо высверлить всё что находится в пространстве между контактными группами панельки действуя с верхней стороны платы. Стенки запаянной панельки удобно ограничивают движение сверла: не надо ничего рассчитывать и размечать. Операция необходима для того чтобы вывести провода с квадратурами на лицевую часть платы.

Удобно использовать разноцветные провода от той же витой пары для обозначения сигналов. Они достаточно жесткие (и здесь это - плюс), чтобы сохранять свою форму будучи выгнутыми. Также их толщина не нарушит клиренс сенсора равный 2,1 мм. При его нарушении сенсор просто не будет работать. Вот как выглядит клиренс с запаянными проводами. Также здесь хорошо видно как из под панельки через отсверленную прорезь выведены квадратуры с обратной стороны платы.


Помним что панелька у нас 16-ти ногая, интерфейсный чип был вообще 18-ти ногий, а наша микросхема имеет 14-ть ног и не ошибаемся в распайке! Проще всего припаять выводы со 2-й (V) и 4-й (H) ног к одной витой паре (синий и бело/синий) и выводы с 6-й (VQ) и 8-й (HQ) ног - ко второй витой паре (зелёный и зелёно/белый). После этого нам останется самая малость.

Припаиваем 4 перемычки между микросхемой К561ЛН2 и нашим сенсором (распайка для A2051). Всё очень удобно находится рядом.

К561ЛН2 <- сигнал -> ADNS-2051
1 Ya 5
3 Xb 4
5 Yb 3
9 Xa 2

Самые внимательные заметят здесь ошибку: Xb и Yb поменялись местами. Но иначе нам пришлось бы бросать перемычку поверх перемычки что недопустимо. Проще поменять их обратно при подключении выведенных ранее квадратур.

Теперь запитаем нашу микросхему от сенсора. С 13-й ноги сенсора на 14-ю ногу К561ЛН2 бросим перемычку +5V (красный). С 10-й ноги сенсора на 7-ю ногу К561ЛН2 бросим GND (коричневый). Прикладываем площадку с линзами HDNS-2100 и убеждаемся что никакие перемычки не мешают ей стоять как положено. С схемой закончили, должно получиться что-то вроде этого:



Шаг 4 - Подключаем плату


Переворачиваем плату и вставляем микросхему К561ЛН2 в предназначенную для неё панельку. Питание и кнопки у нас уже подключены, осталось разобраться с квадратурами. Помним что на предыдущем шаге пришлось устроить реверс сигналам, поэтому чтобы не компостировать никому мозги напишу подключение платы к кабелю просто по цветам:

Кабель <- сигнал -> Плата
синий Ya бело/зелёный
бело/синий Xb бело/синий
зелёный Yb зелёный
бело/зелёный Xa синий

Если Вы в точности следовали инструкциям после подключения светодиод загорится и тест покажет перемещение курсора с зажигающимися контактами на мышином порту. Если нет - смотрите где ошиблись при подключении платы. Косвенную информацию может дать перемещение курсора только по горизонтали или только по вертикали. Если курсор кружит и елозит на одном месте - все сигналы на плате подключены неверно. Ничего страшного: отпаиваем по одному (отключая мышь) и смотрим на результат, комбинаций не так много (подключение по цветам выше - верное). LEFT/RIGHT/UP/DOWN на рисунке разъёма в тесте ничего не значат (и распайка эта неверна), направления верны только для джойстика. Но пары сигналов H и HQ, также как V и VQ отвечают за горизонтальное и вертикальное перемещение соответственно.

Шаг 5 - Собираем мышку


После того как Вы добились работающей мышки (800 dpi !) осталось только подкоротить и уложить провода. Рекомендую пользоваться кембриками. На фотографии ниже мышка у меня подключена уже не по витой паре, а по 9-ти жильному монтажному кабелю (подключена и 3-я кнопка). Фотографию платы с уложенной витой парой своевременно не сделал, извиняюсь. =)


И небольшой ролик демонстрирующий работу адаптированной для Амиги оптической мыши Logitech M-BJ58:


Надеюсь что доставил Вам интересное хобби выходного дня. ;)

5 комментариев:

  1. По видео видно, что это обычная писишная мышка - движение тыр-пыр дерганое. настоящая амижная мышка движение аппаратно интерполирует и движется в 50 фпс ультраплавно, а не как на видео.
    У меня мышка на А1200 с переходником от Дениса Сотченко помоему, там вроде как раз плавно, как у настоящей амижной мыши (правда давно уже не включал в реале).

    ОтветитьУдалить
    Ответы
    1. Вот перечитали Вы эрдэцешного. =) В этой схеме нет и не может быть никакой разницы. Напротив, здесь нет и физически не может быть ни одного эффекта с которыми Денис достаточно успешно боролся в своём адаптере. Адаптированная мышь работает идентично родной амижной, 1:1. Лаги присущие разным адаптерам невозможны. Немного рваное движение в ролике получилось из-за ультражёсткой витой пары которая была взята изначально для опытов - она сопротивляется изгибу и препятствует перемещению мыши. С мягким кабелем из МГТФ (его видно на последней фотографии) всё более чем All'Right, мамой клянусь)))

      Удалить
  2. Если все реально плавно на самом деле, то хорошо конечно.

    ОтветитьУдалить
  3. Переделал для своей Амиги мышку с сенсором OM02
    http://www.datasheetbank.com/OM02-Datasheet-PDF-Unspecified
    сделал русский вариант потом немецкий
    немецкий проще, а работает точно-также
    ---
    теперь играю в Lemmings и Cannon Fodder :)

    ОтветитьУдалить
    Ответы
    1. Отлично! В полку известных квадратурных сенсоров прибыло. Спасибо за сообщение и рад что Вам помогла статья! =)

      Удалить