опрос lpt, подключение энкодера

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Такая беда: подлючил к порту status lpt два сигнала от энкодера (датчик угловых перемещений). Сигналы сдвинуты по отношению друг к другу на 90 градусов. По сдвигу определяется напровление вращения. Для опроса использую (delphi) inpout32.dll запускаю в потоке с большим приоритетом цикл который смотрит было ли изменение в порту, если было то определяет куда ведется вращение и изменяет переменную. Все работает но только на малых оборотахпри увеличении скорости пропускает (не успевает считывать) импульсы. Энкодер на 250 имп/оборот но при скорости 1 об/сек уже выдает ошибку. Читал что lpt может работать1-2 мбита тогда для него этот энкодер раз плюнуть. Что я не так делаю, подскажите новичку. Все пинают на контроллер но я даже не знаю с чего начать, мне кажется там все сложно. Если выхода с lpt нет может кто подскажет ссылку где на пальцах и примерах можно спаять контроллер. Зараннее Вам благодарен за помощь!
Последний раз редактировалось seregka74 Сб окт 20, 2012 23:49:26, всего редактировалось 2 раза.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Можете поискать конструкции с энкодерами на этом ресурсе. http://bascomavr.3bb.ru/
Там найдете схемы подключения энкодера к контроллеру и прошивки. Так же найдете примеры подключения контроллера к USB порту и работа с ним со стороны компа.
Реклама
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Что то не нашел простенького ни чего, может плохо искал. Я тут подумал а если подключить мой энкодер к мыши usb, ведь по сути готовый контроллер с драйверами и с опросом вроде в delphi проблем не будет.
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Реклама
Эиком - электронные компоненты и радиодетали
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Все бы ни чего но я не знаю даже с какой стороны подходить к контроллеру и как его програмировать. Имею лишь небольшой опыт в delphi
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Мегабиты через LPT получаются только при работе в режиме EPP или ECP когда идут потоковые данные. Полностью оккупировать лпт порт можно не позже чем в Win98 с соответствующим подвисанием системы. В идеале вообще поставить DOS а под него turbo pascal если с дельфи дружите. Более поздние виндоусы на основе NT предоставляют доступ к порту когда им захочется.
Вообще если эта затея с энкодером не ради того чтобы покрутить громкость музыки, а для каких то научных или измерительных целей, то с мышью связываться не стоит. Граблей там тоже хватает. Остается девайс на контроллере.
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Еще мысль такая появилась. Если с программированием контроллеров совсем плохо то можно к лпт порту схемку на логике прикрутить.
Интерфейс квадратурного энкодера - это вентиль Исключающее ИЛИ (XOR по буржуйски), с него мы получим сигнал направления вращения. А стробирующие импульсы можно взять с самого энкодера. Далее эти сигналы заводим на реверсивный счетчик. Счетчики обычно 4-битные но их можно каскадировать, например на 8 бит. Далее эти самые 8 бит можно считать лпт портом в режиме bidirectional. Т.к. счетчик будет в себе хранить информацию о количестве поступивших импульсов то опрашивать его можно через значительно большие интервалы без потери информации. Переполнение счетчика можно обработать софтом ПК без каких либо проблем.
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Xor насколько я понял это к155лп5 но как башку ни ломал так и не догнал как с их помощью сделать что бы два сигнала с энкодера перешли в два сигнала один + для счетчика другой - а за сам счетчик на 8 бит я вообще молчу
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Вот один из вариантов схемы подключения:
http://www.vegalab.ru/index.php?option= ... &Itemid=54

Со счетчиком поможет либо гугль либо справочник. К155ИЕ7 должна подойти.
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

*55ИЕ7 не подойдёт, она не direction+clock, а clock_up+clock_down.
Её можно было бы напрямую к валкодеру, один выход на UP, другой на DOWN, если бы не одно «но» -- если покачивать вперёд-назад возле положения края шторки напротив фотодиода, то он будет считать в одну строну.
Та же беда будет при дребезге контактов для контактного кодера.

direction+clock, например 561ИЕ14
uk8amk писал(а):Вот один из вариантов схемы подключения:
http://www.vegalab.ru/index.php?option= ... &Itemid=54
Э, у этой схемы та же беда. Если покачивать край шторки напротив верхней оптопары, то на счёт будут постоянно идти импульсы, а триггер направления менять состояние не будет.
Если так годится, например, дребезга нет, а ситуация покачивания маловероятна, так как кодер с фиксатором, редкие проскоки не страшны, то тогда можно кодер напрямую на 555ИЕ7.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

У меня энкодер промышленный лир 158, дребезг в нем исключен, покачиваний не будет.
Будет применятся в станке для позиционирования толкателя.
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Ребят если не сложно накидайте схемку, заранее спасибо за помощь!
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Если планируете использовать МК то схема это не главное - главное программа, зашитая в контроллер.
Вы ее сможете написать?
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Боюсь что МК мне не под силу. Я думаю соединить два счетчика ие7. Но вот как переделать сигналы энкодера в +1 и -1 ? Нашел тут одну схемку но она на 5 микросхемах. Может что попроще есть?
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

Для тепличных условий отсутствия покачиваний/дребезга квадратурный кодер, как я уже писал выше, можно подключать прямо на входы +1/-1 ИЕ7-го (или 6-го, тогда будет двоично-десятичный результат).

У этих счётчиков входы +1, -1 одновремённо являются разрешениями для противоположного входа.
Когда на +1 высокий уровень, фронты на -1 уменьшают значение. Когда низкий -- игнорируются.
И наоборот, когда на -1 высокий, фронты на +1 увеличивают.
В первой половине картинки фронты на вывод4 (-1) попадают на низкий на выводе 5 и в минус счёта нет, есть только в плюс. Во второй половине счёт только в минус

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

ИЕ7         Крутим вперёд                Крутим назад
вывод5 ____----____----____----________----____----____----____
вывод4 __----____----____----____________----____----____----__
           ^       ^       ^             ^       ^       ^
          +1      +1      +1            -1      -1      -1
Это если хотеть максимальное разрешение и работать по всем перепадам, то тогда да, простой схемкой не отделаешся.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

То есть выводы 12,13 подключаем к входам 4,5 второго счетчика, дабы получить байт, сбросы счетчиков соединяем и так же в лпт для программного сброса. А энкодер напрямую цеплять или через подтягивающий резистор? Да и еще у энкодера существует еще и третий сигнал на 90 градусов, то есть за оборот четыре импульса. Может сброс на него и повесить?
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Взял старую мышку и выламал у нее колесико, подключил туда свой энкодер, в delphi на форме есть процедуры обработки на случай вращения колесика, опять все работает но только на малых оборотах. Прошу прощения за тупой вопрос но может причина в том что я не ставил подтягивающих резисторов в обеих схемах?
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Это зависит от того какой выход у вашего готового энкодера. Если push-pull , то подтяжку не надо. Но подтяжка к + в пару килоом не помешает. Это при условии что энкодер замыкает сигнал на землю.
Делать программно сброс счетчика бессмысленно. Просто при включении программы вы считаете со счетчика значение, оно и будет значением смещения и программно его можно вычесть из будущей координаты.
Родился
Аватара пользователя
Сообщения: 14
Зарегистрирован: Сб окт 20, 2012 10:04:08

Сообщение seregka74 »

Выход как написано в инструкции TTL U1 >2.4 В при Iвых <=20 мА U0 <0.5 В при Iвых <=20 мА
Попробую собрать на двух счетчиках ИЕ7,
Заказал еще себе набор Arduino как придет еще и на нем попробую
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Про мышь в дельфи не совсем ясно, она не сможет передавать очень быстрое движение т.к. windows на это не рассчитана. А девайс на лпт со счетчиком в любомслучае должен поднять макс. скорость хотя бы в 10-20 раз.
Ответить

Вернуться в «Интеграция с ПК»