Jump to content
    

Прошу помощи в разработке энкодера колеса мыши

Разрабатываю мышь с последовательным интерфейсом и оптическим датчиком. Мышь предназначена для использования с древними компьютерами (хобби). В данном варианте мыши будет встроен контроллер от клавиатуры для эмуляции нажатий клавиш UP и DOWN или, на выбор, PGUP и PGDOWN вращением колеса мыши, что позволяет использовать скроллинг в DOS браузерах. Кроме того, будут использованы дополнительные боковые кнопки, также вызывающие нажатия клавиш для удобства в старых DOS играх и еще некоторые возможности. Мышь подключается как к COM порту, так и к PS/2 порту клавиатуры.

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

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

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

encoder.thumb.GIF.f4801638ba9623f16e2c9e679c2fd54e.GIF

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

18 минут назад, Plain сказал:

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

Хотя я и не указал на схеме, что используются КМОП ИС К561ТМ2 и К561ЛА7, полагая что это станет ясно после одного взгляда на нее специалистом, но на всякий (всякого) случай уточню. Пожалуйста обясните, почему заварятся контакты от тока 0,5 мА и в чем конкретно нарушение всего и вся, хотя бы один пример. Я устраню.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

7 минут назад, firstvald сказал:

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

Я уже изготовил прототип задуманной мыши и уменя все заработало за исключением схемы энкодера построенной на одной ИС. Импульсы на выходе схемы появлялись только каждый второй "щелчок" колеса. Я ранее имел дело с китайским rotary encoder и по-наивности полагал что энкодер колеса мыши работает также. Оказалось что нет. Диаграмма его работы не такая же, хотя на первый взгляд и похожа.  Моя задача получить минимальную по компонентам схему, я бы хотел предложения с конкретным схемотехническим вариантом, если, конечно, это Вас не затруднит.

Share this post


Link to post
Share on other sites

Минимально по компонентам - микроконтроллер.

Share this post


Link to post
Share on other sites

1 час назад, Darmok сказал:

почему заварятся контакты от тока 0,5 мА

Контакты замыкают один керамический конденсатор на другой, сопротивления контактов и конденсаторов порядка 1 мОм, 5 В / 3 мОм = 1600 А, ну и заодно питание поделится пополам, вместо 5 В будет 2,5 В и вся схема тупо выключится.

Share this post


Link to post
Share on other sites

55 минут назад, Plain сказал:

Контакты замыкают один керамический конденсатор на другой, сопротивления контактов и конденсаторов порядка 1 мОм, 5 В / 3 мОм = 1600 А, ну и заодно питание поделится пополам, вместо 5 В будет 2,5 В и вся схема тупо выключится.

Нет тут никакого замыкания контактами одного конденсатора на другой. Контакты замыкают источник питания +5В на емкости в 100нФ. Стандартная схема подавления дребезга. Возможно величина емкости и избыточна, но я применяю такое решение много лет и никакие контакты не подгорают. Наоборот при слишком малом коммутируемом токе из-за окисления контактов возрастает переходное сопротивление, что может привести к сбоям в работе. Достаточный ток, протекающий через контакты разрушает окислы. Это называется "эффект самоочищения контактов". Что касается тока в 1600А, попробуйте посчитать энергию запасаемую конденсаторами и прикинте сможет ли она что-либо "заврить".

Share this post


Link to post
Share on other sites

Если как минимум один силовой конденсатор питания любой цифровой схемы отсутствует, она гарантированно нерабочая.

Share this post


Link to post
Share on other sites

Для справки: энергия, запасенная в конденсаторе, равна \(W = {{CU^2 } \over 2}\), ключевая буква тут - напряжение в квадрате. При указанных номиналах энергия разряда - 1,25 микроджоуля. Ну а если учесть ESR и индуктивность выводов, то все эти килоамперы стремительно снижаются.

 

Edited by EdgeAligned

Share this post


Link to post
Share on other sites

9 часов назад, EdgeAligned сказал:

Для справки

Это всё не секрет, как и то, что помимо энергии, сварку определяют теплопроводность, теплоёмкость и площадь, которые в данном случае никому не известные, а потому заведомо худшие, поэтому таки да, всё заварится с первого раза от пары 100 нФ 5 В.

Share this post


Link to post
Share on other sites

После теории переходят к экспериментам - вот и попробуйте заварить. А я пока пойду заварю чаёк-с 🙂 

Share this post


Link to post
Share on other sites

19 часов назад, Darmok сказал:

Мышь подключается как к COM порту, так и к PS/2 порту клавиатуры.

Совершенно не понятно - куда автор собрался подавать свои выходные импульсы 10-100мсек? В какие именно линии COM-порта? Входных (в ПК) сигналов от COM-порта всего 4шт.: CTS, DSR, DCD, RI. Автору же нужно минимум 8 таких сигналов: 4шт. для импульсов перемещения + 2шт. - для колеса мыши + 2шт. - для минимум 2-х кнопок мыши.

А если добавить ещё и:

19 часов назад, Darmok сказал:

Кроме того, будут использованы дополнительные боковые кнопки

То получается ещё больше.

Или это будет возложено на некий "контроллер клавиатуры", с нормальным UART-выходом (TXD)?

Это уже не говоря о том, что макс. частота импульсов перемещения = 50 или 100(?) Гц - маловата для нормальной работы с мышкой. Тем более - для игр (о которых пишет ТС).

И не говоря о сомнительном решении с постоянным замыканием 5V-питания на 4шт. 100нФ ёмкости. Сколько протянут контакты замыкающиеся в таком режиме постоянно с частотой 50Гц? - большой вопрос. Ещё и источник этого 5V-питания - TXD(от ПК), RTS, DTR - маломощный. Но должен выдерживать эти импульсные токи замыкания 200нФ (или 400нФ?) на GND без просадок. И одновременно должен питать и всю схему и 5 выходных сигналов COM-порта.

И с дребезгом борятся совсем не так.

 

PS: Самое правильное решение тут - выкинуть весь этот колхоз (вместе с контроллером клавиатуры) и заменить его на простейший микроконтроллер с UART.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...