Энкодер из старой мышки

ВериСлоу
Offline
Зарегистрирован: 02.10.2014

Всем привет.

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

Скетч использовал следующий:
 

/*
** Энкодер
** Для управлением яркостью LED используется энкодер Sparkfun
*/
 
int brightness = 120;       // яркость LED, начинаем с половины
int fadeAmount = 10;        // шаг изменения яркости LED
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 12;       // pin 12
const int pin_B = 11;       // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
 
void setup()  {
  // declare pin 9 to be an output:
  pinMode(9, OUTPUT);         // устанавливаем pin 9 как выход
  pinMode(pin_A, INPUT);
  pinMode(pin_B, INPUT);
  currentTime = millis();
  loopTime = currentTime; 
} 
 
void loop()  {
  currentTime = millis();
  if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
    encoder_A = digitalRead(pin_A);     // считываем состояние выхода А энкодера 
    encoder_B = digitalRead(pin_B);     // считываем состояние выхода B энкодера    
    if((!encoder_A) && (encoder_A_prev)){    // если состояние изменилось с положительного к нулю
      if(encoder_B) {
        // выход В в полож. сост., значит вращение по часовой стрелке
        // увеличиваем яркость, не более чем до 255
        if(brightness + fadeAmount <= 255) brightness += fadeAmount;               
      }   
      else {
        // выход В в 0 сост., значит вращение против часовой стрелки     
        // уменьшаем яркость, но не ниже 0
        if(brightness - fadeAmount >= 0) brightness -= fadeAmount;               
      }   
 
    }   
    encoder_A_prev = encoder_A;     // сохраняем значение А для следующего цикла 
     
    analogWrite(9, brightness);   // устанавливаем яркость на 9 ножку
    
    loopTime = currentTime;
  }                       
}

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

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

ps: рядом валялась дохлая мышь, посмотрел -у неё общий эмиттер, причём он даже не в середине -а с краю..

 

ВериСлоу
Offline
Зарегистрирован: 02.10.2014

Не, у меня на самой плате анод светодиода соединен со средней ножкой. Вот я и пришел к вывооду что средняя это питание))

ВериСлоу
Offline
Зарегистрирован: 02.10.2014

народ, ну так что, есть у кого идеи?
нифига что то не получается запустить

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ВериСлоу, посмотреть осциллографом что на ногах.. Если нету, то

1 проверить ик-светодиод (фотиком, смартфоном, итп)

2-проверить ик фототранзисторы, на этой стадии уже точно выяснится вопрос с включением.

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

4 подключить как энкодер.

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

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

осциллограф не нужен. Проверьте цифровым фотоаапаратом, что светодиод светит. Поставьте шторку между ним и фототранзистором . Напряжение на эмиттерах должно быть 0. Уберите шторку напряжение +5. 

Вкуривайте софт.

5 использовать энкодерную библиотеку.

ВериСлоу
Offline
Зарегистрирован: 02.10.2014

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

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

inspiritus
Offline
Зарегистрирован: 17.12.2012

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

vovasm
vovasm аватар
Offline
Зарегистрирован: 22.03.2016

Досталась мне мышка мелкософтовая, с точ такойже оптопарой, собрал почти по вашей схемке, только резюки взял родные два по 10к и на светодиод 330ом, фото элемент запитал напрямую без резистора от светодиода, скетч заработал сразу.

Сейчас пилю драйвер для DC моторчика c управлением типа Step/Dir :)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Везет .. а я вот натырил со знакомых штук 20 мышей (с виду разных-разных), в надежде найти оптопары .. и упс. Все-все оказались на контактных энкодерах .. всё что смог выдрать это кнопки из которых наделал датчиков касания. :(

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Мда, я вот не понимаю такого даунгрейда мышек... Зачем было менять надёжный оптический энкодер на механический? Удешевление?

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Jeka_M, это всемирный заговор производителей электроники ) Если мыши будут вечно работать, то новые будут меньше покупать, а это невыгодно.

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

Jeka_M пишет:

Зачем было менять надёжный оптический энкодер на механический? Удешевление?

нет - это ты обнищал и на дорогие, надёжные мышки у тебя денег нет.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Да ладно. Я не беру дешевые офисные мышки, минимум что-то из A4 Tech X7. А оптический энкодер был как-раз в мышке из серии "Office".

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

Jeka_M пишет:

Да ладно. Я не беру дешевые офисные мышки, минимум что-то из A4 Tech X7. А оптический энкодер был как-раз в мышке из серии "Office".

ок. я перефразирую - тs не можешь покупать дорого качественные вещи потому, что тебе негде их купить.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Не переживай, мне есть где купить. Не на северном полюсе живу, а не так далеко от тебя, в обласном центре :)

KOMAPbI4
KOMAPbI4 аватар
Offline
Зарегистрирован: 22.03.2016

Хорошии оптическии энкодеры можно найти в принтерах

Kavalsky
Offline
Зарегистрирован: 25.03.2016

Приветствую!

Вытащил датчик и ИК-диод из мыши Логитеч.

Датчик был подключен средней ногой на +5, правой на землю, левая пошла на котроллер - сигнал.

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

Если на среднюю ногу подать +5в, то при засветке на крайних появляется по +5в мультиметром.

НО, подключил в АЦП ардуинки, вывел на Сериал порт - получается чушь, что засвеченный что закрытый, разброс не большой и не стабильные очень показания.

Если подтянуть на землю любым сопротивлением до 1Мом то обнуляет сериал порт. Видимо токи настолько малы.

Диод питаю через analogWrite 30.

Куда рыть?
Или насоветуйте ссылку, нужен оптический энкодер. Думал взять два "оптрона" но их пока синхронизируешь помрешь.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Kavalsky, в вашем вопросе уже содержится ответ "Где то читал ранее, что именно Логитечевские датчики придурашные и не катят для этих упражнений." Чего-же боле, как говорится?  Там то, что выглядит как фототранзистор -на самом деле не является им, это специальный датчик с интегрированной микросхемой, даташит на него логитеч не обнародовал, поэтому как он работает одним им известно. И не только логитеч их использует, другие производители тоже.

wifilan
Offline
Зарегистрирован: 01.12.2014

подтверждаю. мыха логитеч. 1 нога выход данных, 2 нога +5в, 3 нога - питание.

в рвботающей мыхе на выводе вот такая петрушка.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

wifilan, я как то пытался найти данные по этой штуке, но безрезультатно. Похоже на чип с шиной аля one-wire, без даташита бесмысленно ковыряться..(

wifilan
Offline
Зарегистрирован: 01.12.2014

Я просто нарыл старую мыху (с шариком) . И там нормальные фототранзисторы.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Делал на них ИК-датчики линии. Вполне неплохо работают.