Электрификация

Справочник домашнего мастера

Энкодер из мыши

cnc-club.ru

Здравствуйте!
Предлагаю вашему вниманию поделку которую мне удалось собрать из мышки и шаговика от epson-овского принтера. Сама идея не нова и на различных форумах неоднократно обсуждалась, но step-by-step ниструкции мне найти не удалось, поэтому я решился на этот опус. Итак, имеем:
PS-ная мышь Genius и шаговик от принтера epson (не знаю точно какого)

Для человека ничего не смыслящего в схемотехнике (а я таким и являюсь), выбрать мышь было делом не простым. Нужно было найти такую оптопару которую легко можно было бы прозвонить мультиметром. Отбор происходил следующим образом:
один щуп мультиметра ставился на минус, а второй на боковую ногу фототранзистора (черная штука). В открытом положении мультиметр должен показывать в районе +5 вольт, но если перекрыть пространство между ИК-светодиодом (прозрачная штука) и фототранзистором (или фотодиодом ?) , то напряжение должно упасть до нуля. Такоим образом из коробки со старыми грызунами была отобрана одна «правильная» мышь. В разобранном состоянии плата представляет следующую картину:
из которой нужно выпилть кусок, так чтобы оптопара осталась в целости. На данной картинке именно нижняя отсутствующая часть пошла в дело.
Теперь разбираем шаговик от принтера:
Чтобы снять крышку пришлось сделать надпилы ножовкой по металлу в местах сварки. После разборки корпуса удаляется обмотка и с вала выколачивается латунная втулка с магнитом (на рисунке уже отсутствует).
Далее колесико от мыши нужно аккуратно просверлить чтобы оно плотно надевалось на вал двигателя:
Далее в одной из пластмассовых катушек делаем прорезь надфилем, чтобы кусок мышиной платы с оптопарой плотно заходил в полученный паз:
С валом и колесом:
Далее выводим провода наружу и припаеваем к ножкам катушки. На каждой катушке есть только три ноги, а нам нужно четыре: +, -, и два канала энкодера. Поэтому к этой катушке припаеваем только три любых провода, а четвертый оставляем подлиннее, чтобы после соединения обеих катушек припаять на свобдную ногу.
Для того чтобы избавиться от продольного хода вала пришлось немало поколдовать с втулкой на вал между катушками. В итоге использовал изоляцию от гильзы, но результатом остался не очень доволен, поэтому эту часть процесса опускаю.
После того как вся проводка и резисторы «аккуратно» уложены в катушку заливаем все это силиконовым герметиком:
и собираем двигатель:
Подписываем полярность контаков, чтобы не пожечь чего-нибудь и «привариваем» крышку на холодную сварку. По уму нужно конечно прихватить точечной свркой, но это уж как получится.
И теперь самый фокус!
подкючаем получившееся устройство к ардуино. Провод используем родной — от принтера:
Заливаем в контроллер следующий скетч:
Код: Выделить всё • Развернуть /*
old_encoder — предыдущее значение каналов энкодера
new_encoder — новое значение каналов энкодера
*/
byte old_encoder, new_encoder;
/*
Энкодер с двумя каналами при вращении будет выдавать коды Грея, например:
00 (0)
10 (2)
11 (3)
01 (1)
Ячейки массива ns содержат значения следующего кода для заданного индекса массива.

Например если текущее значение каналов энкодера равно 00, то в ячейке массива ns
содержится следующее значение равное 2 (в бинарном виде — 10).
*/
byte ns = {2,0,3,1};
/*
counter — текущее значение счетчика энкодера
*/
int counter;
/*
tmp — предыдущее значение счетчика
*/
int tmp;
void setup()
{
//start serial connection
Serial.begin(9600);
pinMode(2, INPUT);
pinMode(3, INPUT);
// encoder pin on interrupt 0 (pin 2)
attachInterrupt(0, doEncoderAB, CHANGE);
// encoder pin on interrupt 1 (pin 3)
attachInterrupt(1, doEncoderAB, CHANGE);
counter = 0;
tmp = 0;
// присваиваем текущие значения каналов энкодера
old_encoder = (PINE&48)>>4;
new_encoder = old_encoder;
}
void doEncoderAB()
{
noInterrupts();
new_encoder = (PINE&48)>>4;
if (ns == new_encoder)
{
counter++;
}
else if (ns == old_encoder)
{
counter—;
}
old_encoder = new_encoder;
interrupts();
}
void loop()
{
if (tmp != counter)
{
Serial.print(counter);
Serial.print(‘ ‘);
Serial.println(new_encoder);
tmp = counter;
}
}
И видим, что при вращении вала, в мониторе порта бегут числа: счетчик шагов и код Грея в десятичке.
При вращении в одну сторону счетчик растет, а при вращении в другую — уменьшается.
Точно не замерял, но один оборот вала дает примерно 200 шагов.
Электрическая схема подключения легко находится в форуме ардуинщиков (где я собственно и почерпнул идею с энкодером из мыши). Единственный момент — +5 вольт я подавал на среднюю ногу фототранзистора, а с боковых получал цифровые сигналы уровня ttl и «подтягивал» их резисторами к земле.
Скетч настучал сам, поэтому наверное он не идеален, но для проверки — пойдет.
Теперь о применении:
для чего можно использовать такую штуку ? Например, для изготовлении актуатора. Видел здесь на форуме человек интересовался пультом для управления подачи бревна на пилораме. Так же я сам поднимал тему о замене асинхронного двигателя на двухголовой пиле для управления подвижной головой. Вот в подобных случаях и можно применить связку ардуины и подобного энкодера. Конечно, на промышленный станок лучше приобрести нормальный энкодер, а к ардуине прикупить еще и LCD-экран (можно маленький 1602), пленочную клавиатуру (самый дешевый вариант) и реле для управления нагрузкой. И тогда можно автомтизировать даже древний станок с асинхронным двигателем без особых затрат.

Береги энкодер мыши!


Энкодер на колёсике прокрутки — компонент компьютерной мыши, подводящий в первую очередь. Если у манипулятора перетёрся шнур на входе в корпус, практически каждый самодельщик знает, как его перепаять. Если же вышел из строя энкодер, для его замены придётся ломать другую мышь. А бывает и так, что ломается штырёк, соединяющий колёсико с энкодером. Дельный совет «мыши надо качественные изначально покупать» помогает не всегда. Автору Instructables под ником Mr_Glenn надоело воевать с мышами, и он наловчился использовать вместо энкодера кнопки PgUp и PgDn. Но рано или поздно любой пользователь сталкивается с какой-нибудь программой, где при помощи колёсика производится масштабирование, и эти кнопки не помогают. Вот и он столкнулся — таким приложением оказался обычный редактор трёхмерной графики, получивший своё название от кухонного электроприбора. Blender, конечно же…
Но не начал мастер из-за этого снова издеваться над бедным энкодером. А взял недорогой клон платы 32U4 Pro Micro, совместимой с Arduino Leonardo. Такая плата может через тот же Micro USB-разъём, который предназначен для её программирования, прикидываться HID-устройством — клавиатурой, там, или мышью. К такой плате достаточно добавить две кнопки, как показано на схеме. По-хорошему, конечно, нужны ещё два подтягивающих резистора, но и без них работает.

В общем-то, неважно, каким способом вы подключите к плате эти две кнопки. Можно исключить разъёмы для гребёнок и впаять плату непосредственно в макетку типа perfboard. Можно исключить и саму макетку, а все соединения выполнить проводами. А ещё желательно вместо тактовых кнопок применить небольшие микропереключатели с рычагами. Главное — залить небольшой скетч, использующий переменные xVal, yVal, wheel функции Mouse.move(). При заливке прошивки следует выбрать в Arduino IDE плату Arduino Leonardo.
В современных ОС допускается одновременная работа нескольких USB-клавиатур, мышей. Можно вращать энкодер на одной мыши, перемещать другую, а кнопки нажимать вообще на третьей. Вот и эта самоделка прикинется второй мышью. Нажатие на кнопки устройства будет имитировать вращение энкодера в каждом из двух направлений. А настоящей мышью вы будете, как и прежде, выполнять все остальные операции, не расходуя ресурс энкодера. И своей нервной системы.
Конечно, лучше, если конструкция будет работать «не в принципе, а в корпусе». Можно обойти множество магазинов, но более бюджетного корпуса, чем небольшая распаечная коробка, вы не найдёте.Доставка новых самоделок на почту

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

*Заполняя форму вы соглашаетесь на обработку персональных данных

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх