Подключение абсолютных энкодеров к общей шине данных

Natan

Здравствуйте уважаемые форумчане!
Вопрос такой:
Есть в наличии восемь абсолютных энкодеров фирмы Bourns. 8 ножек, вывод код грея.

Хочу посадить их на общую шину, и делать опрос используя ножку COM с открытым коллектором для каждого.

Вроде как для опроса потребуется микруха типа дешифратор (на входе некий код с компьютера определяющий конкретный энкодер, на выходе сигнал на соответствующей ножке подключенный к нужному COM на энкодере).
А также микруха для считывания 8битных данных кода грея. Далее по RS или через LPT (возможно даже камак) на комп.
Так вот вопрос. какие конкретно микросхемы взять, и верно ли я мыслю? Может есть уже готовая схема

ATLab

Судя по посту, некоторое знание электроники есть, однако, imho, недостаточное для самостоятельной реализации схемы.
Пока еще не поздно и не потеряно время можно передумать. 😉

Касательно вопроса: сделать можно по-разному, вариантов несколько.
Я бы сделал на микроконтроллере: тут и выбор нужного энкодера, и считывание, и прочие радости.
В постановке вопроса не хватает главного: для чего все это, что (и чем) делать с полученным кодом. Например: передали код в компьютер, а там он зачем? Есть какая то программа, которая будет работать с этими координатами? Или до этого дело еще не дошло?

Natan

ATLab
 Спасибо за оперативный ответ. Ну знания конечно мало майские в электронике есть все же… Передумывать однако поздно так как уже взялся. см. пост rcopen.com/forum/f21/topic116384

Микроконтроллер отпадает, так как за место него принято решение использовать блок контроллера камак. МК оставим на светлое будущее.

Теперь для чего это все это нужно: шкифы энкодеров жестко связаны подвижным элементом (пластины), данные о положении каждой из пластин передаются на компьютер, где БУДУТ считываться неким софтом для визуального отображения положения элементов (софта еще нет). Т.е. для связи комп-устройство все есть - комп с платой ввода-вывода+контроллер камака (16 каналов I/O). Нужно своять схему опроса.

Вот пример микросхемы, точнее что она должна делать. Код с камака на входе, Ножки подключенные к COM ножкам экодерам для опроса.

mura

Вот схема связи по RS-232

проц 89S51 или mega8515 по вкусу.

Natan

To mura:
Спасибо за схему с adm232. В дальнейшем воспользуюсь.
Одноко процессоры 89S51 или mega8515 как я понял работают с аналоговыми сигналами с энкодеров. У меня у энкодеров цифровой выход.

Однако вроде как вопрос решился!
Все же после долгих дискуссий с начальством решили использовать камак.
Также решен вопрос о посылке и получении данных. Все через контроллер камака.
Т.е. адрес каждого энкодера шифруется в 3битный код, посылается через контроллер на микросхему К155ИДХХ (дешифратор), та в свое время открывает нужный COM у нужного энкодера, данные по шине (в цифровом виде!) передаются обратно на контроллер камака. Далее по своей связи на комп. Все)

PS.
Так на всякий случай .COM - это не компорт. Это ножка на энкодере Common.

mura

Одноко процессоры 89S51 или mega8515 как я понял работают с аналоговыми сигналами с энкодеров.

Неправильно понял, тут именно про Ваш случай.

Ну Камак так Камак, лет 20 назад имел с ним дело, но если-б стояла такая задача сейчас - применил-бы USB или RS.

Natan

Неправильно понял, тут именно про Ваш случай.

значит не внимательно читал…

Я бы тоже с УДОВОЛЬСТВИЕМ применил бы USB, однако камак у нас все еще на высоте)

Evgeny_l
Natan:

89S51 или mega8515 как я понял работают с аналоговыми сигналами

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

mura:

Вот схема связи по RS-232

прошивку человеку скинешь?

Natan

сигнал с энкодера желательно пропустить через тригера шмита, так сказать оцифровать

не понимаю зачем это нужно если:

На вход триггера Шмидта подается аналоговый сигнал, а с выхода уже снимается логический уровень.

У меня на выходе энкодеров уже цифра!

mura

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

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

прошивку человеку скинешь?

Легко, такая прога пишется за 10 минут, пусть с протоколом определится.
Да, можно поставить мегу в 100ногом ящике, и все 60 завести на один корпус.

arisov77
mura:

Ошибаетесь, у эркодера выход стробируемый - триггер шмидта тут не нужен.

Он нужен, т.к. он поможет в борьбе с шумами (дребезгом) от механических контактов (по моему, энкодер ссылку на который дал в начале автор темы - механический, у меня подобный есть -“звониться” легко без подачи всякого напряжения питания).
Другое дело в AVR триггер Шмидта установлен по большинству входов, но имеет небольшой гистерезис, а в PIC гистерезис больше, но ножек с триггерами очень мало. Поэтому в цепях энкодера и ставят внешние триггеры Шмидта.
А при чём стробирование? При стробирование просто программно (например, повторный опрос) «давятся» шумы. Но это больше всего годится для обычной кнопки, где скорость её нажатия невелика. Где-то давно, на Телесистемах и электрониксе это обсуждали и пришли к выводу, что с механическим энкодером программный метод мало помогает, лучше совокупность аппаратного и программного решений.
Я бы, наверное, в таком случае опрашивал состояние входов (а их будет 7, у выше указанного энкодера) через К561КП2 (может использоваться для коммутации как аналоговых и цифровых сигналов, т.к. имеет «сквозной» вход/выход с сопротивлением открытого ключа при 5В = 200…300Ом) и далее её выход через внешний триггер Шмидта на любой МК или как вариант, использовать в качестве внешнего триггера внутренний компаратор с внешним выходом (в PIC) для расширения гистерезиса (п.#3 ссылки www.gamma.spb.ru/articles.php?i=31 )

arisov77
arisov77:

…а их будет 7, у выше указанного энкодера)…

Их 8, судя по Dataheet www.platan.ru/pdf/datasheets/bourns/ACE.pdf . Просто сразу подумалось, что для 128 положений будет достаточно 7 линий.

arisov77:

…опрашивал состояние входов через К561КП2

Или можно у энкодера линии данных подключить на выхода МК или внешнего дешифратора, а общий вывод (вывода, если много энкодеров) на вход(а) МК или триггера Шмидта. Линии данных объединяются с одноименными других энкодеров.

mura
arisov77:

Он нужен, т.к. он поможет в борьбе с шумами (дребезгом) от механических контактов

Это так. НО по входу СТРОБ энкодер передает готовые данные, нужно выставить строб и подождать 3-5 мкС, затем забирать данные.
А данных 8 а не 7 т.к. используется код Грея, он менее шумный чем двоичный.

arisov77
mura:

…нужно выставить строб и подождать 3-5 мкС, затем забирать данные…

Судя по вышеуказанному DataSheet дребезг контактов (если я правильно понял термин «Contact Bounce») у энкодера АСЕ-128 может достигать 2,7мс.
Я бы начал измерять не раньше 5мс, а лучше ещё больше - на запас, с учётом износа и загрязнения контактов в процессе эксплуатации. Но за это время могут сдвинуть ручку энкодера и будет уже другое положение и новый дребезг. Так что, на мой взгляд, перед входом МК триггер Шмидта с большим гистерезисом всё-таки нужен.

5мс * 8 линий = 40мс * 8 энкодеров (у автора топика вроде столько их) = 320мс. + время на передачу в комп.
Т.е. обновление состояния любого из энкодера будет приблизительно 2-3 раза в секунду. Этого достаточно? Хорошо, что энкодер абсолютный, а то с инкрементальным могли бы быть пропуски.
Время обработки можно сократить, если на каждую линию данных поставить по триггеру Шмидта и сразу все 8 линий записывать в порт МК.