Подключение абсолютных энкодеров к общей шине данных
To mura:
Спасибо за схему с adm232. В дальнейшем воспользуюсь.
Одноко процессоры 89S51 или mega8515 как я понял работают с аналоговыми сигналами с энкодеров. У меня у энкодеров цифровой выход.
Однако вроде как вопрос решился!
Все же после долгих дискуссий с начальством решили использовать камак.
Также решен вопрос о посылке и получении данных. Все через контроллер камака.
Т.е. адрес каждого энкодера шифруется в 3битный код, посылается через контроллер на микросхему К155ИДХХ (дешифратор), та в свое время открывает нужный COM у нужного энкодера, данные по шине (в цифровом виде!) передаются обратно на контроллер камака. Далее по своей связи на комп. Все)
PS. Так на всякий случай .COM - это не компорт. Это ножка на энкодере Common.
Одноко процессоры 89S51 или mega8515 как я понял работают с аналоговыми сигналами с энкодеров.
Неправильно понял, тут именно про Ваш случай.
Ну Камак так Камак, лет 20 назад имел с ним дело, но если-б стояла такая задача сейчас - применил-бы USB или RS.
Неправильно понял, тут именно про Ваш случай.
значит не внимательно читал…
Я бы тоже с УДОВОЛЬСТВИЕМ применил бы USB, однако камак у нас все еще на высоте)
89S51 или mega8515 как я понял работают с аналоговыми сигналами
Как раз наоборот, это микроконтроллеры, для которых сигнал с энкодера желательно пропустить через тригера шмита, так сказать оцифровать . Но нужно заметить, приложенная схема, без программы, ничего ценного из себя не представляет, так , горстка деталей и не более.
Вот схема связи по RS-232
прошивку человеку скинешь?
сигнал с энкодера желательно пропустить через тригера шмита, так сказать оцифровать
не понимаю зачем это нужно если:
На вход триггера Шмидта подается аналоговый сигнал, а с выхода уже снимается логический уровень.
У меня на выходе энкодеров уже цифра!
Как раз наоборот, это микроконтроллеры, для которых сигнал с энкодера желательно пропустить через тригера шмита, так сказать оцифровать .
Ошибаетесь, у эркодера выход стробируемый - триггер шмидта тут не нужен.
Еще оцифровать - это перевести аналоговый сигнал в число т.е. получить цифру - а это вообще из другой оперы.
прошивку человеку скинешь?
Легко, такая прога пишется за 10 минут, пусть с протоколом определится.
Да, можно поставить мегу в 100ногом ящике, и все 60 завести на один корпус.
Ошибаетесь, у эркодера выход стробируемый - триггер шмидта тут не нужен.
Он нужен, т.к. он поможет в борьбе с шумами (дребезгом) от механических контактов (по моему, энкодер ссылку на который дал в начале автор темы - механический, у меня подобный есть -“звониться” легко без подачи всякого напряжения питания).
Другое дело в AVR триггер Шмидта установлен по большинству входов, но имеет небольшой гистерезис, а в PIC гистерезис больше, но ножек с триггерами очень мало. Поэтому в цепях энкодера и ставят внешние триггеры Шмидта.
А при чём стробирование? При стробирование просто программно (например, повторный опрос) «давятся» шумы. Но это больше всего годится для обычной кнопки, где скорость её нажатия невелика. Где-то давно, на Телесистемах и электрониксе это обсуждали и пришли к выводу, что с механическим энкодером программный метод мало помогает, лучше совокупность аппаратного и программного решений.
Я бы, наверное, в таком случае опрашивал состояние входов (а их будет 7, у выше указанного энкодера) через К561КП2 (может использоваться для коммутации как аналоговых и цифровых сигналов, т.к. имеет «сквозной» вход/выход с сопротивлением открытого ключа при 5В = 200…300Ом) и далее её выход через внешний триггер Шмидта на любой МК или как вариант, использовать в качестве внешнего триггера внутренний компаратор с внешним выходом (в PIC) для расширения гистерезиса (п.#3 ссылки www.gamma.spb.ru/articles.php?i=31 )
…а их будет 7, у выше указанного энкодера)…
Их 8, судя по Dataheet www.platan.ru/pdf/datasheets/bourns/ACE.pdf . Просто сразу подумалось, что для 128 положений будет достаточно 7 линий.
…опрашивал состояние входов через К561КП2
Или можно у энкодера линии данных подключить на выхода МК или внешнего дешифратора, а общий вывод (вывода, если много энкодеров) на вход(а) МК или триггера Шмидта. Линии данных объединяются с одноименными других энкодеров.
Он нужен, т.к. он поможет в борьбе с шумами (дребезгом) от механических контактов
Это так. НО по входу СТРОБ энкодер передает готовые данные, нужно выставить строб и подождать 3-5 мкС, затем забирать данные.
А данных 8 а не 7 т.к. используется код Грея, он менее шумный чем двоичный.
…нужно выставить строб и подождать 3-5 мкС, затем забирать данные…
Судя по вышеуказанному DataSheet дребезг контактов (если я правильно понял термин «Contact Bounce») у энкодера АСЕ-128 может достигать 2,7мс.
Я бы начал измерять не раньше 5мс, а лучше ещё больше - на запас, с учётом износа и загрязнения контактов в процессе эксплуатации. Но за это время могут сдвинуть ручку энкодера и будет уже другое положение и новый дребезг. Так что, на мой взгляд, перед входом МК триггер Шмидта с большим гистерезисом всё-таки нужен.
5мс * 8 линий = 40мс * 8 энкодеров (у автора топика вроде столько их) = 320мс. + время на передачу в комп.
Т.е. обновление состояния любого из энкодера будет приблизительно 2-3 раза в секунду. Этого достаточно? Хорошо, что энкодер абсолютный, а то с инкрементальным могли бы быть пропуски.
Время обработки можно сократить, если на каждую линию данных поставить по триггеру Шмидта и сразу все 8 линий записывать в порт МК.