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

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 линий записывать в порт МК.