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

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

Неустойчивость

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

реклама

Датчик перемещений всё равно выдает шум, а вот в контроллере мышки используют специальный алгоритм, который блокирует перемещение мышки при сверхнизкой скорости передвижения с задержкой выполнения. Задержка нужна для того, чтоб пользователь не получил остановки мыши, когда он сам начал ее двигать слишком уж медленно. Реализовать данный алгоритм можно по-разному, поэтому не удивляйтесь "странностям" новой мышки, когда не удается попасть в иконки - из-за задержки мышка начинает двигаться не с момента начала перемещения рукой. Причем, величина задержки может зависеть от скорости. В результате одновременно происходят два неприятных события разом - мышка "вдруг" скакнула и, если включена настройка в Windows "повышенная точность установки указателя", скачек будет особо резким. Дело в том, что "повышенная точность установки указателя" связана с динамическим ускорением. А если мышь "скакнула", то ей сразу ставится повышенная скорость. После "скачка" динамическое ускорение не видит изменений скорости мышки, поэтому динамическая скорость уменьшается.

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

Динамическая неустойчивость имеет те же корни, что и у статическая - шумы изображения. Но к ним добавляются неравномерность поверхности, по которой движется мышь. С неравномерностью борются различными способами адаптации. Обычно этого добиваются управлением тока лазера и коэффициента усиления (яркостью) сигнала с матрицы. Но тут всё запутаннее и сложнее, банальной остановкой мыши не обойдешься, как это делается для устранения статической неустойчивости. Хотя пытаются - некоторые производители внедряют "улучшайзеры". Например, есть алгоритм выравнивания движения мышки, если она перемещается по прямой линии. Ну да, на тестах это будет красиво - раз и прямая линия без какого-либо мусора и дрожания. Раз то раз, а попробуйте этим чудом поиграть? "Мы думаем за Вас". Нет, спасибо, оставьте себе.

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

Хватит теории, приведу пример.

Возьмем кольцо и заставим его двигаться.

Движение видно отчетливо. А теперь сравним два соседних кадра:

В верхней части один кадр, в нижней следующий. Один сдвинут относительно другого на 1/4 пикселя. (Чтобы не прищуриваться, я увеличил картинку в 8 раз, сохранив формат разбиения матрицы датчика)

Ну ладно, Вы отчетливо видите разницу между верхней и нижней частью? Отчетливо?

А теперь добавим реальный шум. Чтобы не симулировать "непонятно что", приведу реальные снятые картинки.

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

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

Frame Rate.

Frame rate - это частота снимков. Из сказанного выше следует, что надо так выбирать частоту снимков, чтоб между соседними кадрами было существенное изменение положения. С другой стороны, это изменение не должно быть слишком большим, иначе датчик не сможет понять, какой из кадров является опорным. Минимальная частота кадров 2000, максимальная чуть больше 7000. Разберемся с цифрами.

При низкой скорости перемещения, менее 1 см в секунду, и минимально допустимой частоте 2000 кадров/сек, получается смещение на изображении в 0.005 мм. Матрица датчика имеет 30*30 точек. При 0.005 мм и размере видимого окна 0.5 мм это составит 1/140 окна или 1/4 точки матрицы. Это как раз примерно то, что изображено выше на анимации симуляции движения кольца. А если мышку двигать еще медленнее? А ведь так и происходит, когда нужно сделать что-то очень точно - попасть или провести линию. Тут уже на 1 точку приходится далеко не 1/4, а гораздо меньше. А это означает, что вклад шумов растет. Уменьшать Frame Rate меньше 2000 нельзя, так сказал датчик. И что? ... да ничего хорошего, мышка будет дрожать.

С другой сторны, при повышенном Frame Rate сам контроллер может опрашивать датчик чаще и считанные значения усреднять. Это существенно уменьшает шум. Теория погрешностей говорит, что при проведении N замеров и их усреднении точность повышается пропорционально корню из N. Поэтому эффективно делать не слишком много замеров на усреднение - растет время, оно прямо пропорционально N, а вот точность уже почти не улучшается.

Современные мышки работают на интерфейсе USB, поэтому их квантование ответа выбирается из ряда 125-250-500-1000 отсчетов в секунду, что задает количество отсчетов усреднения в 16-8-4-2. Т.о., мышка на 125 Гц гораздо устойчивее 1000 Гц при прочих равных условиях. Поэтому вряд ли стоит гнаться за очень высокой скоростью интерфейса, выйдет боком. Точнее, уже выходит боком - заметно. Мышь нестабильна.

реклама

Контроллер лазерных мышек A4 X7 всегда считывает датчик с частотой 1000 раз в секунду. При минимальном частоте снимков в 2000 это уже означает потерю 50% информации, которую можно было-бы направить на усреднение. Альтернативный вариант - применить умную фильтрацию шума. Усреднеие и фильтрация имеют общие корни, но разную эффективность алгоритмов. При низкой скорости степень фильтрации должна быть больше (напоминаю - вредит слишком высокий минимальный Frame Rate), а при высоких скоростях его можно снизить. Кроме того, на высоких скоростях надо фильтровать динамическую нестабильность. Но "фильтровать", а не "исправлять за меня", как это принято в "улучшайзерах". Кстати, любой фильтр вносит задержку в получение отсчетов, поэтому и фильтрацию надо бы делать умно.

В старых офисных мышкам не было никакой фильтрации и "умничанья". И как же приятно ими играть.

Переключатель DPI

В лазерных мышках, особенно игровых, стали ставить переключатель DPI (точек на дюйм). Вообще-то это термин неверный и сейчас его вытесняет CPI (count - число на дюйм). Я буду использовать термин DPI там, где он явно указан в надписях или спецификации, хоть это и не совсем правильно.

Итак, что такое CPI? Это количество отсчетов (точек), которое будет выдано в Windows при перемещении на один дюйм (25.4 мм).

реклама

Чем больше CPI, тем, вроде бы, лучше мышка? Например, у А4 в серии Х7 лазерные мышки имеют по 2400-3600dpi. И это при том, что датчик не может выдать больше 2000 cpi. Нонсенс? ... но откуда же А4 берет такие цифры? Да ровно оттуда же, откуда их берет датчик перемещений. У него, после вычисления наиболее вероятного перемещения изображения на матрице, получается какое-то абстрактное число. Давайте предположим, что это число от 0 до 1. Датчик умножает его на установленное значение cpi и выдает в контроллер. (Хотя, тут наоборот, контроллер считывает информацию из датчика.) Что мешает контроллеру тоже умножить на произвольное число? Ап, и получили "крутую" мышку. Крутую - крутую, только фиговую. Из-за шума датчик может определять смещение картинки с какой-то ограниченной точностью.

Для датчика ADNS-6010 фирма Avago декларирует типичную точность 2300 cpi. Это означает, что при установке чувствительности выше 2300 ошибка датчика превысит единицу отсчета. В среднем. Для конкретно взятой мышки это число может меняться в некоторых пределах и зависеть от множества случайных факторов - состояние поверхности, четкость фиксации блока оптики, старение лазера, мутнение или запыленность оптики. Одно можно сказать более-менее достоверно - лучше 2300 cpi не будет.

Если в настройках мышки поставить маленькое разрешение, значительно меньше 2300 cpi, то мышка будет вести себя очень четко и предсказуемо, только кого порадует лазерная мышка с разрешением 600 cpi? Но и "3600" cpi приносит не больше радости.

Одна особенность настройки cpi, которой следуют мышки А4 серии Х7 - они ставят настройку датчика "от грани и выше". Т.е. для разрешений 400-799 ставится разрешение датчика 400, для 800-1599 на датчик ставится 800 и т.д. Поэтому, для избавления от ненужной экстраполяции рекомендуется ставить разрешения, свойственные аппаратным настройкам датчика - 400, 800, 1600, 2000 cpi.

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

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

Кто тебя выдумал…

Привычные для нас сегодня оптические мыши ведут свою родословную с 1999 года, когда в массовой продаже появились первые экземпляры таких манипуляторов от Microsoft, а через некоторое время и от других производителей. До появления этих мышей, да и еще долго после этого, большинство массовых компьютерных «грызунов» были оптомеханическими (перемещения манипулятора отслеживались оптической системой, связанной с механической частью - двумя роликами, отвечавшими за отслеживание перемещения мыши вдоль осей × и Y; эти ролики, в свою очередь, вращались от шарика, перекатывающегося при перемещении мыши пользователем). Хотя встречались и чисто оптические модели мышей, требовавшие для своей работы специального коврика. Впрочем, такие устройства встречались не часто, да и сама идея развития подобных манипуляторов постепенно сошла на нет.

«Вид» знакомых нам нынче массовых оптических мышек, базирующихся на общих принципах работы, был «выведен» в исследовательских лабораториях всемирно известной корпорации Hewlett-Packard. Точнее, в ее подразделении Agilent Technologies, которое только сравнительно недавно полностью выделилось в структуре корпорации НР в отдельную компанию. На сегодняшний день Agilent Technologies, Inc. - монополист на рынке оптических сенсоров для мышей, никакие другие компании такие сенсоры не разрабатывают, кто бы и что не говорил вам об эксклюзивных технологиях IntelliEye или MX Optical Engine . Впрочем, предприимчивые китайцы уже научились «клонировать» сенсоры Agilent Technologies, поэтому, покупая недорогую оптическую мышь, вы вполне можете стать владельцем «левого» сенсора.

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

Как «видят» компьютерные мыши

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

Итак, «зрение» оптическая компьютерная мышь получает благодаря следующему процессу. С помощью светодиода, и системы фокусирующих его свет линз, под мышью подсвечивается участок поверхности. Отраженный от этой поверхности свет, в свою очередь, собирается другой линзой и попадает на приемный сенсор микросхемы - процессора обработки изображений. Этот чип, в свою очередь, делает снимки поверхности под мышью с высокой частотой (кГц). Причем микросхема (назовем ее оптический сенсор) не только делает снимки, но сама же их и обрабатывает, так как содержит две ключевых части: систему получения изображения Image Acquisition System (IAS) и интегрированный DSP процессор обработки снимков.

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

Если мы посмотрим на блок-схему одного из оптических сенсоров, то увидим, что микросхема состоит из нескольких блоков, а именно:

  • основной блок, это, конечно же, Image Processor - процессор обработки изображений (DSP) со встроенным приемником светового сигнала (IAS);
  • Voltage Regulator And Power Control - блок регулировки вольтажа и контроля энергопотребления (в этот блок подается питание и к нему же подсоединен дополнительный внешний фильтр напряжения);
  • Oscillator - на этот блок чипа подается внешний сигнал с задающего кварцевого генератора, частота входящего сигнала порядка пары десятков МГц;
  • Led Cоntrоl - это блок управления светодиодом, с помощью которого подсвечивается поверхность под мышью;
  • Serial Port - блок передающий данные о направлении перемещения мыши вовне микросхемы.

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

Нужно уточнить, что информацию о перемещении мыши микросхема оптического сенсора передает через Serial Port не напрямую в компьютер. Данные поступают к еще одной микросхеме-контроллеру, установленной в мыши. Эта вторая «главная» микросхема в устройстве отвечает за реакцию на нажатие кнопок мыши, вращение колеса прокрутки и т.д. Данный чип, в том числе, уже непосредственно передает в ПК информацию о направлении перемещения мыши, конвертируя данные, поступающие с оптического сенсора, в передаваемые по интерфейсам PS/2 или USB сигналы. А уже компьютер, используя драйвер мыши, на основании поступившей по этим интерфейсам информации, перемещает курсор-указатель по экрану монитора.

Именно по причине наличия этой «второй» микросхемы-контроллера, точнее благодаря разным типам таких микросхем, довольно заметно отличались между собой уже первые модели оптических мышей. Если о дорогих устройствах от Microsoft и Logitech слишком плохо отозваться я не могу (хотя и они не были вовсе «безгрешны»), то масса появившихся вслед за ними недорогих манипуляторов вела себя не вполне адекватно. При движении этих мышей по обычным коврикам курсоры на экране совершали странные кульбиты, скакали чуть ли не на пол Рабочего стола, а иногда… иногда они даже отправлялись в самостоятельное путешествие по экрану, когда пользователь совершенно не трогал мышь. Доходило и до того, что мышь могла запросто выводить компьютер из режима ожидания, ошибочно регистрируя перемещение, когда манипулятор на самом деле никто не трогал.

Кстати, если вы до сих пор боретесь с подобной проблемой, то она решается одним махом вот так: выбираем Мой Компьютер > Свойства > Оборудование > Диспетчер устройств > выбираем установленную мышь > заходим в ее «Свойства» > в появившемся окне переходим на закладку «Управление электропитанием» и снимаем галочку с пункта «Разрешить устройству вывод компьютера из ждущего режима» (рис. 4). После этого мышь уже не сможет вывести компьютер из режима ожидания ни под каким предлогом, даже если вы будете пинать ее ногами:)

Итак, причина столь разительного отличия в поведении оптических мышей была вовсе не в «плохих» или «хороших» установленных сенсорах, как до сих пор думают многие. Не верьте, это не более чем бытующий миф. Или фантастика, если вам так больше нравится:) В ведущие себя совершенно по-разному мыши часто устанавливались совершенно одинаковые микросхемы оптических сенсоров (благо, моделей этих чипов было не так уж много, как мы увидим далее). Однако вот, благодаря несовершенным чипам контроллеров, устанавливаемых в оптические мыши, мы имели возможность сильно поругать первые поколения оптических грызунов.

Однако, мы несколько отвлеклись от темы. Возвращаемся. В целом система оптического слежения мышей, помимо микросхемы-сенсора, включает еще несколько базовых элементов. Конструкция включает держатель (Clip) в который устанавливаются светодиод (LED) и непосредственно сама микросхема сенсора (Sensor). Эта система элементов крепится на печатную плату (PCB), между которой и нижней поверхностью мыши (Base Plate) закрепляется пластиковый элемент (Lens), содержащий две линзы (о назначении которых было написано выше).

В собранном виде оптический элемент слежения выглядит как показано выше. Схема работы оптики этой системы представлена ниже.

Оптимальное расстояние от элемента Lens до отражающей поверхности под мышью должно попадать в диапазон от 2.3 до 2.5 мм. Это рекомендации производителя сенсоров. Вот вам и первая причина, почему оптические мыши плохо себя чувствуют «ползая» по оргстеклу на столе, всевозможным «полупрозрачным» коврикам и т. п. И не стоит клеить на оптические мыши «толстые» ножки, когда отваливаются или стираются старые. Мышь из-за чрезмерного «возвышения» над поверхностью может впадать в состояние ступора, когда «расшевелить» курсор после пребывания мыши в состоянии покоя становится довольно проблематично. Это не теоретические измышления, это личный опыт:)

Кстати, о проблеме долговечности оптических мышей. Помниться, некоторые их производители утверждали что, дескать «они будут служить вечно». Да надежность оптической системы слежения высока, она не идет ни в какое сравнение с оптомеханической. В то же время в оптических мышах остается много чисто механических элементов, подверженных износу точно так же, как и при господстве старой доброй «оптомеханики». Например, у моей старой оптической мыши стерлись и поотваливались ножки, сломалось колесо прокрутки (дважды, в последний раз безвозвратно:(), перетерся провод в соединительном кабеле, с манипулятора слезло покрытие корпуса… зато вот оптический сенсор нормально работает, как ни в чем не бывало. Исходя из этого, мы смело можем констатировать, что слухи о якобы впечатляющей долговечности оптических мышей не нашли своего подтверждения на практике. Да и зачем, скажите на милость, оптическим мышам «жить» слишком долго? Ведь на рынке постоянно появляются новые, более совершенные модели, созданные на новой элементной базе. Они заведомо совершеннее и удобнее в использовании. Прогресс, знаете ли, штука непрерывная. Каким он был в области эволюции интересующих нас оптических сенсоров, давайте сейчас и посмотрим.

Из истории мышиного зрения

Инженеры-разработчики компании Agilent Technologies, Inc. не зря едят свой хлеб. За пять лет оптические сенсоры этой компании претерпели существенные технологические усовершенствования и последние их модели обладают весьма впечатляющими характеристиками.

Но давайте обо всем по порядку. Первыми массово выпускаемыми оптическими сенсорами стали микросхемы HDNS-2000 (рис. 8). Эти сенсоры имели разрешение 400 cpi (counts per inch), то бишь точек (пикселей) на дюйм, и были рассчитаны на максимальную скорость перемещения мыши в 12 дюймов/с (около 30 см/с) при частоте осуществления снимков оптическим сенсором в 1500 кадров за секунду. Допустимое (с сохранением стабильной работы сенсора) ускорение при перемещении мыши «в рывке» для чипа HDNS-2000 - не более 0.15 g (примерно 1.5 м/с 2).

Затем на рынке появились микросхемы оптических сенсоров ADNS-2610 и ADNS-2620 . Оптический сенсор ADNS-2620 уже поддерживал программируемую частоту «съемки» поверхности под мышью, с частотой в 1500 либо 2300 снимков/с. Каждый снимок делался с разрешением 18х18 пикселей. Для сенсора максимальная рабочая скорость перемещения по прежнему была ограничена 12 дюймами в секунду, зато ограничение по допустимому ускорению возросло до 0.25 g, при частоте «фотографирования» поверхности в 1500 кадров/с. Данный чип (ADNS-2620) также имел всего 8 ножек, что позволило существенно сократить его размеры по сравнению с микросхемой ADNS-2610 (16 контактов), внешне похожей на HDNS-2000. В Agilent Technologies, Inc. задались целью «минимизировать» свои микросхемы, желая сделать последние компактнее, экономнее в энергопотреблении, а потому и удобнее для установки в «мобильные» и беспроводные манипуляторы.

Микросхема ADNS-2610 хотя и являлась «большим» аналогом 2620-й, но была лишена поддержки «продвинутого» режима 2300 снимков/с. Кроме того, этот вариант требовал 5В питания, тогда как чип ADNS-2620 обходился всего 3.3 В.

Вышедший вскоре чип ADNS-2051 представлял собой гораздо более мощное решение, чем микросхемы HDNS-2000 или ADNS-2610, хотя внешне (упаковкой) был также на них похож. Этот сенсор уже позволял программируемо управлять «разрешением» оптического датчика, изменяя таковое с 400 до 800 сpi. Вариант микросхемы также допускал регулировку частоты снимков поверхности, причем позволял менять ее в очень широком диапазоне: 500, 1000,1500, 2000 или 2300 снимков/с. А вот величина этих самых снимков составляла всего 16х16 пикселей. При 1500 снимках/с предельно допустимое ускорение мыши при «рывке» составляло по прежнему 0.15 g, максимально возможная скорость перемещения - 14 дюймов/с (т. е. 35.5 см/с). Данный чип был рассчитан на напряжение питания 5 В.

Сенсор ADNS-2030 разрабатывался для беспроводных устройств, а потому имел малое энергопотребление, требуя всего 3.3 В питания. Чип также поддерживал энергосберегающие функции, например функцию снижения потребления энергии при нахождении мыши в состоянии покоя (power conservation mode during times of no movement), переход в режим «сна», в том числе при подключении мыши по USB интерфейсу, и т.д.. Мышь, впрочем, могла работать и не в энергосберегающем режиме: значение «1» в бите Sleep одного из регистров чипа заставляло сенсор «всегда бодрствовать», а значение по умолчанию «0» соответствовало режиму работы микросхемы, когда по прошествии одной секунды, если мышь не перемещалась (точнее после получения 1500 совершенно одинаковых снимков поверхности) сенсор, напару с мышью, переходил в режим энергосбережения. Что касается остальных ключевых характеристик сенсора, то они не отличались от таковых у ADNS-2051: тот же 16-и контактный корпус, скорость перемещения до 14 дюймов/с при максимальном ускорении 0.15 g, программируемое разрешение 400 и 800 cpi соответственно, частоты осуществления снимков могли быть точно такими же, как и у вышерассмотренного варианта микросхемы.

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

В итоге и курсор на экране перемещался не так, как требовалось. Указатель на экране даже становился способен на экспромт:) - на непредсказуемые перемещения в произвольном направлении. Кроме того, легко догадаться, что при слишком быстром перемещении мыши сенсор мог вообще утратить всякую «связь» между несколькими последующими снимками поверхности. Что порождало еще одну проблему: курсор при слишком резком перемещении мыши либо дергался на одном месте, либо происходили вообще «сверхъестественные»:) явления, например, с быстрым вращением окружающего мира в игрушках. Было совершенно ясно, что для человеческой руки ограничений в 12-14 дюймов/с по предельной скорости перемещения мыши явно мало. Также не вызывало сомнений, что 0.24 с (почти четверть секунды), отведенные для разгона мыши от 0 до 35.5 см/с (14 дюймов/с - предельная скорость) это очень большой промежуток времени, человек способен двигать кистью значительно быстрее. И потому при резких движениях мыши в динамичных игровых приложениях с оптическим манипулятором может придтись несладко…

Понимали это и в Agilent Technologies. Разработчики осознавали, что характеристики сенсоров надо кардинально улучшать. В своих изысканиях они придерживались простой, но правильной аксиомы: чем больше снимков в секунду сделает сенсор, тем меньше вероятность того, что он потеряет «след» перемещения мыши во время совершения пользователем компьютера резких телодвижений:)

Хотя, как мы видим из вышеизложенного, оптические сенсоры и развивались, постоянно выпускались новые решения, однако развитие в этой области можно смело назвать «очень постепенным». По большому счету, кардинальных изменений в свойствах сенсоров так и не происходило. Но техническому прогрессу в любой области порой свойственны резкие скачки. Случился такой «прорыв» и в области создания оптических сенсоров для мышей. Появление оптического сенсора ADNS-3060 можно считать действительно революционным!

Лучший из

Оптический сенсор ADNS-3060 , по сравнению со своими «предками», обладает поистине впечатляющим набором характеристик. Использование этой микросхемы, упакованной в корпус с 20-ю контактами, обеспечивает оптическим мышам невиданные ранее возможности. Допустимая максимальная скорость перемещения манипулятора выросла до 40 дюймов/с (то есть почти в 3 раза!), т.е. достигла «знаковой» скорости в 1 м/с. Это уже очень хорошо - вряд ли хоть один пользователь двигает мышь с превышающей данное ограничение скоростью столь часто, чтобы постоянно чувствовать дискомфорт от использования оптического манипулятора, в том числе это касается и игровых приложений. Допустимое же ускорение выросло, страшно сказать, во сто раз (!), и достигло величины 15 g (почти 150 м/с 2). Теперь на разгон мыши с 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.

Значение регистра, шестнадцатеричное Десятичное значение Частота снимков сенсора, кадров/с
OE7E 3710 6469
12C0 4800 5000
1F40 8000 3000
2EE0 12000 2000
3E80 16000 1500
BB80 48000 500

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

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

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

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

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

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

Лазерное будущее?

Недавно сеть наполнили хвалебные статьи о мыши Logitech MX1000 Laser Cordless Mouse, в которой для подсветки поверхности под мышью использовался инфракрасный лазер. Обещалась чуть ли не революция в сфере оптических мышей. Увы, лично попользовавшись этой мышью, я убедился, что революции не произошло. Но речь не об этом.

Я не разбирал мышь Logitech MX1000 (не имел возможности), но уверен, что за «новой революционной лазерной технологией» стоит наш старый знакомый - сенсор ADNS-3060. Ибо, по имеющимся у меня сведениям, характеристики сенсора этой мыши ничем не отличаются от таковых у, скажем, модели Logitech МХ510 . Вся «шумиха» возникла вокруг утверждения на сайте компании Logitech о том, что с помощью лазерной системы оптического слежения выявляется в двадцать раз (!) больше деталей, чем с помощью светодиодной технологии. На этой почве даже некоторые уважаемые сайты опубликовали фотографии неких поверхностей, дескать, как видят их обычные светодиодные и лазерные мыши:)

Конечно, эти фото (и на том спасибо) были не теми разноцветными яркими цветочками, с помощью которых нас пыталась убедить на сайте Logitech в превосходстве лазерной подсветки системы оптического слежения. Нет, конечно же, оптические мыши не стали «видеть» ничего подобного на приведенные цветные фотографии с разной степенью детализации - сенсоры по-прежнему «фотографируют» не более чем квадратную матрицу серых пикселей, отличающихся между собой лишь разной яркостью (обработка информации о расширенной цветовой палитре пикселей непомерным грузом легла бы на DSP).

Давайте прикинем, для получения в 20 раз более детализированной картинки, нужно, извините за тавтологию, в двадцать раз больше деталей, передать которые могут только дополнительные пиксели изображения, и ни что иное. Известно, что Logitech MX 1000 Laser Cordless Mouse делает снимки 30х30 пикселей и имеет предельное разрешение 800 cpi. Следовательно, ни о каком двадцатикратном росте детализации снимков речи быть не может. Где же собака порылась:), и не являются ли подобные утверждения вообще голословными? Давайте попробуем разобраться, что послужило причиной появления подобного рода информации.

Как известно, лазер излучает узконаправленный (с малым расхождением) пучок света. Следовательно, освещенность поверхности под мышью при применении лазера гораздо лучше, чем при использовании светодиода. Лазер, работающий в инфракрасном диапазоне, был выбран, вероятно, чтобы не слепить глаза возможным все-таки отражением света из-под мыши в видимом спектре. То, что оптический сенсор нормально работает в инфракрасном диапазоне не должно удивлять - от красного диапазона спектра, в котором работает большинство светодиодных оптических мышей, до инфракрасного -«рукой подать», и вряд ли для сенсора переход на новый оптический диапазон был труден. Например, в манипуляторе Logitech MediaPlay используется светодиод, однако также дающий инфракрасную подсветку. Нынешние сенсоры без проблем работают даже с голубым светом (существуют манипуляторы и с такой подсветкой), так что спектр области освещения - для сенсоров не проблема. Так вот, благодаря более сильной освещенности поверхности под мышью, мы вправе предположить, что разница между местами, поглощающими излучение (темными) и отражающими лучи (светлыми) будет более значительной, чем при использовании обычного светодиода - т.е. изображение будет более контрастными.

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

Какими будут оптические сенсоры ближайшего будущего? Сказать трудно. Вероятно, они перейдут таки на лазерную подсветку, а в Сети уже ходят слухи о разрабатываемом сенсоре с «разрешением» 1600 cpi. Нам остается только ждать.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

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

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

Anatoly Besplemennov

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

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

Для примера рассмотрим простой и дешевый сенсор OM2. Это устройство измеряет позицию, основываясь на полученных кадрах изображения поверхности, и путем математической обработки определяет направление перемещения и его величину. Разработанный для использования со светодиодом повышенной яркости датчик помещен в полистирольный оптический корпус. Датчик не имеет подвижных частей, не требует точной оптической подстройки и позволяет создать законченную, компактную следящую систему. OM02 вырабатывает квадратурный выходной сигнал для обоих направлений перемещения (X и Y). Разрешающая способность составляет примерно 0.06 мм, а скорость перемещения может достигать 0.4 м/с.

Микросхема датчика формирует квадратурный сигнал по направлению X, эмулирующий выход обычного энкодера. Для двухмерной системы могут быть использованы обе координаты X и Y. X1 и X2 генерируются с максимальной частотой около 25 кГц. Диаграммы на Рисунке 1 иллюстрируют временные характеристики для оси координат X (направление движения — вправо). При необходимости квадратурный выходной сигнал может быть использован для непосредственного управления шаговым мотором.

Подключив выходы X1 и X2 к входу логического элемента исключающее «ИЛИ», можно удвоить выходную частоту данных, при этом потеряв информацию о направлении перемещения.

Физическая реализация

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

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

Принципиальные схемы для интерфейса SPI

Доступны также и другие микросхемы оптических сенсоров, различающихся используемыми типами источников света, интерфейсами, скоростями и так далее. Например, в оптическом КМОП датчике мыши (Рисунок 5) используется последовательный интерфейс SPI, а оптический навигационный КМОП датчик (Рисунок 6) имеет оба типа выходов, как SPI, так и квадратурный.

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

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

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

Подготовка и немного теории

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

Погуглив информацию по этой теме и разобрав старую PS/2 мышку Logitech, я увидел знакомую по статьям из интернета картину.

Не очень сложная схема «мышей первого поколения», оптический сенсор по центру и чип интерфейса PS/2 чуть выше. Попавшийся мне оптический сенсор является аналогом «популярных» моделей ADNS2610/ADNS2620/PAN3101. Я думаю, они и их аналоги были массово произведены на одном и том же китайском заводе, получив на выходе разную маркировку. Документация на него нашлась очень легко, даже вместе с различными примерами кода.

Документация гласит, что этот сенсор до 1500 раз в секунду получает изображение поверхности размером 18x18 точек (разрешение 400cpi), запоминает его и с помощью алгоритмов сравнения изображений вычисляет смещение по координатам Х и Y, относительно предыдущей позиции.

Реализация

Для «общения с сенсором» я использовал популярную вычислительную платформу Arduino, а припаяться решил прямо к ножкам чипа.

Подключаем 5V и GND к соответствующим выходам Arduino, а ножки сенсора SDIO и SCLK к цифровым пинам 8 и 9.

Для получения смещения по координатам нужно прочитать значение регистра чипа по адресу 0x02 (X) и 0x03 (Y), а для дампа картинки нужно, сначала записать значение 0x2A по адресу 0x08, а потом 18x18 раз его прочитать оттуда же. Это и будет последнее «запомненное» значение матрицы яркости изображения с оптического сенсора.

Как я реализовал это на Arduino можно посмотреть тут: http://pastebin.com/YpRGbzAS (всего ~100 строк кода).

А для получения и отображения картинки была написана программа на Processing.

Результат

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

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

Если начать приподнимать мышку над поверхностью даже на пару миллиметров, четкость сразу пропадает.

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

Заключение

Хотя получаемое изображение и не очень большое, этого вполне хватило для решения моей задачи (сканнер штрих кода). Получилось очень даже экономично и быстро (мышка за ~100р + Arduino + пару дней на написание кода).

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