Перейти к содержанию
    

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

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

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

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

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

encoder.thumb.GIF.f4801638ba9623f16e2c9e679c2fd54e.GIF

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Диаграмма и схема нерабочие, к тому же на схеме ничего оптического.

https://www.google.ru/search?q=quadrature+decoder+circuit&tbm=isch

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Изменено пользователем EdgeAligned

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Для справки

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...