Энкодер из мышки и шаговика от принтера

Контроллеры, драйверы, датчики, управляющие устройства.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Энкодер из мышки и шаговика от принтера

Сообщение shura28 »

Здравствуйте!

Предлагаю вашему вниманию поделку которую мне удалось собрать из мышки и шаговика от epson-овского принтера. Сама идея не нова и на различных форумах неоднократно обсуждалась, но step-by-step ниструкции мне найти не удалось, поэтому я решился на этот опус. Итак, имеем:
PS-ная мышь Genius и шаговик от принтера epson (не знаю точно какого)
1.png <a class='original' href='./download/file.php?id=13780&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (174.65 КБ)</a>
Для человека ничего не смыслящего в схемотехнике (а я таким и являюсь), выбрать мышь было делом не простым. Нужно было найти такую оптопару которую легко можно было бы прозвонить мультиметром. Отбор происходил следующим образом:
один щуп мультиметра ставился на минус, а второй на боковую ногу фототранзистора (черная штука). В открытом положении мультиметр должен показывать в районе +5 вольт, но если перекрыть пространство между ИК-светодиодом (прозрачная штука) и фототранзистором (или фотодиодом ?) , то напряжение должно упасть до нуля. Такоим образом из коробки со старыми грызунами была отобрана одна "правильная" мышь. В разобранном состоянии плата представляет следующую картину:
2.png <a class='original' href='./download/file.php?id=13781&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (241.01 КБ)</a>
из которой нужно выпилть кусок, так чтобы оптопара осталась в целости. На данной картинке именно нижняя отсутствующая часть пошла в дело.
Теперь разбираем шаговик от принтера:
3.png <a class='original' href='./download/file.php?id=13782&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (313.99 КБ)</a>
Чтобы снять крышку пришлось сделать надпилы ножовкой по металлу в местах сварки. После разборки корпуса удаляется обмотка и с вала выколачивается латунная втулка с магнитом (на рисунке уже отсутствует).
Далее колесико от мыши нужно аккуратно просверлить чтобы оно плотно надевалось на вал двигателя:
4.png <a class='original' href='./download/file.php?id=13783&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (404.84 КБ)</a>
Далее в одной из пластмассовых катушек делаем прорезь надфилем, чтобы кусок мышиной платы с оптопарой плотно заходил в полученный паз:
5.png <a class='original' href='./download/file.php?id=13784&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (661.78 КБ)</a>
6.png <a class='original' href='./download/file.php?id=13785&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (740.17 КБ)</a>
7.png <a class='original' href='./download/file.php?id=13786&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (886.23 КБ)</a>
С валом и колесом:
8.png <a class='original' href='./download/file.php?id=13787&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (864.22 КБ)</a>
Далее выводим провода наружу и припаеваем к ножкам катушки. На каждой катушке есть только три ноги, а нам нужно четыре: +, -, и два канала энкодера. Поэтому к этой катушке припаеваем только три любых провода, а четвертый оставляем подлиннее, чтобы после соединения обеих катушек припаять на свобдную ногу.
9.png <a class='original' href='./download/file.php?id=13788&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (355.81 КБ)</a>
Для того чтобы избавиться от продольного хода вала пришлось немало поколдовать с втулкой на вал между катушками. В итоге использовал изоляцию от гильзы, но результатом остался не очень доволен, поэтому эту часть процесса опускаю.
После того как вся проводка и резисторы "аккуратно" уложены в катушку заливаем все это силиконовым герметиком:
10.png <a class='original' href='./download/file.php?id=13789&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (311.26 КБ)</a>
и собираем двигатель:
11.png <a class='original' href='./download/file.php?id=13790&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (389.55 КБ)</a>
12.png <a class='original' href='./download/file.php?id=13791&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (361.52 КБ)</a>
Подписываем полярность контаков, чтобы не пожечь чего-нибудь и "привариваем" крышку на холодную сварку. По уму нужно конечно прихватить точечной свркой, но это уж как получится.
13.png <a class='original' href='./download/file.php?id=13792&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (340.16 КБ)</a>
И теперь самый фокус!
подкючаем получившееся устройство к ардуино. Провод используем родной - от принтера:
14.png <a class='original' href='./download/file.php?id=13793&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (664.54 КБ)</a>
Заливаем в контроллер следующий скетч:

Код: Выделить всё

/*
old_encoder - предыдущее значение каналов энкодера
new_encoder - новое значение каналов энкодера
*/
byte old_encoder, new_encoder;
/*
Энкодер с двумя каналами при вращении будет выдавать коды Грея, например:
00 (0)
10 (2)
11 (3)
01 (1)
Ячейки массива ns содержат значения следующего кода для заданного индекса массива.
Например если текущее значение каналов энкодера равно 00, то в ячейке массива ns[0]
содержится следующее значение равное 2 (в бинарном виде - 10).
*/
byte ns[4] = {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[old_encoder] == new_encoder)
  {
    counter++; 
  }
  else if (ns[new_encoder] == 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), пленочную клавиатуру (самый дешевый вариант) и реле для управления нагрузкой. И тогда можно автомтизировать даже древний станок с асинхронным двигателем без особых затрат.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 32210
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 5755
Откуда: Казахстан. Шымкент
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение aftaev »

shura28 писал(а):Заливаем в контроллер следующий скетч:
что то там не увидил ПИД регулирование и регулирование мотором вообще
shura28 писал(а): И тогда можно автомтизировать даже древний станок с асинхронным двигателем без особых затрат.
подождем когда ты сможешь ардуиной управлять асинхронным двигателем с энкодером :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22638
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1633
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение Nick »

Статья отличная - прямо для меня! :)
Невский
Новичок
Сообщения: 33
Зарегистрирован: 09 апр 2013, 17:47
Репутация: 0
Откуда: Краснодарский край Ейский район
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение Невский »

Жаль у ардуины всего два канала. (во всяком случае больше двух не видел) .
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение shura28 »

aftaev писал(а):что то там не увидил ПИД регулирование и регулирование мотором вообще
Скетч писал чтобы просто проверить работу энкодера. Ничего более он пока не содержит.
aftaev писал(а):подождем когда ты сможешь ардуиной управлять асинхронным двигателем с энкодером :)
К сожеланию сказать, что "работа кипит" не могу, но потихоньку ковыряюсь. Сейчас жду прихода реле.
В моем случае (с двухголовой пилой) надеюсь его будет достаточно, так как для управления исполнительными механизмами в этом станке существует отдельная слаботочная цепь (24В DC), при помощи которой и осуществляется коммутация рабочих токов. Я планирую при помощи ардуины эмитировать нажатие кнопок на пульте управления - не более. Чем закончится эта затея - время покажет.
Для управления большими нагрузками напрямую при помощи ардуины, есть схема с использованием теристоров и семистров (легко найти в сети), но к сожалению я не достиг такого уровня просветления :)
Невский писал(а):Жаль у ардуины всего два канала. (во всяком случае больше двух не видел) .
Два канала у квадратурного энкодера. А у ардуино мега (как у меня) 54 цифровых и 16 аналоговых входа/выхода из которых на три пары можно повесить прерывания что позволит подключить 3 подобных энкодера.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 32210
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 5755
Откуда: Казахстан. Шымкент
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение aftaev »

shura28 писал(а):К сожеланию сказать, что "работа кипит" не могу, но потихоньку ковыряюсь.
для управления асинхронным двигателем нужен будет частотник, и не все так просто прикрутил энкодер к асинхроному мотору и готово.
shura28 писал(а):Для управления большими нагрузками напрямую при помощи ардуины, есть схема с использованием теристоров и семистров (легко найти в сети), но к сожалению я не достиг такого уровня просветления
Есть такая штука называется Solid State Relay или SSD реле, или по русский твердотельное реле. Подаешь ему на вход 3-30в, а на выход можешь подключать 40А нагрузку(в зависимости от модели)
Реле.JPG <a class='original' href='./download/file.php?id=13836&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (72.78 КБ)</a>
а подключается оно к Ардуино так http://www.ez-robot.com/Community/Forum ... eadId=1531
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Невский
Новичок
Сообщения: 33
Зарегистрирован: 09 апр 2013, 17:47
Репутация: 0
Откуда: Краснодарский край Ейский район
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение Невский »

shura28 писал(а): А у ардуино мега (как у меня) 54 цифровых и 16 аналоговых входа/выхода
А на поскромнее. На мегу 32?
к примеру.
http://mal4x.ru/viewtopic.php?f=6&t=211&start=150#p6557
Только по ссылке в DIP-корпусе.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение shura28 »

aftaev писал(а):для управления асинхронным двигателем нужен будет частотник, и не все так просто прикрутил энкодер к асинхроному мотору и готово.
Вскрывал панель управления (которая с кнопками) - там обыкновенные кнопки и провода :) Есть кнопки "<<" и ">>", при нажатии на которые голова перемещается в соответствющем направлении. Видимо частотник присутствует - какая-то коробка с элетронным табло есть в монтажном отсеке - нужно будет слазить и проверить, спасибо за подсказку !
aftaev писал(а):Есть такая штука называется Solid State Relay или SSD реле, или по русский твердотельное реле. Подаешь ему на вход 3-30в, а на выход можешь подключать 40А нагрузку(в зависимости от модели)
Реле.JPG
а подключается оно к Ардуино так http://www.ez-robot.com/Community/Forum ... eadId=1531
Что-то подобное заказал на ebay-е:
http://www.ebay.com/itm/New-5V-8-Channe ... 27c1367fb1
Невский писал(а): А на поскромнее. На мегу 32?
к примеру.
http://mal4x.ru/viewtopic.php?f=6&t=211&start=150#p6557
Только по ссылке в DIP-корпусе.
Можно посмотреть описание на сайте ардуино. Если верить тому что там написано:
http://arduino.ru/Hardware/ArduinoBoardUno
то у ардуино уно 14 цифровых и 6 аналоговых входов/выходов, из которых два (одна пара) может использоваться для прерываний. Энкодер не обязательно по прерыванию опрашивать, можно просто опрашивать в теле основного цикла. Просто когда я так поробовал, то обнаружил пропуск шагов и переделал скетч на прерывания и использовал прямой доступ к регистрам. Возможно я что-то не так напрограмил.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 32210
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 5755
Откуда: Казахстан. Шымкент
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение aftaev »

shura28 писал(а): Есть кнопки "<<" и ">>", при нажатии на которые голова перемещается в соответствющем направлении.
скорость разгона/торможения мотора
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3140
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1088
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение Тима »

shura28 писал(а):Что-то подобное
На этом блоке стоят обычные реле, а не твердотельные. Себе собрал подобное на ULN2003N, только у этой микросхемы 7 каналов!
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Невский
Новичок
Сообщения: 33
Зарегистрирован: 09 апр 2013, 17:47
Репутация: 0
Откуда: Краснодарский край Ейский район
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение Невский »

Может глупость спрошу, а если не только оптопару из мыша, а целиком мышинный контроллер прикрутить?
Три энкодера и три концевика.
shura28
Опытный
Сообщения: 103
Зарегистрирован: 27 май 2012, 21:18
Репутация: 25
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение shura28 »

Невский писал(а):Может глупость спрошу, а если не только оптопару из мыша, а целиком мышинный контроллер прикрутить?
Три энкодера и три концевика.
Когда я изучал эту тему, то втречал примеры когда именно так и поступают. Дело в том, что под ардуино существует библеотека для PS2-интерфейса. Т.е. мышь можно подключать напрямую. Просто опрашивать, сколько мыш пробежала, нужно будет в цикле главной программы. Поищите на соответствующих форумах - тема широко освещена.

А вот с концевиками я сам пока до конца не разобрался. Те концевики, которые обычно подключают в плате опторазвязки LPT-порта имеют рабочие диапазоны напряжения от 6 Вольт. Говорят, что и от 5-и будет работать, но червь сомнения все равно гложет. В итоге заказал индуктивные датчкики (вроде SN04-N) - если не подойдут к ардуине, то сгодятся к станку.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 32210
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 5755
Откуда: Казахстан. Шымкент
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение aftaev »

shura28 писал(а): Говорят, что и от 5-и будет работать, но червь сомнения все равно гложет.
у меня работают
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11210
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4436
Настоящее имя: Михаил Львович
Откуда: Новоуральск, Свердловская область.
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение michael-yurov »

А у меня - нет. Поставил отдельный блок питания на 12В
Аватара пользователя
nERV
Мастер
Сообщения: 1446
Зарегистрирован: 27 сен 2013, 19:00
Репутация: 595
Настоящее имя: Александр
Откуда: Ульяновск
Контактная информация:

Хочу сваять энкодер для пульта.

Сообщение nERV »

Продолжим тему про энкодеры из бытовой техники.
Как-то курочил стуйный принтер, и там обнаружилось два энкодера. Вернее это только недавно я понял что это такое, а вот в тот момент, лет 10ть назад, просто не обратил на это внимания.
И вот недавно мне в руки попал принтер от х*йлет паккарда. Я радостно его расковырял, и стал обладателем аж двух наборов для сборки энкодеров - линейного и углового :)
Две оптопары-пары от Agilent, причем с двумя фотоприемниками каждая, диск и лента с рисками. На диске написано 200 LPI/ 1200 CPR и логотип производителя - RUHLATEC. Т.е имеем 1200 рисок на оборот диска, что очень даже неплохо, можно даже сваять энкодер для моторчика, будет сервомоторчик.
Осталось найти даташит на эти оптодатчики, но что-то не находятся, ибо маркировки на них особо-то и нет. Написано про производителя -Agilent и номер 18. Все, ничего более.
Далее хочу из этого собрать простой энкодер для станочного пульта и линейку, для экспериментов.

Для затравки
http://www.alldatasheet.com/datasheet-p ... -51X0.html
Вложения
IMG_20150102_224241.jpg <a class='original' href='./download/file.php?id=39531&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (763.94 КБ)</a>
IMG_20150102_224719.jpg <a class='original' href='./download/file.php?id=39532&sid=735e5e14f8950194f41454ad7560ed80&mode=view'>Загрузить оригинал (701.12 КБ)</a>
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6582
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2271
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение NightV »

nERV писал(а):Я радостно его расковырял
братан!!! :lol: :lol: :lol:
Всё просто! если знаешь КАК!
mmg
Опытный
Сообщения: 162
Зарегистрирован: 04 окт 2013, 14:57
Репутация: 217
Контактная информация:

Re: Хочу сваять энкодер для пульта.

Сообщение mmg »

nERV писал(а):Продолжим тему про энкодеры из бытовой техники.
И вот недавно мне в руки попал принтер от х*йлет паккарда. ...
Две оптопары-пары от Agilent, причем с двумя фотоприемниками каждая, диск и лента с рисками. На диске написано 200 LPI/ 1200 CPR и логотип производителя - RUHLATEC. Т.е имеем 1200 рисок на оборот диска, что очень даже неплохо, можно даже сваять энкодер для моторчика, будет сервомоторчик.
Осталось найти даташит на эти оптодатчики, но что-то не находятся, ибо маркировки на них особо-то и нет. Написано про производителя -Agilent и номер 18. Все, ничего более.
Можно поискать сервис мануал от хьюлита и тупо посмотреть схему, чо куда с датчиков идет.
Я обычно на рабочем принтере тыкался мультиметром и смотрел где земля, где питание и где выходы. Ну и резюк там еще надо посмотреть какой по питанию стоит (ну или не стоит).
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11210
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4436
Настоящее имя: Михаил Львович
Откуда: Новоуральск, Свердловская область.
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение michael-yurov »

Да там обычный светодиод и два фотоэлемента.
т.е. самый простой энкодер с A/B выходом.
Encoder-image.gif
Encoder-image.gif (3.12 КБ) 18507 просмотров
mmg
Опытный
Сообщения: 162
Зарегистрирован: 04 окт 2013, 14:57
Репутация: 217
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение mmg »

Да понятно это.
Вопрос на сколько я понимаю в распиновки датчиков и напряжении питания.
У меня сейчас на столе принтер у которого энкодер питается от 3,3 вольта.
У другого принтера энкодеры были с TTL выходами и питался он от 5 вольт.
Поэтому я и говорю что надежнее всего мультимитром подлезть.
Аватара пользователя
nERV
Мастер
Сообщения: 1446
Зарегистрирован: 27 сен 2013, 19:00
Репутация: 595
Настоящее имя: Александр
Откуда: Ульяновск
Контактная информация:

Re: Энкодер из мышки и шаговика от принтера

Сообщение nERV »

Модель принтера я не знаю, так что сервис-мануал не поможет. Найти землю и питание - не проблема, так-то. По ногам и дорогам видно. А вот определить тип фотодатчиков как-то так сразу не могу. Что там может стоять? Фототранзистор, скорее всего. Все остальное по быстродействию как-то не очень.
Ответить

Вернуться в «Электроника»