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

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

Не отвлекайтесь на частности. Поставим 100 Ом последовательно с кнопками. В этом "вороньем гнезде" два резистора роли не сыграют...

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


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

2 часа назад, jcxz сказал:

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

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

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

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

 

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

Для понимания моей задумки привожу блок схему.

.thumb.GIF.64c1dbcd22b46b2e547c06ef0bb2c436.GIFКонтроллер последовательной мыши берется от старой шариковой мыши. Оптический сенсор с квадратурным выходом от PS/2 оптической мыши первых вапусков (начало 2000х). Контроллер клавиатуры выдирается из PS/2 клавиатуры. Энкодер из любой мыши с колесом. Остается реализовать управляющую логику, схема энкодера - часть ее.

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

Самым правильным решением было бы выкинуть все кроме оптического сенсора и заменить на микроконтроллер. При этом пришлось бы изучать и самостятельно реализовывать протоколы и интерфейсы обмена по COM и PS/2 портам. Все это ради изделия в одном экземпляре. Сомнительное удовольствие. В моем решении все что нужно это разработать несложную управляющую логику.

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

Давайте уйдем от обсуждения конденсаторов, допустим что я уменьшу величину их емкости до 10 нФ. Так пойдет?

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


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

22 минуты назад, Darmok сказал:

Так пойдет?

Нет. Уберите эти конденсаторы вовсе и поставьте их на питание.

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


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

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

Нет. Уберите эти конденсаторы вовсе и поставьте их на питание.

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

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


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

Какое время дребезга и период сигнала при вращении ?

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


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

15 минут назад, x893 сказал:

Какое время дребезга и период сигнала при вращении ?

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

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


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

Just now, Darmok said:

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

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

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


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

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

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

Давайте уйдем от обсуждения конденсаторов, допустим что я уменьшу величину их емкости до 10 нФ. Так пойдет?

Нормально и легко дребезг давится программно. При наличии микроконтроллера. Логикой программы опроса.

Но в вашем случае, можно хотя-бы сделать: RC-цепочку заряда + RC-цепь разряда + лог.элементы U3.1/U3.2 должны быть с триггерами Шмитта на входе. Тогда будет задержка срабатывания в обе стороны и чрезмерных токов не будет.

И да - как уже посоветовали ранее - минимальный набор измерительных инструментов нужно иметь. Самого дешёвого лог.анализатора вполне хватит.

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


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

2 минуты назад, x893 сказал:

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

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

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


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

42 минуты назад, Darmok сказал:

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

А зачем вообще эта схема?

Я так понимаю - импульсы перемещения вы собираетесь передавать через какие-то из сигналов: CTS, DSR, DCD, RI? Если так, то драйвер мыши для ПК вам придётся всё равно писать самому. Тогда почему не бороться с дребезгом программно в этом драйвере на ПК? И вообще бОльшую часть схемы выкинуть, сделав просто 4 формирователя уровней для 4-х сигналов энкодера и пустив их напрямую на CTS, DSR, DCD, RI? Вся остальная обработка - в драйвере на ПК.

Просто 4 повторителя или инвертора с триггерами Шмитта на входе и всё.

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


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

10 минут назад, jcxz сказал:

А зачем вообще эта схема?

Я так понимаю - импульсы перемещения вы собираетесь передавать через какие-то из сигналов: CTS, DSR, DCD, RI? Если так, то драйвер мыши для ПК вам придётся всё равно писать самому. Тогда почему не бороться с дребезгом программно в этом драйвере на ПК? И вообще бОльшую часть схемы выкинуть, сделав просто 4 формирователя уровней для 4-х сигналов энкодера и пустив их напрямую на CTS, DSR, DCD, RI? Вся остальная обработка - в драйвере на ПК.

Просто 4 повторителя или инвертора с триггерами Шмитта на входе и всё.

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

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


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

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

схема гарантированно не будет работать из-за дребезга

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

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


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

2 часа назад, jcxz сказал:

напрямую на CTS, DSR, DCD, RI? Вся остальная обработка - в драйвере на ПК.

Зачем ему все это? Он в COM порт лезти не собирается, кроме того, что воткнет туда стандартную опт мышь, ему насколь понял, нужно просто прикрутить колесо на кнопки pgUp PgDwn контроллера клавы и воткнуть его в порт ps\2. А поэтому ему нужно сделать формирователь направления колеса и импульса, дальше можно поставить пару оптронов и сигналом направления выбирать нужный оптрон и долбить в него пульсом. Схема там насколь помню D триггер и пара лог. элементов с RC цепочками антидребезга...

image.thumb.png.33c8499cd3fcf55530111ebc0fe7a692.png

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

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


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

33 минуты назад, mantech сказал:

Зачем ему все это? Он в COM порт лезти не собирается, кроме того, что воткнет туда стандартную опт мышь, ему насколь понял, нужно просто прикрутить колесо на кнопки pgUp PgDwn

Я изначально понял, что речь шла об энкодере вращения шарика мышки в старой (не оптической) мыши.  :biggrin:  Там как раз такие энкодеры стояли по X и по Y.
Если речь о колесе прокрутки, то да - это другое.

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


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

51 минуту назад, mantech сказал:

Схема там насколь помню D триггер и пара лог. элементов

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

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


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

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

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

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

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

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

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

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

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

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