Энкодер из старой мышки
- Войдите на сайт для отправки комментариев
Сб, 28/03/2015 - 17:00
Всем привет.
для проэкта потребовался оптический энкодер. Купить возможности нет, нашел старую мышку. Гуглил, читал, собирал. в итоге собрал непонятную кракозябру, залил скетч, но вот беда, не работает совсем.
Помогите кто чем может, скажите пожалуйста что не так в схеме, может в чем еще..
Скетч использовал следующий:
/* ** Энкодер ** Для управлением яркостью 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; } }
Можно было и не разламывать грызуна, а взять обычную библу для ps/2 мышки.. хотя конечно смотря что за проект ) По сути : мне лично схема кажется странной, вроде бы у фотоприёмника средняя нога - эмиттеры транзюков, и его сажают на землю. А коллекторы подтягивают к питанию. Но может бывает и как у вас. В любом случае нужно смотреть осциллом импульсы..
ps: рядом валялась дохлая мышь, посмотрел -у неё общий эмиттер, причём он даже не в середине -а с краю..
Не, у меня на самой плате анод светодиода соединен со средней ножкой. Вот я и пришел к вывооду что средняя это питание))
народ, ну так что, есть у кого идеи?
нифига что то не получается запустить
ВериСлоу, посмотреть осциллографом что на ногах.. Если нету, то
1 проверить ик-светодиод (фотиком, смартфоном, итп)
2-проверить ик фототранзисторы, на этой стадии уже точно выяснится вопрос с включением.
3 повесить на прерывание ардуины, проверить "видит" ли мега срабатывание просто как оптопары.
4 подключить как энкодер.
Двойку можно вешать напрямую на плюс. Обычная схема эмиттерного повторителя. Резисторы с эмиттеров на входы арды не нужны.
осциллограф не нужен. Проверьте цифровым фотоаапаратом, что светодиод светит. Поставьте шторку между ним и фототранзистором . Напряжение на эмиттерах должно быть 0. Уберите шторку напряжение +5.
Вкуривайте софт.
5 использовать энкодерную библиотеку.
Что то ерунда какая то. Подаю на светодиод питание, работает отлично. подаю на коллектор транзистора, на среднюю ножку, 5 вольт.
Когда ничего между светидиодом и фототранзистором нет, напряжение между коллектором и эмиттером нет. напряжение между эмиттером и землей 5 вольт. Ставлю преграду - без изменений.
Что я не так то делаю, на разных оптопарах проверил. одно и то же. а спросить не у кого
ВериСлоу, очевидно, что вы в чём-то ошиблись. Наибольшее сомнение лично у меня вызывает "снятая" вами схема распиновки. К сожалению проверить по фото не представляется возможным, у вас есть такая-же мышь, но не паяная? Братья-китайцы могут туда поставить всё, что угодно, и совсем не факт что это будет сдвоенный фототранзистор. Может это уже какая-то специализированная фигня, подключение которой сильно похоже на подключение фототранзистора. Ещё раз внимательно проверьте цепи от всех 3х контактов, есть что нибудь странное? И если есть маркировка на корпусе -то гуглить, искать даташит.
В режиме тестера для измерения сопротивления до1000 ом, поставьте положительный щуп на предполагаемый коллектор, отрицательный на предполагаемый эмиттер, наблюдайте изменение сопротивления , оперируя шторкой. Если оного нет, ищите необходимое подключение опытным путем.
Досталась мне мышка мелкософтовая, с точ такойже оптопарой, собрал почти по вашей схемке, только резюки взял родные два по 10к и на светодиод 330ом, фото элемент запитал напрямую без резистора от светодиода, скетч заработал сразу.
Сейчас пилю драйвер для DC моторчика c управлением типа Step/Dir :)
Везет .. а я вот натырил со знакомых штук 20 мышей (с виду разных-разных), в надежде найти оптопары .. и упс. Все-все оказались на контактных энкодерах .. всё что смог выдрать это кнопки из которых наделал датчиков касания. :(
Мда, я вот не понимаю такого даунгрейда мышек... Зачем было менять надёжный оптический энкодер на механический? Удешевление?
В первой моей оптической мышке был именно оптический энкодер, потом встречал только механические. От частого скроллинга механические энкодеры со временем выходят из строя. Поэтому появилась привычка пролистывать web-страницы стрелками на клавиатуре.
Jeka_M, это всемирный заговор производителей электроники ) Если мыши будут вечно работать, то новые будут меньше покупать, а это невыгодно.
Зачем было менять надёжный оптический энкодер на механический? Удешевление?
нет - это ты обнищал и на дорогие, надёжные мышки у тебя денег нет.
Да ладно. Я не беру дешевые офисные мышки, минимум что-то из A4 Tech X7. А оптический энкодер был как-раз в мышке из серии "Office".
Да ладно. Я не беру дешевые офисные мышки, минимум что-то из A4 Tech X7. А оптический энкодер был как-раз в мышке из серии "Office".
ок. я перефразирую - тs не можешь покупать дорого качественные вещи потому, что тебе негде их купить.
Не переживай, мне есть где купить. Не на северном полюсе живу, а не так далеко от тебя, в обласном центре :)
Хорошии оптическии энкодеры можно найти в принтерах
Приветствую!
Вытащил датчик и ИК-диод из мыши Логитеч.
Датчик был подключен средней ногой на +5, правой на землю, левая пошла на котроллер - сигнал.
Где то читал ранее, что именно Логитечевские датчики придурашные и не катят для этих упражнений.
Если на среднюю ногу подать +5в, то при засветке на крайних появляется по +5в мультиметром.
НО, подключил в АЦП ардуинки, вывел на Сериал порт - получается чушь, что засвеченный что закрытый, разброс не большой и не стабильные очень показания.
Если подтянуть на землю любым сопротивлением до 1Мом то обнуляет сериал порт. Видимо токи настолько малы.
Диод питаю через analogWrite 30.
Куда рыть?
Или насоветуйте ссылку, нужен оптический энкодер. Думал взять два "оптрона" но их пока синхронизируешь помрешь.
Kavalsky, в вашем вопросе уже содержится ответ "Где то читал ранее, что именно Логитечевские датчики придурашные и не катят для этих упражнений." Чего-же боле, как говорится? Там то, что выглядит как фототранзистор -на самом деле не является им, это специальный датчик с интегрированной микросхемой, даташит на него логитеч не обнародовал, поэтому как он работает одним им известно. И не только логитеч их использует, другие производители тоже.
подтверждаю. мыха логитеч. 1 нога выход данных, 2 нога +5в, 3 нога - питание.
в рвботающей мыхе на выводе вот такая петрушка.
wifilan, я как то пытался найти данные по этой штуке, но безрезультатно. Похоже на чип с шиной аля one-wire, без даташита бесмысленно ковыряться..(
Я просто нарыл старую мыху (с шариком) . И там нормальные фототранзисторы.
Делал на них ИК-датчики линии. Вполне неплохо работают.