Датчик из компьютерной мыши. Какой тип сенсора мыши лучше, лазерный или оптический? Игровые сенсоры среднего качества

01.07.2020

Задача: быстро сделать датчик линейного перемещения из компьютерной мышки.

В обычных мышках прячется высокочувствительный оптический датчик. Там скрывается своя маленькая «камера» и процессор обработки, который отслеживает передвижения малейших точек на поверхности. В топовых мышках разрешающая способность составляет всего 3 мкм!

С какими подмышиными камнями мы столкнулись, плюс техническая часть, расскажем дальше!

Следующее ТЗ дал заказчик: сделать как можно скорее, с любой мышкой (возможно беспроводной), выводить на 7 сегментный индикатор, обнулять по кнопке, компьютер не подходит, нужна разрешающая способность 0.01 мм, максимальное расстояние 1000 мм.

Для начала как все это делалось:

Считывание координат xy с мышки: Реализовать считывание данных можно несколькими способами: а) Непосредственно с микросхемы оптического сенсора + Можно обойтись простым контроллером - Про универсальность можно забыть совсем б) Подключить мышку по USB к простым контроллерам (например к ардуино) + Простота и дешивизна - Надо паять - Под рукой была только arduino, а к ней можно подключить мышки совместимые с PS/2, а они обычно очень неточные. Можно было на stm32, но отладочные платы сильно подорожали, самому паять не было времени. (но если интересно, то несколько лет назад был такой похожий проект именно на stm32f4discovery) в) Взять какой нибудь простой одно платный компьютер. Под рукой был как раз Raspberri pi. + Подходит для любых USB мышек + Хорошая производительность - Дорого, но может избыточная мощность потребуется потом
В итоге, под нож хирурга легла Малина пи 3. Четыре 64 битных ядра A-53 по 1GHz, 512 МБ оперативки и много других космических для этой задачи циферок.

Задачка: Индикация должна быть на выданных 7-сегментных индикаторах. Получается нам необходимо по 6 цифр на одну координату, итого 12 индикаторов. Каждый индикатор имеет 7 ножек на цифры+ ножка на светодиод точки (dp), общий провод не считаем. Итого после простых расчетов получаем, что мы должны управлять 96 проводниками плюс нужна кнопка. 96 резисторов не очень хотелось тратить.

Послушайте!
Ведь, если светодиод зажигают - значит - это нужно один резистор?

Управлять сразу таким массивом ножек нету возможности. Выход есть! И даже несколько!

1) Использовать дополнительные микросхемы по типу max7219, или сдвиговые регистры, мультплексоры, и т.д.

Можно почти бесконечно наращивать количество индикаторов
- Max7219 оказалась с рабочим напряжением 5 В
- Не было под рукой ничего подходящего.

2) Можно сделать динамическую индикацию. В один момент времени зажигать только один светодиодный индикатор. Если индикаторы переключать очень быстро, то человеческий глаз не заметит подставы.
+ Нужно только 8 проводов и резисторов на один индикатор и 12 на переключение индикаторов. Плюс не забываем кнопку. Итого: всего 21 ножка против 96. Берем!
- Так как мы пытаемся управлять целым индикатором через один пин распберри, то максимальный ток у нас ограничен 50 мА. Всегда берем запас, и берем 35 мА на все 8 светодиодов (что не шибко). Еще к этому добавим быстрое переключение индикаторов. В итоге у нас каждый светит в 12 раз меньше положенного. Доработать можно 12 транзисторами, но оставил я это на потом, т.к. яркости в конечном счете хватило.

Теперь начинается софт:

На распберри пи надо поставить linux. Я поставил минимальный дистрибутив
RASPBIAN JESSIE LITE .

Далее через программу putty подключился к IP малинки, и дальше все через командную строку.
Чтобы было проще работать с GPIO(портами ввода и вывода) есть замечательная библиотека WiringPi .

Как устанавливать её и управлять портами, вы сможете найти много информации в сети, поэтому не буду подробно останавливать на этом.

Cd /home/pi sudo mkdir mouse cd /home/pi/mouse
Дальше открываем редактор и вставляем код с гита. ВАЖНО! Код писал на очень скорую руку!

Sudo nano
для выхода из редактора надо нажать Alt+x и сохранить файл с названием blinker.c. Дальше надо обязательно скомпилировать с указанием wiring pi:

Gcc -o mouse mouse.c -l wiringPi
Все! Теперь подключаем мышку, вставляем провода и запускаем!

Подключение проводов


// pin number declarations. We"re using the Broadcom chip pin numbers.

Const int p21pin = 2;
const int p22pin = 3;
const int p23pin = 4;
const int p24pin = 17;
const int p25pin = 27;
const int p26pin = 22;
const int p11pin = 10;
const int p12pin = 9;
const int p13pin = 11;
const int p14pin = 5;
const int p15pin = 6;
const int p16pin = 13;
const int papin = 8;
const int pbpin = 23;
const int pcpin = 12;
const int pdpin = 20;
const int pepin = 21;
const int pfpin = 24;
const int pgpin = 18;
const int pdppin = 16;

Const int butpin = 26;


sudo ./mouse
Автозапуск при загрузке:

Sudo nano /etc/rc.local и перед exit 0 дописать две строчки cd /home/pi/mouse sudo ./mouse &
Работать с этой прогой очень просто. по нажатию кнопки мыши или просто кнопки на плате идет обнуление. При долгом нажатии кнопки переходим в режим регулировки DPI. Это важный параметр который задается мышкой и показывает сколько отсчетов мы получим при движении на один дюйм. Соответственно копка на плате и на мышке прибавляет и убавляет DPI. Долго нажимаем, наше значение записалось в файл и надежно хранится до следующей загрузки системы. Для чистоты эксперимента в программе, индикация, получение информации с мышки и кнопка обрабатываются а параллельных процессах.

1. Оси X и Y на моей мышке были не параллельны боковым граням, приходилось для высчитывания реального расстояния пользоваться «пифагоровыми штанами».

2. Разрешающая способность не равно погрешность!

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

3. USB HID по которому работает мышь не гарантирует доставку информации в компьютер! То есть неизвестно пропустил ли компьютер какую нибудь информацию с мышки или нет. Вероятность пропажи информации малая, но все же есть.

4. Настройки чувствительности(разрешающей способности) иногда хранятся не в мышке, а в программе для мышки.

5. Тут я сильно зол! Дело в том, что мышку я брал самую крутую из ассортимента Logitech, это самая продвинутая была на тот день модель logitech performance mx. Но какого было мое удивление, когда мышь давала разные погрешности при движении вперед и назад. ЭТО КАК? Поясню для пользователя. Если постоянно двигать мышку назад и вперед, то курсор ощутимо так все снижается и снижается. Это на любых платформах. Приходится периодически поднимать мышку и ставить на новое место. После того, как я заметил это, моя жизнь превратилась в кошмар! #Logitech

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

Барахлит сенсор мыши

Часто случается также ситуация, когда мы не можем точно навести курсор на определённую точку. Он постоянно дрожит и перемещается сам собой. Такая ситуация явно указывает на засорение оптической группы мышки.

Засорение чаще всего бывает внешним. В отсек, где свет диода отражается от стола, попадает пыль или волосы. Чтобы избавиться от такого засорения не нужно даже разбирать мышку. Достаточно перевернуть её и продуть. В крайнем разе, воспользоваться небольшой кисточкой, чтобы удалить прилипший мусор.

Если же и после таких манипуляций курсор мышки дрожит, то, вероятнее всего, что либо сенсор засорился внутри, либо вовсе вышел из строя. В любом случае можно попробовать разобрать мышку и почистить сенсор при помощи зубочистки с намотанной на неё ваткой пропитанной спиртом:

Перед тем как чистить сенсор ваткой, можно также попробовать продуть его, чтобы выдуть мелкодисперсионную пыль, которая может прилипнуть после намокания. После этого аккуратно без нажима вводите зубочистку вращательными движениями в отверстие сенсора. Сделав пару проворотов и не прекращая вращать, вытаскиваем зубочистку, дожидаемся высыхания спирта и пробуем подключить мышь.

Если и после всех попыток очистки сенсор нормально не работает, то при наличии другой мышки, паяльника и прямых рук, можно выпаять нерабочую микросхему и заменить её датчиком от другой мышки. Однако, это уже требует определённой сноровки, поэтому не все смогут провернуть такое...

Прокручивается колёсико мышки

Бывает так, что мышка работает нормально, но при попытке воспользоваться её колёсиком, страница, которую мы прокручиваем, начинает прыгать то вверх, то вниз, либо вообще не желает скроллиться. Увы, выход колеса мыши из строя - довольно частая поломка и именно она побудила меня к написанию данной статьи.

Для начала нужно внимательно рассмотреть, насколько равномерно колесо крутится в пазе. Сам паз и ось колеса имеют шестиугольное сечение, но иногда одна или несколько сторон этого шестиугольника может деформироваться, в результате чего будет наблюдаться проскальзывание оси в проблемном месте.

Если у Вас именно такая проблема, то она решается за счёт уплотнения края оси колеса скотчем или изолентой в небольших количествах. Если же с движением колёсика всё нормально, то поломка произошла внутри энкодера (датчика прокрутки). От длительного использования он мог разболтаться и его следует немного уплотнить:

Для этого возьмите небольшие плоскогубцы и по очереди прижмите ими четыре металлические скобы, которыми энкодер крепится к пластмассовым деталям механизма прокрутки. Здесь главное не переусердствовать и не сломать хрупкий пластик, но в то же время поджать посильнее. Пробуйте подключать мышь и проверять, уменьшился ли негативный эффект при прокрутке после каждого поджатия.

Увы, в моём случае полностью избавиться от рывков не удалось. Да, частота и разброс в скачках страницы уменьшились, но сами скачки полностью не исчезли. Тогда я решил подойти к вопросу уплотнения радикально и истинно по-русски:) Вырезал из старой упаковки от батареек кусочек тонкого но плотного полиэтилена и воткнул внутрь механизма:

Что самое интересное, данная манипуляция помогла! Мне осталось только обрезать лишнюю длину полоски и собрать мышь:)

Не работают кнопки мыши

Последняя, и самая досадная, поломка - это нерабочая кнопка. Левая ли, правая или та, что под колёсиком не важно - они все обычно одинаковы. Важно то, что нерабочая кнопка практически никак не чинится. Можно только заменить её микропереключатель, выпаяв паяльником нерабочий и поставив на его место новый или позаимствованный из другой мышки.

Микропереключатель имеет три "ножки", первая из которых - обычный фиксатор, а две остальные - контакты, которые и требуется паять. Фиксатор припаивать не нужно. Он служит только в качестве "защиты от дурака" , чтобы Вы по ошибке не вставили микропереключатель не той стороной.

Иногда кнопка ещё работает, но срабатывает не при каждом нажатии. Такой симптом может сигнализировать о том, что от частого использования стерся край толкателя кнопки, который нажимает микропереключатель.

Разбираем мышь и внимательно изучаем проблемную кнопку и её толкатель. Если видим небольшую вмятинку, то проблема может быть именно в ней. Достаточно залить промятое место капелькой эпоксидной смолы или расплавленной пластмассы.

Последняя проблема с которой Вы можете столкнуться - кнопка мыши делает двойной клик при нажатии на неё. Решить это дело можно перепайкой микропереключателя или... программно! В любом случае перед тем как браться за паяльник проверьте правильность настроек мышки в Панели управления Windows:

По стандарту полозок скорости двойного щелчка должен находиться по центру, а опция залипания кнопок мыши - отключена. Попробуйте выставить такие параметры и проверьте, решилась ли проблема. Если нет, ещё один радикальный программный способ "лечения" двойного клика - удаление драйвера мыши. Как правильно удалить драйвер написано .

Выводы

Мышки - одни из наиболее активно используемых устройств компьютера. Поэтому неудивительно, что они часто выходят из строя. Однако, благодаря простоте их устройства, починить мышку в большинстве случаев может каждый!

Для этого необязательно уметь паять или разбираться в электронике. Главное чётко диагностировать причину поломки. Здесь, как в медицине, правильный диагноз - путь к успешному ремонту.

Надеюсь, наша статья позволит Вам определить, что именно сломалось в Вашей мышке, а значит, и починить поломку. Успешного Вам ремонта!

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.

Нормальные герои всегда идут в обход (из к/ф "Айболит 66").

Коврики

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

реклама

Для тестов использовались обычные коврики Nova MicrOptic+ и Defender Ergo opti-laser. Внешний вид у них примерно одинаковый:

По заверениям обоих производителей эти коврики оптимизированы для работы с лазерными мышками. Проверим.

Для начала снимки поверхности с увеличением:

Кое-какие отличия есть, но не особенно заметные. У коврика Nova зерна меньше и не так явно выражены. Значит он хуже?

Теперь посмотрим на коврики глазами оптического датчика:

Согласитесь, что отличие есть и весьма кардинальные. На коврике Nova отчетливо видна высококонтрастная структура, а вот Defender дал какое-то "мыло". Скорее всего, это связано с размерами "гранул". У лазерных датчиков, в отличие от оптических, видимый размер окна уменьшен. Похоже, на коврике Defender размер гранул больше окна и датчик захватывает только их часть, постоянно переключаясь между монотонно светлыми и темными участками. Для сравнения, приведу фотографии поверхности пластика .

Правый рисунок получен из левого повышением контрастности. Мышка эту поверхность видит так:

На такой поверхности "офисные" оптические мышки совсем не работают, а вот лазерные как-то умудряются работать и весьма успешно.

Высота отрыва

Что Вы делаете, когда мышка доходит до края коврика? Вы поднимаете мышку и переставляете на новое место, в центр коврика. Оптический датчик обладает высокой чувствительностью и при подъеме пытается сохранить нормальное функционирование, постоянно подстраивая параметры аппаратуры. Как следствие, при подъеме мышки над поверхностью снижается скорость. Точнее, скорость то не снижается, а довольно резко падает качество и достоверность определения движения. Теоретически, при снижении качества поверхности ниже разумного, оптический датчик должен перестать выдавать движение. То есть, при некотором подъеме мышки он должен бы не замечать, что мышь подняли, а если ее еще хоть чуть поднять, то просто перестать передавать движение. Это в идеале, но в реальных мышках при ухудшении поверхности происходит деградация качества движения, передаваемого мышью. Причем, этот вредный эффект зависит от скорости перемещения, из-за чего к такой мышке труднее привыкнуть.

Высота отрыва светодиодных мышек 1.5-2 мм, для лазерных версий цифра больше и составляет уже 2.5-4 мм. Это все цифры, а в реальности такой мышкой неудобно пользоваться даже для офисных приложений, очень уж высоко приходится поднимать ее над ковриком. По моим личным впечатлениям, высота срыва в 1.5-2 мм довольно комфортна. А что же делать с лазерными мышками и их высотой срыва 4 мм?

Давайте возьмем одну за хвост и посмотрим на внутренности. Сейчас распространены мышки на датчике Avago(ссылка на http://www.avagotech.com) ADNS-6010

Чтоб особо не умничать, взял картинку из документации.

Пояснения:

реклама

  • Sensor - микросхема ADNS-6010, которая и является датчиком, считывающем движение
  • Sensor PCB - печатная плата мышки
  • VCSEL - лазерный излучатель. Просто небольшой полупроводниковый лазер с посредственным углом расхода луча.
  • VCSEL PCB - небольшая печатная платка, на которой смонтирован лазер.
  • VCSEL Clip - пластиковая защелка, фиксирует лазер в оптической системе. На картинке светло желтого цвета.
  • Lens - оптическая система из прозрачного пластика, блекло-желтого цвета.
  • Surface - поверхность, по которой движется мышь.
  • На этом рисунке указана цифра 2.4 мм - это оптимальное расстояние от дна оптической системы до поверхности. Один момент - дно мышки имеет какую-то толщину, поэтому расстояние от поверхности до дна мышки будет меньше на толщину этого дна.

    А от чего же зависит высота отрыва и почему на оптических мышках эта высота меньше? Посмотрим другую картинку:

    Позволил себе проявить самодеятельность раскрасить некоторые важные элементы конструкции.

    реклама

    Желтым цветом выделены линзы оптической системы, серым - световой поток лазера. Зеленый - зона видимости оптического датчика. Зона "видимости" датчика определяется только его фокусом и способностью работать с расфокусированным изображением. Чем выше скорость перемещения картинки, тем должна-бы быть хуже устойчивость для несфокучированных объектов. Если посмотреть данные тестирования, то так и выходит. Высота срыва в 4 мм не функциональна, я попробовал уменьшить эту величину несколько изменив принцип работы - потеря изображения датчиком может быть получена не за счет ухудшения фокусировки, а из-за ухода светового пятна из зоны видимости датчика. Примерно так работают светодиодные мышки. Для этого я увеличил угол луча подсветки с 21 градусов до, примерно, 50 градусов от вертикали.

    При подъеме мышки пятно подсветки (серый луч) выходит из видимого окна датчика (зеленая зона).

    Методика доработки не особо трудна - надо распилить оптический блок по вертикальной черте и не задеть линзы. В крайнем случае, можно чуть-чуть повредить линзу подсветки, она не столь важна. Скрепить две составные части можно термоплавким клеем, на рисунке отмечено коричневым.

    реклама

    Он обладает достаточной жесткостью и прочностью соединения, при этом позволяя осуществлять многократную коррекцию положения склеенных частей оптики. При наклоне подсветки часть его конструкции выйдет за габариты блока оптики и его придется немного подпилить, на рисунке отмечено голубым цветом.

    К сожалению, блок подсветки надо не только наклонить, но и сдвинуть вниз, из-за чего линза подсветки окажется ниже уровня оптики. Это плохо, в дне мышки придется выплавлять небольшую вмятину под выступ. Впрочем, это не сложно и не мешает, ведь линза выходит за габариты совсем чуть-чуть. Лазерный модуль закреплялся на оптике с помощью защелки VCSEL Clip. Сейчас ее придется убрать и закрепить каплей клея или герметика. Хотя, он и так там неплохо держится. У такого построения есть одна особенность - луч подсветки падает на поверхность с другим углом, чем угол зрения датчика. В результате, между плоскостью поверхности и плоскостью отражения образуется угол около 15 градусов.

    Черный - луч на не доработанной оптической системе, зеленый - после доработки. Поверхность для доработанного случая условно поднята, чтобы она не сливалась с нормальным режимом. Датчик смотрит как бы сбоку на поверхность и четче видит все неровности на ней. Дополнительный наклон подсветки дает дополнительную модуляцию яркости при прохождении объемных областей под объективом. Хорошо сие или плохо - зависит от коврика, фактуры его поверхности. К слову, если снять картинки поверхности коврика Nova на этой, доработанной, мышке, то на фото не будет таких четких граней. И, скорее всего, дело не в фокусировке. Просто изменился угол зрения и четкие структуры коврика исчезли. На этой мышке коврик Nova и Defender выглядят почти одинаково. Впрочем, мышка хорошо ходит по обеим поверхностям. Увы, есть и явный недостаток - из-за того, что поверхность отражения наклонена относительно поверхности коврика, уменьшается общий уровнь освещенности и возникает необходимость увеличения тока лазера подсветки. Обычно он составляет цифру в районе восьми миллиампер. После доработки пришлось повысить ток до 12 миллиампер. Это уже многовато, но в пределах доступного.

    Если Вы дорабатывается обычную, серийную мышь, то хорошо бы несколько помочь схеме автоматического управления током лазера. В документации на датчик ADNS-6010 упоминается резистор Rbin с 13 вывода микросхемы. Обычно, его номинал 12.7 ком. Для того, чтобы подправить ток, надо уменьшить его номинал. Для моего случая хорошо-бы увеличить ток в 1.5 раза, что означает припаивание параллельно этому резистору еще одного с номиналом в 2 раза больше, т.е. 24-27-30KOm. И еще пара поверхностей - тканевая и лист алюминия. Довольно часто слышно рекомендации применять эти поверхности, они дают весьма неплохие результаты.

    реклама

    Вначале на мышке с не модифицированной оптикой (W-Mouse 730). Ткань:

    Лист алюминия:

    И мышка после модификации оптического блока (W-Mouse 750).

    реклама

    Ткань:

    Лист алюминия:

    На поверхности с объемным рельефом модификация оптики приводит к большей заметности этого рельефа. А вот картинка с листа алюминия выглядит скорее хуже, но не столь существенно. Бесплатно ничего не бывает. Тронули оптику - получили проблемы с фокусировкой.

    реклама

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

    Есть и более простой способ уменьшить высоту срыва - поставить кнопку на дно мышки и при ее подъеме отключать, блокировать датчик. Средств воздействия много, вначале я пробовал отключать лазер, но контроллер в А4 умный и, если просто размыкать ток лазера, контроллер очень быстро это замечает и отключает мышь. Увы, отключает совсем, приходится перетыкать разъем USB, придется поступать не столь прямолинейно. Есть предложение при отключении лазера подсоединять вместо него пару кремниевых диодов, но это потребует установку дополнительных компонентов. Я поступил иначе - воздействовал на резистор Rbin (смотрите документацию на датчик ADNS-6010), при увеличении его номинала система авторегулирования пытается выставить такой ток. Если Rbin отсоединять или делать очень большим, то лазер фактически отключится, но это не вызовет каких-то проблем внутри системы регулирования.

    Саму "кнопку" я взял из дисковода 3.5" с датчика наличия дискеты. Усилие небольшое, но и его пришлось немного ослабить. Идея работала хорошо, высоту можно подобрать какую заблагорассудится, вот только пластмассовый штифт кнопки быстро стачивается.

    Оптический сенсор ADNS-3060, по сравнению со своими «предками», обладает поистине впечатляющим набором характеристик.
    Использование этой микросхемы, упакованной в корпус с 20-ю контактами, обеспечивает оптическим мышам невиданные ранее возможности.
    Допустимая максимальная скорость перемещения манипулятора выросла до 40 дюймов/с (то есть почти в 3 раза!), т.е. достигла «знаковой» скорости в 1 м/с.

    Это уже очень хорошо - вряд ли хоть один пользователь двигает мышь с превышающей данное ограничение скоростью столь часто, чтобы постоянно чувствовать дискомфорт от использования оптического манипулятора, в том числе это касается и игровых приложений.
    Допустимое же ускорение выросло, страшно сказать, во сто раз (!), и достигло величины 15 g (почти 150 м/с²).

    Теперь на разгон мыши с 0 до предельных 1 м/с пользователю отводится 7 сотых секунды - думаю, теперь очень немногие сумеют превзойти это ограничение, да и то, вероятно, в мечтах.
    Программируемая скорость осуществления снимков поверхности оптическим сенсором у новой модели чипа превышает 6400 кадров/с, т.е. «бьет» предыдущий «рекорд» почти в три раза.

    Причем чип ADNS-3060 может сам осуществлять подстройку частоты следования снимков для достижения наиболее оптимальных параметров работы, в зависимости от поверхности, над которой перемещается мышь.
    «Разрешение» оптического сенсора по-прежнему может составлять 400 или 800 cpi.
    Давайте на примере микросхемы ADNS-3060 рассмотрим общие принципы работы именно чипов оптических сенсоров.

    Общая схема анализа перемещений мыши не изменилась по сравнению с более ранними моделями - полученные блоком IAS сенсора микроснимки поверхности под мышью обрабатываются затем интегрированным в этой же микросхеме DSP (процессором), который определяет направление и дистанцию перемещения манипулятора.
    DSP вычисляет относительные величины смещения по координатам Х и Y, относительно исходной позиции мыши.

    Затем внешняя микросхема контролера мыши (для чего он нужен, мы говорили ранее) считывает информацию о перемещении манипулятора с последовательного порта микросхемы оптического сенсора.
    Затем уже этот внешний контроллер транслирует полученные данные о направлении и скорости перемещения мыши в передаваемые по стандартным интерфейсам PS/2 или USB сигналы, которые уже от него поступают к компьютеру.

    Но вникнем чуть глубже в особенности работы сенсора.
    Блок-схема чипа ADNS-3060 представлена выше.
    Как видим, принципиально его структура не изменилась, по сравнению с далекими «предками».
    3.3 В питание к сенсору поступает через блок Voltage Regulator And Power Control, на этот же блок возложена функции фильтрации напряжения, для чего используется подключение к внешнему конденсатору.

    Поступающий с внешнего кварцевого резонатора в блок Oscillator сигнал (номинальная частота которого 24 МГц, для предыдущих моделей микросхем использовались более низкочастотные задающие генераторы) служит для синхронизации всех вычислительных процессов, протекающих внутри микросхемы оптического сенсора.
    Например, частота снимков оптического сенсора привязана к частоте этого внешнего генератора (кстати, на последний наложены не весьма жесткие ограничения по допустимым отклонениям от номинальной частоты - до ± 1 МГц).

    В зависимости от значения, занесенного по определенному адресу (регистру) памяти чипа, возможны следующие рабочие частоты осуществления снимков сенсором ADNS-3060.

    Как нетрудно догадаться, исходя из данных в таблице, определение частоты снимков сенсора осуществляется по простой формуле:
    Частота кадров = (Задающая частота генератора (24 МГц)/Значение регистра отвечающего за частоту кадров).

    Осуществляемые сенсором ADNS-3060 снимки поверхности (кадры) имеют разрешение 30х30 и представляют собой все ту же матрицу пикселей, цвет каждого из которых закодирован 8-ю битами, т.е. одним байтом (соответствует 256 градациям серого для каждого пикселя).
    Таким образом, каждый поступающий в DSP процессор кадр (фрейм) представляет собой последовательность из 900 байт данных.

    Но «хитрый» процессор не обрабатывает эти 900 байт кадра сразу по поступлении, он ждет, пока в соответствующем буфере (памяти) накопится 1536 байт сведений о пикселях (то есть добавится информация еще о 2/3 последующего кадра).
    И только после этого чип приступает к анализу информации о перемещении манипулятора, путем сравнения изменений в последовательных снимках поверхности.

    С разрешением 400 или 800 пикселей на дюйм их осуществлять, указывается в бите RES регистров памяти микроконтроллера.
    Нулевое значение этого бита соответствует 400 cpi, а логическая единица в RES переводит сенсор в режим 800 cpi.

    После того как интегрированный DSP процессор обработает данные снимков, он вычисляет относительные значения смещения манипулятора вдоль осей X и Y, занося конкретные данные об этом в память микросхемы ADNS-3060.
    В свою очередь микросхема внешнего контроллера (мыши) через Serial Port может «черпать» эти сведения из памяти оптического сенсора с частой примерно раз в миллисекунду.

    Заметьте, только внешний микроконтроллер может инициализировать передачу таких данных, сам оптический сенсор никогда не инициирует такую передачу.
    Поэтому вопрос оперативности (частоты) слежения за перемещением мыши во многом лежит на «плечах» микросхемы внешнего контроллера.
    Данные от оптического сенсора передаются пакетами по 56 бит.

    Ну, а блок Led Control, которым оборудован сенсор, ответственен за управление диодом подсветки - путем изменения значения бита 6 (LED_MODE) по адресу 0x0a микропроцессор оптосенсора может переводить светодиод в два режима работы: логический «0» соответствует состоянию «диод всегда включен», логическая «1» переводит диод в режим «включен только при необходимости».
    Это важно, скажем, при работе беспроводных мышей, так как позволяет экономить заряд их автономных источников питания.
    Кроме того, сам диод может иметь несколько режимов яркости свечения.

    На этом, собственно, все с базовыми принципами работы оптического сенсора.
    Что еще можно добавить?
    Рекомендуемая рабочая температура микросхемы ADNS-3060, впрочем, как и всех остальных чипов этого рода, - от 0 °C до +40 °C.
    Хотя сохранение рабочих свойств своих чипов Agilent Technologies гарантирует в диапазоне температур от -40 °C до +85 °C.

    Драйвер AMD Radeon Software Adrenalin Edition 19.9.2 Optional

    Новая версия драйвера AMD Radeon Software Adrenalin Edition 19.9.2 Optional повышает производительность в игре «Borderlands 3» и добавляет поддержку технологии коррекции изображения Radeon Image Sharpening.

    Устройство и принцип работы оптической мыши

    Сегодня оптической мышью уже никого не удивишь. Но лет десять назад, когда только появилось первое поколение оптических "грызунов", не многие могли похвастать таким диковинным манипулятором. А между тем, возможность перемещать курсор с помощью "грызуна" с красным светодиодом в "брюшке" была еще одним шагом вперед в компьютерных технологиях.

    Вообще-то в первых оптических мышах было два светодиода, и один из них излучал свет в красном диапазоне, а другой - в инфракрасном. Соответственно было и два фотодиода, которые работали "в паре" с вышеозначенными светодиодами. Для такой мыши был необходим специальный коврик с поверхностью из специального светоотражающего материала, на который наносилась мелкая сетка из синих и перпендикулярных им черных линий. Синие линии поглощали свет красного светодиода, а черные - инфракрасного.

    Таким образом, один фотодиод "замечал" проход над синими линиями коврика, а другой - над черными. В момент прохода над линией фотодиод генерировал соответствующий электрический импульс. Контроллер мыши, подсчитывая импульсы, определял направление и величину перемещения.

    Можно сказать, что коврик выполнял функцию, аналогичную той, которую выполняет вся механическая часть в оптико-механической мышке (обычная мышь с шариком, которую многие, наверное, не раз разбирали).

    К достоинствам таких мышей можно отнести отсутствие движущихся и инерционных частей, надежность в работе, точность позиционирования. А к недостаткам - коврик, который требовал постоянного ухода и чистки, ну и, как всегда (куда ж без денег), - высокую стоимость. К тому же, при утрате или повреждении коврика мышь утрачивала свою работоспособность. Но в 1999 году фирмой Agilent Technologies была разработана своя технология оптической навигации, для которой коврик и вовсе не требовался. И так как на сегодняшний момент фирмой Agilent выпущено более 75 миллионов сенсоров различных модификаций для оптических мышей, то можно предположить, что данная технология пришлась ко двору как производителям, так и пользователям. К тому же, вышеозначенная фирма выпускает не только оптические сенсоры, но еще и практически все необходимые компоненты для сбора оптической мыши (этакий наборчик "сделай сам" (см. рис.1)), что делает доступным производство оптических мышей даже для небольших (так и хочется добавить "китайских") компаний. На рис.1 показаны два варианта линзы и зажима. Но какой бы из них ни предпочел производитель, принципиально на работу оптической системы это не влияет.

    Суть данной технологии заключается в следующем: оптический сенсор последовательно считывает изображения поверхности (кадры), а затем математически определяет направление и величину перемещения.

    красный

    светодиод

    зажим для светодиода

    Полная оптическая система состоит из четырех компонентов: оптического сенсора, линзы, красного светодиода и зажима для светодиода. Как она выглядит в собранном виде, можно посмотреть на рис.2.

    Оптический

    Оптический сенсор включает в себя три функциональных блока: систему считывания изображения (IAS); цифровой сигнальный процессор(DPS); последовательный интерфейс передачи данных.

    Конструктивно же оптический сенсор представляет собой микросхему с шестнадцатью ножками (хотя есть вариант и с восемью), на нижней части которой (со стороны ножек) расположен объектив.

    За объективом расположена монохромная КМОП (CMOS) камера, которая и фотографирует небольшой участок поверхности площадью около квадратного миллиметра. Кадр поверхности разбивается на маленькие участки (квадраты). Для каждого такого участка вычисляется усредненное значение яркости. Диапазон присваиваемых значений - от 0 до 63, где 0 присваивается черному участку, а 63

    Белому. Таким образом, получается мозаичное изображение, состоящее из квадратов различной яркости. Вот один такой квадрат, т.е. элемент изображения, и является точкой привязки, а точнее сказать, одним отсчетом (см. рис.3). И разрешающая способность оптической мыши определяется в отсчетах на дюйм (counts per inch), т.е. cpi, а не dpi, как у обычных мышей. Фирма Agilent выпускает сенсоры с разрешением как 400, так и 800 cpi, причем модели с разрешением 800 cpi могут быть запрограммированы на работу с разрешением 400 cpi. К слову сказать, некоторые фирмы в технических характеристиках своих оптических мышей заявляют разрешение в 420 или 500 cpi. Но просматривая техническую документацию на различные сенсоры, таких характеристик я не встречал. А в то, что какая-нибудь небольшая китайская компания выпускает сенсоры собственной разработки, когда такой признанный авторитет в этой области "мышестроения", как Logitech, покупает их у Agilent, очень слабо верится. И если уж я упомянул Logitech, то хочу добавить, что большинство своих моделей, за исключением самых дешевых, она снабжает сенсорами с разрешением в 800 cpi.

    Но вернемся назад к технологии. Помня о том, что сенсор фотографирует очень небольшой участок поверхности, а курсор по экрану должен двигаться плавно и без запаздывания, а для этого последовательно считываемые кадры поверхности должны накладываться друг на друга с небольшим смещением, поверхность фотографируется с очень большой скоростью - 1500 снимков в секунду. Это позволяет перемещать мышь со скоростью до 12 дюймов (30 сантиметров) в секунду. Также существуют варианты сенсоров, которые фотографируют поверхность со скоростью в 2000 или 2300 снимков в секунду и позволяют перемещать мышь со скоростью в 14 дюймов (35 см) в секунду. Причем фирма Microsoft заявляет, что в ее последних разработках находятся сенсоры со скоростью съемки в 6000 кадров в секунду. Опять же, технического описания на

    такой сенсор я не видел, но думаю, что в данном случае такое вполне возможно. Все вышерассмотренное относится к системе считывания изображения. Далее отснятые кадры обрабатываются цифровым сигнальным процессором по специальному, естественно, запатентованному алгоритму. Сравнивая полученные кадры, процессор определяет величину и направление перемещения мыши (см. рис.3), после чего преобразует эти данные в координаты.

    Так как кварцуются сенсоры в большинстве своем генератором с частотой 18 МГц (есть варианты на 24 МГц), то можно предположить, что мощность цифрового процессора составляет 18 миллионов операций в секунду. Затем вычисленные координаты при помощи последовательного интерфейса передаются в компьютер. Первые модели сенсоров умели "общаться" с компьютером по интерфейсу PS/2, а для работы по интерфейсу USB требовался дополнительный контроллер. Кстати, частота посылки координат по умолчанию при использовании интерфейса USB - 125 раз в секунду, PS/2 - 100 раз. Но через последовательный порт могут устанавливаться некоторые параметры самого сенсора - в частности, разрешающая способность и частота посылки координат.

    Теперь рассмотрим назначение других компонентов оптической системы. Так как под мышкой темно даже днем, то поверхность, которую фотографирует сенсор, необходимо подсвечивать. Камера сенсора настроена на восприятие света в красном спектре излучения (l= 639 nm). Поэтому и используется красный светодиод, главная задача которого - даже минимальным количеством излучаемого света обеспечивать работу сенсора на всей рабочей поверхности. Чем выше яркость освещения, тем на большем количестве поверхностей будет работать сенсор.

    Чтобы обеспечить равномерное освещение поверхности, свет от светодиода проходит по световоду и рассеивается линзой. Через другую линзу сенсор считывает изображение поверхности. Конструктивно две линзы и световод выполнены как одна деталь и называются один словом "линза".

    Кроме функции рассеивания и фокусирования света, линза выполняет еще одну важную функцию - защиту сенсора от разряда электростатического напряжения. Понятно, что линза должна располагаться на строго определенном расстоянии от рабочей поверхности и от сенсора. Поэтому печатная плата (PCB) и опорная поверхность (base plate), на которые устанавливаются элементы оптической системы, должны иметь строго определенные параметры, в том числе и по толщине. Ну и последний элемент оптической системы - это защелка. Служит она для фиксации элементов оптической системы относительно друг друга.

    На этом можно оставить оптическую систему в покое и поговорить о поверхности, на которой должна работать данная система. Так как сенсор использует микроскопические особенности поверхности, то чем больше таких особенностей, тем лучше. К таковым можно отнести поверхности с хорошей текстурой (чем обладает любая ткань) и узорчатыми особенностями. Да и на обычной белой бумаге оптические мыши работают совсем неплохо. А вот с любой отражающей поверхностью сенсор работает плохо, будь то зеркало, стекло либо просто пластиковая поверхность коврика. Также к числу "плохих" поверхностей относятся полутоновые поверхности и коврики с трехмерным изображением.

    Но как бы то ни было, такие положительные моменты, как отсутствие движущихся частей, точное позиционирование, плавные и легкие движения делают оптическую мышь довольно привлекательным объектом для покупки.

    И если взять мыши в ценовой категории до 20 у.е., то, скорее всего, они будут иметь один и тот же тип сенсора и, соответственно, идентичные характеристики. В этом случае стоит обратить внимание на эргономику изделия, наличие

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

    Вот, пожалуй, и все. Всего хорошего.

    Игорь Масловский, [email protected]

    Световод приподнят над микросхемой

    Линза и рассеиватель

    Вид на объективную часть оптической мыши

    Вид снизу на объективную часть в собранном состоянии

    Похожие статьи