Жила-была мышь, и звали её Defender MM-525. Стойко тянула она свою мышиную лямку — на ссылки кликала, страницы прокручивала, курсор перемещала. Но однажды случилась беда — вместо одного клика она стала делать два, а то и больше. Бывало, захочешь приостановить видео на ютубе — а оно вместо этого на весь экран открывается. Или выделяешь текст — а в последний момент выделение сбрасывается. Понятно, что дальше так продолжаться не могло.



Что же делать? Интернет предлагает такие варианты:

  • Использовать программные средства фильтрации лишних кликов. Но это не решение проблемы, а лишь борьба с симптомами, к тому же только под Windows, так что этот вариант я отмёл.
  • Подогнуть пружину микровыключателя.
  • Кое-кто даже грешит на клавиатуру. Я даже ради приличия проверил — результат ожидаемо отрицательный.
  • Большинство же советует просто заменить микровыключатель. Что я и сделал, поставив кнопку от старой мышки.


Но радость моя была недолгой — через несколько дней двойной клик вернулся. Пораскинув мозгами, я решил, что дело в механических вибрациях, и наклеил под кнопку толстый скотч. И снова это помогло лишь на несколько дней. Стало ясно, что надо искать радикальное решение. А для этого надо сначала понять, что происходит.

Как обычно делаются кнопки у цифровой электроники? Приблизительно так:

image

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

Но если вход у процессора идеальный, то выключатель таковым при всём уважении считать не получится. Когда выключатель замыкается — это означает, что один кусок металла соприкасается с другим куском металла. Но между состояниями «выключено» и «включено» есть тот неловкий момент, когда эти два куска соприкасаются едва-едва. И если сейчас контакт есть, то через микросекунду он может пропасть, а затем снова восстановиться. А порой и вовсе один контакт ударяется об другой и по законам Ньютона отскакивает от него, а то и несколько раз. Что подумает мама процессор? Правильно — он подумает, что выключатель включили, выключили, включили, выключили, включили, выключили и т. п. Хотя «на самом деле» его включили всего один раз. Это явление даже имеет своё название — дребезг контактов.

Постойте, ничего не напоминает? Ах да, аналогичный случай как раз произошёл с нашей мышкой! Значит, наша рабочая гипотеза будет в том, что разработчики мышки либо вовсе не вспоминали про возможность дребезга, либо их старания по борьбе с ним были тщетны. И нам придётся побороться с этим врагом за них.

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



Именно этим мы и займёмся.

Вот она — наша кнопка:



А это она же, но без крышки:



Подпишем номера контактов для удобства:



Принцип работы налицо — в состоянии покоя замкнуты контакты 1 и 3, при нажатии кнопки на некоторое время все контакты размыкаются, а затем замыкаются контакты 1 и 2. При отжатии происходит всё то же в обратном порядке.

Вскрыли мы кнопку не для того, чтобы что-то подгибать, а для того, чтобы воочию увидеть, как она работает, а если повезёт, то и посмотреть на дребезг. А поможет нам в этом фотоаппарат Samsung WB2000 и объектив И96У. Упомянутый аппарат умеет снимать видео с частотой 1000 кадров в секунду. Правда, не ахти как, но, как говорится, чем богаты.

Сложнейшая установка для высокоскоростной съёмки:



И, собственно, кино:



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

Лирическое отступление. Как бы я сделал мышь, если бы у меня был выключатель вышеприведённой конструкции? А вот так:



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

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

Измерим наш выключатель мультиметром. Во-первых, находим, что ни один из контактов не закорочен на питание. Ну да ладно. В состоянии покоя на втором контакте 2,5 вольта питания, на остальных — ноль. В нажатом состоянии на всех контактах ноль. Это говорит о том, что разработчики не пошли по моему пути, и входом процессора, видимо, служит второй контакт, а третий контакт вовсе не используется. Но самое смешное — после отжатия кнопки ноль на втором контакте сохраняется ещё пять секунд! К сожалению, механизм работы и преимущества такого решения и мотивация разработчиков остаются для меня тайной. Надеюсь, кто-то из сведущих людей меня просветит.

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

Паять конденсатор будем между контактами 1 и 2. А для измерения эффекта воспользуемся скриптом наподобие вот такого, слегка его подправив так, чтобы он реагировал как на отжатие, так и на нажатие кнопки, и убрав искусственные ограничения по времени.

Конденсатор в 0,1 мкФ даёт время клика 600 мс. То есть как бы быстро мы ни жали, кнопка «отлипнет» не ранее чем через 0,6 секунды. Это многовато. Методом линейной экстраполяции предполагаем, что 3,3 нФ дадут время в 20 мс. Паяем — и видим время около 100 мс. Но это время включает в себя и время собственно движения пальцем, и без конденсатора оно ненамного меньше. Перепробовав ещё несколько номиналов, я решил остановиться на 3,3 нФ.

Поскольку SMD-конденсаторов не было, пришлось паять ногастый:



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

УПД: Совсем забыл. Есть ещё один бич мышиных кнопок, так и не всплывший в обсуждении, пока я не вспомнил. Ощущается это так — на кнопку приходится давить с большей силой, клик уже не такой чёткий, как раньше, и порой кнопка подаёт сигнал об отжатии, пока она нажата. А разгадка одна — та пластмасска, которая давит на выключатель, может со временем стираться, тогда в ней образуется такое красивое углубление, которое и не даёт кнопке нажиматься до конца. Лечится это просто — надо эту пластмасску либо доработать напильником, чтобы она вновь стала плоской и параллельной кнопке, либо приклеить к ней тонкую плоскую пластмасску в тех же целях.

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

УПД2: Оказалось, что не всё так просто. Читайте продолжение истории!

Комментарии (101)


  1. grozaman
    22.08.2015 08:43
    +7

    О_о
    Вот он — настоящий Geektimes. Я бы просто микрушку поменял, они везде обычыно Omron ставят, достать не проблема. Или вообще мышку, благо мрут не так часто.


    1. ploop
      22.08.2015 11:43
      +1

      они везде обычыно Omron ставят, достать не проблема

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


    1. wormball
      22.08.2015 14:18

      > Или вообще мышку, благо мрут не так часто.

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


      1. ploop
        22.08.2015 15:15
        +2

        Мрут у них в основном энкодеры, так как механика. На дорогих ставят оптику — та вечная. Точнее не на дорогих, а только две компании: Microsoft и Logitech. На остальных, даже супер-крутых геймерских всё равно дешевый китайский механический энкодер.

        Ну а кнопки мрут везде. Благо заменить не проблема. Хотя года два у меня все держат.


        1. lamoss
          23.08.2015 13:42

          >Ну а кнопки мрут везде. Благо заменить не проблема. Хотя года два у меня все держат.
          К слову — у меня на Logitech G5 уже 7 год пошел.


        1. wormball
          24.08.2015 03:18

          Энкодер, кстати говоря, также меняется при наличии донора органов. Правда, не у всех мышей они одинаковые, в отличие от.


          1. grozaman
            24.08.2015 08:31

            И мышь как раз таки зачастую меняют именно из-за него. Поэтому все мыши из кладовки — уже мертвы.
            Во всяком случае у меня)


      1. DIHALT
        29.08.2015 01:31

        Измельчали мыши. Мой логитечь BJ-59 живет уже 10 лет. Сдохла только одна кнопка и то потому, что мой дружок-дебил во время гейминга хреначил по ней со всей силы, будто бы от того, что по кнопке сильней влупишь рельса больше дамага даст.


    1. BlackFoks
      22.08.2015 20:14
      +1

      Я купил 6 штук микрушек на ebay, даже с заменой не стал заморачиваться, т.к. паять, по сути, не умею. Заменил металлическую пластинку на новую и все отлично стало.


      1. DIHALT
        29.08.2015 01:32

        А можно было и старую аккуратно почистить о грубый картон. Там просто окисел на контактах.


  1. solalex
    22.08.2015 10:16

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


    1. 121212121
      22.08.2015 11:21
      +3

      Мой дефендер с самого начала глючил. Сделал вывод — не брать УГ.


    1. wormball
      22.08.2015 13:18
      +1

      > дешевые мыши и дорогие как раз отличаются надежностью кнопок.

      Тут не так давно жаловались на двойной клик у логитеха. http://geektimes.ru/company/mvideo/blog/253460/ На мой взгляд, главная проблема именно в схемотехническом решении, а дребезг у выключателя всегда будет.


      1. tendium
        22.08.2015 14:43

        Логитек страдает этим, ага. Но Логитек их и меняет в течение гарантийного срока :)


        1. isden
          22.08.2015 15:15

          У моей старой vx nano сабж начал иногда появляться примерно через 7-8 лет активной работы в самых разных условиях.


    1. Ivnika
      22.08.2015 14:53
      +1

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


      1. darkfrei
        22.08.2015 19:12
        +1

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


  1. Ganster41
    22.08.2015 12:16
    +2

    Паяльщик от бога.
    Хоть бы выводы залудил, не говоря уже от неотмытом флюсе.


    1. wormball
      22.08.2015 13:06
      +1

      Я залудил, честное слово! Только с той стороны, которая к плате повёрнута. А флюс называется «безотмывочный», потому и не стал отмывать. Только потом уже понял, что не очень красиво смотрится.


    1. Skerrigan
      22.08.2015 13:55
      +1

      Первое правило IT-шника: «Работает? Не трогай!».
      А если серьезно, то в целом согласен, было бы неплохо скилл пайки чутка поднять.

      *буду обновлять комментарии, прежде чем оставить свой


  1. PretorDH
    22.08.2015 12:41
    +4

    Только что проделал процедуру с двумя мышками на которих БЫЛ дребезг. Уже его нет. Процедура достаточно проста.

    Открываем мышку.

    Открываем микропереключатель — аркуратно подевая лепестки защелок. Не потеряйте кнопочку.

    Режем бумажную полосу 2мм шириной и 50мм длинной. Смачиваем полосу в спирте. Засовываем между контактами. Сначала с одной стороны (в отпущеном состоянии) потом с другой (в нажатом) и отпустив или нажав на пружинку протягиваем бумажку 5-10 раз, я делаю пока спирт заметно не испарится.

    После чистки на бумажке видны полосы окиси.

    Кладем кнопочку в крышку микрика. Держа мышку перевернутой защелкиваем кришку микропереключателя.

    Собираем мышку. Вуаля, все работает.


    1. PretorDH
      22.08.2015 12:49
      +1

      P.S. Рецепт статьи — временное решение!!!
      Двоение это симптом того, что нагар и окислы портят контакт. Впоследствии микрик перестанет работать совсем или замкнется. Нужно будет чистить или перепаивать микрик, а то и выбросить девайз.


      1. wormball
        22.08.2015 13:01

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


        1. isden
          22.08.2015 14:23

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


          1. ploop
            22.08.2015 15:19

            Геркон — тоже механика, хоть и более надёжная. Придумали бы какую-нибудь оптику + тактильную часть, тогда да. Но кому оно надо…


            1. isden
              22.08.2015 15:25
              +1

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


          1. Shirixae
            22.08.2015 15:24

            Да сразу оптический энкодер. Чтоб вечный был.


            1. isden
              22.08.2015 15:26

              На любой лишний светодиод уходит энергия батарейки.


              1. Shirixae
                22.08.2015 15:28

                Если вопрос в хороше игровой мышке — то там батарейка (даже без подсветки) всё равно на день-два, как в смартфоне. Ибо злой проц, высокая частота опроса, много электроники. А если об эконом-классе вида «мышь ноутбучная» — то там, обычно, всё равно, батарейку раз в 4 месяца менять или раз в 2. Другое дело, что эконом-класс долгоиграющим делать невыгодно, или планируемое устаревание будет в области механики / прочности.


                1. isden
                  22.08.2015 15:30

                  Фигасе эконом-класс, приличная ноутбучная мышка стоит чуть ли не дороже игровой. Упомянутый мной выше vx nano я в свое время покупал за эквивалент примерно 150 баксов (о чем, кстати, ниразу не пожалел, прослужила 8+ лет, жива до сих пор, хоть пластик облез местами немного).


                  1. Meklon
                    22.08.2015 17:34

                    Маленькие мышки — смерть для суставов. Это прямой путь к туннельному синдрому.


                    1. ploop
                      22.08.2015 17:43

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


                    1. isden
                      22.08.2015 17:48
                      +1

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


              1. ploop
                22.08.2015 15:54

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


                1. isden
                  22.08.2015 15:58

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


                1. ProVal
                  22.08.2015 16:06

                  Вот на этой самой М705 у меня последние пару лет проблема с прокликиванием :( Разбирал, оказалось протёрся пластик, который давит сверху на микрик. Подклеивал туда тонкие металлические пластинки, чтобы скомпенсировать, на какое-то время помогло, но сейчас опять. Надо разобрать переключатель, наверное.
                  А по батарейке действительно мышь крутая. Вставил самую дешевую АА и забыл на несколько месяцев даже при интенсивном использовании.


                  1. ploop
                    22.08.2015 16:17

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


  1. Gordon01
    22.08.2015 15:13
    -3

    Целую статью может заменить один поисковый запрос «подавление дребезга контактов».
    По теме: кондер параллельно кнопке на антидребезг допустимо только в дешевой радиоэлектронной аппаратуре. В мышке контакты скоро умрут. В районе недели.


    1. wormball
      22.08.2015 15:49
      +2

      > Целую статью может заменить один поисковый запрос «подавление дребезга контактов».

      Понимаете ли в чём дело, те, у кого заглючила мышь, скорее всего, не додумаются до такого запроса. А те, кто додумаются — тем и так ничего не надо объяснять.

      > кондер параллельно кнопке на антидребезг допустимо только в дешевой радиоэлектронной аппаратуре

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

      > В мышке контакты скоро умрут. В районе недели.

      Ну ок, ставки приняты, через месяц отпишусь.


      1. Gordon01
        22.08.2015 18:26
        -6

        Кондеры ставят только начинающие радиолюбители, которые не осилили программное подавление дребезга, сканирование кнопок или триггер шмидта.
        Я везде делаю сканирование, работает идеально.

        >И каковы ваши альтернативы?
        Гугл ответит на ваши вопросы, смысл обсуждать это 123456й раз?

        >Помимо того, что его ещё надо рисовать, травить, паять и т. п
        Ничего этого не надо, берете микруху в so-корпусе и паяете навесом. 4 проводка.


        1. wormball
          22.08.2015 18:50
          +4

          > программное подавление дребезга

          Вы предлагаете подпаиваться к мышке, реверсить её прошивку и вносить необходимые изменения? Боюсь, что я не настолько крут. Ежели вы такое можете — напишите свою статью. Ну и потом, лекция для колхозников статья для простых людей, обладающих лишь базовыми познаниями в электронике, чтобы они сами смогли починить свои мыши. Мне отчего-то кажется, что перепрошивать контроллеры может меньшее количество народа, чем припаивать конденсаторы. Да и по трудоёмкости не сравнить.

          > берете микруху в so-корпусе и паяете навесом. 4 проводка.

          Ага, ещё эту микруху искать, покупать, резать дороги на плате, думать, как сделать, чтобы эти проводки не порвались. А потом выяснить, что кнопка с ним не работает.


          1. Gordon01
            23.08.2015 04:57
            -3

            > Вы предлагаете подпаиваться к мышке, реверсить её прошивку и вносить необходимые изменения?

            Предлагаю вам не косить под дурачка, а потом можно уже будет по теме поговорить.

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

            не я один вам сказал, что то что вы предлагаете — вредный совет.

            > Ежели вы такое можете — напишите свою статью

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


            1. ploop
              23.08.2015 11:58

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


      1. Foreglance
        23.08.2015 09:08

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

        Поддерживаю — пару недель назад появился эффект двойного клика на удобной беспроводной мыши Logitech M325 — с сожалением отложил ее, заменив на другую (из комплекта к клавиатуре — не очень удобную). Решение с конденсатором — работает, если перестанет — заменю контакт.
        Интересное видео со скоростной съемкой. Внешний объектив, похоже, от старого фотоувеличителя.
        Спасибо за статью.


        1. wormball
          24.08.2015 04:26

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

          > Внешний объектив, похоже, от старого фотоувеличителя.

          Ага, он даже так называется — Индустар 96 от Увеличителя.


  1. Arezus
    22.08.2015 15:37

    Мне кажется, что первостепенно, это нагар или окислы на контактах, а с кондером получилось, что мы дырку в заднем правом крыле залепили газеткой и покрасили все это папье-маше в цвет кузова.
    По поводу схемотехники, я не понимаю, почему при наличии трех контактов кнопки не использовать RS-триггер, я в своем серийном приборе боролся с кнопками СТАРТ-СТОП пока не поставил CD4011 в прослойку по схеме 2И-НЕ, проблема решилась четко и бесповоротно.


    1. wormball
      22.08.2015 16:16

      > а с кондером получилось, что

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

      > я не понимаю, почему при наличии трех контактов кнопки не использовать RS-триггер

      А меня больше интересует, чем при наличии трёх контактов плоха та схема, которую я нарисовал. В частности, чем RS-триггер лучше неё.


      1. vmchaz
        22.08.2015 16:49

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

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


        1. wormball
          22.08.2015 17:22
          +1

          > Если какая-то проблема может быть решена, причём достаточно дёшево и полностью

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

          > во всяких геймерских мышках дребезг по частоте может быть сопоставим со скоростью нажатия на кнопку

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


          1. vmchaz
            22.08.2015 18:27

            и надёжнее

            Чем фильтр на конденсаторе надёжнее схемы с RS-триггером?


            1. wormball
              22.08.2015 18:38

              Ничем не надёжнее. Только и то, и другое — фильтры. А вопрос изначально звучал так:

              > зачем применять фильтрацию вместо полного решения?


      1. Arezus
        22.08.2015 17:58
        +1

        Тем, что рс-триггер на то и рс-триггер, расшифровуется как Reset-Set trigger, пока не наступит сброс, сигнал установки не пропадет. То же самое со схемой 2И-НЕ на 4011, пока не замкнется верхний контакт, там хоть миллион раз пусть дребезжит на нижнем, а выходное значение не поменяется. А кондер — это больше костыль, все равно нужно чистить контакты, тогда и кондер, может, не нужен.


        1. wormball
          22.08.2015 18:21
          -1

          Я, собственно, не напайку конденсатора имел в виду, а вот эту картинку:



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


          1. Halt
            22.08.2015 20:15
            +5

            Два вам по схемотехнике.

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

            Самое безобидное что вы сможете там поймать это наводку 50 Гц.

            Если схему делать совсем по уму то нужен еще и третий резистор в цепи ноги, ом 200.


            1. wormball
              22.08.2015 20:50
              -3

              > вывод будет некоторое время висеть в воздухе

              Некоторое время — это 5 миллисекунд. Накрайняк можно конденсатор напаять.

              > Если схему делать совсем по уму то нужен еще и третий резистор в цепи ноги, ом 200.

              Куда именно? И почему так мало?


              1. Halt
                22.08.2015 20:58
                +3

                Из-за этого «накрайняк» ракеты падают. Бывает что и на голову. Это правило хорошего тона, написанное кровью из глаз разработчиков :)

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

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


                1. wormball
                  22.08.2015 21:23

                  > Из-за этого «накрайняк» ракеты падают.

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

                  > Резистор ставится последовательно ноге.

                  Ну ок, договорились, ставим RC-цепь около ноги процессора. Всё проще, чем триггер городить. Тем паче, насколько я помню, например, у атмеги и так входы работают как триггер Шмитта.


                  1. ploop
                    22.08.2015 21:27

                    Ну ок, договорились, ставим RC-цепь около ноги процессора

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


                    1. wormball
                      22.08.2015 21:30

                      Ну вот у атмеги нет подтяжки. Как у других — не знаю.


                      1. ploop
                        22.08.2015 21:30

                        Как это нет? Куда она делась? :)
                        Порядка 100к всегда была.


                        1. wormball
                          22.08.2015 21:35
                          +1

                          Вот что умные люди пишут:

                          > Когда ножка настроена на вход, то если PORTxy=0, то вывод в режиме Hi-Z. Если PORTxy=1 то вывод в режиме PullUp с подтяжкой резистором в 100к до питания.

                          easyelectronics.ru/avr-uchebnyj-kurs-ustrojstvo-i-rabota-portov-vvoda-vyvoda.html

                          То бишь подтяжку можно включить или отключить.


                          1. ploop
                            22.08.2015 21:41

                            То бишь подтяжку можно включить или отключить.
                            :)
                            Естественно. Если пин подключен к цифровому порту другого устройства, то подтяжка тупо будет мешать — потреблять лишний ток. К тому же подтяжки бывают не только к VCC, но и к земле. Потому на МК их статичными не делают, они программно отключаемы.
                            Комбинациями всех возможностей портов ввода-вывода люди чудеса творят.


          1. Halt
            22.08.2015 20:19
            +1

            Вот до кучи осциллограмма с форума радиокота одной и той же кнопки, нажатой 5 раз:

            Ужас электронщика
            image


            1. wormball
              22.08.2015 20:52

              Что-то я не пойму, какой схеме подключения кнопки это соответствует. И какие там времена.


              1. Halt
                22.08.2015 21:00

                Ваша схема. Сухая кнопка без защиты. Времена мизерные разумеется (микросекунды). Вся эта прелесть приходится на момент касания контакта.


            1. ploop
              22.08.2015 21:15

              Ну там не такая кнопка, а тактовая. Я участвовал в той теме. Она дребезжит гораздо сильнее, так как тут усилие на контактах фиксированное, а у тактовой зависит от внешних механических усилий/колебаний.


    1. ploop
      22.08.2015 16:19

      По поводу схемотехники, я не понимаю, почему при наличии трех контактов кнопки не использовать RS-триггер
      Потому, что там стоит контроллер, который вполне эффективно может подавить дребезг программно. Ну а коль программа кривая, то…


    1. vmchaz
      22.08.2015 16:46

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


  1. TigerClaw
    22.08.2015 18:41
    +1

    Кстати по поводу износа, у меня на логитеке к примеру появился двойной клик на правой кнопке мыши, которая редко используется, но из-за того стало практически невозможно пользоваться контекстными меню. Что намекает, на то что дабл клик не связан с количество кликов. Да логитек мне заменили мышку по гарантии (g500 на g502).


  1. maaGames
    22.08.2015 19:11

    Уже не помню сколько лет пользуюсь мышью «A4Tech X7». Из практических соображений сразу вынул из неё утяжелитель и она до сих пор служит верой и правдой, без намёков и проблем. Так называемая «змеинная кожа» уже успела поменять цвет и наполовину слезть (руки потеют во время особо рьяных баталий и покрытие размокло), но ни с лазером, ни с механникой проблем нет, армированный провод не оторвался. Хотел заменить на другую, ведь облезлая мышь — не эстетично… Но не смог придумать, на что её заменить, кроме точно такой же, но новой. Сейчас они стоят дешевле (в рублях), чем я покупал много лет назад.
    А вообще, у меня была мечта сделать дверной звонок из мыши, но я рукожоп.


    1. Anisotropic
      22.08.2015 22:37
      +3

      У них энкодер в колесе умирает. У самого уже две сдохло, и на третьей появилось :(


      1. ploop
        22.08.2015 23:32

        Аналогично, тоже две валяются. Восстанавливать — менять шило на мыло, тоже сдохнет. Хотя сами мыши хорошие, нравились мне.


      1. serf
        24.08.2015 11:18

        +1, с X7 была такая же беда


    1. vlivyur
      24.08.2015 17:08

      Я своей уже лет 7 пользуюсь, вроде X-710BK. Сильно не играю, но использую много. Утяжелители оставил, провод обычный, ещё долазерная. Проблема с дребезгом появилась лишь недавно и пока сильно не беспокоит, но видимо придётся почистить её. Ну и стоят они теперь в полтора раза дороже, чем тогда (около 700 рублей отдал).


  1. b3nd3r
    22.08.2015 21:13
    +1

    В универе у нас был курс программирования на VHDL для FPGA. И дребезг контактов на тактовых кнопках мы лечили программным методом, но я уже и не помню в чем суть была. А почему на мышках никак нельзя программно это обрабатывать? Могу только предположить, что может зарежка увеличиться.

    Есть ли вообще мышки, которые не подвержены этому? Судя по отзывам на Я.Маркете даже топовые модели Логитека страдают от такой болезни.


    1. ploop
      22.08.2015 21:17
      +2

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


    1. wormball
      22.08.2015 21:27

      Вот я не сторонник теорий заговора, но единственное, что мне в связи с этим приходит на ум — это запланированное устаревание. Ибо побороть этот эффект — проще некуда, что я, собственно, и хотел показать в статье.


  1. DanilinS
    23.08.2015 19:28
    +2

    Мой совет: флюс отмывать обязательно:
    1) Неизвестно что намешали в это «безотмывочный» флюс. Реальность такова, что да-же в «фирменном» магазине можно купить неизвестно что.
    2) Нередко «безотмывочный» флюс для радиолюбителей — это расфасованный по мелкой упаковке промышленный «безотмывочный» флюс в большой упаковке по несколько литров. Но в производстве его наносят совсем немного и он полностью выгорает при пайке волной. Естественно он «безотмывочный». А если дома мазать щедро и не отмывать — будут проблемы. Ибо флюс далеко не нейтральный.

    А основные причины «дребезга» — грязь на контактах и усталость пружинных контактов микровыключателя. Из-за усталости материала падает сила прижима перекидного контакта. И получаем затянутый по времени процесс «прыгания» контакта. Сам видел неоднократно микровыключатели, у которых пружина просто разваливалась на куски…

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

    Рекомендации:
    1) Купить нормальные микровыключатели с большим ресурсом. И перепаять. Но обычно ресурс компонентов мыши примерно одинаков. Заменить микровыключатель — потом порвется хвост, потом пластиковые подшипники протрутся до дыр, энкодер умрет… Т.е. если дешевая мышь умерла — значит умерла. Хороним и покупаем новую.
    2) Либо купить хорошую мышь. Лучше всего «игровую». У неё обычно ресурс гораздо выше обычной офисной. Мышь нормального производителя. У самого сейчас «A4TECH BLOODY V7». Уже 2 года. И такое чувство, что еще прослужит долго. Шнур в оплетке, кнопки без намека на дребезга. А раньше сынок в сетевые шутеры мышь убивал за полгода. Правда мышь не дешевая.


    1. Meklon
      23.08.2015 19:37

      Скролл наверняка сдохнет… Они на нём всегда экономят. А фирма хорошая.


    1. immaculate
      24.08.2015 01:16

      А какой флюс лучше использовать? Я 100 лет не паял, сейчас начал снова, в магазине стопятьсот видов флюса, что брать непонятно. И как его отмывать? Зубной щеткой?


      1. Foreglance
        24.08.2015 23:32

        Использую обычно канифоль — отмывается спиртом (ватной палочкой или щеткой, хоть и с трудом). Бывало использовал что-то вроде ЛТИ 120 (жидкий, для радиокомпотентов — удобно наносить кисточкой). Наверное посовременнее есть средства.


    1. wormball
      24.08.2015 02:20

      > A4TECH BLOODY V7

      О, а у неё кнопки перепрограммируются из-под линухи? А то у меня уже лет семь мышь Oklick 710L, датчик так себе, зато у неё есть киллер-фича — кнопка alt+tab там, где у вашей мыши кнопка 3. Я рассматривал варианты покупки «дорогих» мышей, но вот не смог найти ничего похожего. Либо дополнительные кнопки расположены так, что за ними надо тянуться, либо напротив, что можно их ненароком нажать, либо не перепрограммируются (и назначено на них совсем не то), ну или перепрограммируются, но только под виндой. Я готов выложить за мышь 3000 рублей (может быть, даже 5000), но не готов выкладывать 3000 рублей за мышь, в которой не будет того, что я хочу. Вот ваш вариант неплохо выглядит, ежели можно alt+tab на третью кнопку назначить. Ну или аналогичная мышь R8.

      > Заменить микровыключатель — потом порвется хвост, потом пластиковые подшипники протрутся до дыр, энкодер умрет…

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

      > Из-за усталости материала падает сила прижима перекидного контакта. И получаем затянутый по времени процесс «прыгания» контакта. Сам видел неоднократно микровыключатели, у которых пружина просто разваливалась на куски…

      Ну это уже другой вопрос. Вот, например, тот выключатель, который в статье — на нём признаков износа не заметно. А дребезг есть. А ежели приходится давить всем своим весом, чтобы кнопку нажать (бывает и такое) — то конечно, выключатель на выкидку. Хотя… есть ещё такой прикол — та пластмасска, которая давит на выключатель, может со временем стираться, тогда в ней образуется такое красивое углубление, которое и не даёт кнопке нажиматься до конца. Вот, в частности, с упомянутой мышью 710L так было, я эту пластмасску подпилил — и мышь стала как новая. Надо это будет в статье упомянуть.

      > Купить нормальные микровыключатели с большим ресурсом. И перепаять.

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


      1. ploop
        24.08.2015 08:57
        +2

        О, а у неё кнопки перепрограммируются из-под линухи?

        xbindkeys — какую угодно кнопку на что угодно.


        1. wormball
          24.08.2015 16:14

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


          1. ploop
            24.08.2015 16:24
            +1

            В смысле не работает? Запускаете утилиту xev (X events), записываете коды нужных кнопок, а затем в xbindkeysrc вешаете на них любые клавиатурные сочетания.


            1. wormball
              24.08.2015 16:48

              А яндекс мне выдал статью, где предлагается использовать xbindkeys -k или xbindkeys-config для этих целей. Попробую, спасибо. Хотя всё равно хочется, чтобы непосредственно в мышке можно было кнопки перепрограммировать.


              1. ploop
                24.08.2015 17:38

                Вот мой xbindkeysrc для M705, я повесил три браузерных команды: колесо влево — новая вкладка, колесо вправо (на себя) — обновить, кнопка под большим пальцем — закрыть вкладку.
                Кнопки вперёд/назад оказалось работают изначально.


  1. ploop
    24.08.2015 22:52
    +1

    Разобрал сейчас М705 — тоже кнопка глючила, только не основные, а та, что на колесе нажатие влево отрабатывает. Точнее не глючила, давить очень сильно надо было. Уже полгода такая фигня.

    Короче прозвонил — да, проблема в кнопке. Найти такую нереально, только заказывать. Решил расковырять — сломаю так и чёрт с ней. Как ни странно — вскрыл, внутренности простые, жестяной кругляш, над ним резинка и пластиковая нахлобучка. Этот кругляш окислился. Почистил, собрал обратно — как новая.

    С удивлением обнаружил, что мыша работает на Atmega16 :)


    1. Foreglance
      24.08.2015 23:40

      С удивлением обнаружил, что мыша работает на Atmega16

      Интересно. А в этой (youtube) Atmega32 используется.


      1. ploop
        24.08.2015 23:56

        Тут 16я в QFN корпусе (7х7 мм), два кварца. Для чего второй (похож на часовой на 32768) — не понял, может обеспечивает ждущий режим, на пониженной тактовой частоте. И всё это работает от 0.9 вольт… Разработчикам респект!


    1. wormball
      25.08.2015 00:22

      А я вот с удивлением обнаружил (при помощи xev), что теперь при нажатии правой кнопки мыши одновременно нажимается и левая. :( Чувствую, придётся опровержение писать. Зато вроде понял, как оно работает. А контроллер там nRF24LE1.


      1. ploop
        25.08.2015 00:31

        что теперь при нажатии правой кнопки мыши одновременно нажимается и левая
        о_О Так ведь контекстное меню вызвать нельзя будет.
        xev отлавливает как событие нажатия, так и отпускания. Вот как у меня:

        ButtonPress event, serial 72, synthetic NO, window 0x4000001,
            root 0x9f, subw 0x0, time 25032217, (98,43), root:(147,545),
            state 0x10, button 1, same_screen YES
        
        ButtonRelease event, serial 72, synthetic NO, window 0x4000001,
            root 0x9f, subw 0x0, time 25032365, (98,43), root:(147,545),
            state 0x110, button 1, same_screen YES
        
        ButtonPress event, serial 72, synthetic NO, window 0x4000001,
            root 0x9f, subw 0x0, time 25035123, (98,43), root:(147,545),
            state 0x10, button 3, same_screen YES
        
        ButtonRelease event, serial 72, synthetic NO, window 0x4000001,
            root 0x9f, subw 0x0, time 25035303, (98,43), root:(147,545),
            state 0x410, button 3, same_screen YES
        
        

        button 1 — левая, buntton 3 — правая. Курсор не в квадрате, а на окне.


        1. wormball
          25.08.2015 00:39

          > Так ведь контекстное меню вызвать нельзя будет.

          Оказывается, можно, но не везде. В хроме, например, на странице можно, а в заголовке нельзя.

          > Вот как у меня:

          Вот у меня аналогично, только 1, 3, 3, 1. Выпаял конденсатор — вновь стало только 3.


          1. ploop
            25.08.2015 07:30

            Вот у меня аналогично, только 1, 3, 3, 1. Выпаял конденсатор — вновь стало только 3.
            Вот блин… это каким-же они хитрым способом кнопки завели?


            1. wormball
              25.08.2015 15:25

              Да там всё банально оказалось. easyelectronics.ru/matrichnaya-klaviatura.html Вот приблизительно так, только никаких диодов, и притянуты считывающие порты, и не к питанию, а к земле. И всего там 6 кнопок и 3*2 ноги, то бишь сэкономили таким образом ажно одну (!) ногу из тридцати двух. Почему, собственно, я об этом варианте не вспомнил — я не думал, что при таком маленьком количестве кнопок такое будет иметь смысл.


              1. ploop
                25.08.2015 15:42

                то бишь сэкономили таким образом ажно одну (!) ногу из тридцати двух
                Гении, блин.


              1. Magister7
                25.08.2015 16:44

                А дребезг победить получилось без срабатывания второй кнопки?


                1. wormball
                  25.08.2015 18:22

                  Дребезг сам исчез, как выяснилось.


                  1. Arezus
                    26.08.2015 15:53

                    Возможно, из-за сборки-разборки немного очистились контакты в микрике, а может еще пайка где-то дала слабину, а Вы ее прогрели при монтаже конденсатора. Я бы все равно дочистил для уверенности эти контакты.


  1. imwode
    29.08.2015 20:35

    Конденсатор не решает проблему, а усушубляет ее. При размыкании между контактами проскакивает искра, разрушая их.
    Шокирующие подробности вот тут: www.ganssle.com/debouncing.htm


    1. wormball
      30.08.2015 00:58

      Вы точно с индуктивностями не путаете?

      По ссылке не нашёл упоминаний ни конденсаторов, ни индуктивностей, а всё читать лень.