Вопрос по оптопаре от комп.шариковой мыши - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Вопрос по оптопаре от комп.шариковой мыши
Вопрос по оптопаре от комп.шариковой мыши
RA9UBD Дата: Ср, 22.06.2011, 09:26  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 67
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2008

Статус: Offline

Доброго времени суток всем!

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

Так вот, каким образом оперделить направление вращения? Т.к. при изменении направления перемещения окошек, ситуация не измениться, так же точно на одном светодиоде будет лог 0 а на другом лог 1, и они будут менять без изменения. Или там другая какая то хитрость?
Может я не правильно понимаю? Где, можно посмотреть, почитать про принцип работы такой системы? Может быть есть наработки на PIC Basic?
Помню, где то в журнале Радио, была статья, типа - Синтезатор частоты для трансивера, и он управлялся как раз колёсиком от мыши и оптопарой от мыши. Там вроде бы было описание принципа работы этой системы. Только там код на ассемблере, но мне не важен код, прога будет на PIC Basic PRO.

А вообще глобальная задача такая, это измерение расстояния, с использованием колёсика от мыши. Т.е. при вращении колёсика, за оперделённое пройдённое расстояние, будет определённое кол-во импульсов, это и будет определять пройденоое расстояние. При перемешении вперёд расстояние увеличиваться, при перемещении назад, расстояние уменьшеться. Измеряться расстояние, будет максимум 5-6 метров, не больше. Точность нужна хотя бы 0,3мм, лучше 0,1мм, для этого возможно сделаем повышающий редуктор, что бы кол-во импульсов было больше, для точности хода. Сама механника меня не интерисует, я за неё ответсвенности не несу, этим будет заниматься другой человек. Моя задача, только электронная часть, с ЖК экраном. Вот загвоздка только с оптопарой...

Заранее спасибо, за любую инфу и советы.
ЯНДЕКС Дата: 22.06.2011
MiXaS Дата: Ср, 22.06.2011, 10:00  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Quote (RA9UBD)
Я так понимаю там один светодиод, и пара фотодиодов

Точнее пара фототранзисторов.
Quote (RA9UBD)
Так вот, каким образом оперделить направление вращения?

Дело в том, что стоят два транзистора, когда Вы вращаете энкодер вправо, допустим, то первый транзистор имеет лог 0, а второй лог 1, если врещаете влево, то первый транзистор 1, а второй 0.

Алгиритм следующий: Сначало проверяете направление вращения энкодера, а потом просто считаете импульсы. Например:

Code

bak_port= PORTB.1 'запомнить состояние порта энкодера
If bak_port=1 And PORTB.1=0 Then 'проверка перепада 1->0   
If PORTB.2=1 Then 'проверка направления врашения   
bak_port= PORTB.1    
IF vol=0 Then  out_Vol
vol=vol -1                         
Else
bak_port= PORTB.1   
IF vol=63 Then out_Vol   
vol=vol +1   
EndIf   
Else   
bak_port= PORTB.1   
EndIf


Это пример без прерывания.
Пример с прерыванием почитайте здесь: http://www.picbasic.ru/forum/9-574-1#6581

Quote (RA9UBD)
Где, можно посмотреть, почитать про принцип работы такой системы?


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

На самом деле ничего сложного в работе такого механизма нет.
Желаю удачи!!!
Прикрепления: Dataseet_.pdf(116Kb)

Сообщение отредактировал MiXaS - Ср, 22.06.2011, 10:07
MiXaS Дата: Ср, 22.06.2011, 10:03  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Вот цоколёвка фототранзистора
Прикрепления: 5494089.gif(7Kb)
MiXaS Дата: Ср, 22.06.2011, 10:13  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Нашел у себя пример энкодера с прерыванием. Когда-то тоже интересовал этот вопрос и brown мне в этом помог, за что большое спасибо ему!
Прикрепления: 3245382.rar(1Kb)

Сообщение отредактировал MiXaS - Ср, 22.06.2011, 10:15
brown Дата: Ср, 22.06.2011, 21:48  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 335
Репутация: 10   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

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


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
Сообщение отредактировал brown - Ср, 22.06.2011, 22:20
RA9UBD Дата: Чт, 30.06.2011, 06:50  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 67
Репутация: 0   ±
Замечания:   ±
На сайте с 11.04.2008

Статус: Offline

Спасибо за инфу, буду изучать.

Добавлено (30.06.2011, 06.50.03)
---------------------------------------------
А вот в Протеусе, реально смодулировать отптопару от комп мыши?

ADMIN Дата: Пт, 01.07.2011, 07:15  |                                                                                                                Сообщение # 7
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1096
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Смоделировать можно, я думаю по-простому, вместо оптотранзисторов использовать простые транзисторы. В протеусе все нюансы не учтешь. Вполне может быть в сети есть похожая модель. Думаю, также можно собрать ее из двух стандартных протеусовских оптопар
Форум Picbasic.ru » Программирование МК » PicBasicPro » Вопрос по оптопаре от комп.шариковой мыши
Страница 1 из 11
Поиск: